“Sensor-Dust/zh”的版本间的差异
(→应用) |
(→规格) |
||
第16行: | 第16行: | ||
*1.27mm间距的4Pin转6Pin接口; | *1.27mm间距的4Pin转6Pin接口; | ||
*软串口(D4,D5)通讯 | *软串口(D4,D5)通讯 | ||
− | |||
− | |||
==文档== | ==文档== |
2016年3月29日 (二) 08:22的版本
Language | English |
---|
Microduino-Dust是PM2.5传感器模块。 特色
规格
文档开发适用于大气空气质量检测或室内烟尘检测等。 应用
#include <SoftwareSerial.h>
SoftwareSerial pmSerial(4, 5); //PM2.5传感器通讯软串口
#define INTERVAL_pm25 200
unsigned long pm25_time = millis();
void setup() {
Serial.begin(9600); // See the connection status in Serial Monitor
pmSerial.begin(2400); //首先启动软串口
}
void loop() {
if (pm25_time > millis()) pm25_time = millis();
if (millis() - pm25_time > INTERVAL_pm25) {
Serial.println(PM25()) ;
pm25_time = millis(); //更新计时器
}
}
float PM25() {
int data_s = 0; //串口接收数据
int num = -1; //串口接收数据计数
int sum = 0; //校验和
int cal[5]; //接收数据缓存
float dustDensity = 0; //PM2.5浓度
pmSerial.listen();
while (1) {
if (pmSerial.available() > 0) { //串口缓存有数据
data_s = pmSerial.read(); //读取串口缓存数据
if (data_s == 0xAA) { //得到数据帧起始位
num = 0; //开始计数
}
else if (num >= 0) {
cal[num++] = data_s; //读到数据,计数+1,数据保存到缓存中
if (num == 6) { //读到数据帧最后一位
sum = cal[0] + cal[1] + cal[2] + cal[3]; //计算校验和
if (sum == cal[4] && cal[5] == 0xFF) { //校验和匹配,数据帧最后一位为0xFF,说明接收的数据帧正常
dustDensity = (cal[0] * 256 + cal[1]) * (5.0 / 1024) * 550; //计算PM2.5浓度,单位ug/m3
}
else { //接收的数据不正常
dustDensity = 0; //浓度清零
}
break;
}
}
}
}
pmSerial.stopListening();
return dustDensity ;
}
购买历史图库
|