รหัสสินค้า | SG00485 |
หมวดหมู่ | วัดสภาพแวดล้อมและแก๊ส Environmental / Gas |
ราคา | 1,895.00 บาท |
สถานะสินค้า | พร้อมส่ง |
จำนวน | ชิ้น |
Power supply quality requirements:
Sensor Pin | Arduino Pin | Function Description |
---|---|---|
Pin 1 | VCC | Positive Power |
Pin 2 | GND | Negative Power |
Pin 3 | SET | Mode setting (More hereof later) |
Pin 4 | RXD | receive serial port pin (3.3V level) |
Pin 5 | TXD | Transferring serial port pin (3.3V level) |
Pin 6 | RESET | Reset |
Pin 7/ 8 | NC | NUll |
*SET: * SET = 1, the module works in continuous sampling mode, it will upload the sample data after the end of each sampling. (The sampling response time is 1S) SET = 0, the module enters a low-power standby mode. RESET: leave it empty is OK.
If you have an IO expansion shield, you can simply insert the PM2.5 sensor adapter onto it, and you can use the serial to monitor the data.
If you have no IO expansion shield, you can follow the wiring diagram to do wiring.
NOTE: This code can only be verified in ArduinoIDE 1.6.x or above.
//******************************
//*Abstract: Read value of PM1,PM2.5 and PM10 of air quality
//
//*Version:V3.1
//*Author:Zuyang @ HUST
//*Modified by Cain for Arduino Hardware Serial port compatibility
//*Date:March.25.2016
//******************************
#include <Arduino.h>
#define LENG 31 //0x42 + 31 bytes equal to 32 bytes
unsigned char buf[LENG];
int PM01Value=0; //define PM1.0 value of the air detector module
int PM2_5Value=0; //define PM2.5 value of the air detector module
int PM10Value=0; //define PM10 value of the air detector module
void setup()
{
Serial.begin(9600); //use serial0
Serial.setTimeout(1500); //set the Timeout to 1500ms, longer than the data transmission periodic time of the sensor
}
void loop()
{
if(Serial.find(0x42)){ //start to read when detect 0x42
Serial.readBytes(buf,LENG);
if(buf[0] == 0x4d){
if(checkValue(buf,LENG)){
PM01Value=transmitPM01(buf); //count PM1.0 value of the air detector module
PM2_5Value=transmitPM2_5(buf);//count PM2.5 value of the air detector module
PM10Value=transmitPM10(buf); //count PM10 value of the air detector module
}
}
}
static unsigned long OledTimer=millis();
if (millis() - OledTimer >=1000)
{
OledTimer=millis();
Serial.print("PM1.0: ");
Serial.print(PM01Value);
Serial.println(" ug/m3");
Serial.print("PM2.5: ");
Serial.print(PM2_5Value);
Serial.println(" ug/m3");
Serial.print("PM1 0: ");
Serial.print(PM10Value);
Serial.println(" ug/m3");
Serial.println();
}
}
char checkValue(unsigned char *thebuf, char leng)
{
char receiveflag=0;
int receiveSum=0;
for(int i=0; i<(leng-2); i++){
receiveSum=receiveSum+thebuf[i];
}
receiveSum=receiveSum + 0x42;
if(receiveSum == ((thebuf[leng-2]<<8)+thebuf[leng-1])) //check the serial data
{
receiveSum = 0;
receiveflag = 1;
}
return receiveflag;
}
int transmitPM01(unsigned char *thebuf)
{
int PM01Val;
PM01Val=((thebuf[3]<<8) + thebuf[4]); //count PM1.0 value of the air detector module
return PM01Val;
}
//transmit PM Value to PC
int transmitPM2_5(unsigned char *thebuf)
{
int PM2_5Val;
PM2_5Val=((thebuf[5]<<8) + thebuf[6]);//count PM2.5 value of the air detector module
return PM2_5Val;
}
//transmit PM Value to PC
int transmitPM10(unsigned char *thebuf)
{
int PM10Val;
PM10Val=((thebuf[7]<<8) + thebuf[8]); //count PM10 value of the air detector module
return PM10Val;
}
NOTE: The following codes are for using Software Serial.
//******************************
//*Abstract: Read value of PM1,PM2.5 and PM10 of air quality
//*Product Link: https://www.dfrobot.com.cn/goods-1113.html
//*
//8
//*The RX pin on the sensor connects to pin 11 on the Arduino
//*The TX pin on the sensor connects to pin 10 on the Arduino
//
//*Version:V3.1
//*Author:Zuyang @ HUST
//*Date:March.25.2016
//******************************
#include <Arduino.h>
#include <SoftwareSerial.h>
#define LENG 31 //0x42 + 31 bytes equal to 32 bytes
unsigned char buf[LENG];
int PM01Value=0; //define PM1.0 value of the air detector module
int PM2_5Value=0; //define PM2.5 value of the air detector module
int PM10Value=0; //define PM10 value of the air detector module
SoftwareSerial PMSerial(10, 11); // RX, TX
void setup()
{
PMSerial.begin(9600);
PMSerial.setTimeout(1500);
Serial.begin(9600);
}
void loop()
{
if(PMSerial.find(0x42)){
PMSerial.readBytes(buf,LENG);
if(buf[0] == 0x4d){
if(checkValue(buf,LENG)){
PM01Value=transmitPM01(buf); //count PM1.0 value of the air detector module
PM2_5Value=transmitPM2_5(buf);//count PM2.5 value of the air detector module
PM10Value=transmitPM10(buf); //count PM10 value of the air detector module
}
}
}
static unsigned long OledTimer=millis();
if (millis() - OledTimer >=1000)
{
OledTimer=millis();
Serial.print("PM1.0: ");
Serial.print(PM01Value);
Serial.println(" ug/m3");
Serial.print("PM2.5: ");
Serial.print(PM2_5Value);
Serial.println(" ug/m3");
Serial.print("PM1 0: ");
Serial.print(PM10Value);
Serial.println(" ug/m3");
Serial.println();
}
}
char checkValue(unsigned char *thebuf, char leng)
{
char receiveflag=0;
int receiveSum=0;
for(int i=0; i<(leng-2); i++){
receiveSum=receiveSum+thebuf[i];
}
receiveSum=receiveSum + 0x42;
if(receiveSum == ((thebuf[leng-2]<<8)+thebuf[leng-1])) //check the serial data
{
receiveSum = 0;
receiveflag = 1;
}
return receiveflag;
}
int transmitPM01(unsigned char *thebuf)
{
int PM01Val;
PM01Val=((thebuf[3]<<8) + thebuf[4]); //count PM1.0 value of the air detector module
return PM01Val;
}
//transmit PM Value to PC
int transmitPM2_5(unsigned char *thebuf)
{
int PM2_5Val;
PM2_5Val=((thebuf[5]<<8) + thebuf[6]);//count PM2.5 value of the air detector module
return PM2_5Val;
}
//transmit PM Value to PC
int transmitPM10(unsigned char *thebuf)
{
int PM10Val;
PM10Val=((thebuf[7]<<8) + thebuf[8]); //count PM10 value of the air detector module
return PM10Val;
}
Please wait 30s for the data.
Serial port baudrate: 9600; Parity: None; Stop Bits: 1; packet length is fixed at 32 bytes.
Start Character 1 | 0x42(fixed bit) |
Start Character 2 | 0x4d(fixed bit) |
Frame Length 16-byte | Frame Length = 2*9+2 (data+check bit) |
Data 1, 16-byte | concentration of PM1.0, ug/m3 |
Data 2, 16-byte | concentration of PM2.5, ug/m3 |
Data 3, 16-byte | concentration of PM10.0, ug/m3 |
Data 4, 16-byte | Internal test data |
Data 5, 16-byte | Internal test data |
Data 6, 16-byte | Internal test data |
Data 7, 16-byte | the number of particulate of diameter above 0.3um in 0.1 liters of air |
Data 8, 16-byte | the number of particulate of diameter above 0.5um in 0.1 liters of air |
Data 9, 16-byte | the number of particulate of diameter above 1.0um in 0.1 liters of air |
Data 10, 16-byte | the number of particulate of diameter above 2.5um in 0.1 liters of air |
Data 11, 16-byte | the number of particulate of diameter above 5.0um in 0.1 liters of air |
Data 12, 16-byte | the number of particulate of diameter above 10.0um in 0.1 liters of air |
Data 13, 16-byte | Internal test data |
Check Bit for Data Sum, 16-byte | Check Bit = Start Character 1 + Start Character 2 + ...all data |
ชำระเงินค่าสินค้าโดยการโอนเงินเข้าบัญชีธนาคาร KBANK, SCB, BBL,TMB
กรุณาเก็บหลักฐานการโอนเงินของท่านไว้เพื่อแจ้งการชำระเงินด้วยค่ะ
ท่านสามารถแจ้งการชำระเงินผ่านระบบอัตโนมัติได้โดย Click Link ข้างล่างค่ะ
https://www.arduitronics.com/informpayment
หน้าที่เข้าชม | 15,419,713 ครั้ง |
ผู้ชมทั้งหมด | 5,922,792 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 4 ต.ค. 2568 |