はじめに
前回、開発に役立つ幾つかのTipsを紹介しましたが、それを利用して実際に仕えるものを作ってみたいと思っています。
今回はタイトルにもなっているように、温度、湿度、気圧計です。
では早速いってみましょう。こんなやつ。
準備するもの
M5StickC
こちらが本体となります。
ENV.Ⅱ HAT
初期設定の方法は以前の記事を参照ください。
実際のプログラム
from m5stack import * import hat import _thread from machine import I2C # 変数宣言 LcdOn = True # WiFi設定 import wifiCfg wifiCfg.autoConnect(lcdShow=True) # 時刻同期 import ntptime, utime ntp = ntptime.client(host='jp.pool.ntp.org', timezone=9) # 表示ON/OFFボタン処理 i2c = I2C(freq=400000, sda=21, scl=22) #Enable I2C def buttonA_wasPressed(): global LcdOn LcdOn = not LcdOn if LcdOn: i2c.writeto_mem(52, 0x28, b'\xcc') i2c.readfrom_mem(52, 0x12, 1) i2c.writeto_mem(52, 0x12, b'\x1f') else: i2c.writeto_mem(52, 0x12, b'\x13') i2c.writeto_mem(52, 0x28, b'\x9c') btnA.wasPressed(buttonA_wasPressed) # 時刻表示(スレッド) def time_data(): while True: lcd.font(lcd.FONT_DefaultSmall, rotate = 0) lcd.rect(70 , 70, 160, 80, lcd.BLACK, lcd.BLACK) lcd.print('{}/{:02d}/{:02d} {:02d}:{:02d}'.format(*time.localtime()[:5]),60, 70, lcd.WHITE) utime.sleep(100) _thread.start_new_thread(time_data , ()) # ENV HAT(スレッド) def env_data(): while True: hat_env0 = hat.get(hat.ENV2) Env_T = str('{:.1f}'.format(hat_env0.temperature)) Env_H = str('{:.1f}'.format(hat_env0.humidity)) Env_P = str('{:.1f}'.format(hat_env0.pressure)) # Print lcd.font(lcd.FONT_Default,rotate = 0) lcd.rect(70 , 0, 160, 70, lcd.BLACK, lcd.BLACK) lcd.print(Env_T + ' C', 70, 5 , color=lcd.WHITE) lcd.print(Env_H + ' %', 70, 25 , color=lcd.WHITE) lcd.print(Env_P + ' hPa', 70, 42 , color=lcd.WHITE) utime.sleep(1000) _thread.start_new_thread(env_data , ()) # 画面の初期化 lcd.setRotation(1) lcd.font(lcd.FONT_Default) lcd.rect(0, 0, 65, 160, lcd.BLACK, lcd.BLACK) buttonA_wasPressed # タイトル lcd.rect(0, 0, 50, 80, lcd.ORANGE, lcd.ORANGE) lcd.font(lcd.FONT_Default,rotate = 270) lcd.print('Room' ,10,60,color=lcd.WHITE) lcd.print('Check' ,30,60,color=lcd.WHITE)
ポイントは、Aボタンを押したときにLCDをON、OFFにする部分かと思います。
ちょっとややこしいですが、サンプル通りに書いていただければ、動作すると思います。
まとめ
いかがでしたでしょうか?ちょこっとプログラムを書けば、色々なものが作れそうですね。実装していませんが、5分おきに温度や湿度を送ってグラフを生成するとか、湿度がある一定以上高くなると携帯に通知して知らせてくれるとか・・・夢が広がります。
おもちゃ感覚で遊べますので、是非試してみてください。
コメント