我が家でも飼育してみるか。
まずは、メダカが快適に過ごせる水温か確認するぞ!
この記事では、プログラミング学習をされる方に向けた、「おすすめの機器」と「プログラミング方法」をご紹介します。 題して「まじコレ!」 第二回は、「M5Stack Core 2」です。 […]
記事内でご紹介する「M5Stack」はこちら!
M5Stack Basic
Arduino、UIFlow、MicroPythonに対応した開発キットです。
物理ボタン、スピーカ、ディスプレイが搭載されているモデルです。機能を限定しているため、比較的安価です。
一台でいろいろと遊べる機器なのでおススメです!
※今回使ったのは、こちらのモデルの旧バージョンになります。
M5Stack Core2 開発キット
Arduino、UIFlow、MicroPythonに対応した開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
水温を測るために必要なものは?
温度センサーは過去にも記事にしたことがありましたが、今回は水温を計るため、防水仕様の温度センサーを準備する必要があります。
今回は次の温度センサーを準備しました。
防水仕様の温度センサー
Arduinoでの開発に対応した防水仕様の温度センサーキットです。
このキットは、温度センサー(防水ケーブル付き)、変換基板(プルアップ抵抗付き)、マイコンとの接続用ケーブルがセットになっています。変換基板経由で直接Arduinoの開発ボード(Arduino、M5StackやRaspberry Pi Picoなど)に接続することができ、プログラム例も提供されています。
この温度センサーは、「DS18B20」を使っているモデルになります。
Arduinoなどと接続する場合は、プルアップ抵抗が必要になりますが、こちらのキットにはプルアップ抵抗が実装されていますので、そのままArduonoに接続しても、安定して水温を計測できます。
キットの内容
キットの内容は次の通りです。
温度センサー(防水ケーブル付き)、変換基板(プルアップ抵抗付き)、マイコンとの接続用ケーブルがセットになっています。
使用(接続)方法
「M5Stack Basic」と温度センサーの接続は、次のように行いました。
温度センサーと変換基板の接続
温度センサーは、5V(VCC)[赤]、GND[黒]、測定用信号線[黄]の3線仕様になっています。
温度センサーを変換基板に接続するには、変換基板側のターミナルコネクタを使います。
ターミナルコネクタにセンサーから出ている線を挿入して、ターミナルコネクタの上部にある部位を押すと固定されます。
手で押すには硬いので、ドライバーなどを使って慎重に力を加えます。
変換基板とM5Stack Basicの接続
用途 | 温度センサー変換基板側 | M5Stack Basic側 |
5V(VCC) | 5V[赤] | 5V出力 |
GND | GND[黒] | GND |
測定用信号線 | 測定用信号線[緑] | G5(GPIO5) |
ケーブルとコネクタの種類や作成方法は、次の記事で紹介しています!
電子工作ではんだ付けとともに欠かせないのが、「ケーブル作り」。 電子部品やコンピュータ、モーターなどの各部品はいろいろな形状のコネクタを持っています。そこで、ケーブルの端を接続するものの規格に合わせることが必要になります。 また[…]
水槽の横におけるデザインのケース作り
今回は、毎日の水槽の水温を測定したいのと、水槽の設置場所がリビングのキッチンカウンターの上であることから、温度センサーの変換基板や、M5Stack Basicとの接続部分についても、保護する必要がありました。
また、水温センサーを水槽にいい感じに固定する部材も必要になりました。
こういうときに役立つのが、3Dプリンター「ORIGINAL PRUSA i3 MK3S+」です。
積層型の3Dプリンターで、造形精度が良く、当ブログでもいろいろなものを作っています。
自分で組み立てるキットもあるので、自作ユーザーや、導入コストを抑えたい人に最適です。
最近、Mk4が発売されましたが、Mk3も併売されており、まだまだ現役で活用できますよ~。
(しかも後からMk4にアップグレードするキットもあります。)
今回使用した3Dプリンター「ORIGINAL PRUSA i3 MK3S+」はこちらからどうぞ!
3Dプリンター(キット)
よりよくなった新型はこちら
オープンソースの3Dプリンターの仕様を作った技術者が作った会社の3Dプリンターです。この商品は、自分で組み立てることが前提です。マニュアルも日本語化されていて、組み立てで特に手順に困るということはありませんでした。非常によくできた製品で、印刷品質も高いので非常に満足できます。
ちなみに「HARIBO」というお菓子もついている(笑)ので楽しみながら組み立てられます。
3Dプリンター(組み立て済み)
よりよくなった新型はこちら
オープンソースの3Dプリンターの仕様を作った技術者が作った会社の3Dプリンターです。この商品は、すでに完成済みで調整もされているものです。私は自作キットのほうを購入しましたが、非常によくできた製品で、印刷品質も高いので非常に満足できます。
買ってすぐに印刷が楽しめるのもいいですね!
ケースのデザインをFusion360で作る!
ケースのデザインは、AutoDeskのFusion360を使用して作成しました。
「M5Stack Basic」と変換基板を、インクルードできるケースとして設計しています。
表面は。「M5Stack Basic」のディスプレイと物理ボタンが使えるように、窓を設けています。
また、左側面には、「M5Stack Basic」への電源供給用として、USB-TypeCケーブル用の穴とガイド、温度センサーのプローブ部分を出す穴を2つ(用途によって使い分け)つけています。
※右側の図には、M5Stack Coreをはめた場合のイメージを表示しています。
温度センサーの変換基板やケーブルを収納するエリアの高さが、M5Stackよりも高いため、ケース全体の高さがM5Stackの高さよりも高くなります。
そのため、裏面には、「M5Stack Basic」を支える支持体と、熱を逃がしたり、Wi-Fi接続時の電波を通りやすくするための穴をデザインしました。
固定用のネジは、M3ネジを使用するようにねじ切りをデザインしています。
これで、「M5Stack Basic」と水温センサーを保護するケースのデザインが決まりました。
次は、温度センサーの保持用ホルダーを作ります。
温度センサーの保持用ホルダーをFusion360で作る!
温度センサーの保持用ホルダーについても、デザインは、AutoDeskのFusion360を使用して作成しました。
なるべく、水槽内の水質に影響がないように、水槽内の水位よりも上にホルダーが位置するように長さを設定しました。
水温センサーについては、ビニール袋をかぶせて水につけることで腐食対策としました。
また、誤ってホルダーが水槽内に落ちることを防止するために、紐などで固定できる穴を設けています。
3Dプリンター向けの印刷データを作る!
デザインが決まったところで、今回使う3Dプリンター「ORIGINAL PRUSA i3 MK3S+」で印刷するためのデータに変換します。
データの変換には、「Plusa Slicer」を使いました。
これは、3Dプリンターの販売元が提供している専用のソフトウェアです。
ソフトウェアは無償で利用が可能です。
Fusion360で作成したデータを「エクスポート」機能で「3MF」形式のファイルに保存します。
保存した「3MF」データを「Plusa Slicer」で読み込んで印刷データへ変換します。
変換したイメージは次のようになりました。
これで、保護ケースを3Dプリントする準備が整いました。
次は、実際に印刷していきます。
3Dプリンターを使った造形
作成したデータをもとに3Dプリンター「ORIGINAL PRUSA i3 MK3S+」で印刷を行います。
今回は、印刷する素材(フィラメント)としては、「PETG」を使用しています。
理由としては、多少柔軟性があり、ケースとしての強度も十分に出せるためです。「PLA」では、硬すぎて、落とした際に割れてしまいそうなので。
今回使用したPETGのフィラメントは、次のものになります。
Plusa が販売しているもので、フィラメントの巻も綺麗に揃っており、印刷時にも問題がほぼない優秀なフィラメントです。
3Dプリンターで印刷する
それでは、3Dプリンター「ORIGINAL PRUSA i3 MK3S+」を使って印刷します。
実際の印刷工程や、出来上がりの動作イメージは、次の動画をご覧ください!
印刷した結果は、次のようになりました。
いつもながら、かなりいい精度でプリントすることができました。
合わせ目、ネジでの固定も確実にできます。
さてこれで、保護ケースも完成しました。
いよいよ次は、プログラミングを行います。
水温を計測するプログラムを作る
それでは、Arduino でプログラムを作成していきましょう。
まずは、今回の目標から。
今回の目標
今回は、温度センサーを水槽に配置して、水槽内の水温を計測しデータとして保存します。
また、計測値がわかりやすいように、「M5Stack Basic」のディスプレイに表示します。
<機能>
- 約1分毎に水温を計測し、microSDカードへ保存する
- 計測時の水温をディスプレイに表示する
- 適正水温(20~25℃あたり)を外れた場合に注意をディスプレイに表示
なお、水温を測定してディスプレイに表示する以外の処理はないため、1分間隔での実行については、単純にdelay関数を使います。
実行処理が増えてきたら、処理の方法を変更する予定です。
計測したデータは、次のmicroSDカード内に保存します。
また、microSDには、Wi-Fi接続情報(アクセスポイント情報)をJSON形式で保存しておき、Wi-Fi接続時に読みだして使用します。
microSDカード
安心・安全なSanDiskのmicroSDメモリです。JetsonやRaspberry Piなどで使用するには少し遅い部類のメモリになりますが、M5Stackなどでデータロギングやデータ読み込み用途にはこのあたりが最適です。
安価なメモリはほかにもありますが、信頼性が高いこのメーカーを当サイトではおススメしています。
使用するライブラリ
今回は、主に次のArduinoライブラリを使用します。
ライブラリ名(バージョン) | 用途 | 詳細URL |
ArduinoJson(6.21.2)
|
microSDカードに記述したアクセスポイントの情報(JSON形式)を、読み込みプログラム内で処理するために使用しています。
今回はWi-Fi接続を行った後に、NTPサーバーと時刻同期するために使用しています。 |
https://arduinojson.org/?utm_source=meta&utm_medium=library.properties |
OneWire(2.3.7)
|
温度センサー(DS18B20)からデータを取得して処理するために使用しています。 | https://www.pjrc.com/teensy/td_libs_OneWire.html |
LovyanGFX (1.1.6) | M5Stackのディスプレイに水温データや警告表示を行う際に使用しています。 | https://github.com/lovyan03/LovyanGFX |
ライブラリのインストールは、次の記事で紹介しています。
「Arduino IDE」では、使用する機能やセンサー、ボードを使用するプログラムで使用できる有効なライブラリが公開されています。 ライブラリを使用すると、効率的かつ品質を確保したプログラミングが可能です。 この記事では、Ar[…]
この記事では、プログラミング学習をされる方に向けた、「おすすめの機器」と「プログラミング方法」をご紹介します。 題して「まじコレ!」 第二回は、「M5Stack Core 2」です。 […]
プログラムの作成
Arduino IDE2.xを起動して、次のとおり実行してください。
今回のプログラムは、Arduino IDE 2.1.0で動作確認を行っています。
Arduino IDE スケッチ例
今回のプログラムは、GitHubに保存しています。
ダウンロードして、srcフォルダ内の「M5Stack_TempSensor_v1.ino」を開いてください。
※プログラムは、M5Stack Basic用になります。
「M5Stack Core 2」向けに作成する場合は、時刻(RTC)関係など適宜変更してください。
ダウンロード手順
- GitHubの右上にある「Code」から「Download Zip」を選択します。
- ダウンロードしたファイルを解凍します。
- “microSD”フォルダにある次のファイルをmicroSDカードへ保存します。
– SSID.txt
– TempSensor_log.txt - microSDカードに保存した、”SSID.txt”をテキストエディタで開き、
使用するWi-Fi接続情報(アクセスポイント情報)を書き換えて保存します。 - microSDカードをM5Stackに挿入します。
- 温度センサーをM5Stackに接続します。
- ダウンロードした”src\M5Stack_TempSensor_Logging”フォルダにある”M5Stack_TempSensor_v1.ino”を
Arduino IDEで開きます。 - Arduino IDEからM5Stackに書き込みます。(書き込み方法は以降に記載しています。)
GitHubダウンロードURL
Contribute to karakuri-musha/M5Stack_TempSensorLogging devel…
M5Stackへの書き込み
- 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
- 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
ボード:「M5Stack」-「M5Stack-Core-ESP32」
「Partition Scheme」で「Not OTA(Large App)」を選択します。 - 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
(転送速度は「115200」です) - 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。
プログラム実行結果
M5Stackのディスプレイ上に次のように温度が表示されれば、完成です。
温度が変化すると、次のように表示が変化していきます。
最終的な組み立てと設置
これまで見てきた、温度センサーやM5Stack、Arudinoでのプログラミングを組み立てたものを、自作したケースに入れて組み立てました。
次のように、ケースの中にM5Stackと変換基板、ケーブルを入れて、裏蓋をネジで固定します。
せっかくなので、「メダカ」のイメージをデザインした絵をケースにつけてみました。
うん。ありですね。
無塗装ですが、なかなかいい味を出しています。
最後に水槽の横に設置してみました。
きちんと水温が計測できていますね~。よしよし。
置いた感じもいいですね~、シンプルな見た目にしてよかったです。
なかなか、いい感じに仕上がったのではないでしょうか!
今回作ったものをベースとして、まだ、メダカの育成環境を快適にしていくアイデアを追加してアップデートしていけたらいいですね~
編集後記
いかがだったでしょうか。
設置してみると、シンプルでわかりやすい水温計が出来上がりました。
計測データもしっかりと保存されているので、季節の変わり目などにデータを確認して、水温対策に活用していければと思います。
皆さんも、挑戦してみては、いかがでしょうか!
今回の記事は以上となります。
最後までご覧いただきありがとうございました。
一緒に読みたい記事
この記事では、プログラミング学習をされる方に向けた、「おすすめの機器」と「プログラミング方法」をご紹介します。 題して「まじコレ!」 第二回は、「M5Stack Core 2」です。 […]
記事内でご紹介した商品はこちら!
M5Stack Basic
Arduino、UIFlow、MicroPythonに対応した開発キットです。
物理ボタン、スピーカ、ディスプレイが搭載されているモデルです。機能を限定しているため、比較的安価です。
一台でいろいろと遊べる機器なのでおススメです!
※今回使ったのは、こちらのモデルの旧バージョンになります。
M5Stack Core2 開発キット
Arduino、UIFlow、MicroPythonに対応した開発キットです。
タッチスクリーン、マイク、IMUを使うことができ、従来のM5Stackよりも多機能なモデルです。 バッテリーも搭載しています。一台でいろいろと遊べる機器なのでおススメです!
防水仕様の温度センサー
3Dプリンター(キット)
3Dプリンター(組み立て済み)
microSDカード
M5Stack の他の記事はこちらからどうぞ!
すけろく ううーん。 どうしたものか。 げんろく どうした? 浮かない顔をして。 すけろく ChatGPTをマイコンから使ってみたいのだが、 どうすればよいのかわからなくてな。 げんろく そうか。 ChatGPTもAPIをもっているから、マイコンで文章を作って ChatGPT APIに送信すればよいと思うぞ。 今回はそのあたりを使ってみようか! 皆さん、「ChatGPT」は活用されていますか? 私 […]
すけろく 最近メダカの飼育が流行っているらしいの~ げんろく そうだな。日本の水質にも適用能力が高い魚だからな。 我が家でも飼育してみるか。 すけろく そうなると、メダカに快適な環境を整える必要があるな。 げんろく よし。 まずは、メダカが快適に過ごせる水温か確認するぞ! 皆さん、お家で何か動植物を飼っていますか? 今回、縁あって、げんろく宅にも「メダカ」さんがやってくることになりました。 メダカ […]
すけろく んーどうしたものか。 げんろく どうした? 深刻な顔をして。 すけろく M5Stackにプログラムを書き込んだら 起動しなくなってな。 電源ON/OFFでも無理なのだ。 げんろく 書き込んだプログラムか、バッテリーの 過放電か。工場出荷時に戻してみてはどうだ? この記事では、M5Stackにプログラムを書き込んだ結果、うまく動作しなくなった場合の対処方法を記載します。 ご紹介するのは「工 […]
すけろく んー。 どうしたものか… げんろく どうした?深刻な顔をして。 すけろく 「城の守りを固めるため、敵の接近を検知してみせよ!」 と殿から宿題をもらっての。 げんろく なるほど、それならば人感センサーを使ってみてはどうか? 敵が勝手に部屋に入ったりするのを検知できるぞ! この記事では、M5Stackと、「人感センサー(HC-SR501)」を使って、人が近づいた際に検知して反応するプログラム […]
すけろく 前回は、RTC非搭載のM5Stackでの時刻同期を行ったが、 RTC搭載の場合はどうするのかな。 げんろく うむ。 RTCは、M5Stack Core 2 などで搭載されている。 ちょっと、プログラム内容が異なるから、実装してみるか。 この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法 […]
すけろく ん~。 げんろく どうした難しい顔をして。 すけろく M5Stackのディスプレイにいろいろ描画しているのだが。 画像がチラチラしてみずらいのだ。 げんろく 描画タイミングとか、メモリを使うとか しておるのか? すけろく ・・・ げんろく 今回は、そのあたりを見てみようか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字や画像を表示する際のちらつきや、安定 […]
すけろく M5StackでPCファンの回転を制御することはできたが LEDの点灯制御はまだだな。 げんろく そうだったな。 LEDの点灯制御もM5Stackで行うことができるぞ! 実際に動かしてみよう この記事では、M5StackとLED搭載のパソコン用冷却ファンを使ったLED発光制御の方法について紹介します。 前回は、M5Stackで冷却ファンを使った回転速度制御をおこないましたが、今回はL […]
すけろく M5Stackを使って、モーターをコントロールしてみたいな。 げんろく それならば、モーターコントロールを学べるPC冷却ファン制御というものをやってみるか。 すけろく ん? パソコン用の冷却ファンをコントロールできるのか? げんろく 仕組みはモーターと同じだからな。 とにかくやってみよう! この記事では、M5Stackとパソコン用の冷却ファンを使って回転速度制御を行います。 […]
すけろく 標準ライブラリでの画面描画はできた。 しかし、M5Stack向けのライブラリなので 汎用性がないな。 げんろく たしかに。 M5StickCや他のAruduino機器でも使えるものが必要だな。 すけろく そのようなものがあるのか? げんろく よし。今回は、汎用的に使えるライブラリを紹介しよう。 lovyan03さんが公開されている「Lovyan_GFX」だ。 この記事では、Arduino […]
すけろく M5Stackも時刻同期や日本語表示までできた。 うまくいっておるな。 げんろく ああ、「M5Stack」でもノウハウがたまってきている。 すけろく そういえば、大きな画面を活かしたものを 作ってみたいと思うのだが。 げんろく わかった。今回はM5Stackのディスプレイにおける 画面制御まわりを見てみるか。 この記事では、Arduino IDEを使ってM5Stackのディスプレイに文字 […]
すけろく M5Stackに英語表記で時計を表示することは 前回の記事で行えたが、日本語は表示できないのか? げんろく いや、方法はあるぞ。 eFontライブラリをM5Stackで実行できるように 修正して提供してくれているものを使うのだ。 すけろく ぜひ、やってみたいの~ この記事では、Arduino IDEを使ってM5Stackのディスプレイに日本語を表示させるための方法を紹介します。 今回使用 […]
すけろく 前回は、Wi-Fiアクセスポイントに 接続することができた。 次は時刻同期かな。 げんろく うむ。 時刻同期は、全ての基本だからな。 実装してみるか。 この記事では、M5StackをアクセスWi-Fiアクセスポイントに接続し、インターネットの時刻サービス(NTPサーバー)と時刻を同期する方法について紹介します。 M5Stackは、内蔵タイマであるRTCが搭載されているモデル(例:M5St […]
すけろく M5Stackは、Wi-Fi機能がついているのか。 げんろく ESP32のおかげだな、2.4GhzのWi-Fi接続に 対応している。 すけろく では、早速Wi-Fi接続してみよう。 げんろく せっかくなので、microSDから読みだした Wi-Fi アクセスポイント情報を使って 接続してみよう! この記事では、M5Stackに実装されているWi-Fi機能を使って、Wi-Fiルータに接続す […]
すけろく M5StackとほかのWebサービスなどとの データのやり取りにJSON形式を使いたいのだが。 げんろく うむ。 M5StackでもJSON形式が使えるか試してみるか。 この記事では、Arduino IDEを使ってM5StackのプログラムでJSON形式を取り扱う方法を紹介します。 JSON形式データは、Webサービスやほかのコンピュータとのやり取りにも使用される汎用形式なので、取り扱う […]
すけろく M5Stackは、各モデル共通でmicroSDカードの スロットが搭載されているな! げんろく そうだな。microSDカードへの読み書きが できるのでログの記録や、データ読み出しからの 画面表示ができる。 すけろく ファイルの中身を画面に表示することができるのか! それはいいな! げんろく では、手始めにmicroSDカードに入っている テキストファイルの中身を表示してみよう。 この記 […]
すけろく M5StackをArduino IDEで使ってみたいのだが。 げんろく ライブラリも揃っているしな。 開発する前に、M5Stack用の設定をArduino IDEに 施す必要がある。 すけろく M5Stack開発ボードの登録とライブラリの インストールだな。 げんろく わかってきたではないか。 新しい機器をArduino IDEで使う場合の初期設定だな。 この記事では、Arduino I […]
すけろく 今回はM5Stackを取り上げたいと思うがどうだ? げんろく なんだ、急にやる気を出して。 どういった風の吹き回しだ? すけろく M5Stickとは異なり、いろいろな種類のモデルがあって 良さそうだからな。 げんろく 開発用モデルから、実用を意識したモデルまで 様々だからな。 面白い、やってみるか! 今回の記事では、「M5Stack」を各モデルを比較して、用途に応じた使い方をまとめていま […]