SSブログ

ESP32 & 2.8" G_LCD一体型ユニットの製作(1)

重要変更履歴
<2021.12.21> 電池駆動時、SDカードは電源電圧の制約がある件追記。
<2021.12.19>「SDカード内のbmpファイル表示」追記。
<2021.12.18> SDカード使用法に関する説明追記。本文参照
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 ESP32(ESP-WROOM-32D)、2.8"グラフィックLCD MSP2807 と MONO TWELITEをコンパクトなケースに収納し、単三乾電池3本で動作させられるようにしました。
//(2021.12.21追記) ただしLCD基板上にあるSDカードは電圧が約4.1Vになると動作しませんでした。 //
写真1は「Grid-EYE(AMG88xx)データの無線伝送(3)」のソフトウェアを使った表示例です。(こちらの変更が必要です)

写真1 ESP32&2.8G-LCDユニット
ESP32&LCDユニット.jpg

回路図を図1に示します。

図1 ESP32&2.8G-LCDユニット回路図
ESP32&LCD_unit回路図.jpg
// <回路図注意追記 2021.11.06 > 電池の電圧をできるだけ低くまで使おうとしたのでESP32の電圧を3Vにしていますが、プログラム書き込みツールは通常3.3Vの信号を出力するので、ESP32のIO入力の許容(VDD+0.3V)ぎりぎりです。念のためにRXD0(34pin)、TXD0(35pin) には直列に100Ω程度の抵抗を入れて下さい。EN、IO0はオープンコレクタにつながっているので対応不要です。 //

製作方法や内部構造についてはこちらで参照できます。

TWELITEを使わない場合にはその部分を削除して他のデバイス用インターフェースなどを搭載すれば汎用性を持たせられると思います。スペース的には余裕がありますのでアラーム音などを出すオーディオ回路も追加可能です。

ここでは電源に電池を使っていますが、ACアダプターやリチウム電池などからDC5Vを供給すれば動作可能です。(このための端子は付けていませんので改造が必要です。)

アルカリ電池での寿命は8時間以上あったと思いますが、再確認予定です。(8時間あれば私個人の用途には使用可能です)
ESP32とTWELITEは電源が3V以下になっても動作しますがLCDは暗くなってしまうので、実際は3.3V辺りが限界のようです。

MSP2807の機能としてタッチペン入力とSDカードもあり、これらが動作する事を確認してあります。
なお、タッチペンは最初にキャリブレーションが必要でそのデータはフラッシュメモリ内に保存(flash file system = FFS)されるのですが、個々のESP32にFFSの使用実績が無いとエラーを起こします。
タッチペンを使う場合には、アプリケーションプログラムを書き込む前に「SPIFFSマウントエラー時の対応」を参照してSPIFFSデータの書き込みを実行してください。

ソフトウェアを作る際には、ハードウェア構成を反映させるためにこちらの内容(2023.03.26更新) を盛り込んでください。

今回の構造ではSDカードが下側(底)に来ているのですが、SDカードがケースからはみ出すのでそのまま台に直置きできません。LCDの表示向きを変えてSDカードを天面から抜き差しできるようにするなどの対応が必要です。またこの際アンテナの取り付け向きも関わってきますのでこれも含めた構造を考える必要があります。(私の製作手順そのままに加工せず、この辺は予め適宜変更して加工してください。)

SDカードにあるのがあまり大きくない設定ファイルのみの場合は、設定ファイルをFFSにコピーし通常はFFSから設定を読み取るようにする事で、コピー後はSDを抜き取ることが出来ます。
FFSではロギングデータなどを頻繁に読み書きするのは止めた方が無難で、そのような場合はやはりSDカードを使うべきでしょう。

//2021.12.18, 21追記
・SDカード用SPIのMISOラインはpull-upされていないとSD初期化時エラーを生じます。
外付けで抵抗を付けても良いですが、ソフトで内蔵抵抗を有効に設定しても良いです。
こちらのソフトで動作確認できます。

・LCD基板上にあるSDカードは電圧が4.1V程度になると動作しないので、電池を電源に使う場合はシステム設定データなどはFFSに書き込んでおいた方が良いでしょう。
//


簡易型日本語表示 (サンプル表示ソフト付き)

 これまで作ったESP8266やESP32の装置ではキャラクターLCDを使っていて英数字とカタカナ表記でしたので 表記内容が一目でわかりづらいことがありましたが、今回はグラフィックディスプレイを用いるので 漢字や仮名を使って分りやすい表示にしようと思いました。
漢字・仮名表示はライブラリーや文字データ入りメモリーなどを使って行う方法もありますが、これまで作ってきた装置のようにあまり多くの種類の表記がない場合にはWindowsのPaintで作ったビットマップ形式のファイルを使って行うこともできます。
フォントの使用権については、個人的な見解ですが、「Windowsで作ったフォント入りbmpファイルを他のPCで開いて閲覧する」という事になり通常行われている事で問題ないと思っています。(但し、商用にこの方法を用いるのは問題があると思います。)

背景色を画面表示色にした漢字・仮名表記の部分のbmpファイル(ファイルサイズを小さくするために最小限のピクセル数にしたもの)を作ってFFSに保存し、必要に応じてそれらのファイルの画像を画面上に配置し、英数字の部分はLCDに元々使われているフォントを使って表示します。

このコンセプトによる表示のデモソフトを作りました。=> ダウンロード

写真2に表示の様子を示します。この写真ではモアレ状の縞が見えますが実際には目には見えず、きれいな表示です。
また、漢字と英数字フォントのサイズバランスがいまいちですが、LCDのフォントについては他にもライブラリがあってタイプやサイスが選べるようですので最適なものが選べると思います。或いは作成するbmp画像でフォントサイズ調整する方法もあります。
デモソフトを改造すれば、ファイル作成と表示確認の試行錯誤を簡単に行えると思います。

写真2 BMPファイルを用いた表示例
G-LCD表示形態.jpg

デモソフトにはMap表示例も入れてあります。
動体検知などがどこで発生したのかをマップ上に表示して一目でわかるようにする方法です。これまではRaspberry piを使ってグラフィックLCDに表示してました。

ビットマップファイルの作り方はこちらを参照してください。
作成したファイルは、プログラムのフォルダーにdataフォルダーを作成してそこに入れます。次にプログラムを開きIDEでツール -> ESP32 Sketch Data Upload を実行するとFlash mempry に書き込まれます。
(デモソフトに同梱した「デモソフト起動方法」が参考になると思います。)


SDカード内のbmpファイル表示  2021.12.19追記
//(2021.12.21追記) LCD基板上にあるSDカードは電圧が約4.1Vになると動作しませんでした。 この記事項目に関しては電源に安定5Vを使っていることを前提にして下さい。   //

 上の簡易型日本語表示ではbmpファイルの保存にFFSを使いましたが、メモリーサイズの制約により大きなサイズのファイルを多く保存することはできませんでした。そのために1つの画面表示を小さいファイルのパーツをいくつか使って行いましたが、ファイルを作るのが結構面倒でした。
SDカードを使えば大きなメモリーサイズ画像も多く保存できるので、1つの画面表示を複数のbmpファイルで行う必要はなく1つのbmpファイルとして作成して使うことができます。

SDカード内のbmpファイルを表示するサンプルプログラムを作成しました。
こちらからダウンロードできます。


常置用ユニットの紹介   2022.01.24追記
ESP32 & 2.8" G_LCD一体型ユニットの製作(2)」 で常置用のユニットも製作しました。
動体検知システム(従来は猿検知システムと呼びました)の親機用ソフトウェアもダウンロードできます。

//2022.01.27追記
ESP32 & 2.8" G_LCD一体型ユニットの製作(3)」でワイヤレスセンサーターミナルならびにソフトウェアも作りました。//


===== 関連記事 =====
ESP32 & 2.8" G_LCD一体型ユニットの製作(2)
ESP32 & 2.8" G_LCD一体型ユニットの製作(3)
ESP32書き込みツールの製作


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー

nice! 0