Anteriormente, escrevi um artigo sobre como conectar um decodificador de imagem térmica a um smartphone Flir One Gen 2. É hora de remover o módulo lepton desse decodificador e conectá-lo diretamente ao microcontrolador montando um dispositivo de visão noturna com uma resolução de 160x120 pixels.
Para construir seu próprio dispositivo de imagem térmica de visão noturna, você precisará de:
1) Embarque com um microcontrolador. Peguei uma placa de um amigo chinês com o microcontrolador STM32F407VGT6. Um controlador tão bom: frequência de 168 MHz e 192 KB de RAM.

2) Visor. Tomei uma tela com uma resolução de 320x240. Tais telas vêm com vários controladores. Eu consegui com o controlador hx8347d.

3) Placa para conectar o lepton 3 no SPI e I2C.

4) O próprio lepton 3. O elemento mais difícil e caro. Para obtê-lo, comprei um termovisor defeituoso Flir One Gen 2 no ebay e tirei um lepton dele. Parece em ampliação assim:

Você pode excluir o item 3 desta lista, a menos que, é claro, consiga pegar um berço para um lepton de um termovisor com defeito e possa dessoldá-lo (e, a propósito, os contatos dela serão por baixo). Infelizmente, a distância entre as pernas no lepton é muito pequena, portanto essa opção não foi submetida a mim.
Para coletar tudo isso, basta soldar tudo da seguinte maneira:

Você também precisa conectar o poder. Para alimentar a placa lepton, eu uso 5 V, para a placa STM32 3.3 V. Para obter 5 V da bateria, eu uso o conversor TEL3-0511 (tensão de entrada de 4,5 a 9 V) e já abaixo esses 5 V em um LP2950CZ-3.3 comum (a propósito) , aquece até 70 graus. Aqui também é necessário usar um conversor DC / DC, mas eu ainda não o comprei). A propósito, Lepton 3 come bem. Quando alimentado a partir de 6 V, o consumo atual de todo o dispositivo é de cerca de 250 mA. Quando o lepton deseja clicar no obturador para calibração, a corrente aumenta para 500 mA.
Tudo junto fica assim:


Para trabalhar com um lepton, você precisa de um programa. Eu usei o CubeMX e o Keil 5. Nesse caso, todas as ligações de software são simplificadas para impossibilidade.
A comunicação com um lepton é realizada no SPI. Eu não usei o I2C, pois não havia necessidade específica dele. De acordo com o I2C, você pode controlar o estado do lepton, seus modos de operação, ativar / desativar o modo de calibração automática e assim por diante. Mas para um dispositivo de visão noturna, isso não é particularmente necessário.
Para descriptografar os dados, escrevi um módulo:
Móduloleptoncontrol.h#ifndef LEPTON_CONTROL_H #define LEPTON_CONTROL_H #include <stdbool.h> #include <stdio.h> // ( ) #define LEPTON_ORIGINAL_IMAGE_WIDTH 160 #define LEPTON_ORIGINAL_IMAGE_HEIGHT 120 // VoSPI #define VOSPI_FRAME_HEIGHT 60 // VoSPI #define VOSPI_FRAME_WIDTH 80 // VoSPI (164 RAW14 244 RGB) #define VOSPI_PACKAGE_SIZE 164 // VoSPI #define VOSPI_PACKAGE_LINE_SIZE 160 // VOSPI #define VOSPI_SEGMENT_LINE_AMOUNT 60 void LEPTONCONTROL_Init(void);// void LEPTONCONTROL_CalculateCRC(unsigned short *crc,unsigned char byte);// crc bool LEPTONCONTROL_PushVoSPI(unsigned char data[VOSPI_PACKAGE_SIZE],bool *first_line);// VoSPI unsigned short *LEPTONCONTROL_GetRAW14Ptr(void);// #endif
leptoncontrol.c #include "leptoncontrol.h" #include "stm32f4xx_hal.h" static unsigned short RAW14Image[LEPTON_ORIGINAL_IMAGE_HEIGHT*LEPTON_ORIGINAL_IMAGE_WIDTH];
Todo o trabalho com este módulo consiste na submissão simples de dados obtidos pelo SPI.
Após a montagem do quadro, as leituras do sensor são simplesmente normalizadas, reduzidas para o intervalo [0..255] e exibidas no visor na forma de escala de cinza. No entanto, nada impede o uso de qualquer paleta para colorir a imagem.
Para exibir a imagem no visor, eu uso o módulo FSMC embutido neste controlador no modo de barramento de dados de 8 bits.
O programa completo pode ser baixado
aqui .
Vídeo do trabalho (infelizmente, gravei em uma câmera antiga com a qualidade adequada - não tenho uma câmera de vídeo comigo agora).
PS A propósito, você pode conectar o termovisor Flir One Gen 2 à placa de depuração STM32F407Discovery diretamente via USB. No entanto, a conexão é instável - o termovisor geralmente é perdido.
O programa para essa conexão está
aqui . Talvez alguém entenda o que é e como tornar a conexão estável.
Além disso, este módulo lepton 3 se conecta de maneira fácil e simples ao Raspberry Pi.
Nesse caso, tive que modificar o programa do
repositório , fazendo com que minha
versão funcionasse com o lepton 3.