Lepton-Pythonista-MicroPython
Ce projet vise à diffuser la vidéo thermique d'une FLIR Lepton sur un Iphone. Le flux vidéo est récupéré par un ESP32 via le VoSPI du Lepton puis l'EPS32 envoie à l'Iphone via Wifi/UDP la vidéo (aucun routeur n'est nécessaire). Un premier programme est écrit en Micropython pour l'ESP32. Celui-ci met en place la configuration du Lepton via le CCI et récupère les données vidéo du Lepton et les envoie à l'Iphone sans aucun traitement. Un deuxième programme est écrit en Pythonista pour Iphone. Celui-ci traite les données reçues et affiche les images/vidéo. Le programme permet à l'utilisateur de choisir le mode : 1) AGC (échelle de gris 8 bits) 2) RAD /T Linéaire, RVB. Dans le deuxième mode, l'utilisateur peut obtenir la température en touchant l'écran. ATTENTION : le programme n'implique aucun calibrage du Lepton. L'utilisateur peut zoomer, prendre des captures d'écran et enregistrer des vidéos (trois boutons en bas de l'écran à cet effet)
Matériel
- Iphone (8)
- ESP32 Wroom DevKit (de uPesy)
- câbles de démarrage + planche à pain
- Lepton 3.5
- Carte de dérivation V2.0
Préparation
- dans boot.py, configurez le mot de passe et le SSID
- dans main.py : configurez le TIMEOUT, le streaming dure la durée spécifiée par TIMEOUT. Si vous souhaitez que la boucle s'exécute indéfiniment, remplacez la durée dans la "boucle while" par "true"
- câblage selon le schéma électrique de la Lepton Breakout board V2.0 et https://lepton.flir.com/getting-started/raspberry-pi-lepton/ + MOSI mis à la terre
Usage
- mettre sous tension l'ESP32, après 5 s, la LED bleue clignote à 1 Hz, cela signifie que l'ESP32 attend la sélection de mode venant du programme Pythonista
- dans l'Iphone, rendez-vous dans le panneau de configuration wifi et choisissez le point d'accès Wifi concerné (que vous avez précisé en 1) dans "préparation" ci-dessus). Vérifiez que le logo Wifi est apparu sur l'écran de l'Iphone
- lancez le programme Pythonista, sélectionnez le mode, la LED bleue de l'ESP32 clignote plus vite (10 Hz) jusqu'à ce que l'initialisation soit terminée
- une fois l'initialisation terminée, la LED reste fixe, la vidéo apparaît sur l'Iphone deux secondes après
- l'utilisateur peut zoomer (1 , 1.5, 2, 2.5, 3, toute la largeur), faire une capture d'écran (les fichiers sont nommés screenshot0X.jpg, les fichiers précédents sont effacés)
- l'utilisateur peut enregistrer des vidéos. Les fichiers sont nommés vid0X.mp4, en commençant par X=0, si vid00.mp4 existe déjà, l'enregistrement n'est pas possible (impossible d'écraser vid00.mp4) mais cela peut être contourné en appuyant à nouveau sur le bouton d'enregistrement (= incrémentera le fichier nom)
- en mode RAD (RVB), l'utilisateur peut obtenir la température en touchant la vue
- Écran supérieur : Bad CRC : informations sur la qualité de la communication, généralement autour de 20-25%. qsize : taille de la file d'attente partagée entre le thread qui reçoit les données et celui qui traite les données, si tout va bien, qsize ne doit pas être supérieur à 2 (= traitement plus rapide que la réception des données). fps : images par seconde, devrait être de 9 (au moins en dehors des États-Unis, peut-être qu'aux États-Unis, cela peut être de 27 ?). T (uniquement en mode RAD) : température obtenue après avoir touché la vue (un point blanc apparaît lorsque l'on touche l'écran, voir exemple vidéo)
- RVB : la palette utilisée se trouve dans le dossier "Pythonista", le programme adapte la gamme de couleurs à la plage de température actuelle de la scène
- Durée du streaming : voir remarque en 2) ci-dessus dans "préparation"
- pendant le streaming vidéo, l'utilisateur peut arrêter le programme Pythonista et le réexécuter mais l'utilisateur doit choisir le même mode que celui spécifié initialement (il n'est pas possible de changer de mode pendant le streaming). Remarque : dans ce contexte, la vue apparaît au bout de 4/5 s une fois le mode sélectionné. Si l'utilisateur souhaite passer à un autre mode, l'ESP32 doit être réinitialisé (puis la LED bleue clignote à 1 Hz, etc...)