He tenido el placer de probar una placa Arduino UNO Wifi que nos ha enviado Bricogeek para que la podamos probar.

En un curso de nuevas tecnologías para algunos profesores la Escuela de Arte de Granada estábamos tratando las comunicaciones y tras trabajar con Bluetooth, vamos a trabajar con el wifi.

¿Arduino Wifi?

La placa Arduino UNO Wifi no es otra cosa que una placa Arduino UNO con un ESP8266 integrado que le proporciona la conectividad Wifi y que están conectados entre si por medio I2C con lo que tenemos disponible todos los pines.

1
1

¿Wifi?

Como hemos dicho la placa incluye un ESP8266 que nos permite tanto crear una red Wifi como conectarnos a una dada. ¿Cómo configurar el wifi?

Características

Microcontrolador: ATMega328 @ 16 MHz
Módulo Wifi ESP8266EX @ 80 MHz 802.11 b/g/n 2.4 GHz
Voltaje de funcionamiento (pines I/O): 5V
Alimentación: 7 a 12 V
Memoria Flash: 32 Kb
SRAM: 2Kb
Pines I/O: 20
Salidas PWM: 6
Consumo: 93 mA
Pines analógicos: 6
EEPROM: 1Kb

 

Contenido de la caja

1
1
1
1

Uso

Descargamos el IDE de arduino.org (la numeración es engañosa y no quiere decir que sea más avanzado que la versión 1.6.9 de arduino.cc)

A partir de aquí podemos programar la placa de la forma standard.

Código

Como siempre tenemos disponibles ejemplos

Webserver

Se trata de poder ver el valor de las entradas analógica desde un navegador web conectándolos a la ip del Arduino UNO Wifi

    #include <Wire.h>
    #include <ArduinoWiFi.h> 

    /* Nos conectamos a la IP de la placa arduino (192.168.240.1 por defecto) http:///arduino/webserver/ or http://.local/arduino/webserver/
    http://labs.arduino.org/WebServer
    */
    void setup() {
        Wifi.begin();
        Wifi.println("WebServer Server arrancado");
    }
    void loop() {

        while(Wifi.available()){
          process(Wifi);
        }
      delay(50);
    }
    void process(WifiData client) {
      // Leemos el comando (petición)
      String command = client.readStringUntil('/');

      if (command == "webserver") {
        WebServer(client);
      }
    }
    void WebServer(WifiData client) {
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");  
              client.println("Refresh: 20");  // refresh the page automatically every  sec
              client.println();      
              client.println("");
              client.println("UNO WIFI Example ");
              client.print("");

              for (int analogChannel = 0; analogChannel < 4; analogChannel++) {
                int sensorReading = analogRead(analogChannel);
                client.print("analog input ");
                client.print(analogChannel);
                client.print(" is ");
                client.print(sensorReading);
                client.println("");
              }

              client.print("");
              client.println("");
              client.print(DELIMITER); // very important to end the communication !!!          
    }

Webserver con capacidad de controlar pines

En este ejemplo podemos encender/apagar el pin 13 del arduino Wifi remotamente

    #include <Wire.h>
    #include <ArduinoWiFi.h> 
    /*
    on your borwser, you type http:///arduino/webserver/ or http://.local/arduino/webserver/
    http://labs.arduino.org/WebServerBlink
    */
    void setup() {
        pinMode(13,OUTPUT);
        Wifi.begin();
        Wifi.println("WebServer Server is up");
    }
    void loop() {

        while(Wifi.available()){
          process(Wifi);
        }
      delay(50);
    }

    void process(WifiData client) {
      // read the command
      String command = client.readStringUntil('/');

      // is "digital" command?
      if (command == "webserver") {
        WebServer(client);
      }

      if (command == "digital") {
        digitalCommand(client);
      }
    }

    void WebServer(WifiData client) {

              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println();
              client.println("");

              client.println(" ");
              client.print("");

              client.print("Click<input type="button" />pin13 ON");
              client.print("Click<input type="button" />pin13 OFF");

              client.print("");
              client.println("");
              client.print(DELIMITER); // very important to end the communication !!!

    }

    void digitalCommand(WifiData client) {
      int pin, value;

      // Read pin number
      pin = client.parseInt();

      // If the next character is a '/' it means we have an URL
      // with a value like: "/digital/13/1"
      if (client.read() == '/') {
        value = client.parseInt();
        digitalWrite(pin, value);
      }

      // Send feedback to client
      client.print(F("Pin D"));
      client.print(pin);
      client.print(F(" set to "));
      client.print(value);
      client.print(EOL);

    }


Opinión

Hasta hace poco las placas wifi para arduino eran caras (entre los 60€ y 70€), consumían mucho y no funcionaban demasiado bien. Tengo en casa varias y ninguna de ellas es realmente operativa.

Teníamos la opción de la Arduino Yun, pero a un precio rondando los 70€.

La arduino UNO Wifi me ha parecido una placa muy interesante, con buenas prestaciones, un precio muy ajustado y que facilita totalmente acceso wifi.

 

JAVACASM

Probando la arduino UNO Wifi
Etiquetado en:    

3 pensamientos en “Probando la arduino UNO Wifi

  • 27 diciembre, 2016 a las 18:47
    Enlace permanente

    Buenas tardes Jose Antonio!
    Muy interesante tu artículo sobre arduino uno wifi. Me gustaría empezar a aprender y a utilizar arduino y he visto que tiene muchas posibilidades.
    Una duda que tengo es que la activación de las salidas de placa a través de una web lo haces en un entorno de red local, pero ¿Sería posible hacerlo desde el entorno de Internet? es decir, mi idea es complementar el accionamiento del aire acondicionado desde fuera de casa a través de un contacto o bien a través de la emisión de la señal de infrarrojos.
    Gracias de antemano

    Responder
    • 13 enero, 2017 a las 14:24
      Enlace permanente

      Para controlarlo desde internet tienes que hacer visible/accesible la ip del sistema desde tu router, via NAT o similar.
      Ten cuidado con la seguridad del sistema.
      Saludos

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *