温湿度センサーDHT11で取得したデータをシリアル通信でmbedからPCに送る

前回、mbedとDHT11を使って、取得した温湿度をlcdに表示させました。 その時の記事↓ やること 今回は、lcdにも表示させつつ、PCにシリアル通信でデータを送り、PC上で表示させてみたいと思います。 環境 Windows10 Pro バージョン1809 64bit 概要 次はPythonかProcessingでシリアル通信して表示させたいのですが、まずはPCのシリアル通信ソフトで試してみたいと思います。 今回はwindowsで行っているので、TeraTermを用います。 結線 前回と同じです。 表1 : DHT11とmbedの接続 DHT11 mbed 備考 電源(赤色) VOUT 3.3V センサー出力(緑色) 23pin なし GND(黒色) GND 0V mbedのプログラム #include "mbed.h" #include "TextLCD.h" #include "DHT.h" //lcdの初期設定 TextLCD lcd(p10, p12, p15, p16, p29, p30); // RS(4), E(6), D4(11), D5(12), D6(13), D7(14), GND R/W(5) //シリアル通信の初期設定 Serial pc(USBTX, USBRX); // tx, rx //LED1の初期設定 PwmOut led1(LED1); //pwm出力 //DHT11初期設定 DHT sensor(p23,DHT11); //sense:p23 vcc:vout(3.3V) gnd:gnd float temp_data = 0; float humi_data = 0; float temp_sum = 0; float humi_sum = 0; int c = 0; float temp_ave = 0; float humi_ave = 0; Ticker flipper; int err; //"Ticker" 繰り返しタイマー割り込み //割り込みの時にlcdに表示 void flip(){ //lcdに表示 lcd....

2019/12/14 · Last updated on 2019/12/14 · 2 min · 234 words

mbedと温湿度センサーDHT11で温度湿度を取得してlcdに表示

ひさびさにmbedを引っ張り出してきました。 いつも間が空くので忘れてしまってググりながらやるのですが、この記事も参考にできるように載せます。 やること 温湿度センサーDHT11を使って、温湿度を取得し、キャラクタlcdに表示してみます。 mbedにはLPC1768を使用します。 DHT11は扱いが簡単なモジュールタイプを使います。 注意点 DHT11は安くてお手軽で良いのですが、出力が整数(温度も湿度も)です。小数点以下の値は出ず、0になります。例えば20.4℃でも20.0℃となります。 上位のDHT22でしたら、0.1の桁まで出るようです(持ってないので未確認です) ライブラリには、lcdを動かすにはTextLCD、DHT11を動かすにはDHTをそれぞれインポートしました。 lcdの接続はライブラリに載っている接続と違いますので注意してください(使いたいデジタルピンと重なっていたので変更しました) DHTはそのままです。 DHTの電源範囲は3.3V〜5.5Vですが、今回は3.3V入力としました。温度計を隣において、5V入力だと3.3V入力時よりもちょっと温度が高くでまして、温度計より乖離が大きくなったので「きっと」3.3V用のライブラリだろうと進めました笑(ライブラリはしっかり見ていません笑) 結線 mbedのpinは「mbed ピンアサイン」で検索すると出てきます。 接続は以下の表1のようにしました。 表1 : DHT11とmbedの接続 DHT11 mbed 備考 電源(赤色) VOUT 3.3V センサー出力(緑色) 23pin なし GND(黒色) GND 0V プログラムの説明 プログラム中にコメントを入れていますのでざっくりと説明します。 仕様をみると、DHT11は2秒以上でサンプリングするようですが、見ているとだいたい1秒間隔ぐらいで温湿度を取得して値をくれていそうです。しかし、取得に失敗することもあるようなので、失敗しなかった時に値をもらうようにします。 タイマー割り込みで、10秒おきにlcdの表示を更新してます。 取得値そのままでも値がバタつくことはなかったのですが、気休めで11回の平均値をlcdには表示しています。 #include "mbed.h" #include "TextLCD.h" #include "DHT.h" //lcdの設定 TextLCD lcd(p10, p12, p15, p16, p29, p30); // RS(4), E(6), D4(11), D5(12), D6(13), D7(14), GND R/W(5) //LED1を使うので定義 DigitalOut led1(LED1); //DHT11関係設定 DHT sensor(p23,DHT11); //sense:p23 Vcc:VOUT(3.3V) GND:GND float temp_data = 0; float humi_data = 0; float temp_sum = 0; float humi_sum = 0; int c = 0; float temp_ave = 0; float humi_ave = 0; Ticker flipper; int err; //Ticker 繰り返しタイマー割り込み //割り込みの時にlcdに表示 void flip(){ lcd....

2019/11/30 · Last updated on 2023/09/22 · 1 min · 187 words