Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
プロジェクト概要
educ8s.tvのNickによるチュートリアル。Arduino Due、3.2インチカラーTFTディスプレイ(HX8357C/Bコントローラー)、DS3231 RTCモジュールを使用して、現在時刻・日付・温度・最高/最低温度を記録表示するデバイスを作ります。プロジェクト費用は約24ドル(Due約14ドル、ディスプレイ約8ドル、RTC約2ドル)と低コストです。
主要コンポーネント
- Arduino Due(高速・大容量メモリで表示処理に最適)
- 3.2インチ TFTディスプレイ(480×320ピクセル、SDカードスロット付き、3.3V/5V両対応)
- DS3231 RTCモジュール(温度補償水晶発振器内蔵、電池バックアップで数年動作、I2Cインターフェース、温度センサー内蔵)
- ピンヘッダー、ワイヤー
接続方法
DS3231はI2Cで接続:VCC→3.3V、GND→GND、SDA→SDA、SCL→SCL。TFTディスプレイはArduino Dueのピンヘッダーに直接装着(2ピンは未接続で浮かせる)。
ライブラリ設定
- ディスプレイライブラリ: TFT_HX8357_Due(User_Setup.hでHX8357C/Bを選択)
- DS3231ライブラリ: Sodaq_DS3231
コードのポイント
- 初回セットアップ時のみ
setRTCTime()で現在日時をRTCに書き込み(年月日時分秒曜日を指定)。書き込み後は関数呼び出しをコメントアウトして再アップロード。 - メインループ:1秒ごとにRTCから温度取得、時刻取得・表示、温度表示、最高/最低温度更新・表示。
- UI描画関数
printUI()で基本レイアウトを描画し、更新部分のみ書き換え。
主要コード抜粋
// 初回のみ実行してRTCに時刻設定
void setRTCTime() {
DateTime dt(2016, 4, 4, 13, 56, 30, 1);
rtc.setDateTime(dt);
}
void setup() {
rtc.begin();
tft.init();
tft.setRotation(1);
tft.fillScreen(0xC618);
delay(100);
printUI();
// setRTCTime(); // 初回のみアンコメントして実行、その後再度コメントアウト
}
void loop() {
float temperature = rtc.getTemperature();
getAndPrintTime();
printTemperature(temperature);
if (temperature > maxTemperature) {
maxTemperature = temperature;
updateMaxTemperature();
}
if (temperature < minTemperature) {
minTemperature = temperature;
updateMinTemperature();
}
delay(1000);
}
今後の展望
このプロジェクトをベースに、より多くのセンサー、グラフ表示、Wi-Fi機能を追加した高機能気象ステーションへ発展させる予定です。Arduino Dueの高速処理と大容量メモリがこの用途に最適です。
コードダウンロード
最新版コード: educ8s.tv プロジェクトページ
製造プロセス
- Satellite CCRMAキットでセンサー駆動オーディオエフェクトを構築
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- 高精度ワードクロック:分単位で時刻を文字表示
- Arduino MegaとNextion HMIで作る高機能ウェザーステーション
- TM1637デジタル時計:時刻設定・アラーム機能付き Arduino Nano試作版
- ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
- BME280 温湿度・気圧データを Nextion タッチスクリーンに表示
- Arduino & MPU6050:SG90 & MG996Rサーボの精密制御
- u-blox LEA-6H 02 GPSモジュール: Arduino & Python 統合ガイド
- Arduino Dueでマスターする音声認識と音声合成
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計