MH-Z19C

秋月でCO2センサーを購入しました。
https://akizukidenshi.com/catalog/g/gM-16142/

これを、ATOM Matrix に接続して使ってみたいと思います。
CO2濃度に応じてLEDの色を変更するようにして使う予定ですが、とりあえずは測定できるところまで。
動作環境は MicoPython(UIFlow) です。

こちら
https://kohacraft.com/archives/1068007971.html
を参考に、測定できるようになったものが下記

import machine

uart1 = machine.UART(1,tx=23,rx=33)
uart1.init(9600)

uart1.write(bytes([0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79]))
ret=uart1.readline()

ret[2]*256+ret[3]

1000位の値が表示されたので、ちゃんと動いているようです。

データをどこかに登録するようにもしたいし、測定値でLEDの表示も変わるようにしたいので、まだまだこれからですね。


(2023/1/17)
上のリスト、細かいところで色々間違っていたので修正したのと、
コピペ用に下記を追記しました。

import machine
import time
uart1 = machine.UART(1,tx=23,rx=33)
uart1.init(9600)

while True:
    ret = uart1.write(bytes([0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79]))
    time.sleep(0.1)
    ret = uart1.readline()
    print(ret[2]*256+ret[3])

    time.sleep(5)

RGB LED Unit その2

UIFLOW の新しいバージョンで動作確認したのでメモ

v1.9.2 を使用

import unit

rgb0 = unit.get(unit.RGB,unit.PORTA)

# 全体の明るさ
rgb0.setBrightness(10)

# LED を個別に点灯
rgb0.setColor(1, 0xff0000)
rgb0.setColor(2, 0x00ff00)
rgb0.setColor(3, 0x0000ff)

# すべてのLEDを同じ色で点灯
rgb0.setColorAll(0xff0000)

# 範囲指定して LED を点灯
rgb0.setColorFrom(1, 3, 0xff0000)



# LED の点灯状態を固定する
# この状態で setColor 等を実行しても点灯状態は変化しない
rgb0.setShowLock(True)

# 点灯状態の固定を解除
# True のときに行われた変更を反映する(Matrix)
rgb0.setShowLock(False)

# True のときに行われた変更を反映する(M5Stack)
rgb0.show()

.setShowLock() の動作が M5Stack と ATOM Matrix で異なっていた。
UIFLOW のバージョンは v1.9.2-en と v1.9.2 なので同じと思われる。

M5Stack の方は .setShowLock(True) の状態でも、.show() を実行するとそれまでの変更内容がLEDの点灯状態に反映されるが、Matrix では反映されない。
.setShowLock(False)を実行した際、Matrix はそれまでの変更が反映されるが、M5Stack は変化せず。その後 .show() を実行することで反映される。

使う場合には注意したい。忘れそうだけど。

ATOM Matrix で Micropython

ATOM Mtrix を Micropython で色々やってみようと思います。

UIFlow 用のファームウェアなので M5Stack 用の UNIT とか簡単に使えます。

ENV unit で各センサー値を読み出す

import unit

env0 = unit.get(unit.ENV,unit.PORTA)

print(env0.pressure)

print(env0.temperature)

print(env0.humidity)

UIFlow でブロックを配置しPython 表示にしたものを参考に、これだけで表示できました。

M5StickC のサンプルスケッチではまる

Arduino IDE に M5StickC ライブラリ (Version 0.1.0) をインストールして、いくつかサンプルプログラムを動かしてみました。

“スケッチ例 -> M5StickC -> Basics ” にあるプログラムを動かしてみた後、
“スケッチ例 -> M5StickC -> Games ” の Dices  を実行してみたのですが、LCDに「SHAKE ME」と表示されるものの、本体を動かしても何も変化がありません。

加速度センサの値をみて次の処理に進むプログラムになっていて、センサの不具合も疑ったのですが、スケッチ例の MPU6886 は正しく動作しているようなので本体の不具合では無さそうです。

他のサンプルスケッチ等調べたところ、IMU が SH200Q か MPU6886 かで使用するクラスを変更する必要がありそうなことが分かりましたので、とりあえず スケッチ内のM5.IMU. を すべて M5.MPU6886. に書き換えて実行してみると、本体を動かすとサイコロが表示されるようになりました。

M5StickC には IMU が2種類存在するようなんですが、ライブラリで自動判別とかしてくれないのですね。

と、https://github.com/m5stack/M5StickC を見てみたら、次のバージョンではM5.IMU. に統合されるっぽいですね。最新のものを直接ダウンロードすれば問題なかったのかも。

 

 

M5StickC 買いました

obniz OS の記事を見て、そろそろM5Stackを買ってみても良いかなぁ、と思いスイッチサイエンスさんで検索したところM5StickCを見つけ、値段につられて買ってみました。

とはいうものの、スイッチサイエンスさんは品切れだったので購入したのは共立エレショップさんです。スイッチサイエンスさんではHATだけでも買おうかと2~3日悩んでいる間に次々と品切れに。とりあえず買っておくべきだったなぁ。

micro:bitよりも安く、小さいのに画面があってバッテリー内臓というのはすごいですね。ケースに入っているし持ち歩くならこっちの方が気楽です。