Buongiorno
C'è un modo per usare la libreria arduino modbus TCP con il modem UART ESP01 ?
Ben inteso, non programmando il ESP, ma usandolo solo come modem AT seriale.
Help.
Riassumendo, l'esempio di arduino modbus sul WiFi è così.
#include <WiFiNINA.h> // for MKR WiFi 1010
#include <ArduinoModbus.h>
WiFiServer wifiServer(502);
ModbusTCPServer modbusTCPServer;
void setup() {
status = WiFi.begin(ssid, pass);
wifiServer.begin();
modbusTCPServer.begin()
modbusTCPServer.configureCoils(0x00, 1);
}
void loop() {
WiFiClient client = wifiServer.available();
if (client) {
modbusTCPServer.accept(client);
while (client.connected()) {
modbusTCPServer.poll();
}
}
}
L'oggetto "WiFi" non è creato nello schetch.
Mi sembra di aver capito che la libreria WiFi è compatibile con quella Ethernet.
Quindi mi basterebbe trovare una libreria "ESP AT" compatibile, almeno la parte dati. (UDP ?)(TCP ?)
Se poi è diversa la parte connessione alla rete non importa.
Ho guardato alcune librerie, ma non ho capito e mi sono perso.
Ma devi usare ESP01 sempre sulla MKR oppure su una Uno che non ha wifi ??
Su una Uno collegando ESP01 e poi usando la libreria ESP8266WiFi dovresti avere gli oggetti Client e Server e quindi la libreria ModBus "dovrebbe" funzionare (dentro di se crea oggetti di classe Client mentre al wiServer gli passi l'oggetto da codice con .accept)
Devo usarlo sullo zero che non ha wifi.
Quella libreria leggo che è scritta compatibile, ma non mi sembra sia per il modem a comandi AT
Mi sembra che la puoi compilare sulla CPU 8266
Dubito riesci a trovare una libreria che gestisca classi/oggetti Server e Client tutta fatta internamente con i comandi AT.
Sparkfun ha una lib bellina con comandi AT, ma è "povera", non "ricca" come una standard ESP8266WiFi
"https://github.com/sparkfun/SparkFun_ESP8266_AT_Arduino_Library/blob/master/src/util/ESP8266_AT.h"
fra i vari esempi di SparkFun ho visto un:
while (client.connected())
{
if (client.available())
Forse riesco a passarlo al modbus.
Funzionerà con il firmware ricevuto di default negli ESP01 ?
Si potrà usare anche con una seriale non SoftwareSerial.h ?
Anche perchè se non sbaglio non è compatibile con lo zero.
Ma devo creare un server anche per collegarmi ad una rete wifi esterna in cui trovo un server modbus ?
Nell'IDE Arduino puoi trovare alcune librerie che hanno le classi base "client" e "server"
Io ho provato sia la libreria WiFiEsp che la libreria WiFiEspAT
La prima è piuttosto datata e non riesce a gestire richieste di pagine di grandi dimensioni, la seconda invece funziona decisamente meglio (ma mai quanto un ESP8266 programmato direttamente), ma richiede che la versione del firmware AT sia >= 1.7.0 (ma con ESP8266 non superiore alla versione 2.x.x)
Ma la libreria di sparkfun la hai esclusa perchè non la conosci ?
O per cosa ?
No, io intendevo client, server del wifi, non del modbus.
Quali devo creare ?
Sto cercando di leggere i registri dell'inverter huawei SUN2000 per farci una automazione.
Genera una rete wifi in cui c'è il modbus.
(Poi si associa al wifi esistente su internet per il suo server)
Perchè quella NON ha gli oggetti Server e Client come la standard WiFi (che la ArduinoModBus pretende)
Non ho capito. Sei in una rete ? C'e' un router ? Il tuo SUN è il modbus server, il tuo zero metti modbusclient che si collega e interroga il SUN, il ESP si deve connettere come client WIFI al router (alla rete internet interna)