Arduino Nano 和 DHT11 實(shí)現(xiàn) LabVIEW 溫濕度采集
Arduino IDE 安裝
Arduino IDE 安裝如下庫(kù)文件
DHT sensor library by Adafruit
DHT11 溫濕度傳感器 Data 引腳與 Arduino Nano 開(kāi)發(fā)板的 D2 引腳連接
代碼
#include <DHT.h>
#define Temperature_COMMAND 0x10 //采集命令字
#define Humidity_COMMAND 0x11 //采集命令字
#define DHTPIN 2 // DHT sensor data GPIO
#define DHTTYPE DHT11 // select one kind of sensors from DHT11, DHT22 and DHT21
DHT dht(DHTPIN, DHTTYPE);
byte comdata[3]={0}; //定義數(shù)組數(shù)據(jù),存放串口接收數(shù)據(jù)
void receive_data(void); //接受串口數(shù)據(jù)
void test_do_data(void); //測(cè)試串口數(shù)據(jù)是否正確,并更新數(shù)據(jù)
void setup()
{
Serial.begin(115200);
dht.begin();
}
void loop()
{
while (Serial.available() > 0) //不斷檢測(cè)串口是否有數(shù)據(jù)
{
receive_data(); //接受串口數(shù)據(jù)
test_do_data(); //測(cè)試數(shù)據(jù)是否正確并更新標(biāo)志位
}
}
void receive_data(void)
{
int i ;
for(i=0;i<3;i++)
{
comdata[i] =Serial.read();
//延時(shí)一會(huì),讓串口緩存準(zhǔn)備好下一個(gè)字節(jié),不延時(shí)可能會(huì)導(dǎo)致數(shù)據(jù)丟失,
delay(2);
}
}
void test_do_data(void)
{
if(comdata[0] == 0x55) //0x55和0xAA均為判斷是否為有效命令
{
if(comdata[1] == 0xAA)
{
switch (comdata[2])
{
case Temperature_COMMAND:
Serial.println((float)dht.readTemperature());
break;
case Humidity_COMMAND:
Serial.println((float)dht.readHumidity());
break;
}
}
}
}
將代碼下載進(jìn)開(kāi)發(fā)板,通過(guò)串口助手軟件分別發(fā)送 HEX 格式數(shù)據(jù) `55AA10` 和 `55AA11` 獲取反饋的溫濕度數(shù)據(jù),測(cè)試通過(guò)后關(guān)閉串口并運(yùn)行 LabVIEW 程序,即可獲得溫濕度變化曲線。
LabVIEW 界面
標(biāo)簽 1 記錄了溫濕度的變化曲線
標(biāo)簽 2 記錄溫濕度隨時(shí)間的演化過(guò)程
程序框圖
Part 1
Part 2
效果展示
工程文件見(jiàn)附件。
閱讀全文