JXCT Soil Sensor 7-in-1 3.10.1
IoT система мониторинга почвы на базе ESP32
|
#include <ModbusMaster.h>
#include "Arduino.h"
#include "jxct_constants.h"
#include "sensor_types.h"
Классы | |
struct | ModbusSensorData |
struct | SensorCache |
Макросы | |
#define | MIN_TEMPERATURE SENSOR_TEMP_MIN |
#define | MAX_TEMPERATURE SENSOR_TEMP_MAX |
#define | MIN_HUMIDITY SENSOR_HUMIDITY_MIN |
#define | MAX_HUMIDITY SENSOR_HUMIDITY_MAX |
#define | MIN_EC SENSOR_EC_MIN |
#define | MAX_EC SENSOR_EC_MAX |
#define | MIN_PH SENSOR_PH_MIN |
#define | MAX_PH SENSOR_PH_MAX |
#define | MIN_NPK SENSOR_NPK_MIN |
#define | MAX_NPK SENSOR_NPK_MAX |
Функции | |
String & | getSensorLastError () |
ModbusSensorData | getSensorData () |
void | setupModbus () |
Инициализация Modbus и SP3485E. | |
void | readSensorData () |
bool | readFirmwareVersion () |
bool | readErrorStatus () |
bool | changeDeviceAddress (uint8_t new_address) |
bool | validateSensorData (ModbusSensorData &data) |
bool | getCachedData (ModbusSensorData &data) |
float | convertRegisterToFloat (uint16_t value, float multiplier) |
void | preTransmission () |
Подготовка к передаче данных | |
void | postTransmission () |
Завершение передачи данных | |
void | printModbusError (uint8_t errNum) |
void | startRealSensorTask () |
void | addToMovingAverage (ModbusSensorData &data, const ModbusSensorData &newReading) |
float | calculateMovingAverage (const float *buffer, uint8_t window_size, uint8_t filled) |
void | initMovingAverageBuffers (ModbusSensorData &data) |
void | testSP3485E () |
Тестирование работы SP3485E. | |
bool | testModbusConnection () |
void | testSerialConfigurations () |
Переменные | |
constexpr uint16_t | REG_PH = 0x0006 |
constexpr uint16_t | REG_SOIL_MOISTURE = 0x0012 |
constexpr uint16_t | REG_SOIL_TEMP = 0x0013 |
constexpr uint16_t | REG_CONDUCTIVITY = 0x0015 |
constexpr uint16_t | REG_NITROGEN = 0x001E |
constexpr uint16_t | REG_PHOSPHORUS = 0x001F |
constexpr uint16_t | REG_POTASSIUM = 0x0020 |
constexpr uint16_t | REG_FIRMWARE_VERSION = 0x07 |
constexpr uint16_t | REG_CALIBRATION = 0x08 |
constexpr uint16_t | REG_ERROR_STATUS = 0x0B |
constexpr uint16_t | REG_DEVICE_ADDRESS = 0x0C |
constexpr size_t | SENSOR_BUFFER_SIZE = 15 |
constexpr float | SENSOR_DEFAULT_FLOAT = 0.0F |
constexpr float | SENSOR_DEFAULT_SCALE = 1.0F |
constexpr int | SENSOR_MAX_VALUE = 1000 |
constexpr int | SENSOR_MIN_VALUE = 100 |
ModbusSensorData | sensorData |
SensorCache | sensorCache |
#define MIN_TEMPERATURE SENSOR_TEMP_MIN |
#define MAX_TEMPERATURE SENSOR_TEMP_MAX |
#define MIN_HUMIDITY SENSOR_HUMIDITY_MIN |
#define MAX_HUMIDITY SENSOR_HUMIDITY_MAX |
#define MIN_EC SENSOR_EC_MIN |
#define MAX_EC SENSOR_EC_MAX |
#define MIN_PH SENSOR_PH_MIN |
#define MAX_PH SENSOR_PH_MAX |
#define MIN_NPK SENSOR_NPK_MIN |
#define MAX_NPK SENSOR_NPK_MAX |
String & getSensorLastError | ( | ) |
ModbusSensorData getSensorData | ( | ) |
void setupModbus | ( | ) |
Инициализация Modbus и SP3485E.
Настраивает пины управления SP3485E и инициализирует UART для Modbus. Важно: DE и RE управляются раздельно для лучшего контроля над временем переключения
void readSensorData | ( | ) |
bool readFirmwareVersion | ( | ) |
bool readErrorStatus | ( | ) |
bool changeDeviceAddress | ( | uint8_t | new_address | ) |
bool validateSensorData | ( | ModbusSensorData & | data | ) |
bool getCachedData | ( | ModbusSensorData & | data | ) |
float convertRegisterToFloat | ( | uint16_t | value, |
float | multiplier | ||
) |
void preTransmission | ( | ) |
Подготовка к передаче данных
Включает передатчик и отключает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для стабилизации сигналов на шине RS-485
void postTransmission | ( | ) |
Завершение передачи данных
Выключает передатчик и включает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для корректного переключения режимов
void printModbusError | ( | uint8_t | errNum | ) |
void startRealSensorTask | ( | ) |
void addToMovingAverage | ( | ModbusSensorData & | data, |
const ModbusSensorData & | newReading | ||
) |
float calculateMovingAverage | ( | const float * | buffer, |
uint8_t | window_size, | ||
uint8_t | filled | ||
) |
void initMovingAverageBuffers | ( | ModbusSensorData & | data | ) |
void testSP3485E | ( | ) |
Тестирование работы SP3485E.
Проверяет корректность работы пинов DE и RE:
bool testModbusConnection | ( | ) |
void testSerialConfigurations | ( | ) |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
constexpr |
|
extern |
|
extern |