Grove - 赤外温度センサアレイを動かしてみた

名古屋オフィスに新しいGroveセンサー、[Grove - Infrared Temperature Sensor Array](https://www.seeedstudio.com/Grove-Infrared-Temperature-Sensor-Array-(AMG8833)-p-3185.html)が届いたので（コッソリと自宅に持って帰って）試してみました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/290abed8-56f0-9a6c-2cb2-3943aef9107f.png)

3.3V/5V両対応で、Grove I2Cに接続可能。
8x8ピクセルの赤外温度センサアレイで、離れたところから温度を測定できます。

[Wiki](http://wiki.seeedstudio.com/Grove-Infrared_Temperature_Sensor_Array-AMG8833/)にSeeeduinoとRaspberry Piのサンプルが用意されていますが、Seeeduinoの方はSeeeduino、Groveベースシールド、2.8インチTFTタッチシールドを使っていて、部品が手元にないので、、、Raspberry Piで試すことにしました。

あ！
でも、[Grove Base Hat for Raspberry Pi](https://www.seeedstudio.com/Grove-Base-Hat-for-Raspberry-Pi-p-3184.html)が無いので、、、代わりにGrovePi+を使うことにw

# 動かしてみる

パーツはこちら。

* [Grove - Infrared Temperature Sensor Array](https://www.seeedstudio.com/Grove-Infrared-Temperature-Sensor-Array-(AMG8833)-p-3185.html)
* [GrovePi+](https://www.seeedstudio.com/GroveP-p-2241.html)
* [Raspberry Pi 3 Model B+](https://www.seeedstudio.com/Raspberry-Pi-3-Model--p-3037.html)

結線はGroveなのであっという間に完成。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/e49a59cb-cd34-14a2-5aeb-6d5f018309dc.png)


`raspi-config`を実行して、5 -> 1 で、I2Cを有効化します。

```bash
pi@raspberrypi:~ $ sudo raspi-config
```

`i2cdetect`で0x68が認識されているか確認します。ヨシヨシ。

```bash
pi@raspberrypi:~ $ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
pi@raspberrypi:~ $
```

用意されているサンプルコードに必要なパッケージを追加して、

```bash
pi@raspberrypi:~ $ sudo apt install build-essential python-pip python-dev python-smbus git
pi@raspberrypi:~ $ sudo apt install python-scipy python-pygame
pi@raspberrypi:~ $ sudo pip install colour
```

githubのSeeed-Studioから、サンプルコードをクローンします。

```bash
pi@raspberrypi:~ $ cd
pi@raspberrypi:~ $ git clone https://github.com/Seeed-Studio/Seeed_AMG8833_Raspberry_Python.git
```

で、実行。

```bash
pi@raspberrypi:~ $ cd ~/Seeed_AMG8833_Raspberry_Python
pi@raspberrypi:~/Seeed_AMG8833_Raspberry_Python $ python thermal_cam.py
```

すると、新しいウィンドウが表示されて、そこにヒートマップがグラフィカルに表示されます。
最初は手をかざしてみたのですが、温度が低いせいか、全面紫の表示でした。
そこで、センサー前でライターの火を近づけたところ、この画面ショットの表示になりました。20cmくらいの距離です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109634/bf2f27c9-1872-6bc7-32c3-e80848506c28.png)

多くは語りませんが、、、[Grove - Digital Infrared Temperature Sensor](https://www.seeedstudio.com/Grove-Digital-Infrared-Temperature-Sensor-p-2385.html)と比べて、かなり使いやすいです。
[MjGrove](https://github.com/matsujirushi/MjGrove)に追加しようかな。

ちょっと不思議なのが、、、8x8のセンサアレイなのに、表示の画素は細かいです。ソフトでなにか処理しているんだろうか？

# ハードウェアは8x8？

次に、使われているセンサアレイAMG8833のデータシートを確認しました。

* Temperature detection of two-dimensional area: 8x8 (64 pixels)
* Temperature range of measuring object 0 to 80C
* Human detection distance <7m
* Viewing angle Typ. 60deg.
* Frame rate 10frames/sec. or 1frames/sec.

やっぱり、8x8ピクセルですね。

# ソフトウェアで拡張？

8x8ピクセルをCubic補間していました。

```
bicubic = griddata(points, pixels, (grid_x, grid_y), method='cubic')
```

ちなみに、、、サンプルコードによると、センサの温度分解能は0.25Cでした。