The laser SDS011 sensor from Nova Fitness is available on auction portals for ~ $ 20 SDS011 . The device has an air inlet and an air suction turbine. 5V power supply, UART communication interface works with 3.3V voltage level. Information about PM2.5 and PM10 dust measurements is available as incoming data via UART interface or as variable filling of square waveforms available on the interface. Through the UART interface, we can put the device into sleep mode, and configure operating modes, e.g. cyclical entering into sleep mode and waking up to perform the measurement. Information about the sensor can be found on the manufacturer's website: SDS011 . A USB UART converter was delivered with the device, but due to the binary format of the output data, I used Arduino UNO to test the module.
The life of the sensor is limited to 8000 hours, so it is worth taking measurements cyclically, e.g. every 15 minutes, starting the device for 30 seconds. During operation, the sensor consumes ~ 65mA, while in sleep mode ~ 2mA. The air suction turbine produces a low hum during operation.
In a closed room, the display values fluctuated around ~ 10-20ug / m3. When the air intake is blocked, the displayed values have dropped to single units. Opening the window increased the value to several dozen. I also went to the sensor area airly receiving similar indications (different by + -10). I have no other way of checking the device, but it seems to be working fine.
[movie: 27efcedd85] https://filmy.elektroda.pl/8_1541353265.mp4 [/ movie: 27efcedd85]
In the Arduino environment you will find many libraries to help you run the sensor, just search for the phrase SDS011, e.g. https://github.com/lewapek/sds-dust-sensors-arduino-library The communication protocol is quite well described in the specification on the manufacturer's website, so to first attempts, makeshift code can be used.
Below is the test code, after uploading it to the Arduino UNO, connect the appropriate pins of the module to the RX / TX. In the serial console we will see the values of the concentration of PM2.5 and PM10 in the air sucked in by the sensor.
[syntax=c]byte data_buff[10];
byte data_count=0;
byte data_rdy=0;
void setup() {
Serial.begin(9600);
}
void loop() {
byte data;
int pm25,pm10;
if(Serial.available() > 0){
data = Serial.read();
if(data_rdy==0){
if(data_count==0 && data==0xAA){
data_buff[data_count]=data;
data_count++;
}else if(data_count==1 && data==0xC0){
data_buff[data_count]=data;
data_count++;
}else if(data_count>1 && data_count 0){
data = Serial.read();
if(data_rdy==0){
if(data_count==0 && data==0xAA){
data_buff[data_count]=data;
data_count++;
}else if(data_count==1 && data==0xC0){
data_buff[data_count]=data;
data_count++;
}else if(data_count>1 && data_count
The life of the sensor is limited to 8000 hours, so it is worth taking measurements cyclically, e.g. every 15 minutes, starting the device for 30 seconds. During operation, the sensor consumes ~ 65mA, while in sleep mode ~ 2mA. The air suction turbine produces a low hum during operation.
In a closed room, the display values fluctuated around ~ 10-20ug / m3. When the air intake is blocked, the displayed values have dropped to single units. Opening the window increased the value to several dozen. I also went to the sensor area airly receiving similar indications (different by + -10). I have no other way of checking the device, but it seems to be working fine.
[movie: 27efcedd85] https://filmy.elektroda.pl/8_1541353265.mp4 [/ movie: 27efcedd85]
In the Arduino environment you will find many libraries to help you run the sensor, just search for the phrase SDS011, e.g. https://github.com/lewapek/sds-dust-sensors-arduino-library The communication protocol is quite well described in the specification on the manufacturer's website, so to first attempts, makeshift code can be used.
Below is the test code, after uploading it to the Arduino UNO, connect the appropriate pins of the module to the RX / TX. In the serial console we will see the values of the concentration of PM2.5 and PM10 in the air sucked in by the sensor.
[syntax=c]byte data_buff[10];
byte data_count=0;
byte data_rdy=0;
void setup() {
Serial.begin(9600);
}
void loop() {
byte data;
int pm25,pm10;
if(Serial.available() > 0){
data = Serial.read();
if(data_rdy==0){
if(data_count==0 && data==0xAA){
data_buff[data_count]=data;
data_count++;
}else if(data_count==1 && data==0xC0){
data_buff[data_count]=data;
data_count++;
}else if(data_count>1 && data_count 0){
data = Serial.read();
if(data_rdy==0){
if(data_count==0 && data==0xAA){
data_buff[data_count]=data;
data_count++;
}else if(data_count==1 && data==0xC0){
data_buff[data_count]=data;
data_count++;
}else if(data_count>1 && data_count
Cool? Ranking DIY