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
Загрузка...
Поиск...
Не найдено
Файл modbus_sensor.h
#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
 

Макросы

◆ MAX_EC

#define MAX_EC   20000.0

См. определение в файле modbus_sensor.h строка 27

Используется в validateSensorData().

◆ MAX_HUMIDITY

#define MAX_HUMIDITY   100.0

См. определение в файле modbus_sensor.h строка 25

Используется в validateSensorData().

◆ MAX_NPK

#define MAX_NPK   2000.0

См. определение в файле modbus_sensor.h строка 31

Используется в validateSensorData().

◆ MAX_PH

#define MAX_PH   14.0

См. определение в файле modbus_sensor.h строка 29

Используется в validateSensorData().

◆ MAX_TEMPERATURE

#define MAX_TEMPERATURE   50.0

См. определение в файле modbus_sensor.h строка 23

Используется в validateSensorData().

◆ MIN_EC

#define MIN_EC   0.0

См. определение в файле modbus_sensor.h строка 26

Используется в validateSensorData().

◆ MIN_HUMIDITY

#define MIN_HUMIDITY   0.0

См. определение в файле modbus_sensor.h строка 24

Используется в validateSensorData().

◆ MIN_NPK

#define MIN_NPK   0.0

См. определение в файле modbus_sensor.h строка 30

Используется в validateSensorData().

◆ MIN_PH

#define MIN_PH   0.0

См. определение в файле modbus_sensor.h строка 28

Используется в validateSensorData().

◆ MIN_TEMPERATURE

#define MIN_TEMPERATURE   -10.0

См. определение в файле modbus_sensor.h строка 22

Используется в validateSensorData().

◆ REG_CALIBRATION

#define REG_CALIBRATION   0x08

См. определение в файле modbus_sensor.h строка 17

◆ REG_CONDUCTIVITY

#define REG_CONDUCTIVITY   0x0015

См. определение в файле modbus_sensor.h строка 12

Используется в readBasicParameters().

◆ REG_DEVICE_ADDRESS

#define REG_DEVICE_ADDRESS   0x0C

См. определение в файле modbus_sensor.h строка 19

Используется в changeDeviceAddress().

◆ REG_ERROR_STATUS

#define REG_ERROR_STATUS   0x0B

См. определение в файле modbus_sensor.h строка 18

Используется в readErrorStatus().

◆ REG_FIRMWARE_VERSION

#define REG_FIRMWARE_VERSION   0x07

См. определение в файле modbus_sensor.h строка 16

◆ REG_NITROGEN

#define REG_NITROGEN   0x001E

См. определение в файле modbus_sensor.h строка 13

Используется в readNPKParameters().

◆ REG_PH

#define REG_PH   0x0006

См. определение в файле modbus_sensor.h строка 9

Используется в readBasicParameters().

◆ REG_PHOSPHORUS

#define REG_PHOSPHORUS   0x001F

См. определение в файле modbus_sensor.h строка 14

Используется в readNPKParameters().

◆ REG_POTASSIUM

#define REG_POTASSIUM   0x0020

См. определение в файле modbus_sensor.h строка 15

Используется в readNPKParameters().

◆ REG_SOIL_MOISTURE

#define REG_SOIL_MOISTURE   0x0012

См. определение в файле modbus_sensor.h строка 10

Используется в readBasicParameters().

◆ REG_SOIL_TEMP

#define REG_SOIL_TEMP   0x0013

См. определение в файле modbus_sensor.h строка 11

Используется в readBasicParameters().

Функции

◆ addToMovingAverage()

◆ calculateMovingAverage()

float calculateMovingAverage ( float * buffer,
uint8_t window_size,
uint8_t filled )

См. определение в файле modbus_sensor.cpp строка 674

Перекрестные ссылки config.

Используется в addToMovingAverage().

◆ changeDeviceAddress()

bool changeDeviceAddress ( uint8_t new_address)

См. определение в файле modbus_sensor.cpp строка 183

Перекрестные ссылки modbus и REG_DEVICE_ADDRESS.

◆ convertRegisterToFloat()

float convertRegisterToFloat ( uint16_t value,
float multiplier )

См. определение в файле modbus_sensor.cpp строка 495

Используется в readSingleRegister().

◆ getCachedData()

bool getCachedData ( SensorData & data)

См. определение в файле modbus_sensor.cpp строка 144

Перекрестные ссылки MODBUS_CACHE_TIMEOUT и sensorCache.

◆ getSensorData()

SensorData getSensorData ( )

◆ initMovingAverageBuffers()

void initMovingAverageBuffers ( SensorData & data)

◆ postTransmission()

void postTransmission ( )

Завершение передачи данных

Выключает передатчик и включает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для корректного переключения режимов

См. определение в файле modbus_sensor.cpp строка 517

Перекрестные ссылки MODBUS_DE_PIN и MODBUS_RE_PIN.

Используется в setupModbus() и testModbusConnection().

◆ preTransmission()

void preTransmission ( )

Подготовка к передаче данных

Включает передатчик и отключает приемник с необходимой задержкой. Важно: Задержка 50 мкс необходима для стабилизации сигналов на шине RS-485

См. определение в файле modbus_sensor.cpp строка 505

Перекрестные ссылки MODBUS_DE_PIN и MODBUS_RE_PIN.

Используется в setupModbus() и testModbusConnection().

◆ printModbusError()

void printModbusError ( uint8_t errNum)

См. определение в файле modbus_sensor.cpp строка 547

Перекрестные ссылки logError() и logSuccess().

Используется в readFirmwareVersion() и readSingleRegister().

◆ readErrorStatus()

bool readErrorStatus ( )

См. определение в файле modbus_sensor.cpp строка 172

Перекрестные ссылки modbus, REG_ERROR_STATUS и sensorData.

◆ readFirmwareVersion()

bool readFirmwareVersion ( )

См. определение в файле modbus_sensor.cpp строка 153

Перекрестные ссылки logError(), logSensor(), logSuccess(), modbus и printModbusError().

◆ readSensorData()

void readSensorData ( )

См. определение в файле modbus_sensor.cpp строка 478

Перекрестные ссылки finalizeSensorData(), logSensor(), readBasicParameters() и readNPKParameters().

Используется в realSensorTask().

◆ setupModbus()

void setupModbus ( )

Инициализация Modbus и SP3485E.

Настраивает пины управления SP3485E и инициализирует UART для Modbus. Важно: DE и RE управляются раздельно для лучшего контроля над временем переключения

См. определение в файле modbus_sensor.cpp строка 80

◆ startRealSensorTask()

void startRealSensorTask ( )

См. определение в файле modbus_sensor.cpp строка 541

◆ testModbusConnection()

bool testModbusConnection ( )

См. определение в файле modbus_sensor.cpp строка 199

Перекрестные ссылки logError(), logSuccess(), logSystem(), logWarn(), modbus, MODBUS_DE_PIN, MODBUS_RE_PIN, postTransmission() и preTransmission().

◆ testSerialConfigurations()

void testSerialConfigurations ( )

◆ testSP3485E()

void testSP3485E ( )

Тестирование работы SP3485E.

Проверяет корректность работы пинов DE и RE:

  1. Устанавливает оба пина в режим OUTPUT
  2. Проверяет переключение HIGH/LOW
  3. Проверяет возможность независимого управления передатчиком и приемником

См. определение в файле modbus_sensor.cpp строка 45

Перекрестные ссылки logSuccess(), logSystem(), logWarn(), MODBUS_DE_PIN и MODBUS_RE_PIN.

◆ validateSensorData()

bool validateSensorData ( SensorData & data)

Переменные

◆ modbus

ModbusMaster modbus
extern

См. определение в файле modbus_sensor.cpp строка 17

Используется в changeDeviceAddress(), readErrorStatus(), readFirmwareVersion(), readSingleRegister(), setupModbus() и testModbusConnection().

◆ sensorCache

SensorCache sensorCache
extern

См. определение в файле modbus_sensor.cpp строка 19

Используется в finalizeSensorData() и getCachedData().

◆ sensorData

◆ sensorLastError

String sensorLastError
extern

См. определение в файле modbus_sensor.cpp строка 20