Archivi tag: WiFi

Arduino con WiFi shield

Hello WiFi ( Arduino )

Testiamo oggi il modulo (Shield) Arduino WI-FI.

Shield_Arduino1

Questo shield utilizza un controllore WiFi prodotto da Microchip il MRF24WB0MA, molto semplice da utilizzare, che comunica con un microcontrollore attraverso la porta SPI.
Tale controllore è classificato sul sito ufficiale Microchip come “mature” quindi molto affidabile e robusto.

WiFiShield

Hardware

Il chip Integra uno stack TCP/IP e un connection manager con lo standard 802.11, non necessita di memoria RAM esterna.
Questo e’ il link alla pagina ufficiale sul sito Microchip: http://www.microchip.com/wwwproducts/Devices.aspx?product=MCW1001A

La scheda e’ arrivata con i connettori da saldare, quindi, dotandoci di saldatore e stagno, procediamo al lavoro “sporco”. Dopo aver saldato i vari connettori ( headers in English ), proviamo a connettere fisicamente la scheda Arduino UNO con lo shield WiFi.

Arduino con WiFi shield

Perfetto, i connettori della scheda Arduino Uno e WIFI Shield combaciano.
Proviamo ora a dare alimentazione alla scheda… FIUUU niente fumo, tutto OK!

In aggiunta prepariamo un led VERDE di test con una resistenza e colleghiamolo al PIN 8 di Arduino. Il LED ci servirà per testare la connessione WiFi e avere un feedback sull’avvenuta esecuzione dei comendi da wifi.

Passiamo quindi alla parte di configurazione software.

 Firmware

Scarichiamo le librerie appositamente scritte per questo modulo ( WiShield by Async Labs ), e copiamo la directory della libreria nella radice di

c:\Program Files (x86)\Arduino\libraries\

Se tutto e’ configurato correttamente, dovremmo vedere aprendo l’IDE Arduino in

File->Esempi->WiShield

dei nuovi esempi per testare lo shield.
Apriamo lo scketch SimpleServer che dimostra come configurare e utilizzare il modulo per farlo funzionare da web server.

L’impostazione fondamentale da esiguire nello sketch e’ quella relativa alla rete WiFi casalinga, in cui bisogna specificare il nome della rete la password di accesso e la porta http per l’accesso al web server.

// Wireless configuration parameters ---------------------
unsigned char local_ip[] = {192,168,1,2};    // IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1};    // router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0};    // subnet mask for the local network
const prog_char ssid[] PROGMEM = {"surfer's wifi"};        // max 32 bytes

unsigned char security_type = 3;    // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"wireless.321"};    // max 64 characters

Proviamo quindi a scaricare il firmware  in Arduino. Se tutto e’ configurato correttamente dovremmo vedere il led verde che si accende sullo shield, il che indica la connessione alla rete WiFi.

HTML

Quindi passiamo a costruire una pagina web che accende e spegne il led tramite la pressione di pulsanti, con la tecnologia AJAX.

<!DOCTYPE HTML><html><head><title>Arduino | LED CONTROL</title>
<style type="text/css">
.btn { width:180px; height:40px; font-size:150%; color:#0075c7; margin: 0.5em; }
</style>
<script type='text/javascript'>
var ledStatus = 0;var myRequest;
function CreateXmlHttpReq(handler) {
  var xmlhttp = null;
  xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = handler;
  return xmlhttp;
}
function setLed(ledNo, status) {
    myRequest = CreateXmlHttpReq(myHandler);
    myRequest.open('GET','192.168.1.2/setled?ld'+ledNo+'='+status);
    myRequest.send(null);
}
function myHandler() {    if (myRequest.readyState == 4 && myRequest.status == 200) {    } }
</script>
</head>
<body>
<center>
    <h2>accendi / spegni LED (pin 8)</h2>
    <div><input type='button' class="btn" name='ledOn' value='LED ON' onclick='setLed(0, 1)' /><input type='button' class="btn" name='ledOff' value='LED OFF' onclick='setLed(0, 0)' /></div>
    <footer>
        <p>Arduino with WiFi board <br /> libreria WiShield by Async Labs Inc.<br /> Leonardo Benini 2014 &copy;</p>
    </footer>
</center>
</body>
</html>

VERIFICA FUNZIONAMENTO

Programmiamo Arduino… e testiamo!!!