サーモカメラ x Raspberry Pi Zero W 〜OTK-THG02USBサーモグラフィモジュールでMACとシリアル通信する〜

######株式会社XSHELL　デベロッパー　植田歩
![thermo-camera.png](https://qiita-image-store.s3.amazonaws.com/0/208108/dfc4dfff-2c1c-ad6c-8458-fc2c546fcd93.png)
*半田ごて監視中
##概要
[オフィスIoT](https://xshell.io/2017/10/31/office_iot/)のプロジェクトの１つとして、サーモカメラで半田ごての消し忘れを検知して Slack への通知を行おうとしています。

そのうち、ここでは OTK-THG02USB と Raspberry Pi Zero W の通信についてのみ記述する。
プロジェクト詳細は弊社ブログ記事参照!
[XSHELLブログ記事一覧](https://xshell.io/%E3%83%96%E3%83%AD%E3%82%B0/)

![thermo_gui3.png](https://qiita-image-store.s3.amazonaws.com/0/208108/f9f903f0-dd04-44de-64f7-fdb71936ece1.png)
*可視化してWEBから閲覧できるようにした。半田ごてがある場所が赤い。

##環境

- mac OS X El Capitan

- Raspberry Pi Zero W

- OS 2017-08-16-raspbian-stretch-lite.img

- OTK-THG02(USBサーモグラフィモジュール)
http://oaktree-lab.com/products/OTK-THG02.html

##参考サイト
http://takesan.hatenablog.com/entry/2015/11/05/195839

##手順
まず[楢ノ木技研](http://oaktree-lab.com/products/OTK-THG02.html)のサイトで[OTK-THG01/02/03シリーズ・シリアルモード仕様書](http://oaktree-lab.com/resources/files/OTK-THG-serial.pdf)をダウンロードしておく。
この仕様書の手順通りに半田付けを行う。

- 裏側を短絡させてシリアル通信モードに変更する。
- 使いやすい様にするためにピンソケットもつける。

## カメラ動作テスト

秋月のシリアル変換アダプタを使って接続し、Mac とシリアル通信してみる。

- TX-RX
- RX-TX
- 5V-5V
- GND-GND

![IMAG2652.jpg](https://qiita-image-store.s3.amazonaws.com/0/208108/0df36bd6-f81e-275c-27d2-9c866671df75.jpeg)

ArduinoIDE（アプリ）でシリアルモニターを起動し、通信画面を出す。
通信速度38400で改行コードはCRCFこれ大事。

```

#READコマンドを送信する。
READ
+0169+0155+0171+0167+0163+0160+0160+0141+0140+0143+0137+0146+0148+0150+0153+0150
+0165+0162+0167+0160+0164+0157+0139+0134+0149+0146+0140+0146+0141+0147+0143+0157
+0160+0128+0162+0163+0160+0141+0137+0137+0141+0144+0138+0146+0143+0140+0143+0146
+0110+0138+0151+0154+0138+0134+0136+0143+0140+0143+0146+0138+0147+0139+0148+0142
```
温度データが取得できたら成功。
これで問題なければ次のステップへ。

## Raspberry Piとの接続
Raspberry Pi Zero Wとのケーブル接続。

- TX-RX
- RX-TX
- 5V-5V
- GND-GND
![IMAG2653.jpg](https://qiita-image-store.s3.amazonaws.com/0/208108/99fdc612-c60b-51e2-a724-8bc0682699bb.jpeg)


####OTK-THG02USBサーモグラフィモジュール２をつなげたサーモカメラ x Raspberry Pi Zero Wとシリアル通信する

```

ls /dev/tty.*
#モジュールが改行コードが[CR+LF]である必要がある
#[コマンド]→[エンター]→[ctrl+J]の順番に入力する！
screen /dev/tty.usbserial-A1032MA9 38400

#ラズパイとシリアル通信
#モジュールが改行コードが[CR+LF]である必要がある
#[コマンド]→[エンター]→[ctrl+J]の順番に入力する！
screen /dev/ttyS0 38400
picocom -r -l /dev/ttyS0 38400

#READコマンドを送信する。
READ
+0169+0155+0171+0167+0163+0160+0160+0141+0140+0143+0137+0146+0148+0150+0153+0150
+0165+0162+0167+0160+0164+0157+0139+0134+0149+0146+0140+0146+0141+0147+0143+0157
+0160+0128+0162+0163+0160+0141+0137+0137+0141+0144+0138+0146+0143+0140+0143+0146
+0110+0138+0151+0154+0138+0134+0136+0143+0140+0143+0146+0138+0147+0139+0148+0142
```

温度データが取得できたら成功。
正常に動かない時、大抵の場合はあらかじめ設定しておいたラズパイの設定が再起動などによる変更が原因となっている。

### Raspberry Pi シリアル設定のチェック箇所

- ラズパイコンフィグのインターフェースのシリアル通信設定の許可(loginシェルとかはNO  ハードウェアアクセスでYES)
- /boot/cmdline.txtのコンソール部分削除
- シリアル待ち受けサービスストップ（sudo lsof | grep ttyS0してagettyが出てくるならサービスを落とす）

これらが非常に重要。勝手に変わる時があるので、動かない時は全部チェックする。

### 起動

```
python serial-thermo.py
```
問題なく動くことを確認。

### 裏でずっと起動させておく。

```
nohup python serial-thermo.py &
```
### 止める時

下記コマンド

```
#プロセス調べる
ps aux | grep python

#プロセス強制終了
sudo kill -9 プロセス番号
```

プロジェクト詳細は弊社ブログ記事参照!
[XSHELLブログ記事一覧](https://xshell.io/%E3%83%96%E3%83%AD%E3%82%B0/)

---
######株式会社XSHELL　デベロッパー　植田歩
[XSHELL](https://xshell.io/)はSBCを使いやすくするソリューションを提供しています。
[isaax](https://isaax.io/)、[IoTit](https://github.com/xshellinc/iotit)ぜひご使用になってご意見を頂きたく思います。
共に素晴らしいプロジェクトを実現させましょう！

---