La connexion del Arduino al WiFi es posible con el uso del Ethernet Shield VM04. La base para la creación de objetos conectados, está conectarlos sobre el mismo red como la red WiFi.
Comunicación a través de la red Ethernet es muy conveniente cuando se desea conectar un dispositivo a Wi-Fi.
Requisitos previos: Conocimiento de HTML/CSS
Hardware
- Computer
- ArduinoUNO
- USB A macho/B macho
- Ethernet cable RJ45
- Ethernet Escudo VMA04
Principio de funcionamiento
La comunicación passa por la red Ethernet que puede conectarse a Wi-Fi. Para acceder a la placa Arduino sin tener que conectar con el router de Internet, es necesario crear un puente entre Wi-Fi y conexión de Ethernet a su computadora. Para ello, debemos:
- Ir al Centro de redes y recursos compartidos
- Ir a «Cambiar configuración del adaptador»
- Seleccione Ethernet y Wifi/(Internet) y clic derecho
- Haga clic en «Crear puente»
En Windows, el terminal de control, escriba «arp -a» para ver las direcciones IP utilizadas en la red.
El Ethernet Escudo VMA04 utiliza el Microchip ENC28J60 como controlador Ethernet.
Nota: Una página web puede tener una gran cantidad de espacio de memoria para una placa Arduino. Utilizamos una tarjeta Ethernet VMA04 Escudo y Arduino UNO, pero si usted piensa que su página será actualización intensivo de la memoria a un W5100 escudo.
(Advertencia: Escudo VMA04 existe versión KA04 Kit de soldadura de uno mismo Compruebe el que usted quiere comprar.)
El Ethernet Shield VMA04 es compatible con los microcontroladores Arduino UNO y Mega y se coloca directamente sobre. En el caso de un escudo, las conexiones están predefinidos. Asegúrese, en la documentación técnica del componente, cómo utilizarlo (VMA04 ficha técnica).
El Ethernet Shield VMA04 utiliza:
- 10 y 2 pines en Arduino UNO
- el bus SPI: 11,12,13 pines en Arduino UNO
Código
Para interactuar con el Ethernet Shield VMA04 usamos la biblioteca UIPEthernet.h :
- Ethernet.begin () para inicializar una conexión de red
- server.begin () para inicializar un servidor
- EthernetClient server.available cliente = () para inicializar un cliente
- client.read () para leer los datos desde el cliente
- client.print () para enviar datos al cliente
//Libraries #include <UIPEthernet.h>//https://github.com/UIPEthernet/UIPEthernet //Parameters String request ; unsigned long refreshCounter = 0; IPAddress ip(192, 168, 1, 179) ; byte mac [6] = {0x54, 0x34, 0x41, 0x30, 0x30, 0x31}; //Objects EthernetServer server(80); EthernetClient client; void setup() { //Init Serial USB Serial.begin(9600); Serial.println(F("Initialize System")); //Init VMA04 Ethernet.begin(mac, ip); while (!Ethernet.begin(mac)) { Serial.println(F("failed. Retrying in 1 seconds.")); delay(1000); Serial.print(F("Starting VMA04...")); } pinMode(4, OUTPUT); server.begin(); Serial.println(F("VMA04 initialized")); Serial.print(F("IP Address: ")); Serial.println(Ethernet.localIP()); } void loop() { client = server.available(); clientRequest(); handleRequest(); } void clientRequest( ) { /* function clientRequest */ ////Get client request if (!client) { return; } //Wait until the client sends some data while (!client.available()) { delay(1); } request = client.readStringUntil('\r');//Read the first line of the request Serial.println(request); client.flush(); } void handleRequest( ) { /* function handleRequest */ ////Handle web client request if (request.indexOf("/dig4on") > 0) { digitalWrite(4, HIGH); } if (request.indexOf("/dig4off") > 0) { digitalWrite(4, LOW); } if (request.indexOf("GET") >= 0) { webpage(client); client.stop(); } } void webpage(EthernetClient client) { /* function webpage */ ////Send webpage to client //output HTML data header client.println(F("HTTP/1.1 200 OK")); client.println(F("Content-Type: text/html")); client.println(); //header client.print(F("<!DOCTYPE HTML><html><head><title>AranaCorp</title>")); client.print(F("<meta http-equiv='content-type' content='text/html; charset=UTF-8'>")); //meta-refresh page every x seconds client.print(F("<meta http-equiv='refresh' content='2'>")); client.print(F("</head><body bgcolor='black'><br>")); client.print(F("<hr/><hr>")); client.print(F("<h1 style='color : #3AAA35;'><center> AranaCorp - Arduino Web Controller </center></h1>")); client.print(F("<hr/><hr>")); client.println("<center><p style='color:white;'>"); client.print(F("Page refresh number: ")); client.print(refreshCounter);//current refresh count client.println("</p></center><br>"); client.print(F("<h2 style='color:green;'>Arduino Inputs</h2>")); client.println("<p style='color:white;'>"); client.print(F("<br><br>")); client.print("<br><br>"); //output analog input pin for (int i = 0; i < 6; i++) { client.print("<b>Input A"); client.print(i); client.print(" : </b>"); client.print(analogRead(14 + i));//A0=14, A1=15 ,etc. client.print(F("<br>")); } client.print(F("</p><br>")); client.print(F("<h2 style='color:green;'>Arduino Outputs</h2>")); client.print(F("<p style='color:white;'>")); //digital output client.print(F("<br><br>")); client.print(F("<b>Digital output Pin 4 : </b>")); client.print("<input value=" + String(digitalRead(4)) + " readonly></input>"); client.print(F("<a href='/dig4on'><button>Turn On </button></a>")); client.print(F("<a href='/dig4off'><button>Turn Off </button></a><br/>")); client.print(F("</p><br>")); //file end client.print(F("<br></body></html>")); refreshCounter += 1; delay(1); }
Resultados
Podemos ver que el Ethernet Shield VMA04 inicializa correctamente. Cuando se introduce la dirección IP en la barra de direcciones del navegador, la página web se describe en las que aparezca Funcion página web.
Una vez que se carga la página, los valores de entrada analógica varían con cada actualización y el estado del pin 2 se puede cambiar pulsando los botones correspondientes.
Aplicaciones
- Uso de una interfaz web para controlar su Arduino