PAGE1
PAGE1
项目实战:环境监测系统
1.项目概述
环境监测系统是一种用来实时监测和记录环境参数(如温度、湿度、光照强度等)的设备。在本项目中,我们将使用ArduinoNano(基于ATmega328P)来构建一个简单的环境监测系统。该系统将使用多种传感器来采集环境数据,并通过串口或无线模块将数据发送到计算机或其他设备进行处理和显示。
2.硬件准备
2.1.所需材料
ArduinoNano
DHT11温湿度传感器
LDR光照强度传感器
MQ-2烟雾传感器
OLED显示屏
电阻(10kΩ和100Ω)
杜邦线若干
面包板
2.2.硬件连接
DHT11温湿度传感器
VCC连接到5V
GND连接到GND
DATA连接到数字引脚2
LDR光照强度传感器
一端连接到5V
另一端通过10kΩ电阻连接到GND
与10kΩ电阻并联的引脚连接到模拟引脚A0
MQ-2烟雾传感器
VCC连接到5V
GND连接到GND
AOUT连接到模拟引脚A1
DOUT连接到数字引脚3
OLED显示屏
VCC连接到5V
GND连接到GND
SDA连接到数字引脚4
SCL连接到数字引脚5
3.软件准备
3.1.安装必要的库
DHT传感器库
打开ArduinoIDE,进入工具-库管理,搜索并安装DHTsensorlibrary。
OLED显示屏库
安装AdafruitSSD1306库和AdafruitGFX库。同样在工具-库管理中搜索并安装。
MQ-2传感器库
本项目中我们将直接使用模拟读取,不需要额外安装库。
3.2.初始化代码
#includeWire.h
#includeAdafruit_SSD1306.h
#includeDHT.h
//定义传感器引脚
#defineDHTPIN2
#defineDHTTYPEDHT11
#defineLDRPINA0
#defineMQ2PINA1
#defineMQ2DOUT3
//初始化DHT传感器
DHTdht(DHTPIN,DHTTYPE);
//初始化OLED显示屏
#defineSCREEN_WIDTH128
#defineSCREEN_HEIGHT64
Adafruit_SSD1306display(SCREEN_WIDTH,SCREEN_HEIGHT,Wire,-1);
voidsetup(){
//初始化串口通信
Serial.begin(9600);
//初始化DHT传感器
dht.begin();
//初始化OLED显示屏
if(!display.begin(SSD1306_I2C_ADDRESS,SSD1306_RESET)){
Serial.println(F(OLED初始化失败));
while(1);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
//初始化MQ-2传感器
pinMode(MQ2DOUT,INPUT);
}
voidloop(){
//读取温湿度数据
floathumidity=dht.readHumidity();
floattemperature=dht.readTemperature();
//读取光照强度数据
intlightValue=analogRead(LDRPIN);
//读取烟雾浓度数据
intsmokeValue=analogRead(MQ2PIN);
boolsmokeDetected=digitalRead(MQ2DOUT);
//显示数据
display.clearDisplay();
display.setCursor(0,0);
display.println(温度:+String(temperature)+°C);
display.println(湿度:+String(humidity)+%);
d