Coder Social home page Coder Social logo

l4es / thermografree Goto Github PK

View Code? Open in Web Editor NEW

This project forked from loganwilliams/thermografree

1.0 1.0 0.0 16.18 MB

An open source, medium resolution, and broadband thermal imaging camera.

License: MIT License

OpenSCAD 39.77% Python 60.23%

thermografree's Introduction

Thermografree

Thermografree is the first open source, medium resolution, and broadband forward looking infrared (FLIR) camera. It can be used as a thermographic camera, or for scientific imaging applications in the 2-18 um range.

The Thermografree device

This thermal camera is based on a Heimann Sensor thermopile array module, detailed in docs/HeimannArrays9-9-16.pdf and the sample datasheet (docs/HTPA 32x32d L2.1_0.8 (Hi)S Rev2 Datasheet.pdf). Previous attempts at open source thermal cameras have been based on the Melexis MLX90621, an earlier and lower resolution thermopile array. For comparison, the datasheet for this part is also available at docs/MLX90621-Datasheet-Melexis.pdf.

Code is in src/, and should work out of the box on a Raspberry Pi with I2C enabled. If you are using an older (2015-2017) verison of the device, you will have to change the HTPA initialization to add an explicit revision="2017" in dualcam.py. Installation instructions are below.

OpenSCAD models for 3D printing are in case/. The case and hardware (including the screen, cabling, and battery) are very minimum viable prototype, and should not in anyway be taken as "best practices" hardware advice.

Research on noise characteristics of the camera and possible uses/limitations for gas sensing are archived in docs/noise-analysis/.

Hardware

The hardware involved is extremely straightforward: a Raspberry Pi communicates with the Heimann sensor over I2C and displays the images to the user. The sensor should be connected to the Raspberry Pi GPIO pins 3 and 5, and can be powered from the 3.3V and ground pins of the GPIO port. This does not interfere with the use of SPI for touch screen communication. The system is powered from a USB power bank.

Bill of materials

  • Raspberry Pi Zero (or Raspberry Pi)
  • LCD screen (e.g.) and HDMI cable
  • Raspberry Pi camera (e.g.)
  • Heimann HTPA32x32dL3.6/0.9 (purchased through Boston Electronics)
  • USB power bank (e.g.) and USB cable with switch
  • Case (3D printed files included in repository)
  • Bracket for attaching Heimann sensor to case

Software

The application consists of a Python class for interfacing with the module (htpa.py) and a GUI (dualcam.py). The GUI allows for control of the sensor clock frequency, current, and bias. The default settings are the settings used for the module factory calibration, and seem to produce the best results.

Installation

Installing pre-requisites

The Python software has several pre-requisites. To install them on your Raspberry Pi, run the following commands while you have an internet connection.

sudo apt-get install python-pip ipython
sudo apt-get install python-numpy python-scipy
sudo apt-get install libopencv-dev python-opencv
sudo pip install periphery picamera imutils pillow

Enable I2C

Follow Adafruit's tutorial.

Enabling I2C repeated starts

The I2C hardware on the Raspberry Pi needs to be configured to support "repeated starts." To do this, add the following line to /etc/modprobe.d/i2c.conf:

options i2c-bcm2708 combined=1

If you are not using a Raspberry Pi, enabling repeated starts will likely require a different configuration. For more information, see the blog post I wrote on this topic.

Known issues

  • The sensor calibration programmed into the EEPROM at the factory does not seem to match the noise profile of the images captured from the device.
  • The HDMI cable connection to a Raspberry Pi Zero is a hack. If you use the screen documented here, we suggest a Raspberry Pi 3.

Physical assembly

All parts

IR sensor assembly

IR sensor in filter holder

IR sensor placed in case

With bracket mounted

Stress relief

Visible camera mounted

Screen and front case

Screen mounted in front case

Battery mounted underneath screen

Switch glued to top of case

HDMI cable connected

HDMI and USB cable connected

Back of case secured

Booting up (with proper display settings, the whole screen is used.)

thermografree's People

Contributors

loganwilliams avatar

Stargazers

Koson Trachu avatar

Watchers

Linux for Embedded Systems avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.