CircuitPythonのI2C接続で8X8の赤外線アレイセンサAMG8833のデータを取り込むことができました。
温度をサーモグラフィのようなカラー表示にしてみたいので,8x8のNeopixelLEDマトリックスをつないでみました。
[ハード構成]
・Cytron Maker Pi RP2040ボード,Circuitpython
・8x8 赤外線アレイセンサAMG8833モジュール(スイッチサイエンス)
・8x8 NeoPixel RGB LED(WS2812B )マトリックス
なお,LEDには5Vを別電源で供給しましたが,信号は3.3Vで出力しています。
センサからの温度データをサーモグラフィもどきに表示してみたところです。
写りは悪いのですが,,動画も撮ってみました(^^;;;;;。
[Circuitpythonのプログラム]
ギクシャクとしたプログラムですが,なんちゃってサーモグラフィとしては動いています(^^),。
1.初期設定部
NeoPixelLEDとセンサのI2Cの初期設定,データの宣言をしています。なお,今回使ったCircuitpythonにはNeoPixelのモジュールがあらかじめ組み込まれています。
2.センサからの温度データ読み取りとRGB変換部
温度データはI2Cで読み取り,2byteを合成してデータとします。
また温度データを色に変換するのは,超手抜きのなんちゃって版です。
3.データを読み取り,色変換したデータをLEDに表示するメインループ部
ほぼすっからかんのメインループ部ですが,Neopixelのバッファに書き込む際にこのLEDマトリックスに合わせるように少し働いています(^^)。
このNeopixelLEDマトリックスはLEDテープを折り曲げたように連続していて,LED番号がジグザグしています。
今回の場合,センサデータとLEDパネルを右上をデータのスタートポイントにして並べると下図のような関係になりました。
これがメイン部でLEDバッファに書き込む時に行の偶数奇数で何やらやっている事です(^^)。
いろいろなLEDパネルに対応するには座標のインデックスをつけたデータにした方がスッキリするかもしれませんね。
以上,どうにかやってみたい事の基礎はできましたが,色表現の仕組みを周囲の温度との関係を考慮した表示の最低値,最高値の設定など,もう少しちゃんとしたものにしたいですね。
色については下記がとても参考になると思います。
・値の大きさをサーモグラフィのような色に変換する(@krsak,Qiita)
・サーモグラフィ風の色変化をシグモイド関数で再現する(@masato_ka,Qiita)
温度をサーモグラフィのようなカラー表示にしてみたいので,8x8のNeopixelLEDマトリックスをつないでみました。
[ハード構成]
・Cytron Maker Pi RP2040ボード,Circuitpython
・8x8 赤外線アレイセンサAMG8833モジュール(スイッチサイエンス)
・8x8 NeoPixel RGB LED(WS2812B )マトリックス
なお,LEDには5Vを別電源で供給しましたが,信号は3.3Vで出力しています。
センサからの温度データをサーモグラフィもどきに表示してみたところです。
写りは悪いのですが,,動画も撮ってみました(^^;;;;;。
[Circuitpythonのプログラム]
ギクシャクとしたプログラムですが,なんちゃってサーモグラフィとしては動いています(^^),。
1.初期設定部
NeoPixelLEDとセンサのI2Cの初期設定,データの宣言をしています。なお,今回使ったCircuitpythonにはNeoPixelのモジュールがあらかじめ組み込まれています。
2.センサからの温度データ読み取りとRGB変換部
温度データはI2Cで読み取り,2byteを合成してデータとします。
また温度データを色に変換するのは,超手抜きのなんちゃって版です。
3.データを読み取り,色変換したデータをLEDに表示するメインループ部
ほぼすっからかんのメインループ部ですが,Neopixelのバッファに書き込む際にこのLEDマトリックスに合わせるように少し働いています(^^)。
このNeopixelLEDマトリックスはLEDテープを折り曲げたように連続していて,LED番号がジグザグしています。
今回の場合,センサデータとLEDパネルを右上をデータのスタートポイントにして並べると下図のような関係になりました。
これがメイン部でLEDバッファに書き込む時に行の偶数奇数で何やらやっている事です(^^)。
いろいろなLEDパネルに対応するには座標のインデックスをつけたデータにした方がスッキリするかもしれませんね。
以上,どうにかやってみたい事の基礎はできましたが,色表現の仕組みを周囲の温度との関係を考慮した表示の最低値,最高値の設定など,もう少しちゃんとしたものにしたいですね。
色については下記がとても参考になると思います。
・値の大きさをサーモグラフィのような色に変換する(@krsak,Qiita)
・サーモグラフィ風の色変化をシグモイド関数で再現する(@masato_ka,Qiita)