modbus485_dust_co2_node/src/main.cpp
Carsten Schmiemann d2cf8549c8 First Test
2019-02-07 01:13:58 +01:00

59 lines
1.3 KiB
C++

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <SimpleModbusSlave.h>
#include <TaskScheduler.h>
#include <PMS.h>
SoftwareSerial pms7003(11, 12); // RX, TX
SoftwareSerial mhz19(9, 10); // RX, TX
PMS pms(pms7003);
PMS::DATA data;
Scheduler runner;
void sensor_pms();
Task t1(5000, TASK_FOREVER, &sensor_pms);
//////////////// MODBUS Registers ///////////////////
enum
{
R00_OneWireSensors_Anzahl,
R01_DHT22Sensors_Anzahl,
R02_Temp00,
R03_Temp01,
R04_Temp02,
R05_Temp03,
R06_Temp04,
R07_Temp05,
TOTAL_ERRORS,
TOTAL_REGS_SIZE
};
unsigned int holdingRegs[TOTAL_REGS_SIZE]; // function 3 and 16 register array
//////////////////////////////////////////////////////
void setup() {
Serial.begin(57600);
Serial.print("Starting up...");
mhz19.begin(9600);
pms7003.begin(9600);
pinMode(8, OUTPUT); //MAX485 Tranmit Enable
//modbus_configure(&Serial, 9600, SERIAL_8N1, 6, 8, TOTAL_REGS_SIZE, 0); //Modbus via MAX485
runner.init();
runner.addTask(t1);
t1.enable();
}
void loop() {
runner.execute();
}
void sensor_pms() {
if (pms.read(data)) {
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0);
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0);
Serial.println();
}
}