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
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
C_SRCS += \
|
C_SRCS += \
|
||||||
../system/src/davis_vantage/davis.c \
|
../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 += \
|
OBJS += \
|
||||||
./system/src/davis_vantage/davis.o \
|
./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 += \
|
C_DEPS += \
|
||||||
./system/src/davis_vantage/davis.d \
|
./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
|
# 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
|
# Add inputs and outputs from these tool invocations to the build variables
|
||||||
C_SRCS += \
|
C_SRCS += \
|
||||||
../system/src/davis_vantage/davis.c \
|
../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 += \
|
OBJS += \
|
||||||
./system/src/davis_vantage/davis.o \
|
./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 += \
|
C_DEPS += \
|
||||||
./system/src/davis_vantage/davis.d \
|
./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
|
# 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,
|
.wx_umb = 0,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _DUST_SDS011_SERIAL
|
||||||
|
.wx_dust_sensor = WX_DUST_SDS011_SERIAL,
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _VICTRON
|
#ifdef _VICTRON
|
||||||
.victron = 1,
|
.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,
|
.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
|
#ifdef _DIGI_ONLY_789
|
||||||
.digi_only_ssids = 1,
|
.digi_only_ssids = 1,
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -73,6 +73,9 @@ const config_data_mode_t __attribute__((section(".config_section_second.mode")))
|
||||||
.wx_umb = 0,
|
.wx_umb = 0,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _DUST_SDS011_SERIAL
|
||||||
|
.wx_dust_sensor = WX_DUST_SDS011_SERIAL,
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _VICTRON
|
#ifdef _VICTRON
|
||||||
.victron = 1,
|
.victron = 1,
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
#include "drivers/dallas.h"
|
#include "drivers/dallas.h"
|
||||||
#include "drivers/i2c.h"
|
#include "drivers/i2c.h"
|
||||||
#include "drivers/analog_anemometer.h"
|
#include "drivers/analog_anemometer.h"
|
||||||
|
#include "dust_sensor/sds011.h"
|
||||||
#include "aprs/wx.h"
|
#include "aprs/wx.h"
|
||||||
|
|
||||||
#include "../system/include/modbus_rtu/rtu_serial_io.h"
|
#include "../system/include/modbus_rtu/rtu_serial_io.h"
|
||||||
|
@ -1126,9 +1127,11 @@ int main(int argc, char* argv[]){
|
||||||
}
|
}
|
||||||
#endif
|
#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) {
|
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
|
// restart reception
|
||||||
srl_receive_data(main_kiss_srl_ctx_ptr, 10, 0xAA, 0, 0, 0, 0);
|
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
|
// values received from sensor
|
||||||
uint8_t head = *(data + 0);
|
uint8_t head = *(data + 0);
|
||||||
uint8_t command_id = *(data + 1);
|
uint8_t command_id = *(data + 1);
|
||||||
uint8_t checksum = *(data + 9);
|
uint8_t checksum = *(data + 8);
|
||||||
|
|
||||||
// calculate checksum
|
if (command_id == 0xC0) {
|
||||||
for (int i = 2; i < 9; i++) {
|
// calculate checksum
|
||||||
local_checksum += *(data + i);
|
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;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
if ((local_checksum & 0xFF) != checksum) {
|
return -3;
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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