Raspberry Pi 4 BでLepton 3.5とPureThermal 2を動かす

# 概要
Raspberry Pi 4 B (以下、ラズパイ4)でLepton3.5とPureThermal 2を動かすときに結構苦労したのでその時の内容をまとめます。
結論から言うと、**PureThermal 2のファームウェアのアップデート**が必要です。

# PureThermal 2のファームウェアアップデート
## 現在のバージョンを確認
`dmesg`でラズパイ4に接続されているPureThermal 2のファームウェアの現在のバージョンを確認できます。
<img width="674" alt="スクリーンショット 2020-06-27 16.45.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/833c810a-7ba3-3975-4ce5-b1cb9d42dd2a.png">
ここで、`(fw:v1.3.0)`がファームウェアのバージョンになります。
この結果はアップデート後です。(2020年6月27日時点での最新ファームウェア)
アップデート前は`(fw:v1.2.1)`でした。

## ファームウェアアップデート方法
まずは、ファームウェアをアップデートできる状態にする必要があります。
[データシート](![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/04f52fb0-cce5-a79f-12aa-1e43d11058de.png)
)に書いてある方法に沿ってファームウェアアップデート可能状態にしていきます。
下記の一連の動作はPC - PureThermal 2の間で完結します。

1. BOOTボタンを押し続ける。
2. BOOTボタンを押したまま、RSTボタンを押す。
3. RSTボタンを離す。
4. Deviec Firmware Update(DFU)モードに入ることに成功したら、LEDの点滅が止まって輝度が半分になる。

BOOTボタン・RSTボタンは小さくてちょっと押しにくいので注意が必要です。
ちゃんと押せてたらボタンの沈む感覚があると思います。
<img width="444" alt="スクリーンショット 2020-06-27 17.02.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/47bca88e-6468-f5bc-9969-e0a4fff12706.png">

次に、アップデート環境を構築していきます。僕は今回、Mac Book Air（以下、Mac）で行いました。
WindowsやUbuntuの場合は[ファームウェアアップデート環境構築方法](https://github.com/groupgets/purethermal1-firmware)に書いてあります。

5. `sudo mkdir -p /usr/local`
6. `curl -L https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-mac.tar.bz2 -o ~/Downloads/gcc-arm-embedded.tar.bz2`
7. `sudo tar xjf ~/Downloads/gcc-arm-embedded.tar.bz2 -C /usr/local && rm ~/Downloads/gcc-arm-embedded.tar.bz2`
8. `export PATH=$PATH:/usr/local/gcc-arm-none-eabi-4_9-2015q3/bin`
9. `git clone https://github.com/groupgets/purethermal1-firmware`
10. `cd purethermal1-firmware`
11. `make`

次に、MacとPureThermal 2を接続してファームウェアのアップデートをしていきます。

12. `brew install stlink`
13. `dfu-util -a 0 -D main.bin -s 0x08000000`

以上でファームウェアのアップデートが完了します。
念のため`dmesg`で`(fw:v1.3.0)`になっているか確認しておくといいと思います。

# GetThermalを実行
[GetThermal](https://github.com/groupgets/GetThermal)を手順に沿ってインストールしていきます。

## 実行コマンドと実行結果
Mac - ラズパイ4の間はVNCを利用して接続しています。
<img width="537" alt="スクリーンショット 2020-06-27 17.40.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/62d0fafb-6acd-531d-cf61-d9b616f6bc91.png">
<img width="966" alt="スクリーンショット 2020-06-27 17.42.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/995b9c49-1923-d25c-0609-d81ebff5428c.png">

# purethermal1-uvc-captureのuvc-radiometry.pyを実行
[purethermal1-uvc-capture](https://github.com/groupgets/purethermal1-uvc-capture)を手順に沿ってインストールしていきます。
cloneした後に`git checkout master+libuvc-upstream`を忘れないようにしましょう。
## 実行コマンドと実行結果
<img width="567" alt="スクリーンショット 2020-06-27 17.55.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/076ff37f-b2f5-7d53-b4c1-705e95bbd46a.png">
<img width="639" alt="スクリーンショット 2020-06-27 17.51.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662956/13c4e776-9514-6250-da79-ee4777c5884c.png">

# 最後に一言
ラズパイ4でLepton 3.5とPureThermal 2を動かすにはPureThermal 2のファームウェアアップデートが必要でした。
ラズパイ3B+は特に何もすることなく普通に動作していたので困っていましたが、なんとか解決して良かったです。
あと、Lepton 3.5とPureThermal 2を接続したときに必ず「カチッ！」と音が鳴るところまで押し込んでください。(これが意外と沼にハマる原因になっています...)
また、筆者はQiita初投稿なので「記事の構成をもっとこうしたほうがいいよ」的なメッセージをくださると嬉しいです。

# 参考文献
https://github.com/groupgets/purethermal1-uvc-capture/issues/27