Show Posts
Pages: 1 2 [3] 4 5 ... 12
31  International / Generale / Re: domotica nella nuova casa on: December 25, 2011, 05:38:41 am
Io sono un po sparito dalla circolazione...cmq anch'io ho un sistema in funzione in casa mia da oltre due anni...basati su Arduino 2009/uno.

Ho 160mq di casa e gestisco con l'impianto ogni cosa:
- tutte le luci
- tutte le prese sono comandate (solo poche non lo sono e per scelta)
- parzializzazione del riscaldamento (elettrovalvole x aprire il flusso di acqua calda su ogni piano separatamente - ho tre piani)
- apricancello
- apertura/chiusura finestre
- irrigazione
- antifurto con 35 zone
- sensori temoeratura e assorbimento elettrico

Il tutto con:
- 6 arduino 2009/uno connessi in rete ethernet
- 1 arduino mega che gestisce l'antifurto
- 160 relè da 10A connessi ad Arduino tramite ShiftRegister
- circa 140 pulsanti
- interfaccia x iPad o tablet Android fatta in versione web
- idem x smartphone

Mi dispiace di non essere molto presente nella community ma a suo tempo l'ho fatto e ora non ho più molto tempo.

Una sola nota, l'interfaccia ethernet funziona benissimo pur condividendo lo stesso network x le classiche applicazioni domestiche (internet, file sharing, etc)...zero lag, zero problemi.

Inoltre invito tutti voi a contattarmi personalmente via mp x stabilire un contatto diretto anche telefonico...se inoltre siete di Roma mi piacerebbe incontrarvi x instaurare eventuale collaborazione...sto anche cercando investitori x portare avanti e far crescere il progetto.

Ciaoooo
32  International / Generale / Re: [Help] Domotica con WebServer Arduino on: November 27, 2011, 11:06:17 am
Il mio dubbio é come fai a dimmerare una luce a 220v con un Pwm...dalle conoscenze che ho io di elettronica...non credo tu possa farlo... smiley-wink
33  International / Generale / const o #define on: November 24, 2011, 09:05:45 am
Qualcuno ci ha studiato sopra?

#define in pre-compilazione rimpiazza proprio il nome della define con il valore e quindi sicuramente non occupa ne' spazio di programma ne' tanto meno spazio in memoria

const invece?

No xkè nel reference c'è scritto che "const è preferred"...però non voglio consumare spazio in memoria...cioè ho necessità di capire se const alloca la variabile in memoria (pure che dopo non è modificabile)...
34  International / Generale / Re: Rete di arduini on: November 06, 2011, 06:43:27 am
Non ho mai nemmeno lontanamente denigrato niente...ho appena proprio adesso letto un post dove uno si esprime relativamente all'ethernet shield come Ether-Cess...quanta gente ha un iPhone e lo chiama iFogna...o VodaFogna...o WinSozz...eppure tutti abbiamo l'iPhone (io no smiley-razz) o Vodafone o Windows...xkè sono tutte cose molto fiche, ma hanno pure dei limiti e a volte pure frustranti...se tu ritieni che io abbia denigrato o mi sia espresso negativamente riguardo Arduino:

1) ti sbagli! Ripeto: ho una quantità di Arduini installati e in via di sviluppo, che se lo denigrassi sarei quantomento incoerente!

2) Arduino dei limiti ce li ha...e io ce li ho molto ben presenti...e se li voglio evidenziare credo di poterlo fare, se così non fosse chi modera questo forum me lo facesse sapere!

3) premesso che io non sono nemmeno lontanamente contro ad Arduino, ho partecipato all'Arduino Day...e se capiterà a Roma parteciperò a qualsiasi evento lo riguardasse...ma pure fosse: ci possono stare o no pure i pareri negativi? ...o qualcuno che non è d'accordo su qualcosa? ...o tutti devono per forza essere invasati e seguaci senza se e senza ma??

4) col nome di Arduino ci si gioca direi quasi x politica del progetto...c'è Freeduino, ArduPilot, persino GiArduino (GiArduino mi fà troppo ridere)...e chi più ne ha più ne metta... smiley-razz

5) magari ho scritto pochi post...e presumibilmente continuerò a scriverne pochi (solo ed esclusivamente xkè ho un lavoro massacrante e non ho molto tempo...infatti sto periodo che scrivo di più è perchè sono a casa in malattia a seguito di incidente stradale)...ma sono registrato da settembre 2009 (uso Arduino da Maggio 2009) e ho sempre e costantemente seguito il forum...quindi magari dire che sono "novello" è un pochino inesatto!

Ho precisato quanto sopra x, spero, mettere un punto a questo OT che stiamo facendo...e quindi detto ciò, questo post trattava un argomento molto importante a mio avviso...e cioè: come mettere in rete + arduini e con quale protocollo! ...il che è un argomento estremamente vasto e complesso...magari io vorrei continuare a parlare di contenuti se sei d'accordo!!! smiley
35  International / Generale / Re: Rete di arduini on: November 06, 2011, 06:04:50 am
Ma dite davvero? O me la state facendo? No xkè se no, madonna mia, siete permalosetti...non si può giocare/scherzare? Non chiamate mai un vostro amico con un nomingnolo x scherzo??? Siete come i robot che non uscite mai dai ranghi???

Sono 2 anni [edit: 2 anni e mezzo] che lavoro con Arduino (...e pure ho comprato e usato piattaforme della concorrenza x test...) e continuo ad usarlo...c'ho investito così tanto sulla fiducia che ho in questa piattaforma che ne ho ben 6 che co-operano x il buon funzionamento di tutta casa mia, e altri 5/6 che sto ingegnerizzando x metterli nel network...c'ho scommesso sopra molto prima di tanti di voi...e, ripeto: ne conosco per ESPERIENZA diretta, non per sentito dire, pure altri sistemi simili e magari pure più capienti e potenti...eppure qua sto...e pure se ArduINO (Ok, così?) ha degli evidenti limiti...come qualsiasi cosa a questo mondo ha pregi e limiti...continuo a crederci, ad usarlo e a diventar matto x farci star dentro ciò di cui ho bisogno...

Parliamo di cose che hanno un certo spessore e di una certa complessità...ma visto che io lo faccio x hobby e x divertimento nonchè x passione...lo faccio con un atteggiamento estremamente serio, ma conservando un po' di leggerezza...

...oh, che vi devo dire: se è così x voi denigratorio in futuro non farò più battute (mò lo sto a fà io il permaloso smiley-razz)!!!!

P.S: Conosco tutta la serie di chip AVR di ATMega...la scelta di ArduINO con ATMega328 anzichè usare altri chip sempre AVR è data da tutta una serie di motivazioni molto ben studiate: prima di tutte il costo.
36  International / Generale / Re: Rete di arduini on: November 06, 2011, 04:59:58 am
Sto tentando di mettere in una libreria (classe) quanto sviluppato finora...anche se assolutamente incompleto, ma intanto volevo consolidare quanto fatto...ma iniziano i primi, come si dice qui a Roma "dolori de panza"...e sono dovuti, aggiungerei come al solito, dalla scarsa capacità di RAM di ArduMinchio...

Ho bisogno di un buffer di Input dove il servizio che è in ascolto sulla seriale legge e accoda i dati...così da poterli analizzare e verificare se sono di sua competenza (verifica e consegna all'utente) o meno (droppa).

Ho anche bisogno di un buffer di Output dove viene copiato il messaggio appena inviato, in attesa da parte del destinatario di ricevere un ACK...il buffer mi serve per consentire la ritrasmissione qualora l'ACK non arriva.

E poi mi servono X buffer di Input e di Output...dove:
- Input - ci vengono accodati i messaggi ricevuti e verificati...da consegnare all'utente (sketch principale che usa questa libreria)...deve essere un array di buffer in quanto potrei ricevere più messaggi da mittenti diversi...e se lo sketch principale non li ha ancora scaricati, o il secondo messaggio sovrascrive il primo (che quindi va perso) o il secondo viene droppato (quindi perso)...con un array di buffer no...xkè si creerebbe una coda dal quale lo sketch principale può attingere e in modo ordinato (un messaggio alla volta)

- Output - ci vengono accodati i messaggi da inviare...che verranno inviati al momento in cui il nodo riceve il token. Anche in questo caso mi servirebbe un array di buffer...in quanto se lo sketch principale vuole inviare più messaggi...e quindi chiama il metodo della classe "send" (nome ipotetico)...se il messaggio precedente (precedente chiamata di "send") non è stato ancora inviato...anche qui: o lo sovrascrive (non invierà mai il precedente) o risponde "false" allo sketch principale, che però poi deve gestire esso la conservazione del messaggio x successivi tentativi

AIUTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!!!!

Perchè la questione è...supponendo una lunghezza massima del messaggio di 50 byte (già di per se limitante):
- buffer input - ipotetici 50 byte
- buffer output - ipotetici 50 byte
- array messaggi_in - 3 x 55 byte (50 byte di buffer + header pacchetto)
- array messaggi_out - 3 x 55 byte (50 byte di buffer + header pacchetto)

Siamo a 430 byte...più vari byte di controllo...siamo a 450...che non sono pochi visti i soli 2k di RAM...sopratutto se tale libreria deve essere "inserita" in un contesto già di per se complesso (come il mio attuale sketch della domotica...)

Avete idee in merito?
37  International / Generale / Re: Basta la Ram ? on: November 06, 2011, 03:40:13 am
Non basta mai la RAM....ehhhhhhhh se ci fosse solo un po' più di RAM quante belle cosette in più si potrebbero fare! smiley
38  International / Generale / Re: Rete di arduini on: November 06, 2011, 03:38:59 am
Certo che non ci saranno mai collisioni...ma insomma intendevo dire che sto sviluppando il software e che il fatto che non ci siano collisioni vuol dire che funziona smiley-razz smiley-razz smiley-razz smiley-razz

Ciao omonimo! smiley
...mi chiamo pur'io Dario!!!
39  International / Generale / Re: Rete di arduini on: November 05, 2011, 11:41:17 am
Che è esattamente ciò che sto facendo io...rete con token!

Per ora 3 arduini connessi con RS485...il token gira correttamente...ora devo gestire l'invio del messaggio quando il nodo ha il token e tutti i possibili stati di blocco x non bloccare il bus...cosa che, per ora, non avere mi facilita il debug...in quanto a qualsiasi "intoppo" il bus si blocca definitivamente e, il fatto che non si blocchi da 4 ore il token è un ottimo indice di stabilità...vuol dire che nel bus non c'è nemmeno un byte inviato o ricevuto male ne' tantomeno nessuna collisione...! smiley))
40  International / Generale / Re: Rete di arduini on: November 04, 2011, 05:21:48 am
In nessuna maniera c'è modo di intervenire se un nodo impazzisce e occupa il bus abusivamente...
41  International / Generale / Re: Rete di arduini on: November 04, 2011, 04:58:49 am
Sto provando a scrivere un po' di codice...il problema poi è realizzarlo...cioè secondo me funziona come meccanismo, ma andarlo a realizzare e tararlo x bene xkè non ci siano effettivamente collisioni non sarà una passeggiata...
42  International / Generale / Re: Rete di arduini on: November 04, 2011, 04:57:56 am
L'architettura che proponevo io è mono-master multi-slave...ma è multi-master multi-slave simulata...

Cioè il nodo master funge comunque da moderatore...il nodo slave diventa master nella stessa misura in cui in un mono-master multi-slave esso risponde al master...anche in quel caso se lo slave si incanta, si brucia, etc...e continua a impegnare il bus x ERRORE, il master non può fare niente per riprenderne il possesso...in quel caso c'è un fault e il nodo "problematico" và rimosso, ma questo, ripeto, accade comunque nella modalità mono-master multi-slave.

L'ipotesi del token che facevo io era quella di mandare in giro questo token a staffetta, dando diritto ad ognuno di parlare, ma non in risposta al master, bensì a chi gradisce...cioè diventa una connessione peer-to-peer per il tempo necessario...il master è comunque in ascolto essendo un bus condiviso e capisce quando il token gli viene restituito x poi darlo al successivo slave...

...certo se quei due parlano x mezzora il master non può far niente, ma nelle specifiche di questo mio protocollo ci deve essere un timeout di token...cioè tale token tu non puoi tenerlo x più di "x tempo"...se no diventa incandescente...e lo devi rimandare indietro...se  tu slave non rispetti i tempi, sei tu in errore...è alla pari di un nodo guasto...
43  International / Generale / Re: Rete di arduini on: November 04, 2011, 04:29:31 am
Io, proprio in questo momento, sto ragionando e vorrei fare una "demo board" con 3/4 arduini connessi che si parlano tra di loro in 485...
...e vorrei fare un'architettura multi-master multi-slave...cioè non proprio...diciamo una sorta di!!!

E l'idea è quella di usare un sistema "simile" a quello usato nella rete token-ring!

Un nodo MASTER (uno solo...quindi tecnicamente è un'architettura mono-master)...dà un token al 1° slave che diventa "master" fin tanto che ne ha facoltà (ha qualcosa da dire o supera un tempo limite)...esso, finito di comunicare, restituisce il token al "master" che lo dà al 2° slave che diventa master...e così via! Così, ogni volta che un nodo diventa "master" può comunicare con chi gli pare e fare una comunicazione punto-punto o inviare un messaggio di broadcast (a tutti)...quando restituisce il token può stare solo in ascolto al massimo può "rispondere" se un "master" lo interpella chiedendogli qualcosa...

...chiaramente le complicazioni ci sono...vanno gestiti applicativamente molto bene i timeout...e i fault...se un nodo si blocca, se non restituisce il token, se non risponde x troppo tempo, etc...xkè il master in tal caso deve far morire quel token e immetterne in rete un altro...
44  International / Generale / Ethernet ...ARP Cache e chiusura delle connessioni... on: November 04, 2011, 03:56:46 am
Eccomi qui con un'altra delle mie fantastiche esternazioni esistenziali...sto Arduino lo sto sviscerando nel suo più intimo! smiley-razz

Ho due quesiti x sondare le vostre esperienze:

1 - ARP Cache
Un dispositivo che si connette su bus Ethernet (es. PC) si connette ad un altro dispositivo (es. altro PC) utilizzando l'indirizzo IP...ma a livello più basso del TCP/IP non funziona così...la comunicazione avviene su MAC Address. Quando il dispositivo che inizia la connessione ad un altro IP, in realtà esso manda per la prima volta un messaggio di broadcast x sapere a chi appartiene quell'indirizzo IP e la risposta è il MAC Address del destinatario...così che i due possano comunicare liberamente. Nei PC o nei dispositivi "potenti" viene gestita una ARP Cache così che il messaggio di Broadcast venga inviato una sola volta (il Broadcast è un messaggio negativo x la rete in quanto impegna tutte le porte di tutti i link che esistono nel network...quindi a cascata tutte le porte di tutti i switch esistenti nella LAN...xkè quell'IP può stare su qualsiasi porta di qualsiasi switch). Le volte successive il MAC Address viene preso dalla ARP Cache e così via...da una prova che ho fatto mi pare d'aver capito che Arduino e il suo Ethernet Shield non gestiscono tale ARP Cache e, quindi, ogni volta che si inizia una connessione ad un IP anche se esso è sempre lo stesso, viene sempre inviato il messaggio di Broadcast x fare il discover del MAC Address...se io devo fare una connessione molto frequente questo peggiora le performance di tutto il network...se poi gli Arduini a dover aprire/chiudere frequentemente una connessione verso un nodo server sono 6...il problema è moltiplicato 6...che ne sapete al proposito? Cioè è vero che non viene gestita la ARP Cache e quindi viene mandato sempre il Broadcast? Esiste un modo x bypassare questa "funzione" specificando il MAC Address del destinatario (magari qualche libreria Ethernet hackata)...


2 - Chiusura connessione
Arduino è client e si connette ad un server...nello specifico ad un Web Server...quindi su porta 80...apre la socket, manda un comando di GET di una pagina...nemmeno si cura della risposta (che flusho via) e chiude la connessione...quindi riepilogando:
Code:
  if (client.connect()) {
    client.println("GET /listener.php HTTP/1.0");
    client.println();
  }
  client.flush();
  client.stop();

Chiaramente ho estratto dal mio codice solo la quota parte di "comunicazione".

Il server è Apache e, come da specifiche, quando esso ha risposto è lui a chiudere la comunicazione...cioè a sbattere fuori il client. Quindi il metodo stop() tenta di chiudere una connessione in realtà già chiusa. Se andate a vedere il codice del metodo stop() esso se non riesce a chiudere, prova x 1 secondo poi chiude forzatamente...quel secondo è un dramma...mi blocca il superloop (nel quale vengono gestiti tutti gli altri servizi che non possono star fermi 1 secondo) e arrivederci...posto il codice specifico di stop():
Code:
  // attempt to close the connection gracefully (send a FIN to other side)
  disconnect(_sock);
  unsigned long start = millis();

  // wait a second for the connection to close
  while (status() != SnSR::CLOSED && millis() - start < 1000)
    delay(1);

  // if it hasn't closed, close it forcefully
  if (status() != SnSR::CLOSED)
    close(_sock);

Avete soluzioni in merito?

Ho già provato a omettere stop() supponendo che "tanto la connessione è già chiusa" peccato che Arduino non se ne accorge..quindi la 1° connessione và a buon fine e dalla 2° in poi no (xkè è già connesso in realtà)...infatti se testo la "client.connected()" risponde TRUE!!!!
45  International / Generale / Re: Domotica: programmare Arduino da.... un altro ? on: November 03, 2011, 05:56:32 am
Ciao!! smiley

Per poter fare una cosa del genere (sarebbe veramente molto apprezzata...ci ho ragionato un sacco su sta cosa)...bisognerebbe riscrivere il bootloader...sostanzialmente rimettere le mani sul concetto proprio di "arduino"...secondo me prima o poi il team di sviluppo (Banzi & co) inventeranno qualcosa per riprogrammare l'arduino da remoto...ma non sò quando questo accadrà!

Anche xkè prevedere un bootloader che si metta in ascolto sulla Ethernet x ricevere un firmware che poi vada a caricare sul MCU stesso...significherebbe che il bootloader deve includere tutto il software necessario a mandare in rete il nodo durante il boot...quindi sostanzialmente il driver Ethernet.h e ciò che ne consegue! Questo andrebbe a ingigantire di tanto il bootloader riducendo di fatto lo spazio disponibile x il programma utente!

Invece x quanto riguarda la riprogrammazione da bus di campo tipo RS485, bisognerebbe adattare il bootloader a interagire con il nodo master prevedendo la propria identificazione...cioè se il nodo ha un id X, il bootloader deve ascoltare software che arriva solo "impacchettato per X"...e quindi bisogna rivedere le funzioni di programmazione (il pacchetto deve essere incapsulato in un altro pacchetto che contiene la destinazione) e inoltre il bus RS485 è half duplex (a meno che non si usino due coppie...4 fili)...e non credo che il protocollo di riprogrammazione sia half duplex...lavorando su RS232 xkè limitarsi all half duplex!!!

Insomma un gran bordello!!! Però trovare una soluzione sarebbe una gran figata!!!!
Pages: 1 2 [3] 4 5 ... 12