kopia lustrzana https://github.com/SP8EBC/ParaTNC
dust sensor: first working sketch
rodzic
bd8b738ff8
commit
5dae491c2b
|
@ -5,15 +5,18 @@
|
|||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../system/src/davis_vantage/davis.c \
|
||||
../system/src/davis_vantage/davis_parsers.c
|
||||
../system/src/davis_vantage/davis_parsers.c \
|
||||
../system/src/davis_vantage/sds011.c
|
||||
|
||||
OBJS += \
|
||||
./system/src/davis_vantage/davis.o \
|
||||
./system/src/davis_vantage/davis_parsers.o
|
||||
./system/src/davis_vantage/davis_parsers.o \
|
||||
./system/src/davis_vantage/sds011.o
|
||||
|
||||
C_DEPS += \
|
||||
./system/src/davis_vantage/davis.d \
|
||||
./system/src/davis_vantage/davis_parsers.d
|
||||
./system/src/davis_vantage/davis_parsers.d \
|
||||
./system/src/davis_vantage/sds011.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
|
|
|
@ -5,15 +5,18 @@
|
|||
# Add inputs and outputs from these tool invocations to the build variables
|
||||
C_SRCS += \
|
||||
../system/src/davis_vantage/davis.c \
|
||||
../system/src/davis_vantage/davis_parsers.c
|
||||
../system/src/davis_vantage/davis_parsers.c \
|
||||
../system/src/davis_vantage/sds011.c
|
||||
|
||||
OBJS += \
|
||||
./system/src/davis_vantage/davis.o \
|
||||
./system/src/davis_vantage/davis_parsers.o
|
||||
./system/src/davis_vantage/davis_parsers.o \
|
||||
./system/src/davis_vantage/sds011.o
|
||||
|
||||
C_DEPS += \
|
||||
./system/src/davis_vantage/davis.d \
|
||||
./system/src/davis_vantage/davis_parsers.d
|
||||
./system/src/davis_vantage/davis_parsers.d \
|
||||
./system/src/davis_vantage/sds011.d
|
||||
|
||||
|
||||
# Each subdirectory must supply rules for building sources it contributes
|
||||
|
|
|
@ -73,6 +73,9 @@ const config_data_mode_t __attribute__((section(".config_section_default.mode"))
|
|||
.wx_umb = 0,
|
||||
#endif
|
||||
|
||||
#ifdef _DUST_SDS011_SERIAL
|
||||
.wx_dust_sensor = WX_DUST_SDS011_SERIAL,
|
||||
#endif
|
||||
|
||||
#ifdef _VICTRON
|
||||
.victron = 1,
|
||||
|
|
|
@ -93,6 +93,10 @@ const config_data_mode_t __attribute__((section(".config_section_first.mode")))
|
|||
|
||||
.wx_anemometer_pulses_constant = _ANEMOMETER_PULSES_IN_10SEC_PER_ONE_MS_OF_WINDSPEED,
|
||||
|
||||
#ifdef _DUST_SDS011_SERIAL
|
||||
.wx_dust_sensor = WX_DUST_SDS011_SERIAL,
|
||||
#endif
|
||||
|
||||
#ifdef _DIGI_ONLY_789
|
||||
.digi_only_ssids = 1,
|
||||
#else
|
||||
|
|
|
@ -73,6 +73,9 @@ const config_data_mode_t __attribute__((section(".config_section_second.mode")))
|
|||
.wx_umb = 0,
|
||||
#endif
|
||||
|
||||
#ifdef _DUST_SDS011_SERIAL
|
||||
.wx_dust_sensor = WX_DUST_SDS011_SERIAL,
|
||||
#endif
|
||||
|
||||
#ifdef _VICTRON
|
||||
.victron = 1,
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
#include "drivers/dallas.h"
|
||||
#include "drivers/i2c.h"
|
||||
#include "drivers/analog_anemometer.h"
|
||||
#include "dust_sensor/sds011.h"
|
||||
#include "aprs/wx.h"
|
||||
|
||||
#include "../system/include/modbus_rtu/rtu_serial_io.h"
|
||||
|
@ -1126,9 +1127,11 @@ int main(int argc, char* argv[]){
|
|||
}
|
||||
#endif
|
||||
}
|
||||
else if ((main_config_data_mode & WX_DUST_SDS011_SERIAL) > 0) {
|
||||
else if ((main_config_data_mode->wx_dust_sensor & WX_DUST_SDS011_SERIAL) > 0) {
|
||||
if (main_kiss_srl_ctx_ptr->srl_rx_state == SRL_RX_DONE) {
|
||||
|
||||
sds011_get_pms(main_kiss_srl_ctx_ptr->srl_rx_buf_pointer, 10, &rte_wx_pm10, &rte_wx_pm2_5);
|
||||
|
||||
// restart reception
|
||||
srl_receive_data(main_kiss_srl_ctx_ptr, 10, 0xAA, 0, 0, 0, 0);
|
||||
|
||||
|
|
|
@ -18,23 +18,28 @@ int sds011_get_pms(uint8_t * data, uint16_t data_ln, uint16_t * pm_10, uint16_t
|
|||
// values received from sensor
|
||||
uint8_t head = *(data + 0);
|
||||
uint8_t command_id = *(data + 1);
|
||||
uint8_t checksum = *(data + 9);
|
||||
uint8_t checksum = *(data + 8);
|
||||
|
||||
// calculate checksum
|
||||
for (int i = 2; i < 9; i++) {
|
||||
local_checksum += *(data + i);
|
||||
if (command_id == 0xC0) {
|
||||
// calculate checksum
|
||||
for (int i = 2; i < 8; i++) {
|
||||
local_checksum += *(data + i);
|
||||
}
|
||||
|
||||
if ((local_checksum & 0xFF) != checksum) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
local_checksum = *(data + 2) | (*(data + 3) << 8);
|
||||
*pm_2_5 = local_checksum;
|
||||
|
||||
local_checksum = *(data + 4) | (*(data + 5) << 8);
|
||||
*pm_10 = local_checksum;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((local_checksum & 0xFF) != checksum) {
|
||||
return -2;
|
||||
else {
|
||||
return -3;
|
||||
}
|
||||
|
||||
local_checksum = *(data + 1) | (*(data + 2) << 8);
|
||||
*pm_2_5 = local_checksum;
|
||||
|
||||
local_checksum = *(data + 4) | (*(data + 5) << 8);
|
||||
*pm_10 = local_checksum;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue