Lepton-Pythonista-MicroPython
Este projeto visa transmitir o vídeo térmico de um FLIR Lepton em um Iphone. O stream de vídeo é recuperado por um ESP32 através do VoSPI do Lepton e então o EPS32 envia para o Iphone através de Wifi /UDP o vídeo (não é necessário roteador). Um primeiro programa é escrito em Micropython para o ESP32. Este faz a configuração do Lepton através do CCI e pega os dados de vídeo do Lepton e envia para o Iphone sem nenhum processamento. Um segundo programa é escrito em Pythonista para Iphone. Este processa os dados recebidos e exibe as imagens/vídeo. O programa permite ao usuário escolher o modo: 1) AGC (tons de cinza de 8 bits) 2) RAD /T Linear, RGB. No segundo modo o usuário pode obter a temperatura tocando na tela. CUIDADO: o programa não envolve nenhuma calibração do Lepton. O usuário pode ampliar, tirar screenshots e gravar vídeos (três botões na parte inferior da tela para esse fim)
Hardware
- iPhone (8)
- ESP32 Wroom DevKit (da uPesy)
- cabos jumper + placa de ensaio
- Lépton 3,5
- Placa de fuga V2.0
Preparação
- em boot.py configure a senha e o ssid
- em main.py: configure o TIMEOUT, o streaming dura a duração especificada por TIMEOUT. Se você quiser que o loop rode para sempre, substitua a duração do "loop while" por "true"
- cabeamento de acordo com o esquema elétrico da placa Lepton Breakout V2.0 e https://lepton.flir.com/getting-started/raspberry-pi-lepton/ + MOSI aterrado
Uso
- ligue o ESP32, após 5 s, o LED azul pisca a 1 Hz, significa que o ESP32 aguarda a seleção do modo vindo do programa Pythonista
- no Iphone, vá ao painel de configuração wifi e escolha o ponto de acesso Wifi relevante (que você especificou em 1) em "preparação" acima). Verifique se o logotipo Wifi apareceu na tela do Iphone
- execute o programa Pythonista, selecione o modo, o LED azul do ESP32 pisca mais rápido (10 Hz) até que a inicialização seja concluída
- quando a inicialização estiver concluída, o LED permanece fixo, o vídeo aparece no Iphone dois segundos depois
- o usuário pode ampliar (1, 1,5, 2, 2,5, 3, largura total), fazer uma captura de tela (os arquivos são chamados de screenshot0X.jpg, os arquivos anteriores são apagados)
- o usuário pode gravar vídeos. Os arquivos são nomeados vid0X.mp4, começando em X = 0, se vid00.mp4 já existir a gravação não é possível (não pode substituir vid00.mp4), mas isso pode ser contornado tocando novamente no botão de gravação (= incrementará o arquivo nome)
- no modo RAD (RGB), o usuário pode obter a temperatura tocando na visualização
- Tela superior: CRC ruim: informações sobre a qualidade da comunicação, geralmente em torno de 20-25%. qsize: tamanho da fila compartilhada entre a thread que recebe os dados e aquela que processa os dados, se estiver tudo bem, qsize não deve ser maior que 2 (=processamento mais rápido que recebimento de dados). fps: quadro por segundo, deve ser 9 (pelo menos fora dos EUA, talvez nos EUA possa ser 27?). T (somente no modo RAD): temperatura obtida após tocar na visualização (um ponto branco aparece quando a tela é tocada, veja o exemplo de vídeo)
- RGB: a paleta utilizada pode ser encontrada na pasta "Pythonista", o programa adapta a faixa de cores à faixa de temperatura atual da cena
- Duração da transmissão: veja a observação 2) acima em "preparação"
- durante o streaming de vídeo, o usuário pode parar o programa Pythonista e executá-lo novamente, mas o usuário deve escolher o mesmo modo especificado inicialmente (não é possível alterar o modo durante o streaming). Nota: neste contexto, a visualização aparece após 4/5 s depois que o modo é selecionado. Caso o usuário queira passar para um modo diferente, o ESP32 deverá ser resetado (depois o LED azul piscará a 1 Hz, etc...)