Go Down

Topic: Progetto di acquisizione dati Master Slave Wireless (Read 228 times) previous topic - next topic

ivanmeneo

May 20, 2019, 06:45 pm Last Edit: May 20, 2019, 07:01 pm by ivanmeneo
Ciao a Tutti!
Dopo aver fatto una ricerca di molti post e thread sull'argomento Master/Slave su Arduino, sia qui sul forum che su Google (altri siti intendo...), vi vado a proporre il mio dubbio progettuale.
Vorrei realizzare un sistema di acquisizione dati da diversi Arduino (circa una ventina), tutti collegati con un MCU che fa da Master, possibilmente senza connessioni con fili.
Ho letto molto sul collegamento I2C e sulle sue potenzialità; ma vorrei riuscire a trovare una soluzione senza fili, se fisicamente possibile.
Fondamentalmente il Master, tramite una interfaccia Web, chiede i dati ad ogni singolo Slave per volta e li mostra.
Ogni Slave è dotato di un pacchetto di sensori, di uno schermo LCD, di una sua alimentazione, di un attuatore e di un paio di pulsanti. Il Master non deve, per intenderci, accendere o spegnere un led o controllare un relè, ma deve solo riportare a video i dati in tempo reale di un singolo Slave o al max a blocchi da 4.
Ero partito con schede Slave italiane che coniugano il wifi o il BT integrato (alcune anche il nuovo BLE); ma non sempre sono di facile utilizzo e diciamo che utilizzare un Arduino ufficiale a me non dispiace. Mi ero rivolto verso lo Yun Rev2, ma il suo limite di essere alimentato max a 5V, nei test reali, è stato un handicap per far funzionare tutto il pacchetto dei sensori.
Ho preso in considerazione il nuovo UNO WiFi Rev 2, ma purtroppo la scheda originale presa da Amazon non ne ha voluto sapere di funzionare e non sono riuscito a caricare nessuno sketch senza errori; oggi ho avviato il reso. Forse ne prenderò un altro dal sito ufficiale..anche se a dire il vero il venditore "ARDUINO" su Amazon mi dava fiducia. Considerando però tutte le discussioni sul suo malfunzionamento, essendo molto probabilmente una scheda giovane, mi sono un pò scoraggiato; perché ero convinto delle sue potenzialità, almeno sulla carta.

Anche per il Master ho pensato ad utilizzare lo Yun Rev 2, perché la facilità con cui si utilizza l'interfaccia Linux per implementare la struttura web mi ha attirato molto.

Dalle innumerevoli letture qui sul forum, ho notato che, se per le connessioni wired la più consigliata è l'I2C, per le soluzioni wireless il bluetooth con i moduli HC va per la maggiore.
Certo che con gli ZigBee credo sarebbe un livello diverso, ma i costi salgono molto da quanto ho visto.

Cosa mi consigliate per interagire senza fili con una una ventina di Slave??

P.S. Non ho anni di esperienza sull'argomento e una padronanza totale sui microcontrollori, quindi ogni critica è ben accetta!

 
Arduino UNO, Mega, Yun Rev 2, WiFi Rev 2

gpb01

Guarda, in area Megatopic c'è un thread su una interessante libreria, sviluppata da un utente del forum e ben manutenuta, che permette di fare quanto richiedi (vari altri utenti qui l'hanno utilizzata con soddisfazione), prova a studiarti il thread ... QUI :)

Guglielmo
Search is Your friend ... or I am Your enemy !

ivanmeneo

Guarda, in area Megatopic c'è un thread su una interessante libreria, sviluppata da un utente del forum e ben manutenuta, che permette di fare quanto richiedi (vari altri utenti qui l'hanno utilizzata con soddisfazione), prova a studiarti il thread ... QUI :)

Guglielmo
Ti ringrazio della pronta risposta Guglielmo!
Si, avevo letto la prima parte del thread ma mi ero fermato causa la sua complessità ed i pareri discordanti sull'utilità di un nuovo sistema "ethernet", definito da alcuni. Comunque ieri sera ho dato una rilettura veloce; e se si può applicare ai moduli di 433MHz, con i quali però non ho mai ancora interagito, mi sembra molto interessante.
Cosa dici mi procuro i moduli e faccio qualche test?
Arduino UNO, Mega, Yun Rev 2, WiFi Rev 2

gpb01

Cosa dici mi procuro i moduli e faccio qualche test?
Dato che è un thread "vivo" in cui si ricevono risposte in tempi abbastanza rapidi, io prima chiederei consiglio per la migliore soluzione li   ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

ivanmeneo

Dato che è un thread "vivo" in cui si ricevono risposte in tempi abbastanza rapidi, io prima chiederei consiglio per la migliore soluzione li   ;)

Guglielmo

Grazie Guglielmo del consiglio!

Ho continuato con le mie ricerche sulle diverse tecnologie di comunicazione, principalmente wireless, tra diversi MCU's  Arduino.
Ricapitolando, in maniera molto semplice, oltre alle comunicazioni a Infrarossi (Led + Fototransistor in modalità Invia/Riceve), utilizzate per i robot, le altre più utilizzate dovrebbero essere:

- Moduli a Frequenze Radio 433Mhz Emettitore/Ricevitore
 (occorrono due moduli separati per ricevere e trasmettere!)
- Moduli Bluetooth Trasmettitori Bidirezionali (tipo gli HC-05) ed i BLE
 (usati di solito per gestire le comunicazioni tra Arduino ed altri apparati BT, come il proprio smartphone; utilizzano una Seriale a 4PIN)
- Moduli nRF24 a 2.4Ghz Bidirezionali, con possibilità di una rete a nodi per più moduli
 (utilizzano una SPI a 8PIN)
- Moduli XBee con comunicazione ZigBee Bidirezionale
 (utilizzano shield dedicate e hanno costi sostenuti rispetto alle altre soluzioni)

So che è molto spicciola come rappresentazione, ma ditemi se sto dicendo baggianate!

Continuo a documentarmi ed intanto compro qualche modulo da interfacciare agli Arduino.

P.S. per @Guglielmo, non si può interfacciare l'Arduino UNO direttamente con l'nRF24 utilizzando i suoi ingressi ICSP?? Devo per forza utilizzare i pin dal 9 al 13? Perché dato che ho diversi sensori da utilizzare, il mio progetto è avaro di pin! Mi conviene usare in alternativa un MEGA 2560 Rev3 oppure appicare una sensor shield? Che dici?

Arduino UNO, Mega, Yun Rev 2, WiFi Rev 2

gpb01

P.S. per @Guglielmo, non si può interfacciare l'Arduino UNO direttamente con l'nRF24 utilizzando i suoi ingressi ICSP?? Devo per forza utilizzare i pin dal 9 al 13? Perché dato che ho diversi sensori da utilizzare, il mio progetto è avaro di pin! Mi conviene usare in alternativa un MEGA 2560 Rev3 oppure appicare una sensor shield? Che dici?
Il connettore ICSP NON usa dei pin diversi, sempre i pin del bus SPI usa (è in parallelo ad essi) e quindi, su ATmega328P, sempre il pin 11 (MOSI), 12 (MISO e 13 (SCK) usa, più un pin a scelta per ogni device SPI per il segnale di CS.

Sulla MEGA tali pin diventano 50 (MISO), 51 (MOSI) e 52 (SCK) e sono anche essi collegati al connetore ICSP.

Se ti serve un gran numero di GPIO sicuramente è meglio passare ad Arduno  MEGA.

Guglielmo
Search is Your friend ... or I am Your enemy !

Standardoil

Bah,
Se non specifichi le distanze da coprire poco possiamo dirti
Ogni tecnica ha il suo buono e il suo cattivo
Comunque se ricordo bene i pin ICSP sono in parallelo con i normali, a usarli non ci guadagni nulla
Spiega invece per bene il tuo problema
Che sensori. Quanti. A che distanza, che display....
Solo così si può scegliere a ragion veduta

Edit incrociato con Sua Moderazione (se non ti offendi Guglielmo...)
per i pin ricordavo bene
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

zoomx

I moduli RF69 a 433 MHz (ma funzionano anche ad altre frequenze) dovrebbero essere bidirezionali ma la loro gestione cambia completamente rispetto agli altri in quanto comunicano via SPI. Esistono anche diverse librerie.


ivanmeneo

Il connettore ICSP NON usa dei pin diversi, sempre i pin del bus SPI usa (è in parallelo ad essi) e quindi, su ATmega328P, sempre il pin 11 (MOSI), 12 (MISO e 13 (SCK) usa, più un pin a scelta per ogni device SPI per il segnale di CS.

Sulla MEGA tali pin diventano 50 (MISO), 51 (MOSI) e 52 (SCK) e sono anche essi collegati al connetore ICSP.

Se ti serve un gran numero di GPIO sicuramente è meglio passare ad Arduno  MEGA.

Guglielmo

Si credo che inizio a valutare l'adozione di un Mega. Spero di non trovare difficoltà nella programmazione IDE perché finora non l'ho mai utilizzata insieme a questa scheda.
Bah,
Se non specifichi le distanze da coprire poco possiamo dirti
Ogni tecnica ha il suo buono e il suo cattivo
Comunque se ricordo bene i pin ICSP sono in parallelo con i normali, a usarli non ci guadagni nulla
Spiega invece per bene il tuo problema
Che sensori. Quanti. A che distanza, che display....
Solo così si può scegliere a ragion veduta

Edit incrociato con Sua Moderazione (se non ti offendi Guglielmo...)
per i pin ricordavo bene
Grazie per le domande Standardoil!
Ogni Slave controlla un identico pacchetto di sensori ambientali ed un relè, posti a pochi centimetri. Poi ogni Slave è collocato invece ad una diversa distanza dal Master: si va da circa 50cm a circa 20 metri. Ma dato che siamo praticamente indoor e le uniche vie di comunicazione viaggiano insieme alla AC 220V, volevo evitare il cablaggio per problemi di interferenze varie.
Ogni Slave ha un suo display I2C (del tipo LCD 1602) e vari pulsanti per controllare le info ambientali ed il relé.
Arduino UNO, Mega, Yun Rev 2, WiFi Rev 2

Standardoil

Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

gpb01

>ivanmeneo: però di questa cosa o parli qui o parli in megatopic.  NON è permesso farlo in due punti contemporaneamente ... decidi ...

Guglielmo
Search is Your friend ... or I am Your enemy !

Standardoil

Giusto, anch'io mi stavo confondendo, scusate
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

zoomx

Se uno degli slave sta a 20 metri il bluetooth potrebbe non farcela.

Di moduli RF (o RFM) ne esistono anche che usano il LoRa, la serie RFM9x.





ivanmeneo

Hai ragione Guglielmo...errori da niubbo. Ne parlo qui. Ultimo post in megatopic postato poco fa e ora non lo utilizzerò se non per chiedere info sulla comunicazione PJON, se dovessi implementarla.
Continuo con la mia ricerca:
- Moduli MAX485, per vagliare il tuo consiglio sulla connessione wired
- Moduli HC-12, su tuo consiglio

@Standardoil: praticamente ho solo un pin digitale libero su Arduino UNO, oltre agli "intoccabili" TX RX 0 ed 1

@zoomx: avevo visto i moduli RFM9x, ma per reperirli ho trovato delle difficoltà e costi un pò alti.
Devo precisare per tutti voi sulle distanze! Per un discorso wired siamo su una distanza max di 20m circa; invece per i moduli wireless sarei massimo a 4/6m di distanza, in quanto l'ambiente indoor è delimitato in un'area di circa 5x6 metri.
Arduino UNO, Mega, Yun Rev 2, WiFi Rev 2

Standardoil

#14
May 27, 2019, 01:14 pm Last Edit: May 27, 2019, 01:24 pm by Standardoil
Perché  intoccabili 1 e 0?
Scolleghi lo hc12 quando programmi, tutto li
Anzi, usare la seriale HW alleggerisce il programma, lo rende più  reattivo, e permette di provare usando il terminale,  meglio di così. ...
Prima legge di Nelson (che sono io): fai le stesse cose sempre alla stessa maniera, quegli errori li hai già corretti

Non bado a studenti, che vadano a copiare da un'altra parte

Se io ti domando e tu non mi rispondi vuol dire che non ti serve più

Go Up