Automazione e domotica per la casa a basso costo.

Progettazione bus seriale rs485 Arduino

trasmissione dati arduinoBene, un pò di giorni di prove con il modBUS su arduino sono stati sufficienti per farmi cambiare filosofia sul rispetto ti tale protocollo. Gli standard sono una cosa bellissima, sono il primo a sostenerli, permettono il dialogo tra piattaforme diverse e forniscono suggerimenti per lo sviluppo. Quando però questi “suggerimenti” si traducono in overhead di sviluppo che supera il 20% del codice previsto all’inizio, allora lo standard comincia ad essermi antipatico, tanto più su una piattaforma come arduino dove le risorse sono molto limitate e faccio già fatica a farci stare dentro tutte le funzionalità che mi servono.

Con questa premessa, è presto spiegato il motivo per cui ho scelto di progettare un nuovo protocollo seriale per la domotica con arduino. Inizia quindi una nuova avventura con il bus485 di arduino. L’idea di base è quella di trasmettere pacchetti di dati (array di byte/char) i cui elementi assumono significati precisi a seconda della posizione. Similmente al modBUS farò uso dei registri, ma con corrispondenza diretta tra registri e pin di arduino. La grande differenza invece, almeno rispetto al classico 8N1 molto diffuso per le porte seriali, sarà il pacchetto di dati trasmesso da arduino, che avrà dimensione variabile per essere più flessibile e risparmiare tempo nella trasmissione, lasciando quindi più libero il bus stesso per altre comunicazioni. Nulla esclude che si possano un domani arduino possa parlare altre “lingue” scrivendo dei semplici gateway per modBUS, canBUS o altri protocolli già diffusi.

In altre parole sarà un bus decisamente più semplice e specifico, un bus seriale per arduino e la domotica.

2 commenti

  1. peppe peppe
    23 Febbraio 2013    

    Ciao, sto cercando un’esempio di comunicazione RS485 come quella che menzioni tu, Modbus non mi piace ed è anche difficile da comprendere per certi versi…se hai sviluppato qualcosa mi potresti passare il sorgente?…

    • 25 Febbraio 2013    

      Ciao, i sorgenti al momento non sono di dominio pubblico mi spiace, però se hai qualche domanda in particolare e riesco a risponderti, ben volentieri. Suppongo che tu ti sia già procurato dei chip per la comunicazione rs485 e abbia già cablato almeno fisicamente una mini rete rs485 con almeno un paio di nodi arduino… diversamente ti suggerisco di leggere un interessante articolo sulla rete seriale rs485 con arduino (in inglese) da cui ho preso spunto. Con questo punto di partenza, posso suggerirti di iniziare a “giocare” con Serial.write(array_di_byte[]) su un nodo e Serial.read() sull’altro, all’interno di un while(Serial.available()). Una volta che riesci ad inviare e ricevere dei byte sei a buon punto, poi si tratta di decidere COSA inviare, con che criterio, e come interpretarlo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.