ラベル ESP-WROOM-02 の投稿を表示しています。 すべての投稿を表示
ラベル ESP-WROOM-02 の投稿を表示しています。 すべての投稿を表示

2018年1月24日水曜日

温湿計付きWiFi時計を作ってみた2

前回の続きでソフト編です.

やりたいことは,
1.時間をネットワークで自動同期.
2.BME280から温度・湿度・気圧を取得
3.7セグに時間を表示
4.液晶に時計と温度等のグラフを表示
です.

1.時間をネットワークで自動同期.
NTPClientライブラリを使用します.
https://github.com/arduino-libraries/NTPClient
zipを解凍しArduinoのlibrariesフォルダに入れます.
使い方はサイトにあるサンプルのとおりです.
日本時間に合わせるには以下のように初期化します.
NTPClient timeClient(ntpUDP, "jp.pool.ntp.org", 3600*9, 60000);


2.BME280から温度・湿度・気圧を取得
ボッシュ社のセンサで,温度,湿度,気圧を取得することができます.
マイコンとの接続はI2Cです.
データシート
特に深く考えずに値を取得できればいいので,適当なヘッダを作りました.
何らかのフィルタをかけてくれていますが,動いたので良しとしました.
元のサンプルプログラムを見つけられませんでした.すいません.


3.7セグに時間を表示
マトリクスLCDドライバ,HT16K33を使用しています.接続はI2Cです.
コレも深く考えずヘッダを作成.以前の記事を参考にしています.
数字の点灯パターンをあらかじめ宣言しておきます.


4.液晶に時計と温度等のグラフを表示
コレを一番頑張りました.マイコンから液晶を触るのはとても大変で
何時間もデータシートとにらめっこすることになりますが,
しかしこの液晶は使いやすいライブラリが公開されているのでプログラミングは楽です.
Adafruit_GFX.hとAdafruit_ST7735.hを使用します.
コチラを参考にさせて頂きました.

4つの画面(時計,温度,湿度,気圧)をボタンで切り替えられるようになっています.
それぞれの画面は必要領域のみ更新し,チラつきを抑えます.
また100ms割り込みでボタンを監視し,一定時間以上入力がなければ
自動でOFFになります.
コレの画面のレイアウトに開発時間の大半を費やしました.




結構気に入っていてたまに画面を切り替えてはニヤニヤしています笑
実用性もなかなかあり,時計はもちろんエアコンや加湿器の
電源を入れる目安にしています.
ネットワーク上から見れたりすると便利かなと思いますので時間が
あればいじりたいと思います.

以下使用プログラム
ESP-WROOM-02_digital_clock
BME280
SEG7_LED

2017年10月22日日曜日

温湿計付きWiFi時計を作ってみた

お久しぶりです.
気づいたら2ヶ月経ってました.中々の忙しさでした.
しかし何もやっていなかったわけではなく,ESP-WROOM-02を
使って温湿計付きWiFi時計を作っていました.今回ようやく形に
なったのでメモに残したいと思います.

概観はこんな感じ.



温度センサ,LCD,7セグメントLEDを搭載しています.
回路はまじめに設計するのが面倒だったので
ユニバーサル基盤に全部載せしました.

使用したモジュールは以下のとおり
赤色LEDディスプレイ7セグメントLED
128*160 TFT液晶ディスプレイモジュール
BME280 大気圧センサ 温湿度センサー
ESP-WROOM-02ピッチ変換済みモジュール
16x8LEDマトリクスドライバーモジュール

回路図は作ってませんが,ESP-WROOM-02はピンに余裕がないので
工夫が必要です.現在の割り当ては

4,5  ->  I2C(7seg,BMP280)
15->LCDバックライト制御
0->画面切り替えスイッチ
12,13,14,16->SPI(LCD)

となっています.ピン0,15は使用するのはよくないとされていますが,
私の使い方では問題ありませんでした.

また,バックライト制御は内部でGNDがLED-とつながっているのか
カソード側で制御できませんでした.そのためこのサイトで紹介されている
アノード側での制御を試したところ,うまく動作できました.

動作の様子です.




趣味で電子工作を始めて2年ぐらい,初めて実用的なものを
製作した気がします笑.

長くなりそうなのでソフトは次回にしようと思います.
それではまた.