パイ専ボードで温湿度センサーDHT22のデータ取り込み
まず、パイ専ボードですがこれは、ラズパイマガジン2017年12月号で企画されたRaspberry PiのGPIOに接続して各種センサーをコネクタで簡単につないでデータ収集ができるボードになっています。
当方はパイ専ボードは2,980円の完成版を購入しました。その他にも光センサーや温湿度計を買っています。今回はこの温湿度計として中国Seeed Studio社の「Grove」というブランドから発売されていた「Temperature & Humidity Sensor Pro」2,100円という製品を買いました。この製品はDHT22センサーをパイ専ボードにコードとコネクタで直接繋げられるようになっています。DHT22は当ブログでも紹介している温湿度計DHT11の上位機種であり小数点以下の精度でデータを取り込むことができますが、DHT11ではセンサーの個体差が大きいことやセンサーの読み込みエラーが多いことからDHT22についても値段の割に良いものかどうかは疑問です。また、データの読み込みもI2C規格などではなくシリアル接続の独自のものでパイ専ボードがArduionの開発ツールで使えなければとても自分でプログラムを組むことは難しく当方には無理であったものと思われます。
当方はパイ専ボードは2,980円の完成版を購入しました。その他にも光センサーや温湿度計を買っています。今回はこの温湿度計として中国Seeed Studio社の「Grove」というブランドから発売されていた「Temperature & Humidity Sensor Pro」2,100円という製品を買いました。この製品はDHT22センサーをパイ専ボードにコードとコネクタで直接繋げられるようになっています。DHT22は当ブログでも紹介している温湿度計DHT11の上位機種であり小数点以下の精度でデータを取り込むことができますが、DHT11ではセンサーの個体差が大きいことやセンサーの読み込みエラーが多いことからDHT22についても値段の割に良いものかどうかは疑問です。また、データの読み込みもI2C規格などではなくシリアル接続の独自のものでパイ専ボードがArduionの開発ツールで使えなければとても自分でプログラムを組むことは難しく当方には無理であったものと思われます。
写真はRaspberry Pi 2にパイ専ボードを載せてコネクタ2にDHT22を繋げたところ
当方は、DHT11の接続例がラズパイマガジンに掲載されていたにもかかわらずデータの取り込みに苦労したのでその経過を記録しておこうと思いました。
まず、ラズパイマガジン2017年12月号p56に載っていたとおりライブラリを取り込もうとしましたがidとパスワードを要求されてなんだかめんどくさくなってWeb上で探したところhttps://github.com/adafruit/Adafruit_Sensor/blob/master/Adafruit_Sensor.hでライブラリの中身が見つかりました。中身はよくわかりませんが、Adafruit_Sensor.hと言うファイル名でソースコードをテキストファイルに保存しました。
次に、DHT22の取り込みソースコードを「esp32」と「dht22」でgooleで探すと幾つか出てきましたが、「Demo 3: How to use Arduino ESP32 to read temperature/humidity from DHT11/DHT22」をグーグルの翻訳機能で翻訳しパイ専ボードに使えそうだったのでdht22というスケッチ名で保存しDHTPIN 14をコネクタ2にDHT22をさすことにしたのでDHTPIN 25に変更、エラー表示のあとにすぐに読み取りを開始するとまたエラーが起きそうだったのでSerial.println("Failed to read from DHT sensor!");の後の行にdelay(2000);を追加しました。で、できたソースコード(スケッチ)は
まず、ラズパイマガジン2017年12月号p56に載っていたとおりライブラリを取り込もうとしましたがidとパスワードを要求されてなんだかめんどくさくなってWeb上で探したところhttps://github.com/adafruit/Adafruit_Sensor/blob/master/Adafruit_Sensor.hでライブラリの中身が見つかりました。中身はよくわかりませんが、Adafruit_Sensor.hと言うファイル名でソースコードをテキストファイルに保存しました。
次に、DHT22の取り込みソースコードを「esp32」と「dht22」でgooleで探すと幾つか出てきましたが、「Demo 3: How to use Arduino ESP32 to read temperature/humidity from DHT11/DHT22」をグーグルの翻訳機能で翻訳しパイ専ボードに使えそうだったのでdht22というスケッチ名で保存しDHTPIN 14をコネクタ2にDHT22をさすことにしたのでDHTPIN 25に変更、エラー表示のあとにすぐに読み取りを開始するとまたエラーが起きそうだったのでSerial.println("Failed to read from DHT sensor!");の後の行にdelay(2000);を追加しました。で、できたソースコード(スケッチ)は
#include "DHT.h"
//here we use pin IO14 of ESP32 to read data
#define DHTPIN 25
//our sensor is DHT22 type
#define DHTTYPE DHT22
//create an instance of DHT sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHT22 sensor!");
//call begin to start sensor
dht.begin();
}void loop() {
//use the functions which are supplied by library.
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
delay(2000);
return;
}
// print the result to Terminal
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
//we delay a little bit for next read
delay(2000);
}
です。
これで<スケッチ>-<マイコンボードに書き込む>を行ったところ
エラーメッセージが以下のように出てきました。
これで<スケッチ>-<マイコンボードに書き込む>を行ったところ
エラーメッセージが以下のように出てきました。
Arduino:1.8.5 (Linux), ボード:"ESP32 Dev Module, QIO, 80MHz, 4MB (32Mb), 115200, None"ビルドオプションが変更されました。全体をリビルドしています。
In file included from /home/pi/Arduino/libraries/DHT/DHT_U.cpp:22:0:
/home/pi/Arduino/libraries/DHT/DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
#include <Adafruit_Sensor.h>^
compilation terminated.
exit status 1
ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。
「/home/pi/Arduino/hardware/espressif/esp32/libraries/BLE」に、無効なライブラリ「/home/pi/Arduino/hardware/espressif/esp32/libraries/BLE」があります。
「/home/pi/Arduino/hardware/espressif/esp32/libraries/BLE」に、無効なライブラリ「/home/pi/Arduino/hardware/espressif/esp32/libraries/BLE」があります。
これをしげしげ眺めているうちにどうも/home/pi/Arduino/hardware/espressif/esp32/libraries/BLEにライブラリが無いことが原因ではないかと思い先程作ったライブラリファイル「Adafruit_Sensor.h」を放り込んで、所定の作業をしてやるとうまくマイコンボードに書き込むことができるようになりました。その後、<ツール>-<シリアルモニタ>でシリアルモニタを立ち上げた後ENボタンを押すと写真の様に作動を始めました。
エラーメッセージはRaspberry PiでDHT11を動かしたときよりも少ないようですが、センサーの位置によって結構頻発するのでこれで何かを動作させるには工夫が必要そうです。
これまで、作業したようにパイ専ボードはGPIOに直接取り付け出来たりセンサーとコネクタで接続できたりでハード的には敷居の低いものですが、ソフト的には「ESP32」「Arduino」などで検索した後に英語のWebページを翻訳してソースコード(スケッチ)を選びながら書き換えてやるなどせねばねらず、また、試行錯誤も必要で必ずしも敷居の低いものではありませんでした。ラズパイマガジンで記事を増やしてもらえるとありがたいです。
今後、当方はWi-FiやBluetoothでRaspberry Piとパイ専ボードを無線接続し無線でデータの取り込みが出来るようすることが目標です。途中でくじけちゃうかもしれませんが。
これまで、作業したようにパイ専ボードはGPIOに直接取り付け出来たりセンサーとコネクタで接続できたりでハード的には敷居の低いものですが、ソフト的には「ESP32」「Arduino」などで検索した後に英語のWebページを翻訳してソースコード(スケッチ)を選びながら書き換えてやるなどせねばねらず、また、試行錯誤も必要で必ずしも敷居の低いものではありませんでした。ラズパイマガジンで記事を増やしてもらえるとありがたいです。
今後、当方はWi-FiやBluetoothでRaspberry Piとパイ専ボードを無線接続し無線でデータの取り込みが出来るようすることが目標です。途中でくじけちゃうかもしれませんが。



最近のコメント