Show Posts
Pages: [1] 2 3 ... 5
1  International / Software / Re: Funzionamento parziale sotto dyndns on: January 26, 2014, 05:32:48 am
Ciao,

in effetti il problema è "quasi" quello.

Il tuo codice Arduino restituisce una pagina HTML con URL assoluti del tipo "http://192.168.1.10?v". In questo caso un browser qualsiasi tenterà di collegarsi esattamente all'URL indicato.

Se invece usi un URL relativo del tipo "?v" il browser costruirà l'URL a cui collegarsi a partire da quello attuale. In pratica la pagina è stata presa da "http://miodominio.dyndns.it:80" lui quindi costruirà un URL del tipo "http://miodominio.dyndns.it:80?v" continuando quindi a collegarsi all'IP pubblico e non a quello privato. Nello specifico devi inviare un HTML del tipo <a href='?v'>Accendi il verde</a>.

Aggiungo pure che un URL sarebbe http://host:porta/risorsa?parametro1=valore1&parametro2=valore2&...&parametron=valoren

Nel tuo caso sembra mancare il nome risorsa (per esempio index.htm).

Tuttavia credo che per i tuoi scopi possa andare bene perchè il browser crea il comando GET dell'HTTP con tutto ciò che trova dopo il singolo "/" (non dopo i doppi "//"). Se proprio vuoi essere più standard aggiungi un nome risorsa anche fittizio che semplicementi scarti cercando il "?" e non il "/". Potrebbe però esserti utile se in futuro volessi gestire pagine diverse per attività diverse.

Ciao.
Vittorio.
2  International / Generale / Re: Monitor temperatura frigoriferi on: January 14, 2014, 08:39:40 am
Intanto grazie ad entrambi...

Mi sembra molto interessante l'idea del link ottico, magari da realizzarsi all'infrarosso. Il limite potrebbe essere rappresentato dal fatto che, probabilmente, non tutti i frigorifero hanno una finestra in vetro trasparente sullo sportello.

Interessante anche l'idea di verificare la disponibilità di passaggi preesistenti. Ho provato a chiedere e sembra che sia proprio così in almeno qualcuno dei frigoriferi del progetto.

Grazie ancora.

Ciao.
3  International / Generale / Monitor temperatura frigoriferi on: January 14, 2014, 04:37:40 am
Ciao a tutti.

Mi è stato chiesto di realizzare un sistema per il monitoraggio ed il log della temperatura di uno o più frigoriferi. Sembrava una richiesta piuttosto banale ma poi è venuto fuori l'inghippo.

Io avevo pensato ad una centralina che raccogliesse i dati da n moduli sensori di temperatura collegati in RS485 (SN75176 o MAX485) li loggasse su SD con data e ora (DS1307) e li inviasse poi su richiesta ad un software PC/Android/iOS attraverso Ethernet o WiFi.

Pensavo di utilizzare dei moduli sensori da installare esternamente al frigorifero da monitorare inserendo all'interno soltanto la sonda (DS18B20). Il problema però è che non sembra facile portare all'esterno i fili della sonda. Per quanto piccoli infatti andrebbero comunque a compromettere la tenuta della guarnizione.

Mi parlavano quindi dell'esistenza di moduli wireless da inserire totalmente all'interno del frigorifero chiedendomi una soluzione simile. E qui sorgono i miei dubbi.

- Comunicazione wireless. Il segnale radio potrà essere ricevuto all'esterno del frigorifero e viceversa. Mi viene in mente il concetto di gabbia di Faraday costituita in questo caso dal corpo del frigorifero.
- Temperatura di esercizio. Ho visto che sia gli ATMEL che i moduli ZigBEE lavorano nel range -40°/+85°. Dovrei esserci ampiamente ma ho paura di farli lavorare comunque in condizioni estreme.
- Funzionamento delle batterie. Alla temperatura di un frigorifero funzioneranno? Ho guardato alcuni datasheet e ne ho trovato alcune che funzionano tra i -20° / +60°. Mi viene però comunque il dubbio sulle condizioni estreme.

Grazie a tutti per qualsiasi consiglio.

Ciao.
Vittorio.
4  International / Software / Re: come fare progress bar lcd on: October 23, 2013, 12:09:10 pm
ciao,

puoi usare la map (http://arduino.cc/en/Reference/Map).

Nel tuo caso se il valore che vuoi visualizzare (quello da 1 a 4 volt) l'hai letto nella variabile V ed il valore da mostrare (quello da 0 a 100) lo chiami D, allora:

D = map(V, 1, 4, 0, 100);

Ciao.
V.
5  International / Generale / Re: pilotare ventole 5v in base al valore di temperatura con arduino! on: October 21, 2013, 12:36:42 pm
Ciao,

confesso che non ho capito molto. Sei riuscito a leggere la temperatura ed a visualizzarla sul display. Ora vuoi pilotare le due ventole: secondo quale logica? I dip switch cosa dovrebbero configurare? Vuoi forse che le ventole partano quando la temperatura sale oltre una certa soglia? Devono partire insieme o separamente in base ad un determinato criterio? Vuoi controllarne la velocità in base al valore di temperatura letto (controllo PID)?

Io avrei bisogno di ulteriori informazioni perchè così non ho capito quale sia l'obiettivo.

Ciao.
V.
6  International / Software / Re: Infrarossi SendRaw on: October 18, 2013, 11:41:42 am
Ciao,

tra gli esempi della libreria c'è IRrecord che salva un codice UNKNOWN in un array e lo ritrasmette quando si preme un pulsante.

Potresti provare innanzitutto quello sketch per verificare la corretta ritrasmissione di un codice memorizzato e poi eventualmente modificarlo in base alle tue esigenze.

Ciao.
V.
7  International / Generale / Re: Indiegogo e simili on: October 15, 2013, 09:54:37 am
Quote
un micro-robot tipo "cerca-e-distruggi" totalmente autonomo, che riconosce da solo i politici e li elimina simulando incidenti e malattie ... dici che troverei finanziatori ?

finanziatori non lo so... di cavie per testare il funzionamento ce n'è quante ne vuoi!!!  smiley-evil smiley-evil smiley-evil
8  International / Generale / Re: Comunicazione ethernet tra 2 o piú Arduino on: October 15, 2013, 05:18:14 am
Ciao,

se vuoi usare ethernet puoi decidere di usare o TCP oppure UDP. La differenza è che il primo protocollo è orientato alla connessione mentre il secondo no.

Per fare un esempio pratico il TCP è simile ad una telefonata: io ti chiamo, aspetto che rispondi e poi, in caso positivo (la connessione si è instaurata) cominciamo a parlare.

L'UDP è invece simile al classico messaggio nella bottiglia. Il mittente lo invia senza sapere se qualcuno lo riceverà. E' importante però dire che, a differenza della bottiglia, nel messaggio UDP possiamo specificare l'indirizzo IP del destinatario.

Nel tuo caso per usare TCP dovrai aprire un socket dal client verso il server. Il client potrebbe essere il sensore che apre una connessione verso l'altro Arduino che fa da server e visualizza i dati sul display. Devi tener presente che non sono possibili molte connessioni contemporanee (non ricordo il limite). Quindi se in futuro dovrai aggiungere dei sensori, dovrai modificare il software per fare in modo che ogni sensore apra la connessione, invii i dati e poi chiuda per fare posto agli altri.

Se invece decidi di usare UDP, ogni sensore può inviare un pacchetto sulla rete specificando l'IP dell'Arduino che visualizza come destinatario. Il formato del pacchetto lo decidi tu avendo cura di includere l'identificativo del mittente così che potrai visualizzare i dati di diversi sensori.

Come punto di partenza potresti leggere il reference sulla Ethernet: http://arduino.cc/en/Reference/Ethernet anche se è fatto per la libreria ufficiale e dovrai poi adattarlo a quella dell'ENC28J60.

Ciao.
V.
9  International / Hardware / Re: Comunicazione a distanza on: October 05, 2013, 04:02:57 am
ciao

attivando il tethering su Android (dalla 2.2 in poi) il dispositivo si comporta come un access point. Dovrebbe quindi essere possibile per un wifi shield collegarsi allo smartphone.

Purtroppo non ho uno shield wifi per fare una prova. Se non ce l'hai ancora neanche tu, dovresti sperare nella disponibilità di un altro amico del forum.

Ciao.
V.
10  International / Generale / Re: Come inserire login "autorizzazione" on: October 04, 2013, 04:10:01 am
Ciao,

penso dovresti guardarti la BASIC AUTHENTICATION dell'HTTP.

E' piuttosto semplice, a questo indirizzo http://it.wikipedia.org/wiki/Basic_access_authentication trovi già quello che dovrebbe essere sufficiente. Se hai bisogno di maggiori informazioni una semplice ricerca su google ti fornirà un milione di risultati.

Si tratta quindi di inserire le opportune righe client.println quando crei l'header dell'HTTP, distinguendo il caso in cui l'utente non ti ha mandato la riga "Authorization:..." nell'header della richiesta (devi rispondere con status 401 e riga "WWW-Authenticate:..." nell'header) dal caso in cui te l'ha mandata (devi controllare che il nome utente e la password sia corrette dopo averle decodificate dal base64).

Ciao.
V.
11  International / Generale / Re: Ritardo comando arduino on: September 30, 2013, 02:30:41 am
Ciao,

l'anomalia da te riscontrata nel codice del post originale, dipende ovviamente dall'uso della delay. Infatti, ad ogni ciclo, se il pulsante è HIGH il programma si ferma per 5 secondi. Se tu lasci il pulsante durante questi 5 secondi, il programma se ne accorgerà soltanto alla fine del delay. Quindi in realtà ho la sensazione che il led non si spegne dopo 5 secondi ma dopo un tempo variabile tra 0 e 5 secondi in base al tempo trascorso dall'ultima invocazione della delay.

Ciò premesso, proverei a modificare il tuo codice usando la millis, in questo modo:

Code:
int led= 53;
int pulsante = 40;
int val=0;
unsigned long highTime;

void setup()
{
     pinMode(53, OUTPUT);
     pinMode(40,INPUT);
     
     highTime = 0;
}


void loop()
{
     unsigned long now = millis();
     val = digitalRead(pulsante);

     if (highTime == 0)
     {
          if (val == HIGH)
          {
               highTime = now;
               digitalWrite(led , HIGH);
          }
     }
     else if (now - highTime >= 5000)
     {
          if (val == LOW)
          {
               digitalWrite(led, LOW);
               highTime = 0;
          }
     }
}

highTime conserva l'istante in cui il pulsante è diventato HIGH e all'inizio vale 0. In questo stato ad ogni ciclo si entra nel primo if e si controlla se il pulsante è HIGH. Quando questa condizione si avvera conservo tale istante in highTime e accendo il led.

In questo stato ad ogni ciclo si comincia ad entrare nell'else che controlla se sono passati i 5 secondi (now - highTime >= 5000). Quando questa condizione si avvera ad ogni ciclo cominciamo a controllare che il pulsante sia LOW. Appena si avvera anche questa condizione, spengo il led e resetto highTime. Il ciclo ricomincia dal principio.

Ovviamente non ho testato il codice e può senz'altro essermi sfuggito qualcosa. Consideralo solo un punto di partenza per chiarire il concetto.

Ciao.
V.
12  International / Generale / Re: Conflitto RTC-DS1307 --- MPU6050 on: September 28, 2013, 01:32:36 am
Ciao,

credo ti convenga collegarlo a GND o a VCC in base alle tue esigenze. A meno che non abbia una resistenza interna come gli ingressi digitali degli Atmel, lasciato libero potrebbe non assumere un livello definito.

Ciao.
V.
13  International / Generale / Re: Maker Faire Europe - Rome on: September 27, 2013, 02:36:02 am
Ciao...

deciso oggi di partecipare. Arriverò a Termini alle 11.10 quindi potrò essere con voi all'appuntamento delle 15.00.

Purtroppo quasi sicuramente non potrò essere con voi per cena dato che dovrò rientrare in serata stessa.

Ciao... a presto.
Vittorio.
14  International / Generale / Re: Scansione battere e levare audio da microfono é possibile ? on: September 03, 2013, 04:28:50 am
ho provato a cercare su google "bpm algorithm". Ci sono molti risultati da studiare.

C'è anche un thread sul forum Arduino (http://forum.arduino.cc/index.php?topic=118764.0).

Questo sembra semplice: http://learning-arduino.tumblr.com/post/12046833573/automatic-beat-detector

Si trova anche cercando, sempre su google, "arduino bpm calculation"

Ciao.
15  International / Generale / Re: Riportare valore analogread su striscia led on: September 02, 2013, 09:41:36 am
A me piaceva più la soluzione proposta da cece99 con la map.

Mi permetto di semplificarla meglio.

valoredavisualizzare = map(valoreletto, 0, 1023, 0, 7)

Questo converte valoreletto dal range [0, 1023] al range [0, 7] (nel caso in cui vuoi 8 led, se ne vuoi 10 userai il range [0, 9])

Ipotizzando poi che i piedini digitali di Arduino non ti bastino per collegare gli 8/10 led (magari perchè impiegati per altri scopi) allora potrai utilizzare un IO expander (per esempio il PCF8574) al quale passerai tramite I2C il byte corrispondente ai led che vuoi far accendere. Questo dovrebbe essere facile, ma se hai problemi chiedi pure...

Il PCF8574 ha solo 8 uscite, adatto quindi per gestire 8 led. Se ne vuoi 10 potrai usarne due oppure utilizzare due piedini di Arduino per i restanti led.

Ciao.
Pages: [1] 2 3 ... 5