基板の温度分布測定用にArduinoでサーモグラフィカメラを作る - カメラ製作編
前回、MLX90640 と UNO R4 で動作確認をしましたが、バラックのままでは実用的じゃないので、今回はカメラとしての製作過程を書きたいと思います。
ハードウェア再選定
3V 程度でバッテリー駆動でき、超解像とまではいかないまでも、MLX90640(32×24画素)の補間やスムージングなどの画像処理をこなせる性能を想定し、ESP32 の開発ボードを手配していましたが、より小型で バッテリー充電管理用チップ を搭載した Seeed Studio XIAO ESP32S3 を採用することにしました。
Seeed Studio の Wiki ページ には、3.7V のリチウムポリマーバッテリーを繋ぐ例が載っていて、充電の度にバッテリーを外す煩わしさもなく、そのまま USB で充電できるのがイイ感じです。3.7V とは言え、無負荷状態でバッテリー端子間電圧を測定すると 4.2V ほど出ているので、XIAO のバッテリー接続時の定格入力電圧が 4.2V になっている理由と思われます。
またバッテリーの稼働時間を見積もると、購入した 2.4インチ LCD の消費電流を 100mA 前後(LCD Wiki に掲載された 類似品のスペックシート による)なので、計算上は 400mAh 程度の小型の Li-Po でも3時間程度は持つことになり、今回の目的には十分です。
ただ Wiki ページに “We recommend you to purchase qualified rechargeable 3.7V lithium battery.” とある通り、充電中の発火リスクが怖いです。今回は、ラジコン機器輸入卸売販売を生業とする日本の会社 G-FORCE が扱う 380mAh の Li-Po を Amazon で購入 しました。「日本正規品」とありますが、どうなんでしょう。いずれにしても膨らみには要注意です。
改めて、XIAO での動作確認
ワイヤリング
今までワイヤリングを描くのに Fritzing のβ版を使ってましたが、最近はもっぱら Cirkit Designer で描いてます。パーツが足りないときは Fritzing のフォーラム などで見つけた .fzpz
ファイルがインポート出来ます(出来ないものもあります…)。回路図は描けませんが、直角に曲げるワイヤリングが簡単に描け、イイ感じです。
ESP32 を採用したことで、UNO R4 で必要だった分圧抵抗やレベル変換も無くなりスッキリしました。I2C と SPI をピン仕様に合わせて接続するだけです。
表に出ている XIAO の 11 本の GPIO ピンのうち、I2C と SPI で 10 本を使っています。残り 1 本のピンを何に使うか少し迷いましたが、次の3候補のうち、「T-IRQ
監視」を選択しました。割り込みを使ってもソフトウェア的なメリットは殆どありませんが、T-IRQ
を余らせておくのも何なので繋げちゃた感じなので、将来は設変するカモです。
-
LCD バックライトの減光制御
消費電力が大きい LCD バックライトを PWM 制御で減光し、バッテリーを長持ちさせます。 -
バッテリー電圧の監視
分圧回路やレベル変換を通して ADC でバッテリー電圧を監視し、充電の目安にします。 -
タッチスクリーンの
T-IRQ
監視
スクリーンがタッチされたことを知らせる割り込み信号です。
ブレッドボードを使った動作確認
ディスプレイ、タッチスクリーン、SD カード I/F の3つのデバイスがあるワケですが、それぞれにライブラリが複数あり、どれを使うか、なぜそれを使うかなど、迷うところです。
とりあえず今回は、確実に ”動くセット” を見つけることを優先しました。さらに各々は単独で動作 OK でも、3つ全部動かすと NG になる場合も考えられます。
そこで3つを1つにまとめた「温度画像表示中にスクリーンにタッチすると、SD カードに hello.txt
を書き込む」という、クイック&ダーティなプログラム で動作確認しました。以下は、動作 OK だったライブラリ達です。どれも Arduino IDE のボードマネージャやライブラリマネージャからインストールが可能で、スケッチ例から簡単に参照することが出来ます。
-
ディスプレイ
adafruit/Adafruit-GFX-Library と adafruit/Adafruit-ST7735-Library を使用しました。ピン配を変えるだけで前回 UNO R4 用に作成したプログラムそのままです。 -
タッチスクリーン
PaulStoffregen/XPT2046_Touchscreen が、T-IRQ
を含めたデバイス特有の設定が不要で、スケッチ例 TouchTestIRQ が難なく動作しました。 -
SD カード
espressif/arduino-esp32/libraries/SD のスケッチ例 SD_Test が、UNO R4 で出ていたエラーもなく動作しました。
また adafruit/Adafruit_MLX90640 ですが、I2C のクロック設定を変えたところ、ほぼ 16 FPS で動作させることができました。
カメラの製作
いよいよカメラの組み立てです。一番大きい 2.4 インチ LCD を中心に、LCD 面から見て左側に USB を出す事を要件に各部品をレイアウトしました。
結果、クロスするワイヤリングが多く、配線に苦労しました 😮💨 実体配線図では分かり難いですが、両面スルーホールの基板を使い、表面に LCD を、裏面に XIAO と MLX90640、Li-Po バッテリーとバッテリー用 ON/OFF スイッチを配置しています。
さて、工作はあまり得意ではないので大したことは書けませんが、簡単に製作過程を書き留めておきたいと思います。
両面スルーホール基板の切断
秋月電子の 両面スルーホールユニバーサル基板 7*9 の丸いランドの中心間を オルファ PカッターL型 で、両面からガシガシと削っていきます。ある程度削れたらパキッと折り、スルーホール断面のメッキが見えなくなる程度にまでりヤスリがけします。
ランド間の基板だけの部分をカットした方が良かったのかもしれません。何れにしても、超音波カッターが欲しくなる骨の折れる作業です。
ピンソケットの切断
配線の関係上、部品を直接ハンダ付けするわけにはいかず、全体の厚みが増えるのを覚悟の上でピンソケットを使いました。非分割タイプの場合、カッターで切れ目を入れて割るのですが、必ずカットした部分のピンが無駄になります。
次からは、秋月電子の 分割ロングピンソケット 1×42 (42P) を使いたいと思います 😉
Li-Poバッテリーの端子加工
元々ラジコン用のコネクタ付きを購入したため、秋月電子で購入できる JST 2mm タイプのコネクタに付け替えました。
上記なら Seeed Studio の XIAO 用拡張ボード のバッテリー端子とも合いますが、コンタクトピンがとても小さいため、圧着用のかしめ工具がないと厳しいと思います。僕の場合、IWISS SN-2549 の最も小さいダイスでかしめました。
また元々バッテリーから出ているリード線が太く、コンタクトピンがハウジングの奥まで入らず、ベースコネクタとの嵌合が不完全だったので、コネクタと基板の間に数ミリのゴムシートを挿入して抑える羽目になりました。AWD20 〜 AWG24 など外径が 1mm 未満のリード線に付け替えるなどした方が良さそうです。
コネクタを付け替えるときは、1本づつ確実に付け替えましょう。くれぐれも2本まとめてニッパーで切るなどして火花を散らせないように…
配線&導通チェック
両面スルーホールを駆使し、何とか配線しました 😅。繋がるべきところが繋がり、繋がっちゃイケナイところは繋がっていない事をテスターで確認します。僕の場合、ハンダ付け不良が2箇所、配線ミスによるリワークが1箇所ありました。
全てが完了し、火入れの瞬間は緊張しますが、ちゃんと動いた時の嬉しさは格別です
化粧板の取り付け
タミヤの楽しい工作シリーズ プラバンセット があったので、1.2mm の板を P カッターや電動ドリルを駆使して取り付けます。ご覧の通りの加工精度なので、やっぱり超音波カッターが欲しいです。
バッテリーの動作確認
バッテリースイッチを ON にした状態で USB を繋ぐと XIAO の赤い LED が点滅し充電が始まり、完了すると消灯します。充電中も LCD のバックライトが点灯し続けるので、OFF スイッチをつけた方が良いかもしれません。また充電完了時に自動でスリープモードに入れたいのですが、回路図 を見ても 充電管理チップ にアクセスする手段がなく、無理っぽいです。
放電については事前の予想通り(?)、満充電から LCD のバックライトが消えるまでおよそ3時間20分ほどでした。ちょっと誤算だったのは、再び充電が完了するまで4時間10分ほどかかった事です。回路図では充電時の電流が 110mA 程度なので発火のリスクは高くないと思いますが、Li-Po バッテリーは放電/充電/保存/廃棄それぞれに注意が必要なので(ただいま勉強中)、この例を参考に 電圧を監視できるようにしておいた方が良さそうです。
製作費のまとめ
ここまでの部品購入費をまとめてみます。スズメッキ線、ジャンパー線、プラ板、プラねじ、六角スペーサなど、元々所有していたものは除いています。また単価が ¥5 や ¥10 の部品を1つだけ購入したワケではなく、実際には送料を含めて+αのコストがかかっています。
部品 | 購入先 | 価格 |
---|---|---|
Seeed Studio XIAO ESP32S3 | 秋月電子 | ¥1,300 |
MLX90640ブレイクアウトボード | AliExpress | ¥5,330 |
2.4インチ LCD with タッチスクリーン、SDカードI/F | AliExpress | ¥159 |
両面スルーホールユニバーサル基板 7×9 | 秋月電子 | ¥90 |
PHコネクター ハウジング | 秋月電子 | ¥5 |
PHコネクター コンタクト | 秋月電子 | ¥40 |
PHコネクター ベース付ポスト サイド型 | 秋月電子 | ¥10 |
スライドスイッチ | 秋月電子 | ¥25 |
3.7V 380mAh 25C Li-Poバッテリー | Amazon | ¥837 |
締めて ¥7,796+α… それなりの出費でした
さて、次のステップは…
温度画像の見た目を滑らかにする画像処理、スクリーンタッチ時のメニュー処理、温度画像の SD カード保存など、ソフトウェア開発としてまだまだやるべき事が沢山あり、当分の間は楽しめそうです