JXCT Soil Sensor 7-in-1 3.10.1
IoT система мониторинга почвы на базе ESP32
Загрузка...
Поиск...
Не найдено
Файл modbus_sensor.h
#include <ModbusMaster.h>
#include "Arduino.h"
#include "jxct_constants.h"
#include "sensor_types.h"
Граф включаемых заголовочных файлов для modbus_sensor.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
 

Макросы

◆ MIN_TEMPERATURE

#define MIN_TEMPERATURE   SENSOR_TEMP_MIN

◆ MAX_TEMPERATURE

#define MAX_TEMPERATURE   SENSOR_TEMP_MAX

◆ MIN_HUMIDITY

#define MIN_HUMIDITY   SENSOR_HUMIDITY_MIN

◆ MAX_HUMIDITY

#define MAX_HUMIDITY   SENSOR_HUMIDITY_MAX

◆ MIN_EC

#define MIN_EC   SENSOR_EC_MIN

◆ MAX_EC

#define MAX_EC   SENSOR_EC_MAX

◆ MIN_PH

#define MIN_PH   SENSOR_PH_MIN

◆ MAX_PH

#define MAX_PH   SENSOR_PH_MAX

◆ MIN_NPK

#define MIN_NPK   SENSOR_NPK_MIN

◆ MAX_NPK

#define MAX_NPK   SENSOR_NPK_MAX

Функции

◆ getSensorLastError()

String & getSensorLastError ( )

◆ getSensorData()

ModbusSensorData getSensorData ( )

◆ setupModbus()

void setupModbus ( )

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

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

◆ readSensorData()

void readSensorData ( )

◆ readFirmwareVersion()

bool readFirmwareVersion ( )

◆ readErrorStatus()

bool readErrorStatus ( )

◆ changeDeviceAddress()

bool changeDeviceAddress ( uint8_t  new_address)

◆ validateSensorData()

bool validateSensorData ( ModbusSensorData data)

◆ getCachedData()

bool getCachedData ( ModbusSensorData data)

◆ convertRegisterToFloat()

float convertRegisterToFloat ( uint16_t  value,
float  multiplier 
)

◆ preTransmission()

void preTransmission ( )

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

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

◆ postTransmission()

void postTransmission ( )

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

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

◆ printModbusError()

void printModbusError ( uint8_t  errNum)

◆ startRealSensorTask()

void startRealSensorTask ( )

◆ addToMovingAverage()

void addToMovingAverage ( ModbusSensorData data,
const ModbusSensorData newReading 
)

◆ calculateMovingAverage()

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

◆ initMovingAverageBuffers()

void initMovingAverageBuffers ( ModbusSensorData data)

◆ testSP3485E()

void testSP3485E ( )

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

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

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

◆ testModbusConnection()

bool testModbusConnection ( )

◆ testSerialConfigurations()

void testSerialConfigurations ( )

Переменные

◆ REG_PH

constexpr uint16_t REG_PH = 0x0006
constexpr

◆ REG_SOIL_MOISTURE

constexpr uint16_t REG_SOIL_MOISTURE = 0x0012
constexpr

◆ REG_SOIL_TEMP

constexpr uint16_t REG_SOIL_TEMP = 0x0013
constexpr

◆ REG_CONDUCTIVITY

constexpr uint16_t REG_CONDUCTIVITY = 0x0015
constexpr

◆ REG_NITROGEN

constexpr uint16_t REG_NITROGEN = 0x001E
constexpr

◆ REG_PHOSPHORUS

constexpr uint16_t REG_PHOSPHORUS = 0x001F
constexpr

◆ REG_POTASSIUM

constexpr uint16_t REG_POTASSIUM = 0x0020
constexpr

◆ REG_FIRMWARE_VERSION

constexpr uint16_t REG_FIRMWARE_VERSION = 0x07
constexpr

◆ REG_CALIBRATION

constexpr uint16_t REG_CALIBRATION = 0x08
constexpr

◆ REG_ERROR_STATUS

constexpr uint16_t REG_ERROR_STATUS = 0x0B
constexpr

◆ REG_DEVICE_ADDRESS

constexpr uint16_t REG_DEVICE_ADDRESS = 0x0C
constexpr

◆ SENSOR_BUFFER_SIZE

constexpr size_t SENSOR_BUFFER_SIZE = 15
constexpr

◆ SENSOR_DEFAULT_FLOAT

constexpr float SENSOR_DEFAULT_FLOAT = 0.0F
constexpr

◆ SENSOR_DEFAULT_SCALE

constexpr float SENSOR_DEFAULT_SCALE = 1.0F
constexpr

◆ SENSOR_MAX_VALUE

constexpr int SENSOR_MAX_VALUE = 1000
constexpr

◆ SENSOR_MIN_VALUE

constexpr int SENSOR_MIN_VALUE = 100
constexpr

◆ sensorData

ModbusSensorData sensorData
extern

◆ sensorCache

SensorCache sensorCache
extern