Automazione e domotica per la casa a basso costo.

Arduino: ethernet e seriale rs485 tra i nodi

arduinoDopo varie analisi, lo standard di comunicazione che mi sembra avere la meglio è la lan ethernet, ma richiede come condizione che la scheda abbia sufficienti pin (ingressi/uscite) liberi da bastare per gestire ciascuna stanza (quindi atmega1280 o atmega2560), altrimenti diventa troppo oneroso il cablaggio. Il problema principale, oltre al peso della libreria ethernet, è proprio che la scheda ethernet, per dialogare, si “mangia” diverse entrate/uscite preziose di arduino. Tuttavia grazie alla lan ethernet è facile comunicare con tutti i pc, tablet, cellulari, ecc… si possono scambiare facilmente dati in vari formati come xml, json, e non ultimo si può sviluppare una interfaccia web per il sistema domotico senza troppa fatica. Bisogna infine tenere presente che ogni volta che sia necessario sdoppiare il cavo, è necessario passare per un componente attivo (swicth), che quindi consuma corrente, se pur poca.

I bus seriali invece mi lasciano un pò perplesso, sia per la difficoltà di essere full duplex, sia per il problema del multi-master (mi pare che il canbus risolva questa necessità) sia per l’implementazione del protocollo. Ultimamente sto analizzando il modbus che, viene usato da anni in modo stabile anche in processi industriali. I bus seriali, e mi riferisco in particolare al livello fisico della rs485, hanno tuttavia 2 grandi vantaggi: richiedono solo 2 linee di i/o, e il cablaggio è molto semplice, addirittura si può tagliare il cavo e attaccare altri nodi in parallelo in qualsiasi punto, dando origine a reti con una geometria molto varia, cosa che può veramente facilitare il cablaggio, specialmente per creare un impianto di domotica in una casa già costruita

Ad ogni modo procedendo con lo sviluppo dei moduli aggiuntivi minori, sembra poter essere vantaggioro lo sviluppo di un bus dedicato e soprattutto semplificato, che non faccia uso di registri, ma abbia accesso diretto all’hardware riducendo quindi la latenza e il carico della cpu stessa di Arduino che non deve quindi fare polling per aggiornare costantemente i registri usati dal protocollo o controllare se sono cambiati e adeguare l’i/o fisico di conseguenza, perdendo quindi reattività… senza contare l’utilità di poter gestire il multimaster nel sistema domotico, e soprattutto la possibilità di diminuire il traffico sulla seriale rs485, che è bene lasciare libera il più possibile proprio in quanto half-duplex per la sua stessa natura fisica.

2 commenti

  1. Alex Alex
    12 Luglio 2012    

    Ciao Giuseppe, mi piacerebbe avere più info sull’utilizzo del modbus con Arduino (da come collegarlo, fino alla sua programmazione)……non sono un esperto ma vorrei utilizzare Arduino UNO R3 + ETH shield per un sistema domotico di casa.
    Ad esempio, vorrei comandare da Web (o da un Tuchscreen) ArduinoMaster per pilotare gli altri ArduinoSlave sparsi in casa.

    Alex

    • 22 Febbraio 2013    

      Ciao Alex, scusa per il ritardo, purtroppo mi era proprio sfuggito il commento da approvare. Per quanto riguarda il Modbus, puoi contattarmi via mail a giuseppe . delduca (at) gmail . com così ti invio 1 pdf introduttivo sul protocollo modbus e 2 file di esempio per arduino che avevo trovato tempo fa in rete. Ad ogni modo, se usi una scheda ethernet, fai prima ad implementare un mini server web (vedi esempi nell’IDE di arduino) a cui inviare comandi GET semplicemente tramite http. Se hai in mente di fare una rete distribuita per tutta la casa, la eth risulta comunque molto più dispendiosa di un bus seriale. Poi per l’interfaccia web, anche touchscreen, si tratta di sviluppare qualche semplice pagina che faccia chiamate (magari con ajax) al server web di arduino.

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.