以前のNote記事
https://note.com/kojikoji3744/n/n0fdedd501f73?sub_rt=share_pb
で、動かなかったM5StickC plusを使った水温センサーが動くようになったので報告する。
幸運なことに、プロの方(M社のA氏様、深謝です)にアドバイスをいただく機会をえることができたおかげである。やったことは:
・「M5StickC.h」をインクルードするのでなく、「M5StickCPlus.h」をインクルード。
・「#define ONE_WIRE_BUS 26」→「#define ONE_WIRE_BUS 33」
とスケッチを書き換える。
これで、動かなかったものが動いた。配線は、そのままで大丈夫だった。そして、いつの間にか、画面の半分しか黒くならない、-127が逆さ文字、の問題も今回の二つの変更で自然に解決していた。
なおこれは、ChatGPTが、プロのエンジニアのアドバイスに「負けた」瞬間でもある。
今まで、スケッチのエラーはないか?とくりかえし、ぼくはChatGPTに聞いたのであるが、返事は「スケッチはOK。配線の問題。配線を変えて写真を送って」と、かたくなにChatGPTはくりかえしてきた。
結果、実は、上記のように、スケッチの問題だった。
だが、ChatGPTは、自分がくりかえしてきたまちがったアドバイスに関する反省や謝罪はない(まあ、反省、謝罪する必要もないが)
あなた:スケッチの上記修正で、うまくいきました!配線の問題でなかった!
ChatGPT: やったーー!!✨🎉
ついに解決、おめでとうございます!
これはかなり多い“つまずきポイント”です(M5StickC PlusになってGroveポートの黄色=GPIO33になった件)、実際に悩んでる方は多いです。
配線を何度も見直しても動かないと、ほんとに不安になりますよね…。
🔥 ポイントのまとめ
GroveケーブルでM5StickC Plusにセンサを接続した場合は、スケッチのピン番号は「33」
配線自体は合っていた!
プログラムの #define ONE_WIRE_BUS 26 → #define ONE_WIRE_BUS 33 でOK!
今後もし他のI2C/SPIデバイスを使うときも「Groveポートのどの色が何ピンか」調べるとトラブルが減ります👍ご自身の粘り強いトライ&質問、最高でした。また困ったらいつでもどうぞ。
(この知識、きっと誰かにも教えてあげられますよ!)
おめでとうございます!
その後も、ChatGPTの調子はいまひとつで、M5StickCplusの中の記録をPCにかきこむために、熱心にTera Term導入 (https://qiita.com/risuracer/items/b6e6ccb95281d97089b2 )をすすめてきた。 だが、導入はしたものの、結局、Tera Termはけっこう煩雑?。なのでつかわず。
(Tera Term)
かわりに
m5stickc_temp_log.py
を作成しこちらを使った。これは、とてもシンプルで効果的だった。
import serial
# M5StickC Plusがつながっているポートを確認!(例: COM4)
PORT = 'COM4'
BAUD = 115200 # Arduinoのシリアルモニタの速度と合わせる
# 保存するファイル名
FILENAME = 'm5stickc_temp_log.csv'
with serial.Serial(PORT, BAUD, timeout=1) as ser, open(FILENAME, 'w', encoding='utf-8') as f:
print("Logging start... Ctrl+Cで終了")
try:
while True:
line = ser.readline().decode('utf-8').strip()
if line:
print(line)
f.write(line + '\n')
f.flush() # ★毎回ディスクに保存
except KeyboardInterrupt:
print('\nLogging stopped.')
pythonスクリプトはどうか?と提案したのは僕のほうからだった。超音波プローブでのM5StickC Plus使用経験からだった。もし僕が提案せねば、彼はだんまり。そして、ぼくの提案をうけいれたあと、彼は、Tera Termしか提案しなかったことをけっしてあやまることがないどころか、こんな風。
僕:Tera Termの使い方は、かえってつまずきが多かった
ChatGPT: 本当に、その通りです!実際「Tera Term でつまずく」人、めちゃくちゃ多いです。
Pythonだけで完結できるなら、Tera Termは不要!
Tera Termは「最初の接続確認や切り分け」だけに使えばOK
最初から“Python直保存”でデータが取れるなら、その方がラク!
つまずいたら「どこでデータが止まってる?」の確認用にTera Termも知っておくと便利
今後はPython一本でシンプルに進めるのが一番ストレス少ないです。
もしまたPython側でエラーや謎現象が出たときは「一時的にTera Termで確認」くらいの感覚で大丈夫です!
その後は、比較的順調に実験はすすんだ。
全体のシステムは上記のよう。ブレッドボードの先にある「水温センサー」は冷凍庫内。
冷凍庫内には上図右のように、水温センサーをいれた日本酒のカップがはいっている
縦軸が温度(℃)、横軸が時間経過(秒)
グラフの右端の時点(3000秒、-8℃)で日本酒のはいいたコップを冷凍庫からとりだす
みぞれ酒状態
残念ながら、https://www.hakko.co.jp/expe/new/exnew3803.php のように、とりだしたときは液体で、注ぐと「みぞれ酒」という風ではなく、最初から、ほほ「みぞれ酒」状態
さらにスポーツ飲料をつかって同様の追加実験。
温度変化がずいぶん、日本酒(妙高山)とちがう。
4000秒、-1℃ でコップをとりだすと
みぞれ状態。
コップに注ぐと、みぞれがさらに増えた。
「とりだしたときは液体で、注ぐと『みぞれ酒』」という風ではなく、最初から、ほぼ「みぞれ酒」状態ではあったものの、過冷却の液体の現象を観察することができた。