Raspberry PI で Lepton3.x を使う（その４）

# はじめに
簡単に温度測定をしようと Lepton 3.5 を使っています。
当初思っていたほど『簡単』ではなかったことについて
いろいろ書いている記事の４回目です。

# 課題解決へ
- 課題はこれ(↓) （『[Raspberry PI で Lepton3.x を使う（その２）](https://qiita.com/higuchi-toshio-intec/items/c20470abbf9a18971bec)』を参照）
![2019-10-09-164413_340x290_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/d1a8f801-cd9a-b8f0-d2b1-19e39675bb32.png)

- この課題については、チョット時間があいた時に、チョット調査する程度の扱いになっていました。
- チョットの調査の積み重ねで分かったことは、**Qt の処理負荷が影響**しているということ。
  - 画面を書き換えなければ、データ取得は問題ない（と思われる）
  - RaspberryPI にとって、**短時間**での画像更新処理は**負荷が高い**

- Lepton3.5 は、データ量が Lepton2.5の４倍
  - 高解像度となり取り扱うデータ量が増え、データ処理負荷が増えるのは避けようがない
  - Lepton2.5 と違って、Lepton3.5 は１/4画面ずつデータを取得しており、Lepton2.5と同様の仕組みで画面を更新すれば、残念ながら Lepton3.5 では画面更新頻度が４倍となる

- ここで思いついた『１画面分のデータがそろったタイミングで画面更新すれば良いのでは？』
  - 取り扱いデータ量は４倍かもしれないが、画面更新頻度は４倍にならない！
  - **Qt の処理負荷を軽減**できる！

||UpdateImageのタイミング|備考|
|---|---|---|
| 修正前 | ![20191115-UpdateImage-4times.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/aec515b0-a28c-1c06-3ff0-138bb6b8e640.png)|データ取得のタイミング（４回ごと）に UpdateImage|
| 修正後 | ![20191115-UpdateImage-once.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427107/c8bc7e1c-2e6a-de1a-0b16-59227c33ca33.png)|４番目のデータ取得のタイミングで UpdateImage|


- **大した修正量もなく実装できてしまった**
  - **かなり改善した動き！**


# その後（PullRequest など）
- commit したよ
  - https://github.com/higuchi-toshio-intec/LeptonModule/tree/support_lepton3
- fork 元に連絡したよ（2019/11/13）
  - Please try this version.
- fork 元から返事が来たよ（2019/11/13）
  - Thanks for your persistence with this. This looks like a very good update, I'll try it out as soon as I can. [[翻訳](https://translate.google.co.jp/?hl=ja&tab=wT#view=home&op=translate&sl=auto&tl=ja&text=Thanks%20for%20your%20persistence%20with%20this.%20This%20looks%20like%20a%20very%20good%20update%2C%20I'll%20try%20it%20out%20as%20soon%20as%20I%20can.)]
     - persistence(固執) って言われたよ（苦笑）
     - merge されるといいな
- fork 元から返事が来たよ（2019/11/16）
  - I tried to run this again on my pi4 and continued to have the same problems. [[翻訳](https://translate.google.co.jp/?hl=ja&tab=wT#view=home&op=translate&sl=en&tl=ja&text=I%20tried%20to%20do%20this%20again%20with%20pi4%20but%20the%20same%20problem%20continued)]
     - やっぱり動かないらしい（涙）
  - Partially Works On RPi4/RPi3 with Buster. (長いので省略) [[翻訳](https://translate.google.co.jp/?hl=ja&tab=wT#view=home&op=translate&sl=en&tl=ja&text=Partially%20Works%20on%20RPi4%2FRPi3%20with%20Buster.%0AWorks%20on%20RPi3%20with%20Stretch.%0ADoes%20Not%20Work%20on%20RPi4%20with%20Stretch.)]
     - どうやら、RPi3/RPi4の機種依存ではなく OS 依存(Stretch/Buster)らしい
- 使っている RPi3 に Buster 入れてみたよ（2019/11/20）
  - 彼の言う通りだ（runs for a few seconds and stops [[翻訳](https://translate.google.co.jp/?hl=ja&tab=wT#view=home&op=translate&sl=en&tl=ja&text=runs%20for%20a%20few%20seconds%20and%20stops)]）再現したよ
  -  SPI 通信が怪しそうだったので '-ss 30' オプション付けて動かしてみたら、マシになった
  -  とりあえず、この↑オプションを試してもらうよう伝えた
  -  さて、どうなるか？
- 最終的に merge されました（2019/12/21）
  - https://github.com/groupgets/LeptonModule/pull/66
  - [README.md](https://github.com/groupgets/LeptonModule/blob/master/software/raspberrypi_video/README.md)にも記載されていますが、Buster では以下のような **おまじない** をとなえると問題なく稼働します

    ```
    sudo sh -c "echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor"
    ```

---
# 記事リスト
- [Raspberry PI で Lepton3.x を使う](https://qiita.com/higuchi-toshio-intec/items/da4f12e3e09426f45812)
- [Raspberry PI で Lepton3.x を使う（その２）](https://qiita.com/higuchi-toshio-intec/items/c20470abbf9a18971bec)
- [Raspberry PI で Lepton3.x を使う（その３）](https://qiita.com/higuchi-toshio-intec/items/fd7d8641313afe53a12f)
- [Raspberry PI で Lepton3.x を使う（その４）](https://qiita.com/higuchi-toshio-intec/items/d72448e3e473c8968d40)（← 今回の記事）
- [Raspberry PI で Lepton3.x を使う（その５）](https://qiita.com/higuchi-toshio-intec/items/7961cd2e51de0d582cac)


<!-- eof -->