La libreria DFRobot_RTU porta il protocollo Modbus RTU su Arduino. Con pochi comandi leggi e scrivi registri coil, discrete input, holding e input register. Il codice sorgente è disponibile nel repository ufficiale, che contiene gli esempi pronti da caricare.
Modbus RTU è un protocollo seriale molto diffuso nell’industria. Funziona su UART, quindi su Arduino basta usare i pin TX e RX. La libreria gestisce la trama Modbus, il calcolo del CRC e i codici di eccezione. In questo modo il maker si concentra sui dati, non sui dettagli del protocollo.
Comandi e registri supportati
La libreria implementa i comandi Modbus 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0F e 0x10. Il comando 0x01 legge i coil, il 0x02 i discrete input, il 0x03 gli holding register e il 0x04 gli input register. I comandi 0x05 e 0x06 scrivono un singolo registro, mentre 0x0F e 0x10 scrivono registri multipli. Così copri tutte le operazioni principali del protocollo.
Ogni dispositivo Modbus ha un indirizzo che va da 0x00 a 0xF7, quindi da 0 a 247. La libreria usa questo indirizzo per instradare le richieste. Inoltre, imposta un timeout di ricezione con valore predefinito di 100 ms. Se il dispositivo non risponde entro quel tempo, la libreria segnala l’errore.
- 0x01: lettura coil
- 0x02: lettura discrete input
- 0x03: lettura holding register
- 0x04: lettura input register
- 0x05: scrittura singolo coil
- 0x06: scrittura singolo holding register
- 0x0F: scrittura multipla coil
- 0x10: scrittura multipla holding register
Collegamento e configurazione
Il collegamento del sensore al microcontrollore è semplice. Collega VCC a 5V, GND a GND, RX al pin TX della UART e TX al pin RX della UART. Attenzione all’incrocio: il TX del sensore va al RX di Arduino e viceversa. Poi imposta l’indirizzo del dispositivo nel codice e scegli il comando da usare.
La libreria include funzioni per leggere e scrivere registri singoli o multipli. Gestisce anche i codici di eccezione Modbus, quindi puoi capire subito se il dispositivo ha rifiutato la richiesta. Per iniziare, il repository del progetto contiene gli esempi di base con la configurazione di ogni comando.
Per provare la libreria puoi usare una scheda Arduino Uno R4 Wi-Fi. La UART hardware è disponibile sui pin 0 e 1, oppure puoi usare una SoftwareSerial su altri pin. La libreria funziona con entrambe le modalità. Inoltre, se vuoi un modulo con Wi-Fi integrato, l’ESP32-C6-Zero è una buona scelta per progetti IoT che parlano Modbus.
Prima di caricare lo sketch, verifica la velocità di trasmissione. Il sensore e Arduino devono usare lo stesso baud rate, altrimenti la comunicazione fallisce. La libreria non imposta la velocità, quindi la configuri tu nel codice. Di solito i dispositivi Modbus usano 9600 o 19200 baud.
Una volta configurato tutto, la lettura di un registro richiede poche righe di codice. Chiami la funzione di lettura, passi l’indirizzo del dispositivo, l’indirizzo del registro e il numero di registri. La libreria costruisce la trama, la invia e attende la risposta. Infine, restituisce i dati letti o un codice di errore.
