見出し画像

ラズベリーパイの研究<温度計をつくる>

前回に続き、環境制御システム構築に向けて、簡単な制御からラズベリーパイ(Raspberry Pi 4)、Pythonなどの知識を深めていきます。

ラズパイマガジン<日経BP社>と、付属のキットの中から、組み合わせられそうなものを選んでいきます。
・有機ELディスプレイ
・測距モジュール
・温度センサー
この辺りが組み合わせで使えそうです。

ラズパイマガジンの他、いくつかのウェブサイトも参考にしながら試行錯誤をしましたので、途中経過で必要だったこととそうでないものの区別が明確にできず、回路図やPythonコードなど、全てをまとめて手順に起こすことができません。あらかじめ、ご了承ください。

1.距離を測る

まず簡単そうな距離の測定からです。
シャープ 測距モジュール GP2Y0E03 (I2C アナログ出力)
を使用します。

(中略)センサーの前に手をかざして動かすと、ターミナル上には数字もそれに従って表示されるのでおおむね成功です。小数点の位置や、桁数などの設定だけでも特殊な書き方をするので新鮮ですね。ユーザー視点からすると、「距離:○○ cm」のような表示がある意味当たり前ですが、これだけでも慣れない私にとっては難関です。

2.温度を測る

中央左:トランジスタのような形のものが温度センサー
中央右:ICチップのようなものがADコンバータ

温度センサー MCP9700A-EADコンバータ MCP3002を使用します。
ラズベリーパイではアナログデータをそのまま読み込めないので、デジタル信号に変換する必要があるそうです。この温度センサーは1個40円、精度は±2℃ということで研究用には十分ですが、実用には精度の高いものが欲しいですね。

温度センサーのアナログ出力電圧をデジタル信号に変換して、その数値を温度に変換します。数値を変換するにあたり数式が必要なのですが、なぜラズベリーパイからの出力である3.3Vの数値が関わってくるのか理解が追いついていません。

(中略)デジタル変換した数値と、電圧、温度をそれぞれ表示させることができました。息を吹きかけたり、手で触ってみると数値が変化するのでおおむね成功です。

3.ディスプレイに表示

0.96インチ 128x64ドット有機ELディスプレイ OELD (制御IC: SSD1306)を使用して、文字や、図形などを表示します。

(中略)上記ウェブサイト(GitHub)などを参考にほぼ丸写しですが、文字、図形、日付を表示させることができました。「Git」という言葉も今回初めて触れましたが、多少理解しました。

4.温度を測定し、0.5秒間隔でディスプレイ表示を更新

右側には別に7セグメントLEDを表示させるための回路の一部が写り込んでいますが、
今回の回路には関係ありません

今回やってみたかったこと。
前述「2.温度を測る」「3.ディスプレイに表示」を連動させたものになります。

温度を測って、数秒おきにターミナル上に表示させることができているので、そのまま数値をディスプレイに表示と連動させれば良いのではと、単純に考えました。

そうすると、
「'int' is not iterable.」
と表示されて、なかなか動作せず。iterableとは初めて見る単語です。どういう意味か分からず、右往左往。
繰り返し文の中に、繰り返してはいけない数字があったというようなことだと理解しました。

(中略)変数の定義の仕方やコードの配置を変更させながら試行錯誤し、0.5秒毎に温度を更新しながら表示させることができました。
ついでにフォントも指定して大きめに表示させるようにしました。

私のThonny(ラズベリーパイ上でPythonを書くツール)上ではなぜか日本語入力ができなかったため、「温度:○○℃」というような表記の代わりにアルファベット表記にしています。

今回の学び

Raspberry Piを温度計にすることができました。
I2CやSPIという端子を使用しましたが、他にも未使用の端子があり、まだまだ奥は深いなという印象です。

Pythonの文法的な理解が多少進んだことと、「Git」を今回初めて活用したことによって、「Git」というものがオンライン上に公開されている、複数の人が自由に使用したり編集したりすることができるありがたいものだということが理解できました。

今後は、環境測定のセンサーを増やしつつ、特定の数値に達した場合にアラームを出すというところを進めていきたいと考えています。単純にLEDを光らせたり、音を出したりするアラームだけでなく、メールやアプリと連動してスマートフォンに通知させる、またはスマートフォンより操作するIoTに迫っていきます。

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?