У меня есть датчик scd30, подключенный к arduino uno. SCD30 работает по протоколу I2c. Я могу читать данные в реальном времени на последовательном мониторе в Arduino IDE. У меня на Arduino есть Ethernet-экран. Я хотел бы, чтобы arduino связывался с полевым агентом, который загружает данные в Интернет.
Я пробовал множество библиотек Modbus tcp и, похоже, никуда не денусь. Я могу подключить свой arduino к полевому агенту, но всякий раз, когда он отправляет данные, я получаю код исключения 0x02 - недопустимый адрес данных. Это библиотека, которую я использую https://github.com/andresarmento/modbus-arduino/tree/master/libraries/ModbusIP/examples
Я считаю, что правильный способ сделать это - использовать регистры хранения, но я не уверен, как это сделать при использовании i2c. Связь в порядке, проблема в формате. Любая помощь приветствуется, спасибо.
/*
Reading CO2, humidity and temperature from the SCD30
This example prints the current CO2 level, relative humidity, and temperature in C.
*/
#include <SPI.h>
#include <Ethernet.h>
#include <Modbus.h>
#include <ModbusIP.h>
#include <Wire.h>
#include <Streaming.h>
#include "SparkFun_SCD30_Arduino_Library.h"
SCD30 airSensor;
//Modbus Registers Offsets (0-9999)
const int SENSOR_ISTS = 100;
//ModbusIP object
ModbusIP mb;
long ts;
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("SCD30 Example");
// The media access control (ethernet hardware) address for the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// The IP address for the shield
byte ip[] = { 000 , 00,0, 00 };
byte gateway[] = { 0, 0, 0, 0 };
byte subnet[] = { 255, 255, 255, 0 };
//Config Modbus IP
mb.config(mac, ip,gateway,subnet);
// Add SWITCH_ISTS register - Use addIsts() for digital inputs
mb.addHreg(SENSOR_ISTS);
airSensor.begin(); //This will cause readings to occur every two seconds
}
void loop()
{
mb.task();
mb.Hreg(SENSOR_ISTS, digitalRead(airSensor.getTemperature()));
}
byte ip[] = { 000 , 00,0, 00 };
, а неbyte ip[] = {0, 0, 0, 0};
?000
- восьмеричная константа. - person bigwillydos   schedule 10.09.2018