M5Stackと小型サーマルプリンターを買った
去年作った自作真空脱泡機は、構想を全て達成していないので、引き続き開発を継続しています。
真空脱泡機には下記の3点の課題が依然として残っています。
1 表示の問題
Arduino IDEのシリアル出力を利用するのには、現状はパソコンを使っています。
Arduinoに液晶画面を取り付けるか、シリアル出力を表示する小型の機械を取り付けるか、何れにしてもコントロールボックスで完結したいと考えていました。
2 真空脱泡終了時刻の記録の問題。
Arduino Unoで真空脱泡完了時刻とその経過時間を保持して、経過時間をシリアル出力する様にしています。
何かの拍子にArduino UNOがリセットされる事がしばしばあり、そうなると経過時間が分からなくなってしまうので、停電に強い記録装置が欲しいと考えていました。
3 真空脱泡時間の設定の問題
現状はArduino IDEのスケッチで、真空脱泡の時間を設定していますが、単体で設定出来ればと考えています。
ただ、そう頻繁に変更する物ではないのと、プログラミングの手間の割にメリットが小さい気はするので、先の2点を解決してからの課題としたいと思います。
1 表示の問題はM5Stackで解決しました。
シリアル出力を受信して表示出来る物がないか、色々調べていたら、安価で液晶表示が出来、Arudino IDEのスケッチでプログラミングできるM5Stackが良さそうに感じたので、アマゾンで購入してみました。
M5Stackの購入時の価格は3980円でした。Yahooショッピングでも同じ価格で販売されていて、アマゾンはよく品切れするのと、ポイント等を考慮すると、M5StackはYahooショッピングでの購入がお薦めです。
M5Stackの最初の印象は、価格の割には良い物でした。
M5StackでArduino IDEで使うには、いくつかの手順が必要ですが、M5Stackは発売されてから数年が経過していて、ネット上の記事も多いので、特に困りませんでした。
環境によってはスケッチを正常にコンパイルできないみたいで、適当に構築した環境では正常にコンパイルできなかったので、環境の構築は慎重に行う必要はある様です。
M5StackはSerial、Serial1、Serial2の3つのハードウエアシリアルポートを持っていて、その内Serial2はユーザーが自由に利用できます。
SerialはUSBでパソコン等との接続に、Serial1はフラッシュメモリの通信に使われている様です。
M5Stackにはシリアル入力を液晶画面にスクロール表示するスケッチが公開されているので早速試してみました。
シリアル出力を表示する、当初の目的は一応は達成したのですが、難点が幾つか出てきました。
(1) 漢字表示が出来ない。
(2) 文字が小さい。
(3) 文字を大きくすると表示する文字数制限が辛い。
(1)の漢字表示ははフォントのファイルををSDカードにいてれ、呼び出す事で表示出来る様になりました。
(2)と(3)はM5Stackの2.5インチ液晶の大きさに起因する問題です。
2.5インチで横320ドット、縦240ドットはパソコンを前提としていたシリアル出力をそのまま表示するのは不適当で、M5Stack用に工夫してやる必要があります。
4インチくらいあれば問題は無さそうです。
液晶一体のマイコンボードとしては、Sipeed Maix Amigoがサイズ的にも値段的にも良さそうです。ただ、発売されてか半年程度の製品らしく、日本国内での使用例や作例の紹介が見つからず、開発環境も良く分からないので、M5StackやArduino Unoの様に使うのは難しそうでした。
Arduino IDEのシリアルモニター向けに作ったArduino Unoのシリアル出力をそのまま表示する必要はないので、M5Stack向けに表示を工夫する事にしました。
2 真空脱泡終了時刻の記録はレシート用サーマルプリンターで解決しました。
シリアル出力の全てを、昔ながらにプリンターで行うと言う手もありますが、用紙の消費が膨大になるので、真空脱泡終了時刻の記録のみ行う事にしました。
M5Stackだと標準でSDカードへの読み書きにも対応しているので、SDカードに終了時刻を書き込み、トラブルがあった時に参照すると言う使い方も可能そうです。
たた、SDカードの内容の参照をM5Stackで行うには、プログラムの手間がかかりそうですし、パソコンでSDカードを読むのは面倒過ぎるので、レシート用のプリンターの方が使い勝手が良さそうです。
サーマルプリンターはアマゾンで3000円程度で売られているのと同じ物です。
M5Stackで利用実績のあるタイプは横幅が大きいので、写真の物にしました。
写真ではプリンター側のTTL RXとM5Stack側のSerial2 TXを結線しています。
プリンターからM5Stackへの送信は無いので、プリンター側のTXとM5Stack側のRXは結線していません。又、VCCとGNDがM5Stackとプリンターが共通なので、別途GND同士を結線する必要はありませんでした。
サーマールプリンターが届いた当初は使い方が良く分からず、上手く動かなかったのですが、9600bpsでのシリアル出力ならArduino UnoとM5Stackで問題無く出力出来る様になりしまた。
出来ればボーレートを115200bpsにして、日本語の印字も可能にしたかったのですが、販売業者にパソコン用設定ソフトを紹介して貰ったりしたものの、プリンターの設定をパソコンで変更する事は出来ませんでした
サーマルプリンターに付属していた電源を接続するケーブはGNDが赤なので、注意が必要です。
中国製品はGNDを赤で配線する事が多い気がします。
M5Stackは殆どの点でArduino Unoを上回る物ですが、M5StackがArduino Unoに大きく点は、M5Stackでは内蔵するコンピューター、ESP32のI/Oポートの多くが内蔵機能に割り当てられている為、自由に利用できるI/Oポートが少ない事です。
Arduino Unoで行っている様に、押しボタンで操作して、デジタル真空計のアナログ入力に応じて、4チャンネルリレーを制御しつつ動作状況に応じて複数のLEDを点灯するのは、M5Stackでは難しいと考えていました。
M5Stackでサーマルプリンターを出力する為に必要な情報をネットで探していた過程で、M5StackのGPIOポートを8つ増やせる拡張I/Oモジュール、EXT.IO(PCA9544)の存在を知りました。
ネットの作例や利用例の紹介が少ないので、取っ付き難くはありましたが、Arduino IDE向けのサンプルスケッチを参考にしつつ、試行錯誤して、デジタル出力を行う方法が分かってしまえば簡単でした。
スケッチのテキストを掲載する方法が分からないので、スクリーンショットを掲載しておきます。
M5Stackのポート数の少なさは解決したので、真空脱泡機の制御は、Arduino Unoではなく、M5Stackで行う事にしました。
現在時刻の取得は、当初は電池で設定時刻を保持できるRTC(リアルタイムクロック)モジュールDS3231の利用を考えていました。
M5Stackだと内蔵されているWifi機能を使って、NTPサーバーから現在時刻を取得出来るので、現在時刻の取得はWifiを利用して、RTCモジュールは使わない事にしました。
Arduino Unoで現在時刻を取得する場合は、RTCモジュールの方が安上がりで手っ取り早いと思います。
写真はクラクスの記録帳のNTPサーバから時刻を取得してM5Stackに表示するで公開されてているスケッチを試している所です。
今回はArduino UnoとRTCモジュールが省けたので、構造や配線がシンブルになりました。
サーマルプリンターとM5StackはどちらもUSB ACアダプターのDC5Vで利用できます。
サーマルプリンターの消費電力は大きいとされていますが、ダイソーで税抜300円で売られている2ポートのUSB ACアダプター、1ポートの給電で、サーマルプリンターともM5Stack、リレーモジュールを利用出来ました。
現状ではM5Stackで、拡張I/Oモジュールでリレーを動作させ、NTPサーバーから取得した現在時刻をサーマルプリンターへ印字する事に成功しています。
M5Stackで現在時刻を取得する方法は、Quiitaの「ESP32 NTPを使って時刻をGET」で公開されているプログラムを参考にしました。
M5Stackはプロトモジュールの基板を介して固定出来る様にしました。
プロトモジュールの基板を固定する部品は、ZBrushでモデリングして、光造形式3DプリンターFormlabs Form2で出力して作りました。
M5Stack プロトモジュール用のマウント部品の3Dプリンター用のデータはBoothで販売しています。
真空脱泡機の新しいコントロールボックスを完成させるのには、必要な部品がまだ揃っていないので、完成はもう少し先になりそうです。
1件のピンバック
Arduino Pro miniを買った | Nimbusのデジタルブログ