https://github.com/araobp/arduino-infrared-array-sensor
Arduino with infrared array sensor
https://github.com/araobp/arduino-infrared-array-sensor
amg8833 arduino opencv3
Last synced: 8 months ago
JSON representation
Arduino with infrared array sensor
- Host: GitHub
- URL: https://github.com/araobp/arduino-infrared-array-sensor
- Owner: araobp
- License: apache-2.0
- Created: 2019-06-20T09:39:10.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-23T23:23:06.000Z (over 5 years ago)
- Last Synced: 2025-03-29T18:41:32.447Z (9 months ago)
- Topics: amg8833, arduino, opencv3
- Language: C++
- Homepage:
- Size: 284 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Arduino with infrared array sensor

[AMG8833](https://cdn-learn.adafruit.com/assets/assets/000/043/261/original/Grid-EYE_SPECIFICATIONS%28Reference%29.pdf?1498680225) is an infrared array sensor product from Panasonic. It is very popular among Arduino users.
## Development environment
- Arduino IDE on RasPi 3.
- vi and g++ on RasPi 3.
- OpenCV3 for thermography GUI development.
Note: you have to install OpenCV3 on Raspi3. In my case, I built OpenCV3 on RasPi3 taking a half day.
## Architecture
```
[GUI/RasPi3]/dev/ttyACM0----VCP/USB----[Arduino]----I2C----[AMG8833]
```
## Data frame format (raster-scan 8x8 pixel image) over VCP/USB
The program on Arduino transfers 8x8 pixel image data to RasPi over VCP/USB at 10fps in the following data format:
```
[BEGIN(0xFE)][byte#0]...[byte#63][END(0xFF)]
```
## Arduino shield of AMG8833
=> [schematic](./kicad/arduino_board.pdf)
Note: the shield is powered by 3V3 pin on Arduino UNO. Although Arduino UNO is a 5V system, the circuit works.
## Code
- [Arduino](./arduino)
- [RasPi](./raspi)
## Building and running GUI on Raspberry Pi

This is me!
```
$ cd raspi
$ make
$ bin/thermo -m 64 -t -b
```
GUI developed in a native language (C/C++) runs fast on RasPi 3!
### Bicubic interpolation
The resolution of AMG8833 is only 8x8 pixels. I applied bicubic interpolation to the original 8x8 pixel image for higher resolution.

This is my right hand.
```
$ bin/thermo -m 1 -i 3
```
With "-H" option, the GUI uses COLORMAP_HOT instead COLORMAP_JET:

```
$ bin/thermo -m 3 -i 2 -H -b
```
### Binarization
The GUI supports binarization, useful for counting the number of people in a room:

```
$ bin/thermo -m 32 -H -B
```
### Diff between frames: gradient(=velocity)
The GUI supports image diff between frames, useful for detecting motion of something:

Waving my hand over the sensor.
```
$ bin/thermo -m 32 -d
```