Arduino MegaとNextion HMIで作る高機能ウェザーステーション
必要なパーツと材料
| パーツ | 数量 | 備考 |
|---|---|---|
| Arduino Mega 2560 | 1 | メモリ容量が大きいため必須 |
| Arduino Mega Proto Shield | 1 | 配線用 |
| Nextion HMIディスプレイ 2.4インチ | 1 | シリアル通信で制御 |
| SDカードリーダー | 1 | データログ用 |
| DHT22 温湿度センサー | 1 | 室内用 |
| BME280 気圧・温湿度センサー | 1 | 大気圧測定用 |
| DS3231 RTCモジュール | 1 | 高精度リアルタイムクロック |
| RXB6 433MHz受信機 | 1 | 外部センサー受信用 |
| 抵抗 10kΩ | 1 | |
| 抵抗 475Ω | 1 | |
| NE555タイマーIC | 1 | ウォッチドッグ回路用 |
| AC-DC 5V電源 | 1 |
必要なツール
- はんだごて
使用ソフトウェア
- Arduino IDE
- Nextion Editor(ディスプレイ画面設計用)
プロジェクト概要
Nextionディスプレイを選んだ理由
Arduino UNOではメモリ不足でリッチなグラフィック表示が困難ですが、Nextionディスプレイなら画像データをディスプレイ側に保持するため、Arduinoのメモリを大幅に節約できます。コントローラーから見れば単なるシリアルデバイスとして扱えます。
ただしUNOでは履歴グラフなどの高度な機能は実装困難です。そこでArduino Mega 2560を採用し、複数の無線センサーからデータを受信し、美しいグラフィックで表示する本格的なウェザーステーションを構築しました。
システムの核心アイデア
市販の無線ウェザーセンサー(オレゴンTHGN123Nなど)からデータを受信し、温度・湿度・気圧を表示。SDカードに定期記録し、履歴グラフを描画。気圧変化から天気予報(晴れ/曇り/雨・雪)を行い、背景画像全体で表現します(小さなアイコンではなく)。
ディスプレイ設計の工夫
Nextionは透過画像非対応のため、テキストウィジェットの背景を画面ごとに用意する必要があります。天気(晴/曇/雨・雪)× 時間帯(昼/夜)の6パターン、さらに雪の昼夜で計8画面をNextion Editorで作成。すべての画面でウィジェット名(温度、湿度、気圧)を統一し、Arduinoからは画面切り替え後に値を書き込むだけで済む設計です。
メイン画面の構成
上部: 室内温湿度、気圧、時刻・日付
左半分: メイン屋外センサーの温湿度(センサーIDは設定画面で選択)
右半分: 全センサー(内部含む)のデータを順次表示(最大4台の外部センサー対応)
DS3231 RTCにより正確な時刻を取得し、データログのタイムスタンプ、昼夜判定、ディスプレイ輝度制御に使用。
その他の画面
- 日の出/日の入り時刻、月齢表示画面(日付タップでアクセス)
- 設定画面(時刻タップでアクセス)
- 履歴データグラフ画面(温度/気圧タップでアクセス)
履歴データ画面
1日モードと8日モードをグラフ領域タップで切替。左ツールバーでセンサーID選択(内部はID=0)、上ツールバーでデータ種別(気圧/温度/湿度)選択。
設定画面
- メイン外部センサーID設定
- 朝/夕の輝度切替時刻設定
- ディスプレイ輝度調整
ウォッチドッグ回路でハングアップ対策
NE555タイマーを用いた外部ウォッチドッグ回路を実装。ArduinoのA2ピンから定期的にパルスが出ない場合、2〜3分で自動リセットします。この回路は他プロジェクトにも応用可能です。
結論
約半年間安定稼働。美しいグラフィックと豊富な機能を両立したウェザーステーションが実現できました。
ソースコードと回路図
GitHubリポジトリ:sfrwmaker/Weather_nextion
- Arduinoスケッチ:
Weather_nextion.ino - 回路図:
weather_mega_nextion.jpg
製造プロセス
- Arduino UNOとOLEDディスプレイでクラシックPongゲームを自作:ステップバイステップチュートリアル
- スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- Arduino MegaとNEO-6M GPSモジュールの接続:ステップバイステップガイド
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- BME280 温湿度・気圧データを Nextion タッチスクリーンに表示
- Arduino Mega 2560搭載 総合トレーニングキット – センサー、モーター、カスタムPCB完備
- NextionディスプレイでFridgeyeアプリを構築:ステップバイステップガイド
- Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
- Arduino GPS+TFTタッチシールドで作るリアルタイム位置表示デバイス