Arduino Megaでリアルタイムデータグラフ化:TFT LCDにDHT11センサーデータを履歴表示
部品と材料
| Arduino Mega 2560 | ×1 |
| DHT11 温湿度センサー(4ピン) | ×1 |
| Elegoo 2.8インチ TFT LCDシールド | ×1 |
| ジャンパーワイヤー(汎用) | ×1 |
| ブレッドボード(汎用) | ×1 |
アプリとオンラインサービス
- Arduino Web Editor
プロジェクト概要
概要
TFT LCDでデータをプロフェッショナルにグラフ化したいと思ったことはありませんか? しかし、計算が複雑でグラフ作成は特に難しいものです。
このプロジェクトはそのストレスをすべて取り除き、たった5つの変数を編集するだけで、数秒で自分だけの履歴グラフを作成できるようにします。グラフ化したいデータなら何でも、わずか数秒で表示可能です。
機能
このプロジェクトは、グラフ作成を誰でも簡単かつ楽しくすることを目的としています。すべての難しい計算は完済済みで、ユーザーは2つの変数を編集し、グラフの色を選ぶだけです。グラフの多様性を示す例をいくつか紹介します。
グラフは温度をライブでプロットし、6秒間隔で値をドットで表示。ドット同士は線で繋がれ、X軸には開始からの経過秒数、Y軸には値の範囲が表示されます。
仕組みはシンプル:Arduino MegaがDHT11センサーから温度を読み取り、変数に格納、カスタマイズされたグラフにプロットします。機能概要の図解は以下の通り。
Read Temperature:センサーから温度を読み取りProcess Data:センサー読み取り値を処理し、グラフにマッピングGraph Data:マッピングされた値をグラフに表示
このプロジェクトを進めるために必要なのは、TFT LCD上での物の配置方法についての広い理解だけです。以下で説明します。
LCD全体をキャンバスと呼び、ここにすべてを描画します。ほとんどのTFT LCDライブラリは同様に動作するため、このコードの関数も他のライブラリで動作するはずです。以下はTFT LCD上に四角形(長方形)を描くスケッチです。
tft.fillRect(originX, originY, sizeX, sizeY, Colour);
originX:画面右端から図形までの距離(図の'z')originY:画面上端から図形までの距離(図の'x')sizeX:図形のX軸方向のサイズ(長さ)sizeY:図形のY軸方向のサイズ(高さ)
メリット
- TFT LCDにセンサーデータをグラフ化
- 数秒で完了
プロジェクトの構築
ステップ1:必要な装置
このプロジェクトではDHT11温湿度センサーで温度データを取得しますが、どのセンサーでも使用可能。センサー変更方法は後述。
- Arduino Mega ×1
- Elegoo 2.8インチ TFT LCD ×1
- DHT11センサー ×1
- ブレッドボード ×1
- ジャンパーワイヤー
ステップ2:回路接続
プロジェクトの回路図です。DHT11センサーをArduino Megaに接続するだけで準備完了。
ステップ3:コードの理解
コードには3つの主要部分があります:
- グラフのセットアップ
- 温度の読み取り
- グラフの描画
グラフのセットアップ:グラフの輪郭、X軸とY軸の線、目盛り、Y軸の値ラベルを描画。
温度の読み取り:DHT11センサーから温度を読み取り、変数に格納する短いコード。
グラフの描画:グラフのポイントを値の位置に描画し、線で結びます。キャンバスがいっぱいになったら最初の値を排出し、他をシフトして新しい値のスペースを作ります。まだ余裕があれば間隔を置いて値を追加し続けます。
グラフのカスタマイズ
このグラフの楽しいところは100%編集可能なこと。グラフのサイズ、位置、色を編集でき、柔軟性のおかげであらゆるデータを表示できます。気にする変数は以下のみ:
bool proDebug = 0;
uint16_t graphColor = BLUE;
uint16_t pointColor = BLACK;
uint16_t lineColor = GREEN;
String graphName = "Time Graph";
int graphRange = 50;
int markSize = 3;
proDebug:デバッグ用ユーティリティ。デフォルト0。1/trueにすると現在温度をシリアルモニタに出力。有効にする場合はシリアルモニタを開いておく必要あり。graphColor:グラフ、X/Y軸線、ラベルの色。pointColor:グラフ上の値を示すポイントの色。lineColor:ドットを結ぶ線の色。graphRange:グラフの要。正しく設定することが非常に重要。グラフ化可能な最大値を表す。温度センサーなら50℃を超えないので50に設定。アナログ入力の生値なら1024(アナログピンの最大値)に設定。markSize:グラフ上のセンサー値を示すポイントのサイズ(正方形の一辺長)。
以上です。残りの変数はArduinoが自動的に計算します。
値の変更(他のセンサーデータをグラフ化)
室温をグラフ化するのも良いですが、土壌湿度から光強度まで、あらゆるセンサーデータをグラフ化できたらさらに良いですよね。わずか数行のコード編集で可能です。ガイドは画像を参照してください。
さらに進む
originX, originY, sizeX, sizeY定数を編集してグラフのサイズと位置を変更したり、添付のヘッダーファイルのカラーコードでチャートやバーの色を変えたりして実験できます。これであなた専用のグラフが完成です。
ライブラリ
- Elegoo Libraries - Copyright (c) 2012 Adafruit Industries under the BSD License.
- DHT - Author Rob Tillaart、パブリックドメイン
背景
最近、1〜4つの値を棒グラフでグラフ化するプロジェクトを公開しました。今度は履歴グラフのテンプレートを公開します。線がごちゃごちゃしてわかりにくい棒グラフテンプレートがないため、再び数学をやり直し、誰でもライブでデータを履歴グラフ化できるシンプルなプロジェクトを作りました。
製造プロセス
- ILI9341 2.4インチTFTタッチシールドでのビットマップアニメーション実装ガイド
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- Arduino UNOで1.17インチTFT LCDに画像を表示する方法
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- ゲーム用カスタムArduinoジョイスティックハンドルの製作