I'm still a beginner in arduino and i'm trying to use a SamYoung Sensor with the code given on this site. I had to remove the gw. and add radio and gateaway to avoid error messages. I am not getting anything in the serial monitor.
Thank You
Here is my code:
/**
The MySensors Arduino library handles the wireless radio link and protocol
between your home built sensors/actuators and HA controller of choice.
The sensors forms a self healing radio network with optional repeaters. Each
repeater and gateway builds a routing tables in EEPROM which keeps track of the
network topology allowing messages to be routed to nodes.
unsigned long SLEEP_TIME = 30*1000; // Sleep time between reads (in milliseconds)
//VARIABLES
int val = 0; // variable to store the value coming from the sensor
float valDUSTPM25 =0.0;
float lastDUSTPM25 =0.0;
float valDUSTPM10 =0.0;
float lastDUSTPM10 =0.0;
unsigned long duration;
unsigned long starttime;
unsigned long endtime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
long concentrationPM25 = 0;
long concentrationPM10 = 0;
int temp=20; //external temperature, if you can replace this with a DHT11 or better
float ppmv;
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Dust Sensor DSM501", "1.5");
// Register all sensors to gateway (they will be created as child devices)
present(CHILD_ID_DUST_PM10, S_DUST);
send(msgPM10.set("ppm"));
present(CHILD_ID_DUST_PM25, S_DUST);
send(msgPM25.set("ppm"));
//get PM 2.5 density of particles over 2.5 μm.
concentrationPM25=(long)getPM(DUST_SENSOR_DIGITAL_PIN_PM25);
Serial.print("PM25: ");
Serial.println(concentrationPM25);
Serial.print("\n");
//ppmv=mg/m3 (0.08205Tmp)/Molecular_mass
//0.08205 = Universal gas constant in atm·m3/(kmol·K)
ppmv=(float)(((concentrationPM250.0283168)/100) ((0.08205*temp)/0.01))/1000;
if ((concentrationPM25 != lastDUSTPM25)&&(concentrationPM25>0)) {
send(dustMsgPM25.set(ppmv,3));
lastDUSTPM25 = ceil(concentrationPM25);
}
//get PM 1.0 - density of particles over 1 μm.
concentrationPM10=getPM(DUST_SENSOR_DIGITAL_PIN_PM10);
Serial.print("PM10: ");
Serial.println(concentrationPM10);
Serial.print("\n");
//ppmv=mg/m3 (0.08205Tmp)/Molecular_mass
//0.08205 = Universal gas constant in atm·m3/(kmol·K)
ppmv=(((concentrationPM100.0283168/100) (0.08205*temp)/0.01))/1000;
if ((ceil(concentrationPM10) != lastDUSTPM10)&&((long)concentrationPM10>0)) {
send(dustMsgPM10.set(ppmv,3));
lastDUSTPM10 = ceil(concentrationPM10);
}
I'm still a beginner in arduino and i'm trying to use a SamYoung Sensor with the code given on this site. I had to remove the gw. and add radio and gateaway to avoid error messages. I am not getting anything in the serial monitor. Thank You
Here is my code:
/**
define MY_RADIO_NRF24
define MY_RF24_PA_LEVEL RF24_PA_LOW
define MY_GATEWAY_SERIAL
include
include
include
define CHILD_ID_DUST_PM10 0
define CHILD_ID_DUST_PM25 1
define DUST_SENSOR_DIGITAL_PIN_PM10 3
define DUST_SENSOR_DIGITAL_PIN_PM25 6
unsigned long SLEEP_TIME = 30*1000; // Sleep time between reads (in milliseconds) //VARIABLES int val = 0; // variable to store the value coming from the sensor float valDUSTPM25 =0.0; float lastDUSTPM25 =0.0; float valDUSTPM10 =0.0; float lastDUSTPM10 =0.0; unsigned long duration; unsigned long starttime; unsigned long endtime; unsigned long sampletime_ms = 30000; unsigned long lowpulseoccupancy = 0; float ratio = 0; long concentrationPM25 = 0; long concentrationPM10 = 0; int temp=20; //external temperature, if you can replace this with a DHT11 or better float ppmv;
MyMessage dustMsgPM10(CHILD_ID_DUST_PM10, V_LEVEL); MyMessage msgPM10(CHILD_ID_DUST_PM10, V_UNIT_PREFIX); MyMessage dustMsgPM25(CHILD_ID_DUST_PM25, V_LEVEL); MyMessage msgPM25(CHILD_ID_DUST_PM25, V_UNIT_PREFIX);
void setup()
{
// Send the sketch version information to the gateway and Controller sendSketchInfo("Dust Sensor DSM501", "1.5");
// Register all sensors to gateway (they will be created as child devices) present(CHILD_ID_DUST_PM10, S_DUST);
send(msgPM10.set("ppm")); present(CHILD_ID_DUST_PM25, S_DUST);
send(msgPM25.set("ppm"));
pinMode(DUST_SENSOR_DIGITAL_PIN_PM10,INPUT); pinMode(DUST_SENSOR_DIGITAL_PIN_PM25,INPUT);
}
void loop()
{
//get PM 2.5 density of particles over 2.5 μm. concentrationPM25=(long)getPM(DUST_SENSOR_DIGITAL_PIN_PM25); Serial.print("PM25: "); Serial.println(concentrationPM25); Serial.print("\n"); //ppmv=mg/m3 (0.08205Tmp)/Molecular_mass //0.08205 = Universal gas constant in atm·m3/(kmol·K) ppmv=(float)(((concentrationPM250.0283168)/100) ((0.08205*temp)/0.01))/1000;
if ((concentrationPM25 != lastDUSTPM25)&&(concentrationPM25>0)) { send(dustMsgPM25.set(ppmv,3)); lastDUSTPM25 = ceil(concentrationPM25); } //get PM 1.0 - density of particles over 1 μm. concentrationPM10=getPM(DUST_SENSOR_DIGITAL_PIN_PM10); Serial.print("PM10: "); Serial.println(concentrationPM10); Serial.print("\n"); //ppmv=mg/m3 (0.08205Tmp)/Molecular_mass //0.08205 = Universal gas constant in atm·m3/(kmol·K) ppmv=(((concentrationPM100.0283168/100) (0.08205*temp)/0.01))/1000;
if ((ceil(concentrationPM10) != lastDUSTPM10)&&((long)concentrationPM10>0)) { send(dustMsgPM10.set(ppmv,3)); lastDUSTPM10 = ceil(concentrationPM10); }
//sleep to save on radio sleep(SLEEP_TIME);
}
long getPM(int DUST_SENSOR_DIGITAL_PIN) {
starttime = millis();
while (1) {
}
}