D80

dubbio su I2C

12 messaggi in questa discussione

D80   
D80

buona giornata a tutti

sto cercando di avvicinarmi ad Arduino, ho fatto qualche passo e ho imparato ad accendere dei relè sia tramite pulsanti, sensori etc, ma ora vorrei capire come usare correttamente il protocollo di comunicazione I2C: 

 

prima di tutto ho provato a vedere cos'è e come funziona , e da quello che ho capito e correggetemi se sbaglio,  vengono utilizzati 1 bit di start/stop della comunicazione ,  7 bit per l'indirizzo della periferica, 1 bit per abilitare la lettura o scrittura 1 bit di sincronismo, 1 bit di parità, oltre  i bit che contengono i dati da inviare o ricevere ( non ho capito quanti siano), 

il dubbio è che a quanto ho capito ben 4 dei 7 bit dell'indirizzo sono impostati di default dal costruttore della periferica e non sembrerebbero modificabili, per cui anche se ho un limite massimo di 128 dispositivi diversi sullo stesso bus  di fatto se i dispositivi sono dello stesso modello non ne potrei mettere più di 8 , ma se me ne servono  di più  uguali ci sarebbe qualche soluzione? 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
Livio Orsini   
Livio Orsini

Dipende da qauli dispositivi vuoi connettere.

Se usi il vecchio PCF8754, ad esempio, ai solo 3 linee di indirizzo, quindi massimo 8 dispositivi.

Ma ce ne sono altri che hanno 4 o più linee di indirizzo.

Comunque per Arduino non c'è da inventare niente, basta includere la libreria I2C ed è già tutto pronto.

In rete trovi anche uno sketch che esegue la scansione del bus I2C fornendoti tutti gli indirizzi eventuali delle perifrich collegate al bus.

Condividi questa discussione


Link discussione
Condividi su altri siti
ic910   
ic910

Poi volendo se si utilizza il PCF8574 A se ne posso collegare altri 8 oltre ai primi 8 PCF8574 .Questo è fattibile perchè i primi 4 bit dell'indirizzo sono differenti tra le 2 versioni .

Condividi questa discussione


Link discussione
Condividi su altri siti
D80   
D80

 

grazie per le risposte , buono a sapersi,

 

oggi sto provando a scrivere qualche riga di sketch per poter visualizzare un valore ottenuto da un sensore di umidità su uno schermo lcd 1602, poi, se ci riuscirò proverò ad

implementare il programma  con più display, più sensori, e magari un menù a scorrimento gestito da alcuni pulsanti per ciascun display.

 

Anche se sull'uso dei made in China molti storcono il naso,  ho deciso di imparare usando un Arduino Mega compatibile ( pagato la bellezza di 10€),  se faccio qualche errore almeno cerco di limitare i danni economici, ho visto che comunque usando  il programma scaricato dal sito ufficiale funziona lo stesso, poi quando avrò preso la mano comprerò l'originale

 

   

 

 

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
D80   
D80

ho trovato una cosa che mi è piaciuta molto, ed la possibilità di esportare i dati ricevuti da un sensore su un foglio di calcolo , tramite un programma scaricabile gratuitamente in rete, e mi chiedevo se si potesse fare anche l'operazione inversa : partire da una tabella di dati,scritta in txt, csv, o altro,  far leggere   leggere i valori e mandarli in uscita ad un pin, qualcuno ne sa se è fattibile?

 

se è possibile, ora che sono arrivato a utilizzare anche  il display LCD, vorrei iniziare il primo "vero" progettino:  una automazione "smart" per  tenda, scaricando magari i dati meteo dalla rete e importarli su un   foglio di calcolo, sincronizzando i tempi, arduino decide sulla base dei dati nel foglio di calcolo quando è possibile aprire o chiudere la tenda, e di chiudere automaticamente la tenda in caso di allerta meteo 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
Livio Orsini   
Livio Orsini

La possibilità di importare dati dall'esterno tramite la seriale esiste, basta scrivere il Sw per farlo.

La tua tabella dati la invii alla seriale del PC in forma di file.txt ed arduino leggendo la seriale può memorizzare questi dati in memoria RAM o anche su altro supporto, tipo SD card, se ne è dotato (necessita di apposita shield e di relativo software).

Poi in base ai valori letti dai sensori ed ai dati di riferimento puoi far accadere determinati eventi.

Però per tutto questo è necessario scrivere il software dedicato.

Condividi questa discussione


Link discussione
Condividi su altri siti
D80   
D80

grazie per la risposta 

 

 

 

domani proverò a scrivere qualche riga di sketch, attualmente possiedo solo i sensori di pioggia ed anemometro, oltre alla scheda relè ed al display e devo arrangiarmi con quelli, il resto delle shield mancanti  lo ordinerò in seguito, quindi per prima prova sarà un'automazione abbastanza banale:  posso impostare la modalità manuale o automatica, nella modalità automatica la tenda si apre se c'è sole, non piove ed  il vento è inferiore a un tot di m/s,  se una di queste condizioni non è verificata, lascia la tenda chiusa, oppure la chiude se è aperta, nella modalità manuale c'è la possibilità di comandare la tenda anche se le condizioni non si verificano o se Arduino è spento, sul display visualizzo lo stato della tenda e info vento e pioggia.

 

buona giornata  ferragosto a tutti

Condividi questa discussione


Link discussione
Condividi su altri siti
Livio Orsini   
Livio Orsini

mettici a conoscenza del progresso dei tuoi lavori.

Condividi questa discussione


Link discussione
Condividi su altri siti
D80   
D80

domani posterò una prima bozza dello sketch, comanderò la  tenda a seconda dei valori del vento o pioggia , 

 sto cercando qualche tutorial su come scaricare e aggiornare  i dati meteo dalla rete da memorizzare in automatico  per poterli sfruttare in qualche modo ma non trovo niente, devo per forza aggiornare a mano? 

 

Condividi questa discussione


Link discussione
Condividi su altri siti
Livio Orsini   
Livio Orsini
Quote

come scaricare e aggiornare  i dati meteo dalla rete da memorizzare in automatico

 

Spiega meglio cosa vuoi fare.

Condividi questa discussione


Link discussione
Condividi su altri siti
D80   
D80

scusate il ritardo ma sono incappato in un punto cieco: non riesco a visualizzare lo stato della tenda sul display quando uso la modalità manuale , ma non  voglio che mi diciate voi come fare, vorrei prima provare ad arrivarci da solo, se risolvo anche questo intoppo vi posterò lo sketch per intero, anche se per ora è abbastanza semplice da capire.

  

Quello che vorrei fare è semplice a dirsi, forse un po' meno a realizzarlo:

vorrei che Arduino si connettesse in automatico ad un sito che fornisce i dati meteo in un qualsiasi formato utilizzabile,tanto per fare un esempio su questo (sudo apt-get update) ,memorizza i dati nella sd e  se è previsto una allerta meteo , chiudesse in automatico la tenda un tot di tempo prima che si verificasse l'evento, se questo non è misurato prima dai sensori che fanno chiudere la tenda 

 

programmo arduino per connettersi tutti i giorni ad un sito meteo, quindi scarica i dati relativi alle condizioni climatiche, ( orari ed entità degli eventi)

se ad esempio è prevista un tot di mm di  pioggia per le ore 18, arduino , se alle 17.50 la tenda è aperta la chiude, sempre che non piova prima e il sensore di pioggia da il consenso alla chiusura prima dell'orario programmato,  stesso comportamento in caso di vento

Condividi questa discussione


Link discussione
Condividi su altri siti
Livio Orsini   
Livio Orsini

Forsi dovresti cominciare a pensare ad almeno 2 schede, una per l'automazione e l'altra per la connessione ad internet e raccolta dati.

Con Raspberry avresti la macchina giusta per connetterti al Webb e fare la raccolta dati ed anche un'interfaccia HMI.

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!

Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui

Connettiti adesso