Go Down

Topic: Progetto ReleDuino (Aggiornamento files al 18.07.2013) (Read 23624 times) previous topic - next topic

Federico_Paiano

#195
Jun 14, 2013, 11:36 am Last Edit: Jun 14, 2013, 12:24 pm by Federico_Paiano Reason: 1
E' il chip che si blocca ........... quando si fermano le lampadine il chip smette di comunicare. L'ho verificato tramite un pin che facevo andare ad intermittenza .... il tester mi segnalava i 5v intermittenti fino a quando le lampadine non hanno smesso di lampeggiare

Federico_Paiano

Nella prima pagina del topic ho pubblicato i nuovi files relativi alle releduino.
Lo schema elettrico è stato reso molto più leggibile (almeno spero).
E' stato inserito un nuovo interruttore a slitta che termina la linea rs485 e aggiunge le resistenze per la polarizzazione (se viene attivato la linea è terminata dalle resistenze, altrimenti no).
Sono state inserite anche le protezioni per il max485: un sm712 per le linee A e B e un sm05 sull'alimentazione del componente.

leo72

Ma c'è il codice sorgente? Io non l'ho trovato.

Federico_Paiano

#198
Jun 15, 2013, 11:01 am Last Edit: Jun 15, 2013, 11:14 am by Federico_Paiano Reason: 1

Ma c'è il codice sorgente? Io non l'ho trovato.

Il codice sorgente sta nel reply #177, dici che sarebbe meglio spostarlo?
Tieni conto che è fatto molto grossolanamente, quindi non tenere conto della sua qualità.

leo72


Il codice sorgente sta nel reply #177, dici che sarebbe meglio spostarlo?
Tieni conto che è fatto molto grossolanamente, quindi non tenere conto della sua qualità.

Mettilo insieme agli altri file nel 1° post, almeno le persone lo trovano subito   :P
Sulla sua qualità non te ne fare un problema  ;)

Federico_Paiano

#200
Jul 18, 2013, 02:59 pm Last Edit: Jul 18, 2013, 03:08 pm by Federico_Paiano Reason: 1
Salve a tutti.
In questi ultimi giorni ho passato il tempo libero a riprogettare la ReleDuino. Ho diviso lo schema elettrico in più sheets e nominato i fogli in base a varie sezioni ideali della scheda: "Principale, Alimentazione, Input/Output, Interruttori, Rele, I2C/RS485, Connettori".
Il layout della pcb è cambiato: i relè sono molto più distanti dal processore arduino e dall'elettronica in genere; un amplificatore i2c è stato eliminato e, così com'è composta, la scheda opera in rs485 nei tratti master/master e in i2c nei tratti master/slave; è stato introdotto anche un optoisolatore per la rilevazione dello zero-crossing, operante sul secondario del trasformatore (12v in alternata).
Questo è un progetto transitorio in quanto voglio eliminare anche l'ultimo amplificatore i2c e far funzionare la scheda in ethernet nei tratti master/master e rs485 nei tratti master/slave.
A tal proposito, ho intenzione di inserire un ENC28J60 e un MRF24WB0MA per la comunicazione via cavo o wi-fi; con questi componenti dovrei poter integrare le ReleDuino col software del progetto Souliss, sperando che Dario mi dia supporto tecnico nei momenti di bisogno.
Troverete i nuovi files nel primo post di questo topic; appena la scheda sarà ultimata in questa nuova versione, farò stampare dei prototipi e partiranno nuove prove con le ReleDuino v2.0
Grazie a tutti.


veseo


Salve a tutti.
In questi ultimi giorni ho passato il tempo libero a riprogettare la ReleDuino. Ho diviso lo schema elettrico in più sheets e nominato i fogli in base a varie sezioni ideali della scheda: "Principale, Alimentazione, Input/Output, Interruttori, Rele, I2C/RS485, Connettori".
Il layout della pcb è cambiato: i relè sono molto più distanti dal processore arduino e dall'elettronica in genere; un amplificatore i2c è stato eliminato e, così com'è composta, la scheda opera in rs485 nei tratti master/master e in i2c nei tratti master/slave; è stato introdotto anche un optoisolatore per la rilevazione dello zero-crossing, operante sul secondario del trasformatore (12v in alternata).
Questo è un progetto transitorio in quanto voglio eliminare anche l'ultimo amplificatore i2c e far funzionare la scheda in ethernet nei tratti master/master e rs485 nei tratti master/slave.
A tal proposito, ho intenzione di inserire un ENC28J60 e un MRF24WB0MA per la comunicazione via cavo o wi-fi; con questi componenti dovrei poter integrare le ReleDuino col software del progetto Souliss, sperando che Dario mi dia supporto tecnico nei momenti di bisogno.
Troverete i nuovi files nel primo post di questo topic; appena la scheda sarà ultimata in questa nuova versione, farò stampare dei prototipi e partiranno nuove prove con le ReleDuino v2.0
Grazie a tutti.


Anche se un poco in ritardo, ti sconsiglio di muoverti verso l'MRF24WB0MA, Microchip per politica non ha mai rilasciato dei datasheet di dettaglio per la parte SPI, quindi non c'è modo di lavorare sui driver in modo semplice.

Fino ad oggi veniva mantenuta la compatibilità SPI con i vecchi moduli ZeroG (prima dell'acquisizione Microchip) con conseguente uso delle vecchie librerie, ma i nuovi firmware non sono più retrocompatibili.

Saluti,
Dario.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Testato

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Federico_Paiano


Anche se un poco in ritardo, ti sconsiglio di muoverti verso l'MRF24WB0MA, Microchip per politica non ha mai rilasciato dei datasheet di dettaglio per la parte SPI, quindi non c'è modo di lavorare sui driver in modo semplice.

Fino ad oggi veniva mantenuta la compatibilità SPI con i vecchi moduli ZeroG (prima dell'acquisizione Microchip) con conseguente uso delle vecchie librerie, ma i nuovi firmware non sono più retrocompatibili.

Saluti,
Dario.


Ciao Dario,
Hai qualche consiglio a riguardo? Cosa potrei mettere nelle releduino al posto dell'MRF24WB0MA? Cosa potrebbe funzionare col progetto Souliss?

Testato

la ethernet shield ufficiale e la wi-fi shield ufficiale
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

veseo

@Federico, @Testato

Lato Wifi non è successo ciò che si è verificato con la connessione Ethernet cablata, dove due soluzioni sono diventate diffuse ed utilizzate anche al di fuori degli ambiti iniziali. Nel caso di connessione Ethernet cablata, il W5100 ed il ENC28J60 sono diventati sufficientemente diffusi e supportati, nel caso di Souliss entrambe le soluzioni sono supportate in pieno.

Per la connessione senza fili il discorso è leggermente più complesso, le shield esistenti si basano su soluzioni diverse e qualle in maggiore uso era proprio legat al MRF24WB0MA. Anche la soluzione proposta dal progetto Arduino (WiFi Shield) non ha avuto (secondo i miei parametri) successo, in quanto tale soluzione non è stata replicata da altri, ne migliorata.

Ai tempi del rilascio della WiFi Shield ufficiale, criticai l'impostazione generale del firmware, in quanto non era paragonabile alla shield basata sul W5100, molti metodi non erano esposti e si raggiungeva l'assurdo di non poterla utilizzare per applicazioni server.

Probabilmente adesso la musica è cambiata, non ho più guardato (sarà passato un anno ed oltre) le nuove versioni del firmware e quindi non so quanti di quei problemi siano stati risolti, resta il fatto che la WiFi Shield non è supportata in Souliss e non lo sarà in futuro.
Sono due i motivi, il primo è nel prezzo eccessivo sufficiente per acquistare una Arduino Ethernet e metterci vicino un TP-LINK 730, realizzando un sistema WiFi più completo ed espandibile.

Il secondo motivo è che questa strada è stata poi condensata nell'Arduino Yun, che a tutti gli effetti si sovrappone alla shield WiFi ufficiale e ne ridurrà drasticamente l'appetibilità (a mio avviso, già oggi bassa).

Saluti,
Dario.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Testato

effettivamente la wi-fi specialmente dopo l'uscita della Yun, potra' sopravvivere solo se messa sui 25€, bisognerebbe capire quale e' il costo di produzione, perche' se questo prezzo altissimo e' dovuto al costo dei componenti allora non c'e' speranza e si puo' ritenere morta. Stessa fine l'ha fatta la Arduino BT, mai tenuta in considerazione da nessuno e sempre sostituita da singoli moduli BT economici
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

veseo

Guardando in generale la politica dei prezzi fatta fino ad oggi, dubito che vorranno scendere su quelle cifre, anche perché il lavoro sullo stack IP in software è notevole e poi andrebbe a competere con la shield Ethernet.

Ritornando al tema di Federico, credo che sia meglio prevedere una scheda con ENC28J60 per offrire la connettività Ethernet e lasciare il WiFi da parte.
Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Federico_Paiano

#208
Aug 15, 2013, 07:30 pm Last Edit: Aug 15, 2013, 07:40 pm by Federico_Paiano Reason: 1

Ritornando al tema di Federico, credo che sia meglio prevedere una scheda con ENC28J60 per offrire la connettività Ethernet e lasciare il WiFi da parte.


Grazie, credo che farò così infatti.

@Dario
Ho capito che hai una certa esperienza con l'ENC28J60. Attualmente sto riprogettando lo schema elettrico della releduino con questo componente. Ho visto che ha inglobato un piedino d'interrupt. Puoi dirmi se con Souliss è possibile attivare/disattivare questo componente tramite l'interrupt in modo da diminuire i consumi? L'ENC28J60 consuma molto e prevedere uno sleep mode credo sarebbe cosa buona e giusta.

Grazie a tutti.


veseo

Faccio un giro un po lungo per darti una risposta, tutte le librerie di cui sono a conoscenza basate su ENC28J60 utilizzano dei driver SPI scritti da Pascal Stang, le varianti sono lato stack IP.

La libreria SPI, se pur funzionale e robusta, ha un paio di nei. Il primo è nella gestione del chip in polling, il secondo è nella gestione dei dati in uscita e l'utilizzo della RAM.

La gestione in polling è sicuramente più onerosa, ma non saprei quantificare quanto questo possa affliggere i consumi, ma questo non dovrebbe permetterti di gestire la modalità sleep.
Leggendo il datasheet, sembra che l'ENC28J60 abbia solo una modalità di power save, che di conseguenza non ti permette di ricevere dati.

In sostanza, indipendentemente dall'utilizzo dell'interrupt, non puoi utilizzare una modalità di sleep a meno di non voler rinunciare alla ricezione dei dati. Il discorso è diverso lato MCU, perché potresti mettere il microcontrollore in sleep e farlo riattivare alla ricezione dell'interrupt, lasciando l'ENC28J60 sempre attivo.
Le attuali libreria già includono le funzioni di power down, quindi nel caso in cui la scheda voglia essere utilizzata senza connettività Ethernet, si può pensare di spegnere il chip.

Relativamente alla gestione dei dati in uscita, l'ENC28J60 ha un significativo quantitativo di RAM Kbyte) se confrontato con l'ATmega, la libreria alloca un'area di memoria specchio nell'ATmega, limitando la dimensione massima dei pacchetti alla quantità di RAM impegnata sull'ATmega.

Si può invece lavorare ad una libreria che permetta di utilizzare la RAM direttamente nell'ENC28J60, ho iniziato a studiare questo approccio per utilizzarlo in Souliss. Una via di mezzo sarebbe quella di caricare contenuti statici (ASCII, HTML) dalla memoria Flash della MCU all'ENC28J60 calcolando il checksum TCP ed IP in modo iterativo ad ogni byte trasferito.

Una soluzione più interessante, ma meno scalabile, sarebbe quella di utilizzare direttamente la RAM dell'ENC28J60 come estensione di quella della MCU, però non ricordo se le modalità di accesso via SPI permettano di realizzare un approccio del genere.

Tutto questo per dire, se hai un pin che ti avanza e che gestisca gli interrupt in hardware per il wake-up della MCU, allora aggiungilo anche.

Saluti,
Dario.

Souliss - Open-source Distributed Home Automation with Arduino and Android

http://www.souliss.net
Follow at @soulissteam

@veseotech

Go Up