16#include <HardwareSerial.h>
19#if defined(__AVR__) || defined(ESP8266)
21#include <SoftwareSerial.h>
24#if defined(HAS_HWSERIAL1) || defined(BOARD_HAVE_USART1)
29#if defined(__AVR_ATmega32U4__) || defined(SERIAL_USB)
97 static SoftwareSerial serial(
rx,
tx);
118#define PMS_ERROR_TIMEOUT "Sensor read timeout"
119#define PMS_ERROR_PMS_TYPE "Wrong PMSx003 sensor type"
120#define PMS_ERROR_MSG_UNKNOWN "Unknown message protocol"
121#define PMS_ERROR_MSG_HEADER "Incomplete message header"
122#define PMS_ERROR_MSG_BODY "Incomplete message body"
123#define PMS_ERROR_MSG_START "Wrong message start"
124#define PMS_ERROR_MSG_LENGTH "Message too long"
125#define PMS_ERROR_MSG_CKSUM "Wrong message checksum"
141 STATUS read(
bool tsi_mode =
false,
bool truncated_num =
false);
PMS
Definition PMserial.h:34
@ PLANTOWER_32B
Definition PMserial.h:37
@ PLANTOWER_40B
Definition PMserial.h:40
@ PMSx003
Definition PMserial.h:41
@ PMS5003T
Definition PMserial.h:46
@ PMSA003
Definition PMserial.h:49
@ PMS5003ST
Definition PMserial.h:47
@ PLANTOWER_32B_S
Definition PMserial.h:38
@ PLANTOWER_32B_T
Definition PMserial.h:39
@ PLANTOWER_AUTO
Definition PMserial.h:35
@ PLANTOWER_24B
Definition PMserial.h:36
@ PMS5003S
Definition PMserial.h:45
@ PMS3003
Definition PMserial.h:43
@ PMS1003
Definition PMserial.h:42
@ PMS5003
Definition PMserial.h:44
SerialPM(PMS sensor, Stream &serial)
Definition PMserial.h:102
float rhum
Definition PMserial.h:75
uint8_t buffer[BUFFER_LEN]
Definition PMserial.h:244
STATUS status
Definition PMserial.h:140
uint16_t n0p5
Definition PMserial.h:67
float temp_offset
Definition PMserial.h:230
Stream * uart
Definition PMserial.h:217
void set_rhum_offset(float offset)
Definition PMserial.h:176
bool has_number_concentration()
Definition PMserial.h:152
uint16_t pm25
Definition PMserial.h:65
float extra[3]
Definition PMserial.h:71
bool checkBuffer(size_t bufferLen)
Definition PMserial.cpp:194
void init()
Definition PMserial.cpp:64
STATUS
Definition PMserial.h:128
@ ERROR_MSG_HEADER
Definition PMserial.h:133
@ ERROR_TIMEOUT
Definition PMserial.h:130
@ ERROR_MSG_LENGTH
Definition PMserial.h:136
@ OK
Definition PMserial.h:129
@ ERROR_PMS_TYPE
Definition PMserial.h:131
@ ERROR_MSG_CKSUM
Definition PMserial.h:137
@ ERROR_MSG_BODY
Definition PMserial.h:134
@ ERROR_MSG_START
Definition PMserial.h:135
@ ERROR_MSG_UNKNOWN
Definition PMserial.h:132
uint16_t buff2word(uint8_t n)
Definition PMserial.h:245
void decodeBuffer(bool tsi_mode, bool truncated_num)
Definition PMserial.cpp:205
bool has_formaldehyde()
Definition PMserial.h:160
PMS pms
Definition PMserial.h:218
uint16_t nc[6]
Definition PMserial.h:60
void sleep()
Definition PMserial.cpp:92
SerialPM(PMS sensor, uint8_t rx, uint8_t tx)
Definition PMserial.h:95
uint16_t pm01
Definition PMserial.h:65
uint8_t nbytes
Definition PMserial.h:244
enum SerialPM::@4 hwSerial
STATUS trigRead()
Definition PMserial.cpp:105
uint16_t wait_ms
Definition PMserial.h:240
uint16_t bytes_read()
Definition PMserial.h:210
STATUS read(bool tsi_mode=false, bool truncated_num=false)
Definition PMserial.cpp:250
static const uint8_t BUFFER_LEN
Definition PMserial.h:243
bool has_temperature_humidity()
Definition PMserial.h:156
uint8_t tx
Definition PMserial.h:226
bool has_particulate_matter()
Definition PMserial.h:148
uint16_t n2p5
Definition PMserial.h:67
static const uint16_t max_wait_ms
Definition PMserial.h:239
uint8_t rx
Definition PMserial.h:226
uint16_t data[9]
Definition PMserial.h:56
uint16_t n0p3
Definition PMserial.h:67
Stream * getSerialPort()
Definition PMserial.h:164
void print_buffer(Stream &term, const char *fmt)
Definition PMserial.h:194
void set_temp_offset(float offset)
Definition PMserial.h:180
uint16_t pm10
Definition PMserial.h:65
float rhum_offset
Definition PMserial.h:231
float hcho
Definition PMserial.h:75
@ serModeHardware
Definition PMserial.h:221
@ serModeSoftware
Definition PMserial.h:222
@ serModeManual
Definition PMserial.h:223
uint16_t waited_ms()
Definition PMserial.h:205
void wake()
Definition PMserial.cpp:98
float get_rhum_offset()
Definition PMserial.h:184
uint16_t pm[3]
Definition PMserial.h:59
float temp
Definition PMserial.h:75
SerialPM(PMS sensor)
Definition PMserial.h:80
uint16_t n10p0
Definition PMserial.h:67
uint16_t n5p0
Definition PMserial.h:67
void setSerialPort(Stream *serial)
Definition PMserial.h:168
float get_temp_offset()
Definition PMserial.h:188
SerialPM(PMS sensor, HardwareSerial &serial)
Definition PMserial.h:87
uint16_t n1p0
Definition PMserial.h:67