Rev 2 PCB testing

A project log for Lepton 3.5 Thermal Imaging Camera

Documenting my experiments with the FLIR Lepton 3.5 thermal imaging camera.

Dan JulioDan Julio 03/11/2021 at 19:190 Comments

I received and tested the Rev 2 PCB design.  The very minor revision was an attempt to improve Wifi performance and make it easier to mount the LED.  As shown below Wifi performance is about the same.

I tested Wifi performance with three setups.  One with the tCam-Mini acting as an Access Point and my laptop connected to it in the same room.  A second with tCam-Mini configured as a client connected to a OpenWrt router in the same room and a third with the camera configured as a client connected to a Netgear router in a different room.  I streamed data for three minutes to compute an average fps and I ran each test twice.  The average values are shown below, including a board with an external antenna.  There is some variability, even with three minute runs, due to Lepton FFCs that occurred while measuring.

SetupRev 1 - internal antennaRev 2 - internal antennaRev 1 - external antenna
Access Point4.36 fps4.48 fps5.94 fps
Client -  OpenWrt router4.68 fps4.19 fps6.34 fps
Client - Netgear router4.86 fps4.89 fps6.05 fps

Clearly an external antenna improves performance.  Interestingly the Netgear router in another room performed better than the Openwrt (fairly old mips-based chipset) in the same room.

Firmware Revisions

Rev 1.2 firmware fixes two issues that have come up during testing and board bring-up.  The first was a bug where the board would not connect to an AP if its first attempt failed (it would reconnect later with no problems).  The second was a hardware issue where I found the Lepton was not being left in a good condition if its external crystal oscillator took too long to startup.  I found this testing alternate crystals since currently the crystal I specified is unobtanium. 

I have an idea about how to improve the camera's performance in firmware.  Right now a single task handles converting the Lepton data into a json string with Base64 packed data and pushing into the ESP32's network stack for transmission.  If pushing the data causes the task to block then I may be able to increase performance by splitting the process into two tasks so the next frame can be converted to a json string while the previous frame is loaded for transmission.