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.
¿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
Contenido de la caja
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
Muy bueno… buen trabajo…. que fácil parece…. jiji
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
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
Buenas tardes José Antonio me he comprado el kit avanzado de Arduino y al cargar los códigos de cualquiera de los 6 proyectos me dan errores y no se porque podrías ayudarme.
muchas gracias.
Un saludo
Hola, no sé a qué kit te refieres ni puedo saber cómo solucionar si ver el error.
Saludos
Buen dia y feliz año nuevo y prosperidad
Quería preguntarle el PIN 13 que mencionas si tiene que ver algo con la wifi. Puedo conectar un sensor de movimiento por ejemplo?
Gracias por su atencion.
Salu2
Hola, el pin 13 tiene conectado un led en la placa y no está conectado al módulo wifi. Sí que podrías conectar un sensor PIR.
Saludos