Fukaのアイコン画像
Fuka 2024年01月31日作成 (2024年01月31日更新)
製作品 製作品 閲覧数 101
Fuka 2024年01月31日作成 (2024年01月31日更新) 製作品 製作品 閲覧数 101

Spresenseを使用した温度測定

Spresenseを使用した温度測定

内容と仕様

Spresenseを使用した温度測定を行いました。この内容についてまとめます。

メインボードとして、Spresenseを使用。リアルタイムの温度計測及び、1分間の平均気温の算出を行いました。
得られた温度値はPC上のシリアルモニターで表示、キャラクタ型のLCDで表示という手法を取りました。

使用するもの

使った部材を下記の表にまとめます。
メインボードのSpresenseはモニター提供をしていただきました。

名称 型式 備考
メインボード Spresense モニター提供品
温湿度センサ DHT11
LCD 1602 LCD ディスプレイモジュール 今回はamazonで購入: amazon
I2C モジュール シリアル インタフェース ボード 今回はamazonで購入:amazon
ジャンパ線 - 必要数を適宜用意

配線

実際に配線した状態の写真は下記のようになります。
キャプションを入力できます

DHT11モジュールの配線

DHT11(センサ) Spresense
+ピン Vin
-ピン GND
OUTピン 8番ピン

LCDとI2Cモジュールの配線

写真のようにそれぞれのピン配置が合うように設置。
キャプションを入力できます

I2CモジュールとSpresenseの配線

I2Cモジュール Spresense
VCC Vin
GND GND
SCL SCL
SDA SDA

動作プログラム

DHT11を用いた測定プログラム

//Library Include// #include "DHT.h" #include <LiquidCrystal_I2C.h> //Definition// #define DHTPIN 8 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 16, 2); //LCD address 0x27 float temp_mun1; int cnt1 = 0; void dht_init(); void lcd_init(); //Initialization// void setup() { Serial.begin(9600); lcd_init(); dht_init(); } //main// void loop() { delay(2000); float humi = dht.readHumidity(); float temp = dht.readTemperature(); if (isnan(humi) || isnan(temp)) { Serial.println(F("Sensor not connected.")); return; } //heikin// cnt1 = cnt1 + 2; temp_mun1 = temp_mun1 + temp; if (cnt1 >= 61) { temp_mun1 = temp_mun1 / 30; //2sに1回の測定なので2で割る。 lcd.setCursor(0, 0); lcd.print("AVE :"); lcd.setCursor(5, 0); lcd.print(temp_mun1); cnt1 = temp_mun1 = 0; } //Serial Output// Serial.print(F("Temperature:")); Serial.print(temp); Serial.print(F("Humidity:")); Serial.print(humi); Serial.print(F(" ")); Serial.println(F("°C ")); /*Serial.print(F(" ")); Serial.print(temp_mun1); //Debug用 Serial.print(F(" ")); Serial.println(cnt1);*/ //LCD Output// lcd.setCursor(0, 1); lcd.print("TEMP:"); lcd.setCursor(5, 1); lcd.print(temp); } void dht_init(void) { dht.begin(); } void lcd_init(void) { lcd.init(); lcd.backlight(); lcd.clear(); }

動作結果

LCD本体には平均(上段)と現在(下段)の温度を表示することが出来た。
動作時の様子

PC上のシリアルモニターでも同様に温度が表示をすることが出来た。
シリアル画面の様子

まとめ

今回はSpresenseを使用した温度測定を行ってみました。普段使用するArduinoなどと同じ感覚で製作を行うことができたと感じました。温度測定自体は初歩的な内容です。次は測定データの保存や別の方法での可視化などにトライしてみたいと思います。
またSpresense自体、様々なセンサ・機能を持ち合わせています。自身の技能や理解度などから、それらを発揮した作品が出来なかったことが課題です。せっかく提供していただきましたので、もっといろいろな使い方を試していきたいと思います。

最後になりますが、本コンテストにあたり機材提供をしていただきましたこと、お礼申し上げます。

  • Fuka さんが 2024/01/31 に 編集 をしました。 (メッセージ: 初版)
  • Fuka さんが 2024/01/31 に 編集 をしました。 (メッセージ: 内容追記)
  • Fuka さんが 2024/01/31 に 編集 をしました。
  • Fuka さんが 2024/01/31 に 編集 をしました。
ログインしてコメントを投稿する