室內檢測系統由ESP12E Shield+Arduino UNO R3開發板+DHT11溫濕度模塊+雙色LED燈+有源蜂鳴器+光敏電阻模塊+I2CLCD1602液晶顯示器所構成。DHT11溫濕度模塊獲取室內溫濕度數據通過I2CLCD1602液晶顯示器進行顯示,另一方面通過ESP12E Shield將數據上傳至云平臺。光敏電阻進行捕獲室內光照強度,若光照強度過弱,即日光過弱,周圍環境太黑暗低于設定的閾值,則有源蜂鳴器警報,雙色LED燈變紅,正常情況下LED燈為綠色。
一、設備準備
Arduino UNO R3
I2CLCD1602液晶顯示器
ESP12E Shield
DHT11溫濕度模塊
有源蜂鳴器
光敏電阻模塊
雙色LED燈
二、設備連接
ESP12E Shield直接覆蓋Arduino UNO R3開發板
DHT11模塊
DHT11模塊 | Arduino UNO R3 |
---|---|
+ | 5V |
- | GND |
OUT | P2 |
I2CLCD1602液晶顯示器
I2CLCD1602液晶顯示器 | Arduino UNO R3 |
---|---|
GDN | GND |
VCC | 5V |
SDA | A4 |
SCL | A5 |
光敏電阻模塊
光敏電阻模塊 | Arduino UNO R3 |
---|---|
VCC | 5V |
GND | GND |
AO | A0 |
有源蜂鳴器
有源蜂鳴器 | Arduino UNO R3 |
---|---|
GND | GND |
I/O | P7 |
VCC | 5V |
雙色LED燈
雙色LED燈 | Arduino UNO R3 |
---|---|
GND | GND |
R | P11 |
G | P10 |
三、云平臺設置
聯網上傳至服務器的配置可參考該篇博文
一、Arduino UNO R3將數據上傳至云平臺
需要添加倆個設備名稱分別為humi和temp用于存放溫濕度信息
四、完整代碼
#include <dht.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 and 0x3F for a 16 chars and 2 line displaydht DHT;//create a variable type of dhtconst int DHT11_PIN= 2;//Humiture sensor attach to pin2const int greenPin = 11; // R petal on RGB LED module connected to digital pin 11
const int redPin= 10; // G petal on RGB LED module connected to digital pin 10 const int photocellPin = A0; //photoresistor module attach to A0
int outputValue = 0;
const int buzzerPin=7; //buzzer attach to digital 7
int val = 0;
int wendu=0;
int shidu=0;
void setup()
{Serial.begin(9600);randomSeed(analogRead(0));pinMode(buzzerPin,OUTPUT);pinMode(redPin, OUTPUT); //set redPin as OUTPUTpinMode(greenPin, OUTPUT);//set greenPin as OUTPUTlcd.init(); //initialize the lcdlcd.backlight(); //open the backlight
}void loop()
{// READ DATA//Serial.println("DHT11:");D: int chk = DHT.read11(DHT11_PIN);//read the value returned from sensorswitch (chk){case DHTLIB_OK: //Serial.println("OK!"); break;case DHTLIB_ERROR_CHECKSUM: //goto D;//Serial.print("Checksum error,\t"); break;case DHTLIB_ERROR_TIMEOUT: //goto D;//Serial.print("Time out error,\t"); break;default: // goto D;//Serial.print("Unknown error,\t"); break;}// DISPLAY DATAlcd.setCursor(0, 0);lcd.print("Tem:");//Serial.print("Tem:");lcd.print(DHT.temperature,1); //print the temperature on lcd wendu = DHT.temperature;
/*Serial.print("wendu:");Serial.print(wendu);Serial.print("\n");
*/Serial.print("cmd=upload&device_name=temp&data=");Serial.print(wendu);//send a random numberSerial.println("&uid=beyondyy&key=6d2cc6e3e19efa259a302fcf4166e2ce");lcd.print(char(223));//print the unit" ℃ "lcd.print("C");// Serial.println(" C");lcd.setCursor(0, 1);lcd.print("Hum:");//Serial.print("Hum:");lcd.print(DHT.humidity,1); //print the humidity on lcdshidu = DHT.humidity;/*Serial.print("shidu:");Serial.print(shidu);Serial.print("\n");*/Serial.print("cmd=upload&device_name=humi&data=");Serial.print(shidu);//send a random numberSerial.println("&uid=beyondyy&key=6d2cc6e3e19efa259a302fcf4166e2ce");lcd.print(" %"); //Serial.println(" %");delay(200); //wait a while outputValue = analogRead(photocellPin);//read the value of photoresistor//Serial.println(outputValue); //print it in serial monitorif(outputValue >= 500) //else{digitalWrite(buzzerPin,LOW);analogWrite(redPin, 255); //red value decreaseanalogWrite(greenPin, 0); //green value decreasedelay(100);//Serial.println(val, DEC);}else{digitalWrite(buzzerPin,HIGH);analogWrite(greenPin, 255); //green value decreaseanalogWrite(redPin, 0); //red value decreasedelay(100);}delay(1000); //delay 1s}
所需庫下載連接
將下載好的壓縮包解壓,把文件Dht復制到你的編譯器Arduino的libraries文件夾下
五、視頻效果演示
基于Arduino UNO R3開發板的安全檢測系統的實現---DHT11數據采集上云
視頻鏈接CSDN
視頻鏈接B站