/esp32-thermal-camera

MLX90640 thermal camera connected to a SparkFun Thing Plus - ESP32 WROOM

Primary LanguageC++

ESP32 Thermal Camera

(MLX90640 thermal camera)[https://www.sparkfun.com/products/14844] connected to a (SparkFun Thing Plus - ESP32 WROOM)[https://www.sparkfun.com/products/14689]

Screen Shot

Components

Total Cost: ~$115

NOTE: You'll also need a micro usb cable to power (and flash) the ESP32. I'm making the assumption that most people have one of these. If you want to make the project portable, you'll also need a battery bank.

Screen Shot

Mac Drivers

If using a Mac, you will need to install the following (drivers)[https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers] to flash the ESP32. More information can be found (here)[espressif/arduino-esp32#1084].

Setup

  1. Create an env.h file in the IRCameraWiFiServer folder and add your WiFi credentials
    static const char* wifi_ssid = "YOUR_WIFI_SSID";
    static const char* wifi_pw = "YOU_WIFI_PW";
    
  2. Connect your SparkFun Thing Plus - ESP32 WROOM using this (guide)[https://learn.sparkfun.com/tutorials/esp32-thing-plus-hookup-guide]
  3. Make sure to select Adafruit ESP32 Feather in the Arduino IDE
  4. Install the following libraries
    • SparkFun_Micro_OLED_Breakout
    • WebSocketsServer
  5. Flash the code on your device
  6. Navigate to the IP address from the serial monitor

Screen Shot

Notes

In retrospect, the power switch should put the device into a low power mode instead of disconnecting the battery. Keeping the battery connected would allow for charging while the device is 'off'. Right now, it must be turned on to charge the battery.

Additional screw mounts for the enclosure would help to ensure the back stays on. Right now it's easy for the back panel to pop off.

There should be enough room for a micro OLED or LCD panel. 3D printing a support layer would help keep the battery in place and provice something to mount the screen to.

Message Queue

When using both cores of the ESP32, a message queue must be used to send data between the cores. Sharing variables in the global scope will lead to memory issues and will cause problems.

Screen Shot

Resources