JXCT Soil Sensor 7-in-1 v3.4.9 (June 2025)
Professional IoT soil monitoring system with ESP32, Modbus RTU, MQTT, and advanced compensation algorithms
|
#include <Arduino.h>
#include <ModbusMaster.h>
Классы | |
struct | SensorData |
struct | SensorCache |
Макросы | |
#define | REG_PH 0x0006 |
#define | REG_SOIL_MOISTURE 0x0012 |
#define | REG_SOIL_TEMP 0x0013 |
#define | REG_CONDUCTIVITY 0x0015 |
#define | REG_NITROGEN 0x001E |
#define | REG_PHOSPHORUS 0x001F |
#define | REG_POTASSIUM 0x0020 |
#define | REG_FIRMWARE_VERSION 0x07 |
#define | REG_CALIBRATION 0x08 |
#define | REG_ERROR_STATUS 0x0B |
#define | REG_DEVICE_ADDRESS 0x0C |
#define | MIN_TEMPERATURE -10.0 |
#define | MAX_TEMPERATURE 50.0 |
#define | MIN_HUMIDITY 0.0 |
#define | MAX_HUMIDITY 100.0 |
#define | MIN_EC 0.0 |
#define | MAX_EC 20000.0 |
#define | MIN_PH 0.0 |
#define | MAX_PH 14.0 |
#define | MIN_NPK 0.0 |
#define | MAX_NPK 2000.0 |
Функции | |
SensorData | getSensorData () |
void | setupModbus () |
Инициализация Modbus и SP3485E. | |
void | readSensorData () |
bool | readFirmwareVersion () |
bool | readErrorStatus () |
bool | changeDeviceAddress (uint8_t new_address) |
bool | validateSensorData (SensorData &data) |
bool | getCachedData (SensorData &data) |
float | convertRegisterToFloat (uint16_t value, float multiplier) |
void | preTransmission () |
Подготовка к передаче данных | |
void | postTransmission () |
Завершение передачи данных | |
void | printModbusError (uint8_t errNum) |
void | startRealSensorTask () |
void | addToMovingAverage (SensorData &data, float temp, float hum, float ec, float ph, float n, float p, float k) |
float | calculateMovingAverage (float *buffer, uint8_t window_size, uint8_t filled) |
void | initMovingAverageBuffers (SensorData &data) |
void | testSP3485E () |
Тестирование работы SP3485E. | |
bool | testModbusConnection () |
void | testSerialConfigurations () |
Переменные | |
ModbusMaster | modbus |
SensorData | sensorData |
SensorCache | sensorCache |
String | sensorLastError |
#define MAX_EC 20000.0 |
См. определение в файле modbus_sensor.h строка 27
Используется в validateSensorData().
#define MAX_HUMIDITY 100.0 |
См. определение в файле modbus_sensor.h строка 25
Используется в validateSensorData().
#define MAX_NPK 2000.0 |
См. определение в файле modbus_sensor.h строка 31
Используется в validateSensorData().
#define MAX_PH 14.0 |
См. определение в файле modbus_sensor.h строка 29
Используется в validateSensorData().
#define MAX_TEMPERATURE 50.0 |
См. определение в файле modbus_sensor.h строка 23
Используется в validateSensorData().
#define MIN_EC 0.0 |
См. определение в файле modbus_sensor.h строка 26
Используется в validateSensorData().
#define MIN_HUMIDITY 0.0 |
См. определение в файле modbus_sensor.h строка 24
Используется в validateSensorData().
#define MIN_NPK 0.0 |
См. определение в файле modbus_sensor.h строка 30
Используется в validateSensorData().
#define MIN_PH 0.0 |
См. определение в файле modbus_sensor.h строка 28
Используется в validateSensorData().
#define MIN_TEMPERATURE -10.0 |
См. определение в файле modbus_sensor.h строка 22
Используется в validateSensorData().
#define REG_CALIBRATION 0x08 |
См. определение в файле modbus_sensor.h строка 17
#define REG_CONDUCTIVITY 0x0015 |
См. определение в файле modbus_sensor.h строка 12
Используется в readBasicParameters().
#define REG_DEVICE_ADDRESS 0x0C |
См. определение в файле modbus_sensor.h строка 19
Используется в changeDeviceAddress().
#define REG_ERROR_STATUS 0x0B |
См. определение в файле modbus_sensor.h строка 18
Используется в readErrorStatus().
#define REG_FIRMWARE_VERSION 0x07 |
См. определение в файле modbus_sensor.h строка 16
#define REG_NITROGEN 0x001E |
См. определение в файле modbus_sensor.h строка 13
Используется в readNPKParameters().
#define REG_PH 0x0006 |
См. определение в файле modbus_sensor.h строка 9
Используется в readBasicParameters().
#define REG_PHOSPHORUS 0x001F |
См. определение в файле modbus_sensor.h строка 14
Используется в readNPKParameters().
#define REG_POTASSIUM 0x0020 |
См. определение в файле modbus_sensor.h строка 15
Используется в readNPKParameters().
#define REG_SOIL_MOISTURE 0x0012 |
См. определение в файле modbus_sensor.h строка 10
Используется в readBasicParameters().
#define REG_SOIL_TEMP 0x0013 |
См. определение в файле modbus_sensor.h строка 11
Используется в readBasicParameters().
void addToMovingAverage | ( | SensorData & | data, |
float | temp, | ||
float | hum, | ||
float | ec, | ||
float | ph, | ||
float | n, | ||
float | p, | ||
float | k ) |
См. определение в файле modbus_sensor.cpp строка 606
Перекрестные ссылки SensorData::buffer_filled, SensorData::buffer_index, calculateMovingAverage(), config, DEBUG_PRINTF, SensorData::ec, SensorData::ec_buffer, SensorData::hum_buffer, SensorData::humidity, k, SensorData::k_buffer, SensorData::n_buffer, SensorData::nitrogen, SensorData::p_buffer, SensorData::ph, SensorData::ph_buffer, SensorData::phosphorus, SensorData::potassium, SensorData::temp_buffer и SensorData::temperature.
Используется в finalizeSensorData().
float calculateMovingAverage | ( | float * | buffer, |
uint8_t | window_size, | ||
uint8_t | filled ) |
См. определение в файле modbus_sensor.cpp строка 674
Перекрестные ссылки config.
Используется в addToMovingAverage().
bool changeDeviceAddress | ( | uint8_t | new_address | ) |
См. определение в файле modbus_sensor.cpp строка 183
Перекрестные ссылки modbus и REG_DEVICE_ADDRESS.
float convertRegisterToFloat | ( | uint16_t | value, |
float | multiplier ) |
См. определение в файле modbus_sensor.cpp строка 495
Используется в readSingleRegister().
bool getCachedData | ( | SensorData & | data | ) |
См. определение в файле modbus_sensor.cpp строка 144
Перекрестные ссылки MODBUS_CACHE_TIMEOUT и sensorCache.
SensorData getSensorData | ( | ) |
См. определение в файле modbus_sensor.cpp строка 730
Перекрестные ссылки SensorData::conductivity, SensorData::ec, SensorData::humidity, SensorData::isValid, SensorData::last_update, SensorData::moisture, sensorData, SensorData::timestamp и SensorData::valid.
void initMovingAverageBuffers | ( | SensorData & | data | ) |
См. определение в файле modbus_sensor.cpp строка 588
Перекрестные ссылки SensorData::buffer_filled, SensorData::buffer_index, DEBUG_PRINTLN, SensorData::ec_buffer, SensorData::hum_buffer, SensorData::k_buffer, SensorData::n_buffer, SensorData::p_buffer, SensorData::ph_buffer и SensorData::temp_buffer.
void postTransmission | ( | ) |
Завершение передачи данных
Выключает передатчик и включает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для корректного переключения режимов
См. определение в файле modbus_sensor.cpp строка 517
Перекрестные ссылки MODBUS_DE_PIN и MODBUS_RE_PIN.
Используется в setupModbus() и testModbusConnection().
void preTransmission | ( | ) |
Подготовка к передаче данных
Включает передатчик и отключает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для стабилизации сигналов на шине RS-485
См. определение в файле modbus_sensor.cpp строка 505
Перекрестные ссылки MODBUS_DE_PIN и MODBUS_RE_PIN.
Используется в setupModbus() и testModbusConnection().
void printModbusError | ( | uint8_t | errNum | ) |
См. определение в файле modbus_sensor.cpp строка 547
Перекрестные ссылки logError() и logSuccess().
Используется в readFirmwareVersion() и readSingleRegister().
bool readErrorStatus | ( | ) |
См. определение в файле modbus_sensor.cpp строка 172
Перекрестные ссылки modbus, REG_ERROR_STATUS и sensorData.
bool readFirmwareVersion | ( | ) |
См. определение в файле modbus_sensor.cpp строка 153
Перекрестные ссылки logError(), logSensor(), logSuccess(), modbus и printModbusError().
void readSensorData | ( | ) |
См. определение в файле modbus_sensor.cpp строка 478
Перекрестные ссылки finalizeSensorData(), logSensor(), readBasicParameters() и readNPKParameters().
Используется в realSensorTask().
void setupModbus | ( | ) |
Инициализация Modbus и SP3485E.
Настраивает пины управления SP3485E и инициализирует UART для Modbus. Важно: DE и RE управляются раздельно для лучшего контроля над временем переключения
См. определение в файле modbus_sensor.cpp строка 80
void startRealSensorTask | ( | ) |
См. определение в файле modbus_sensor.cpp строка 541
bool testModbusConnection | ( | ) |
См. определение в файле modbus_sensor.cpp строка 199
Перекрестные ссылки logError(), logSuccess(), logSystem(), logWarn(), modbus, MODBUS_DE_PIN, MODBUS_RE_PIN, postTransmission() и preTransmission().
void testSerialConfigurations | ( | ) |
void testSP3485E | ( | ) |
Тестирование работы SP3485E.
Проверяет корректность работы пинов DE и RE:
См. определение в файле modbus_sensor.cpp строка 45
Перекрестные ссылки logSuccess(), logSystem(), logWarn(), MODBUS_DE_PIN и MODBUS_RE_PIN.
bool validateSensorData | ( | SensorData & | data | ) |
См. определение в файле modbus_sensor.cpp строка 132
Перекрестные ссылки SensorData::ec, SensorData::humidity, MAX_EC, MAX_HUMIDITY, MAX_NPK, MAX_PH, MAX_TEMPERATURE, MIN_EC, MIN_HUMIDITY, MIN_NPK, MIN_PH, MIN_TEMPERATURE, SensorData::nitrogen, SensorData::ph, SensorData::phosphorus, SensorData::potassium и SensorData::temperature.
Используется в finalizeSensorData().
|
extern |
См. определение в файле modbus_sensor.cpp строка 17
Используется в changeDeviceAddress(), readErrorStatus(), readFirmwareVersion(), readSingleRegister(), setupModbus() и testModbusConnection().
|
extern |
См. определение в файле modbus_sensor.cpp строка 19
Используется в finalizeSensorData() и getCachedData().
|
extern |
См. определение в файле modbus_sensor.cpp строка 18
Используется в fakeSensorTask(), finalizeSensorData(), getSensorData(), loop(), publishSensorData(), readBasicParameters(), readErrorStatus(), readNPKParameters(), sendDataToThingSpeak(), sendHealthJson(), sendSensorJson(), sendServiceStatusJson() и shouldPublishMqtt().
|
extern |
См. определение в файле modbus_sensor.cpp строка 20