Sei sulla pagina 1di 3

Arduino e WIFI

Avendo gi realizzato il progetto di monitoraggio ambientale con i sensori di temperatura, luce, umidit e gas, ho deciso di implementarne una nuova funzionalit. Se prima eravamo legati da un cavo ethernet da attaccare al router ora siamo in grado di far comunicare i sensori con il router attraverso la rete wireless. Rete wireless Wifly Dispositivi utilizzati Roving Networks WiFly RN-XV Wireless Shield Con questa configurazione possibile creare un piccolo http client dal quale inviare i diversi dati al server. Il modulo wifi gi pronto alluso (non ha bisogno di configurazioni particolari, salvo per necessit diverse). Per sfruttarne le sue potenzialit ho sfruttato le librerie WiflyHQ. Sono librerie pronte alluso per Arduino e fornisco diversi esempi per creare una comunicazione sia HTTP che TCP/UDP. La libreria fornisce diverse funzioni per configurare e gestire il modulo WiFly, mandare paccehtti UDP, aprire connessioni TCP, mandare e ricevere dati su una connessione TCP. Codice desempio per configurare e usare linterfaccia seriale messa a disposizione dal dispositivo:
Serial.begin(9600); wifly.begin(&Serial, NULL);

Configurazione e uso di una seriale software per interfacciarsi al dispositivo:


#include <SoftwareSerial.h> SoftwareSerial wifiSerial(8,9); wifiSerial.begin(9600); wifly.begin(&wifiSerial);

Collegarsi ad una rete WiFi;


wifly.setSSID("mySSID"); wifly.setPassphrase("myWPApassword"); wifly.enableDHCP(); wifly.join();

Creare una rete WiFi Ad Hoc con 10 canali:


wifly.createAdhocNetwork("myssid", 10);

Mandare pacchetti UDP:


wifly.setIpProtocol(WIFLY_PROTOCOL_UDP); wifly.sendto("Hello, world", "192.168.1.100", 2042);

Aprire una connessione TCP, mandare alcuni dati, e chiudere la connessione:


wifly.setIpProtocol(WIFLY_PROTOCOL_TCP); wifly.open("192.168.1.100",8042); wifly.println("Hello, world!"); wifly.close();

Ricevere dati UDP e TCP (assumendo di avere una seriale software):


if (wifly.available() > 0) { Serial.write(wifly.read()); }

Facile manipolazione di diverse opzioni ricevute con il metodo multiMatch_p()::


if (wifly.available() > 0) { int match = wifly.multiMatch_P(100, 3, F("button"), F("slider="), F("switch=")); switch (match) { case 0: /* button */ Serial.print(F("button: pressed")); break; case 1: /* slider */ int slider = wifly.parseInt(); Serial.print(F("slider: ")); Serial.println(slider); break; case 2: /* switch */ char ch = wifly.read(); Serial.print(F("switch: ")); Serial.println(ch); break; default: /* timeout */ break; } }

Limitazioni con WiFly RN-XV rev 2.32 firmware: 1. Non si pu determinare lindirizzo IP del client TCP che si connesso. 2. Cambiare la porta locale durante lesecuzione non influenza nulla finch non si salva e si riavvia il dispositivo. 3. Potrebbe non funzionare la chiusura di una connessione TCP. Il client deve rimanere connesso e inviare ulteriori dati. 4. supportata solo una connessione TCP alla volta. 5. Cambiare il timeout di svuotamento (set comm time x) non porta cambiamenti fino al riavvio del dispositvo. Il circuito (schema + foto) DHT22 Il DHT-22 un sensore a basso costo che misura temperatura e umidit con un'interfaccia digitale ad un filo. Il sensore gi calibrato e non richiede nuovi componenti per funzionare. Caratteristiche: 3.3-6V Input 1-1.5mA measuring current 40-50 uA standby current Humidity from 0-100% RH -40 - 80 degrees C temperature range +-2% RH accuracy +-0.5 degrees C

Precision Light Sensor Questo sensore misura il livello luce visibile in lux. Il range di misurazione parte da 1lux (Luce della luna) fino a 1000Lux (Illuminazione di uno studio televisivo). Il sensore si connette ad un ingresso analogico dellArduino Smoke Sensor MQ-2 Questo sensore di gas ha unelevata sensibilit e tempi rapidi di risposta. Questo tipo di sensore viene utilizzato in apparecchiature per il rilevamento di perdite di gas ed adatto alla rilevazione di perdite di metano, GPL, isobutano, propano, alcool etilico, idrogeno e fumo. Il sensore varia la resistenza in dipendenza della concentrazione di gas nell'aria. E' necessario fornire una tensione di alimentazione all'elemento riscaldante interno, lasciar riscaldare il sensore e leggere la resistenza. Il funzionamento identico a quello degli altri sensori della serie MQ, con la differenza che questo tipo adatto a rilevare tutti i gas in maniera aspecifica. Noi lo abbiamo utilizzato per misurare la concentrazione di anidride carbonica nellaria. Lo sketch