BME280 温湿度・気圧データを Nextion タッチスクリーンに表示
部品と材料
| 部品名 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3 | 1 | メイン制御(UNO等でも可) |
| SparkFun BME280 大気センサーモジュール | 1 | I2C/SPI対応、温度/湿度/気圧 |
| Itead Nextion NX8048T070 (7.0インチ) | 1 | シリアル接続スマートディスプレイ |
| USB-シリアル変換 (FT232RL等) | 1 | Nextion書き込み用(5V設定必須) |
| ジャンパーワイヤー (メス-メス 4本) | 1式 | 接続用 |
使用ソフトウェア
- Nextion Editor (Itead公式、無料) - GUI設計・ディスプレイ書き込み
- Visuino (グラフィカル開発環境) - Arduinoコード自動生成
- Arduino IDE 1.6.7以降 (1.6.6はバグあり非推奨)
プロジェクト概要
メモリ/CPUリソースが限られるArduino Nano/UNOでも高機能GUIを実現できる Nextion スマートディスプレイ と、高精度環境センサー BME280 を組み合わせ、温度・湿度・気圧をリアルタイム波形表示するプロジェクトです。Visuino のノーコード/ローコード開発で、複雑なシリアル通信プロトコルを意識せず実装できます。
ステップ1:部品準備
上記部品表の通り。Nextionは NX4024K032_11 (3.2インチ) を使用しましたが、解像度違いでも設定変更で対応可能です。
ステップ2:NextionディスプレイをPCに接続して書き込み準備
- Nextion付属コネクターをディスプレイに接続
- USB-シリアル変換モジュールを 5V出力モード に設定(ジャンパーで切替)
- 配線: 黒→GND、赤→VCC(5V)、黄→TX(変換側)、青→RX(変換側) ※クロス接続
- USBでPC接続
ステップ3:Nextion Editor 起動・ディスプレイタイプ設定
- Editor起動 → File → New
- プロジェクト保存先指定
- Settingsダイアログでディスプレイモデル選択 (例: NX4024K032_11)
- Displayタブで Horizontal (横向き) を選択 → OK
ステップ4:Waveform(Scope)コンポーネント追加・設定
- Toolboxから Waveform をデザイン領域へドラッグ
- 画面いっぱいにリサイズ
- Attributeパネルで
ch(チャンネル数) = 3 に設定(温度・湿度・気圧用) dir(方向) = right to left (右から左へ流れる) に設定
ステップ5:プロジェクトをNextionへアップロード
- Uploadボタン → 「Go」で書き込み開始
- 完了後にExit、USB-シリアル変換からディスプレイを外す
ステップ6:Visuino 起動・ボード選択
- Visuino起動、ArduinoコンポーネントのToolsボタンで Arduino Nano 選択
- ※ Nanoはハードウェアシリアル1つしかないため、Nextion接続前にスケッチ書き込み必須
ステップ7:VisuinoでNextionコンポーネント追加
- ツールボックスで "next" 検索 → Nextion Display コンポーネント配置
- そのToolsボタン → Elementsエディタで Scope(Wave) 要素を追加
ステップ8:Scopeに3チャンネル追加・シリアル接続
- Scope1の
Channelsプロパティで Channel 要素を3回追加 - Nextion Displayの
Out出力ピン → ArduinoSerial[0] In入力ピン に接続
ステップ9:Map Rangeコンポーネント3個追加・設定
Nextion Scopeの入力範囲は 0.0〜1.0 のため、センサー値をマッピング変換します。
| コンポーネント | 入力元 | Input Range Min | Input Range Max | 備考 |
|---|---|---|---|---|
| MapRange1 | 気圧 | 99000 | 101000 | Pa単位、標高により調整要 |
| MapRange2 | 温度 | -20 | 100 | ℃単位 |
| MapRange3 | 湿度 | 0 | 100 | %単位 |
各MapRangeの Out → Nextion Scope1.Channels.Channel1〜3 In へ接続。
ステップ10:BME280コンポーネント追加・接続
- ツールボックスで "280" 検索 → Pressure Temperature Humidity BME280 I2C 配置
- I2Cアドレス確認 (デフォルト 0x76 = 118)。異なる場合はAddressプロパティ変更
- 接続:
Pressure(Pa)→ MapRange1InTemperature→ MapRange2InHumidity(%)→ MapRange3InOut(I2C制御用) → ArduinoI2C In
ステップ11:Clock Generator追加・10Hz設定
- Clock Generatorコンポーネント配置
- Frequency = 10 (10回/秒更新)
Out→ BME280Clock入力へ接続(定期読み取りトリガー)
ステップ12:コード生成・書き込み
- Visuinoで F9 または生成ボタン → Arduino IDE が開く
- Arduino IDEで Upload (Nano単体で実行、Nextionは未接続)
ステップ13:BME280 を Arduino へ接続 (I2C)
- VCC(赤) → 3V3、GND(黒) → GND
- SDA(緑) → A4、SCL(黄) → A5
ステップ14:Nextion ディスプレイを Arduino へ接続
- GND(黒) → GND
- TX(青) → D0 (RX)
- RX(黄) → D1 (TX) ※クロス接続
- VCC(赤) → 5V
ステップ15:完成・動作確認
電源投入でNextion画面に3チャンネルの波形がリアルタイム描画されます。VisuinoプロジェクトファイルとNextion Editorプロジェクトファイルを同梱しています(FJE6Y04IWE4O3H6.zip)。
製造プロセス
- EzTempでRaspberry Pi上の温度・湿度をシームレスに監視
- Raspberry Piでネットワーク対応ラボ気象観測所を構築
- Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- Arduino MegaとNextion HMIで作る高機能ウェザーステーション
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- DHT11 と Blynk で温湿度をリアルタイム監視する Arduino チュートリアル
- NextionディスプレイでFridgeyeアプリを構築:ステップバイステップガイド
- Arduino GPS+TFTタッチシールドで作るリアルタイム位置表示デバイス
- Arduinoリアルタイム気象時計 - OLEDに時刻/日付/温度を表示