Arduino
por Juan Antonio Villalpando
____________________________________________________________________
-- Tutorial de iniciación --
- Volver al índice del tutorial.
____________________________________
26.- Arduino Ethernet Internet
Tutoriales. Arduino Ethernet Internet
Presentación
Arduino UNO, sobre él pincharemos el módulo Shield de Ethernet.
Bien. Ahora vamos a tratar de gobernar un dispositivo a distancia mediante Ethernet/Internet. Apagar/encender una lámpara, controlar el microcontrolador Arduino,... tanto desde el ordenador como desde un Android. Esto podría ser una pequeña introducción a la domótica.
Para que el Arduino funcione con Internet tenemos varias opciones, una de ellas es comprar un
1.- Arduino con "Internet incorporado":
http://www.bricogeek.com/shop/arduino/392-arduino-ethernet.html viene a costar unos 50 €.
Este es la módulo Arduino con Ethernet. El módulo en sí, tiene un conector RJ45 y otro para recibir la alimentación, No tiene conector USB, por lo cual para programarlo es necesario añadirle otro modulito (USB2Serial) para poder conectarlo al USB del ordenador y cargarle el programa. Complicado. |
Otras opciones es agregarle a nuestro Arduino un Shield Ethernet, voy a comentar tres de ellos:
(Shield son placas que se insertan en la placa del Arduino)
2.- Ethernet Shield V1.1 for Arduino with MicroChip ENC28J60 para conectarlo al Arduino.
http://www.dealextreme.com/p/ethernet-shield-v1-1-for-arduino-66908?item=2 por 18 €. Este módulo no tiene conector para tarjetas de memorias SD, con estas tarjetas podríamos hacer programas de mayor tamaño, presentar dibujos, almacenar datos,... Uno de los problemillas que tiene este Shield es que está basado en el circuito integrado ENC28J60 (que por cierto se calienta muchísimo (very hot) ) y necesita una librería (driver) que no es la "oficial" de Arduino, esta librería la puedes encontrar más adelante en este tutorial. Funciona. Veremos varios ejemplos con esta placa. Este shield es complicado de programar, es mejor el que veremos a continuación.
Shield Ethernet con el chip ENC28J60
3.- (Esta es la mejor opción) Ethernet Shield with Wiznet W5100 Ethernet Chip / TF Slot para conectarlo al Arduino
http://www.dealextreme.com/p/ethernet-shield-with-wiznet-w5100-ethernet-chip-tf-slot-118061 por 16 €. Este módulo es más barato y con mejores prestaciones que el anterior. Tiene conector para tarjetas de memorias microSD. Está basado en el chip W5100. (también se calienta bastante). Utiliza las librerías "oficiales" de Arduino. También veremos varios ejemplos con esta placa. Los servidores con este shield "caen" menos que con el shield anterior, además parece ser más rápido. Es el aconsejable.
Shield Ethernet con el chip W5100
4.- Arduino Etherner Shield - SD, es el mismo que el anterior, solo que lo puedes comprar en España, en este caso por unos 38 € más el transporte http://www.bricogeek.com/shop/17-arduino-ethernet-shield.html
Librerías
Las librerías o drivers son una serie de archivos que el Arduino necesita para que funcionen algunos módulos.
Las librerías se encuentran en la carpeta libraries. Según el chip se utiliza una librería u otra.
Los módulos basados en el chip W5100, utilizan la librería "oficial" del IDE del Arduino. Está en la carpeta Ethernet.
#include <Ethernet.h>
Los módulos basados en el chip ENC28J60, utilizan las librerías etherShield y ETHER_28J60
#include "etherShield.h"
#include "ETHER_28J60.h"
Esta librería la puedes bajar de etherShield-v1.1-for-Arduino-v1.0.rar y guardar en la carpeta libraries. De Andy.
Otra librería que se utiliza para el chip ENC28J60, es la EtherCard para el chip
ENC28J60. De Jean-Claude Wippler
#include <EtherCard.h>
Migrando de Ethershield a EtherCard
- http://jeelabs.org/intro/
No estaría mal instalar todas las librerías: ETHER_28J60, EtherCard, Ethernet y etherShield.
- Otra cosa importante es instalar el IDE del Arduino 1.0, si tienes instalado el 0022, 0023,... puede que algún código no funcione. En efecto, en internet muchos autores no indican en qué condiciones funcionan sus proyecto. Tal vez el autor ha construido su proyecto con el IDE 21 y sus archivos son pde y le funcionan completamente y nosotros instalamos el IDE 1.0 donde los archivos son ino y pueden que no funcionen los anteriores. El IDE Arduino 1.0 salió por mayo del 2012.
- Las páginas web realizadas con estos shield deben ser de pequeño tamaño ya que su buffer no admite mucho contenido.
__________________________________
En esta página vamos a ver proyectos de gobernar al Arduino desde internet con botones en una página web y hacer que al pulsar un botón en la placa del Arduino, se muestre en una página web.
Lo vamos a realizar con los dos Shields:
1.-
Ethernet Shield V1.1 basado en el ENC28J60 (+ librería ethershield).
2.-
Ethernet Shield with Wiznet W5100 Ethernet Chip W5100 (+ librería oficial del Arduino Ethernet).
Vamos a ver estos proyectos con cada uno de los dos Shields.
- Al pulsar botones de una página web se encienden diodos LED del Arduino.
- Al pulsar botones de una página web se enciende o apaga poco a poco un diodo LED conectado a la salida 9 del Arduino.
- Ahora vamos a realizarlo al revés, es decir al pulsar un botón del Arduino, cambia la información de una página web
- Proyecto completo.
- Al pulsar un botón del Arduino, se envía un email a mi cuenta de correo.
__________________________________
Comenzamos con el
1.- Ethernet Shield V1.1 for Arduino Chip ENC28J60
NOTA: Veremos a lo largo del tutorial que hay algo importante que debemos tener en cuenta. Este Shield está basado en el chip ENC28J60 y utiliza la librería (driver):
#include "etherShield.h"
0.- Utilizo el Arduino UNO, el IDE 0022 (también funciona con el IDE 1.0, sería recomendable utilizar este IDE en todos estos proyectos) y el shield de Dealextreme basado en el chip ENC28J60. Además bajo y cargo la librería: etherShield-v1.1-for-Arduino-v1.0.rar (todo esto se va comentando a lo largo de este tutorial).
NOTA: En internet existen más códigos de funcionamiento que se basan en el IDE del Arduino 1.0. Tanto el Arduino, el Shield Ethernet, el IDE y las librerías son críticas, lo que funcionan con uno, no funciona con otro.
(Nota: si utilizas el IDE 0022, 0023... los archivos son .pde, si utilizas el IDE 1.0 son .ino)
Cambio en el IDE de Arduino:
http://blog.makezine.com/2011/12/01/arduino-1-0-is-out-heres-what-you-need-to-know/
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192, 168, 1, 102 }; // La IP que le pones a tu Arduino byte server[] = { 192, 168, 1, 3 }; // IP de un servidor web // Client client(server, 80); // Con el IDE 22 // if (client.connect()) { // Con el IDE 22 SERVIDOR
|
1.- Compro el http://www.dealextreme.com/p/ethernet-shield-v1-1-for-arduino-66908?item=2 por 18 €. Tarda 20 días en llegar.
Es un Shield, es decir una placa que se inserta sobre el Arduino.
Shield Ethernet con el chip ENC28J60
2.- Lo inserto en el Arduino Uno, conecto el cable USB del Arduino y un cable RJ45 del Router al módulo de Ethernet... y al cabo del tiempo observo que el circuito integrado ENC28J60 (abajo-izquierda en la foto), se calienta muchísimo. Estoy apunto de devolverlo a DealExtreme mediante su web de Returning a Merchandise, pero antes me doy una vuelta por Internet y encuentro varias web que comentan este problema: http://www.microchip.com/forums/m585672.aspx . Este integrado puede soportar temperaturas de 70 - 80 C, así que parece que no habrá problemas.
3.- Entro en varias web para aprender a utilizarlo, en la mayoría utilizan la librería:
#include <Ethernet.h>
pero esta librería no funciona con este Shield.
Ya nos lo advertían en la web de DealExtreme:
Pros :
Easy to use and works fine.Cons :
Does not work with the Arduino supplied Ethernet Shield Driver. Manually action needed to download additional driver and put the driver in please. Así que bajo y descomprimo el archivo etherShield-v1.1-for-Arduino-v1.0.rar. Y lo añado a la carpeta libraries de mi Arduino
(este archivo comprimido contiene las librerías etherShield y ETHER_28J60, que necesitan esta placa)
4.- Vamos a realizar la primera prueba, entramos desde el IDE el Arduino en la carpeta ../libraries/etherShiedl/examples/etherShield_webserver y cargamos en el Arduino el programa: ethershield_webserver.pde
Leemos un poco el programa: ethershield_webserver.pde y entre otras cosas observamos que al principo carga la librería
#include "etherShield.h"
También establece una MAC y una IP
static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t myip[4] = {192,168,1,15};
static char baseurl[]="http://192.168.1.15/";
Al final del archivo crea la página web que quiere mostrar...
uint16_t print_webpage(uint8_t *buf)
{
uint16_t plen;
plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<center><p><h1>Welcome to Arduino Ethernet Shield V1.1 </h1></p> "));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<hr><br> <h2><font color=\"blue\">-- Put your ARDUINO online -- "));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<br> Control digital outputs "));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<br> Read digital analog inputs HERE "));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR(" <br></font></h2> ") );
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</center><hr> V1.0 <a href=\"http://www.nuelectronics.com\">www.nuelectronics.com<a>"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</center><hr> V1.1 Modified for Arduino V1.0 by Ben Schueler"));
return(plen);
}
5.- Ahora vamos a un navegador web y escribimos la dirección: 192.168.1.15
El Shield Ethernet del Arduino nos ha suministrado esa información web. En realidad hasta ahora no hace nada, solo presentar esa página web.
6.- Podemos comprobar mediante un ping, que tenemos conexión con el servidor Ethernet Arduino.
*****************************************************************************************
Todo parece ir bien, pero intento cargar otros proyectos de ./libraries/etherShiedl/examples/ y no me funcionan ninguno.
NOTA:
Una vez que programa está cargado en el Arduino, ya no es necesario que el Arduino esté conectado al ordenador por el cable USB (a menos que quiera alimentarlo con la tensión proveniente del ordenador).
Puedes alimentar al Arduino con una batería de 9 V. Ver foto de otro montaje de Arduino alimentado con pilas.
Sí debe estar conectado al router mediante el cable RJ45.
NOTA:
En todos estos procesos que estamos viendo, a veces el Arduino se quedara "colgado", en este caso pulsamos el botón de RESET que tiene la placa del Ethernet Shield, esto reiniciará el programa.
__________________________________
Al pulsar botones de una página web se encienden diodos LED del Arduino
Busco un poco por internet y encuentro este envío en los foros de Arduino:
http://www.nuelectronics.com/download/projects/etherShield_web_switch.pde
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1268951517/15
Bajo y cargo este código: ethershield_webserver.zip y parece funcionar. (Está probado con el Arduino UNO y el IDE 0022, también funciona con el IDE 1.0) (Bajada directa del código: etherShield_webserver.pde)
No olvidemos que para que el programa funcione, previamente hemos instalado la librería etherShield-v1.1-for-Arduino-v1.0.rar en la carpeta libraries de Arduino.
El Arduino y su Shield funcionan como servidor web.
En un navegador web escribimos la IP establecida en el código, en mi caso 192.168.1.205
Y me sale la siguiente página web.
Placa del Arduino (circuito): En el Arduino+Shield situo 6 diodos LED (concretamente en las salidas 2, 3, 4, 5, 6 y 7)
Cuando pulsamos un botón de la página web, el LED correspondiente se encenderá/apagará.
__________________________________
Al pulsar botones de una página web se enciende o apaga poco a poco un diodo LED conectado a la salida 9 del Arduino
Voy a modificar un poco el código anterior para que al pulsar contínuamente el botón Out 1, se vaya encendiendo poco a poco un diodo LED conectado a la salida ~9 del Arduino. Y al pulsar contínuamente el botón Out 2, se vaya apagando poco a poco el diodo LED conectado a la salida ~9 del Arduino.
Conectamos un diodo LED a la salida ~9 del Arduino, ya que esta es una salida de tipo ~PWM.
El código se podría haber abreviado, pero he querido mantenerlo como estaba.
Aquí tenemos el código: etherShield_webserver_Analogico.pde
(Nota: si utilizas el IDE 0022, 0023... los archivos son .pde, si utilizas el IDE 1.0 son .ino)
El código se puede mejorar quitando botones, eliminando líneas, poniendo un delay para que no se pueda pulsar rápidamente, evitando que suba de 255 y baje de 0,...
Si abrimos el Serial Monitor en el Arduino podemos ver cómo evoluciona el valor recibido.
__________________________________
Ahora vamos a realizarlo al revés, es decir al pulsar un botón del Arduino, cambia la información de una página web
Para que funcione utilizamos el IDE del Arduino 1.0 y la Librería etherShield-v1.1-for-Arduino-v1.0.rar
Realizamos el siguiente montaje: un pulsador y una resistencia de unos 10K. El cable intermedio va a la entrada 2.
Pegamos este código en el IDE 1.0 de Arduino (en el IDE 022 no me funcionó). Lo he llamado etherShield_Boton.pde
etherShield_Boton.pde |
// Juan Antonio Villalpando static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // this just needs to be unique for your network, ETHER_28J60 e; void setup() void loop()
|
Vamos a un navegador web y escribimos la IP 192.168.1.15
Según el botón esté pulsado nos saldrá la palabra Alto o Bajo.
Para que funcione, debemos refrescar la página web.
Para que la página se refresque automáticamente he puesto en el código:
<META HTTP-EQUIV='REFRESH' CONTENT='1'>
Esto hará que la página se refresque automáticamente cada segundo. El único inconveniente es que contínuamente está utilizando ancho de banda, sin embargo el tráfico es muy reducido ya que la página web lleva poca información.
__________________________________
Proyecto completo
Bajar el Proyecto_completo.ino
(Nota los .ino son programas para la versión del IDE 1.0 del Arduino, ya no son .pde)
Ahora se trata de unir todos los proyectos anteriores, es decir voy a realizar un proyecto donde:
- En un página web aparezcan dos botones, uno encenderá/apagará un LED conectado a la salida 2, otro encenderá/apagará un LED conectado a la salida 3.
- En la misma página web, aparecerán otros dos botones, uno incrementará el brillo de un LED conectado a la salida ~6 y el otro botón disminuirá el brillo del LED de la salida ~6 (PWM)
- En el circuito de prueba existirá (además de los 3 LED anteriores) un pulsador, conectado al terminal 9. De manera que cuando esté "pulsado/no pulsado", aparecerá en la página web un texto indicando "Pulsador 9 Activado" o "Pulsador 9 Desactivado"
- En el circuito de prueba también tendremos una LDR. conectada a la entrada ANALOG IN 3, que enviará el valor de iluminación a la página web.
Voy a utilizar el IDE 1.0 del Arduino, el Arduino UNO, el Shield Ethernet basado en el chip ENC28J60 y la librería etherShield.
NOTAS:
- He utilizado el puerto 234 en vez del puerto 80 que es el típico de la web. Así que para ver la página debo escribir
http://192.168.1.15:234
- He quitado tildes para abreviar el código.
- Si pulsamos el botón Incrementa o el Decrementa, y luego lo dejamos de pulsar, seguirá avanzando el incremento o decremento aunque no esté pulsado (se puede ver mediante el Serial Monitor). Para evitarlo he puesto otro botón llamado "Parar incrementa/decrementa" que al pulsarlo para el incremento/decremento.
- He añadido la línea:
plen=es.ES_fill_tcp_data_p(buf,0,PSTR("<head><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1\"</head>"));
para que se produzca un refresco automático de la página cada segundo.
- También se puede refrescar la página mediante un botón:
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<hr><FORM><INPUT TYPE=\"button\" onClick=\"history.go(0)\" VALUE=\"Refrescar pagina\"></FORM>"));
- Se puede eliminar la linea de REFRESH y dejar el botón de "Refrescar pagina".
- El Refresco automático solo tiene sentido para el pulsador del Arduino (boton9) y la lectura en tiempo real de la LDR.
- El refresco automático de la página consume más ancho de banda que el refresco manual.
- El tamaño del buffer que envía la información es limitado:
#define BUFFER_SIZE 1500
por lo cual no es posible crear una página web con mucho contenido.
- Si se llama a la vez desde distintos navegadores a la página web, probablemente se va a bloquear (sobre todo si le hemos puesto refresco automático).
- La línea: ValorLDR = map(ValorLDR, 4, 520, 0, 100) ; // mapear el valor del LED
convierte el rango de valores obtenidos en la LDR, en este caso desde 4 hasta 520, en un rango entre 0 y 100.
NOTAS:
Para que pueda actuar con la IP pública de Internet, hacemos los siguientes cambios:
static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t myip[4] = {192,168,1,15}; // Esta es la IP privada que he puesto en mi Arduino
static char baseurl[]="http://217.127.191.134:234/"; // Aqui establezco mi IP pública y el puerto
static uint16_t mywwwport =234; // He cambiado el puerto, en vez del 80 he puesto el 234
- Debo actuar en el Firewall de Windows, para hacer pruebas incluso lo puedo deshabilitar momentáneamente.
- Debo ir a la configuración del Router y abrir el puerto 234 a la IP 192.168.1.15
En este caso para entrar desde cualquier lugar a mi web del Arduino escribiríamos: 217.127.191.134:234
__________________________________
Al pulsar un botón del Arduino, se envía un email a mi cuenta de correo.
Bajar el Proyecto_completo.ino
Pues eso. Pulsamos un botón en el circuito del Arduino y se envía un email a nuestra cuenta de correo.
Esto es algo complicado de hacer directamente con la librería etherShield, asi que voy a utilizar un truquito. Para ello necesito un servidor web que tenga php. Es decir un servidor "normal", un hosting externo con php.
Si tenemos un hosting de pago, muy probablemente dispondrá de php. De todos modos hay hosting gratuitos que disponen de php. Este es un hosting gratuito con php (aunque no he probado si funciona el correo):
http://byethost.com/index.php/free-hosting
- Una característica, en este caso negativa, de este proyecto es que para que funcione, debe estar visualizándose previamente la página web, en mi caso: 192.168.1.15:234
Subimos a nuestro servidor web (hosting) el siguiente archivo: correo.php
(Lo subimos a la raíz de nuestro sitio web)
Subo a mi hosting este archivo: correo.php |
// Juan Antonio Villalpando <?php if (mail($para, $asunto, $mensaje,"From: $nombre <$decorreo>")) </BODY></HTML> |
Estoy utilizando: Arduino UNO, Ethernet Shield con el ENC28J60, la librería etherShield y el IDE 1.0 de Arduino.
Ahora cargamos en nuesto Arduino este archivo:
El casi el mismo del Proyecto_completo.ino visto anteriormente, no he querido cambiarlo para que resulte familiar.
Por supuesto que tiene muchas mejoras, por ejemplo si dejas pulsado el botón enviará varios correos. Así que debemos poner en el código un algoritmo para que solo se envíe una vez.
En fin, se puede corregir todo lo que quieras, esto es un programa de aprendizaje, no pretendo hacer un programa depurado.
Total que he añadido solamente estas líneas rojas:
switch (on_off6) {
case 1:
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<font color=\"#00FF00\">Pulsador 9 Activado</font><br><hr>"));
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<iframe src=\"http://www.iesromerovargas.com\\correo.php\" frameborder=\"0\" >"));
return(plen);
break;
case 0:
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<font color=\"#CC0000\">Pulsador 9 Desactivado</font><br><hr>"));
break;
}
-
No voy a subir el archivo del código, es el mismo visto anteriormente Bajar el Proyecto_completo.ino, solo añade las líneas rojas anteriores en el switch(on_off6)
- Llamo al archivo correo.php mediante un iframe, se me ha ocurrido que puede ser la manera más sencilla.
El archivo correo.php lo he puesto en la raíz del sitio web.
- Cuando pulso el botón (más bien es un pulsador), sale el mensaje de Pulsador 9 Activado y se envía un correo mediante el correo.php
Voy a mi cuenta de correo y observo los mensajes que me ha enviado el Arduino.
NOTA: Si en un navegador web escribimos la dirección donde se encuentra correo.php, también recibiremos el correo, en mi caso:
http://iesromerovargas.com/correo.php
¿Por qué algunas comillas " y la barra \ lleva delante una barra?
Resulta que las comillas y la barra el código del Arduino (en lenguaje C) se utiliza para una cosa y en el código HTML se utiliza para otra.
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<iframe src=\"http://www.iesromerovargas.com\\correo.php\" frameborder=\"0\" >"));
Las comillas que he puesto en verde pertenecen el código del Arduino (lenguaje C)
Las comillas y la barra en azul, llevan delante una barra para indicar que no pertenecen al código Arduino, que pertenece al código HTML.
Bueno, espero que te haya gustado todo lo que hemos visto, te agradecería que me enviaras un correo de opiniones y sugerencias a juana1991@yahoo.com
__________________________________
__________________________________
__________________________________
__________________________________ __________________________________
__________________________________
__________________________________
__________________________________
Ahora vamos a realizar montajes parecidos pero con el...
2.- Ethernet Shield with Wiznet W5100 Ethernet Chip W5100
1.- Compro el http://www.dealextreme.com/p/ethernet-shield-with-wiznet-w5100-ethernet-chip-tf-slot-118061 por 16 € a Dealextreme, tardó unos 20 días en llegar. Este módulo es más barato y con mejores prestaciones que el anterior. Tiene conector para tarjetas de memorias SD. Está basado en el chip W5100 (también se calienta mucho cuando está funcionando). Utiliza las librerías "oficiales" de Arduino. Vamos a ver varios ejemplos con esta placa.
Shield Ethernet con el chip W5100
2.- Lo inserto en el Arduino Uno (tiene los pines de inserción muy largos pero entran bien), conecto el cable USB del Arduino y un cable RJ45 del Router al módulo de Ethernet...
3.- Para realizar estos programas utilizo el Arduino UNO, el Shield Ethernet W510, el IDE 1.0 y la librería oficial del Arduino Ethernet.
Miramos el tutorial de la web del Arduino Para las salidas de datos están disponibles: No es conveniente utilizar los pines:
Debido a que el W5100 y la memoria SD comparten el mismo bus SPI, solo uno de ellos se puede activar al mismo tiempo. Si estás utilizando los dos periféricos en tu programa, debes tener cuidado con sus librerías. Si no estás utilizando uno de los periféricos en tu programa, necesitarás deseleccionarlo. D4 es el CS del SD the description is technically confusing but basically what it means is - you have to interleave SD card access and ethernet access. it just means its not super fast, not that you can't essentially do both at the same time The Ethernet Shield comes with an SD card slot onboard. The shield fits on top of your Arduino. Because the Ethernet module uses pin 10, the CS pin for the SD card has been moved to pin 4. Make sure you use SD.begin(4) to use the SD card functionality. LEDs del Shield:
|
NOTA: en Internet puedes encontrar programas para el Arduino, pero asegúrate si son para la versión IDE 0022 (.pde) o para IDE 1.0 (.ino), porque muchas veces son incompatibles.
Al pulsar botones de una página web se encienden diodos LED del Arduino
Vamos a volver a realizar el programa visto al inicio de esta página. Podemos pulsar seis botones en una página web y dependiendo del botón pulsado se encenderá o apagará un LED.
No olvidemos que el Shield Ethernet basado en el chip W5100 funciona con la libretía Ethernet, que es la oficial del Arduino y ya viene en la carpeta libraries.
El Arduino y su Shield funcionan como servidor web.
En un navegador web escribimos la IP establecida en el código, en mi caso 192.168.1.205
Y me sale la siguiente página web.
Placa del Arduino (circuito): En el Arduino+Shield situo 6 diodos LED (concretamente en las salidas 1,2, 3, 5, 6 y 7)
Cuando pulsamos un botón de la página web, el LED correspondiente se encenderá/apagará.
Aquí está el código, lo he adaptado para que se parezca al que vimos al inicio. Como puedes observar es más sencillo que el que utilizamos con el Shield Ethernet ENC28J60 y su correspondiente librería.
Varios_Botones.pde |
// Juan Antonio Villalpando #include <SPI.h> // Enter a MAC address and IP address for your controller below. #define SW1 1 // Initialize the Ethernet server library void setup() void loop() client.stop(); }
|
__________________________________
Al pulsar botones de una página web se enciende o apaga poco a poco un diodo LED conectado a la salida 9 del Arduino
Voy a modificar un poco el código anterior para que al pulsar contínuamente el botón Out 1, se vaya encendiendo poco a poco un diodo LED conectado a la salida ~9 del Arduino. Y al pulsar contínuamente el botón Out 2, se vaya apagando poco a poco el diodo LED conectado a la salida ~9 del Arduino.
Conectamos un diodo LED a la salida ~9 del Arduino, ya que esta es una salida de tipo ~PWM.
El código se podría haber abreviado, pero he querido mantenerlo como estaba.
Aquí tenemos el código: webserver_Analogico_W5100.ino
(Nota: si utilizas el IDE 0022, 0023... los archivos son .pde, si utilizas el IDE 1.0 son .ino)
El código se puede mejorar quitando botones, eliminando líneas, poniendo un delay para que no se pueda pulsar rápidamente, evitando que suba de 255 y baje de 0,...
Si abrimos el Serial Monitor en el Arduino podemos ver cómo evoluciona el valor recibido.
__________________________________
Ahora vamos a realizarlo al revés, es decir al pulsar un botón del Arduino, cambia la información de una página web
Para que funcione utilizamos el IDE del Arduino 1.0 y la Librería oficial Ethernet de Arduino
Realizamos el siguiente montaje: un pulsador y una resistencia de unos 10K. El cable intermedio va a la entrada 2.
Pegamos este código en el IDE 1.0 de Arduino. Lo he llamado etherShield_Boton_W5100
He adaptado ligeramente este tutorial:
http://www.instructables.com/id/Arduino-Ethernet-Shield-Tutorial/step3/Get-started/
etherShield_Boton_W5100 |
// Juan Antonio Villalpando // Enter a MAC address and IP address for your controller below. // Initialize the Ethernet server library int buttonPress = 1; void setup() // start the Ethernet connection and the server: void loop() //serves a different version of a website depending on whether or not the button break; |
Vamos a un navegador web y escribimos la IP 192.168.1.15
Según el botón esté pulsado nos saldrá la palabra Alto o Bajo.
Para que funcione, debemos refrescar la página web.
Para que la página se refresque automáticamente he puesto en el código:
<META HTTP-EQUIV='REFRESH' CONTENT='1'>
Esto hará que la página se refresque automáticamente cada segundo. El único inconveniente es que contínuamente está utilizando ancho de banda, sin embargo el tráfico es muy reducido ya que la página web lleva poca información.
__________________________________
Proyecto completo
Bajar el Proyecto_completo_W5100.ino
(Nota los .ino son programas para la versión del IDE 1.0 del Arduino, ya no son .pde)
Ahora se trata de unir todos los proyectos anteriores, es decir voy a realizar un proyecto donde:
- En un página web aparezcan dos botones, uno encenderá/apagará un LED conectado a la salida 2, otro encenderá/apagará un LED conectado a la salida 3.
- En la misma página web, aparecerán otros dos botones, uno incrementará el brillo de un LED conectado a la salida ~6 y el otro botón disminuirá el brillo del LED de la salida ~6 (PWM)
- En el circuito de prueba existirá (además de los 3 LED anteriores) un pulsador, conectado al terminal 9. De manera que cuando esté "pulsado/no pulsado", aparecerá en la página web un texto indicando "Pulsador 9 Activado" o "Pulsador 9 Desactivado"
- En el circuito de prueba también tendremos una LDR. conectada a la entrada ANALOG IN 3, que enviará el valor de iluminación a la página web.
Voy a utilizar el IDE 1.0 del Arduino, el Arduino UNO, el Shield Ethernet basado en el chip W5100 y la librería Ethernet.
NOTAS:
- He utilizado el puerto 234 en vez del puerto 80 que es el típico de la web. Así que para ver la página debo escribir
http://192.168.1.15:234
- He quitado tildes para abreviar el código.
- Si pulsamos el botón Incrementa o el Decrementa, y luego lo dejamos de pulsar, seguirá avanzando el incremento o decremento aunque no esté pulsado (se puede ver mediante el Serial Monitor). Para evitarlo he puesto otro botón llamado "Parar incrementa/decrementa" que al pulsarlo para el incremento/decremento.
- He añadido la línea:
client.println("<head><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1\"</head>");
para que se produzca un refresco automático de la página cada segundo.
- También se puede refrescar la página mediante un botón:
client.println("<hr><FORM><INPUT TYPE=\"button\" onClick=\"history.go(0)\" VALUE=\"Refrescar pagina\"></FORM>");
- Se puede eliminar la linea de REFRESH y dejar el botón de "Refrescar pagina".
- El Refresco automático solo tiene sentido para el pulsador del Arduino (boton9) y la lectura en tiempo real de la LDR.
- El refresco automático de la página consume más ancho de banda que el refresco manual.
- El tamaño del buffer que envía la información es limitado:
#define BUFFER_SIZE 1500
por lo cual no es posible crear una página web con mucho contenido.
- Si se llama a la vez desde distintos navegadores a la página web, probablemente se va a bloquear (sobre todo si le hemos puesto refresco automático).
- La línea: ValorLDR = map(ValorLDR, 4, 520, 0, 100) ; // mapear el valor del LED
convierte el rango de valores obtenidos en la LDR, en este caso desde 4 hasta 520, en un rango entre 0 y 100.
NOTAS:
Para que pueda actuar con la IP pública de Internet, hacemos los siguientes cambios:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,15);
EthernetServer server(234); // He puesto el puerto 234, se debe entrar en la pagina 192.168.1.15:234
- Debo actuar en el Firewall de Windows, para hacer pruebas incluso lo puedo deshabilitar momentáneamente.
- Debo ir a la configuración del Router y abrir el puerto 234 a la IP 192.168.1.15
En este caso para entrar desde cualquier lugar a mi web del Arduino escribiríamos: 217.127.191.134:234
Proyecto_completo_W5100 |
// Juan Antonio Villalpando // Recursos utilizados: Arduino UNO, Shield Ethernet W5100, Libreria Ethernet, IDE Arduino 1.0 /* - En el circuito de prueba existira (ademas de los 3 LED anteriores) un pulsador, conectado al terminal 9. De manera que cuando esé "pulsado/no pulsado", aparecerá en la página web un texto indicando "Pulsador 9 Activado" o "Pulsador 9 Desactivado" - En el circuito de prueba también tendremos una LDR. conectada a la entrada ANALOG IN 3, que enviará el valor de iluminación a la pÃágina web. /* He puesto una actualizacion automatica de la pagina mediante: Tambien he puesto al final del codigo un boton de refresco de pagina, por si no queremos la actualizacion automatica anterior #include <SPI.h> // Enter a MAC address and IP address for your controller below. char valorc[]="1234"; ///////////////////>>>>>>>>>>>>> char Valor del brillo inicial del LED 6 // Un LED en terminal 2 y otro en terminal 3 const int boton9 = 9; //////////////>>>>>>>>>>>>>>>> Pulsador en entrada 9 // Initialize the Ethernet server library String readString = String(30); / /string recoger los datos de la direccion void setup() // Init outputs void loop() /////////////// Escribe el Valor de Incrementa-Decrementa ////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////// VALOR DE LA LDR /////////////////////////////////////////////////////////////////////////////////////////// ValorLDR = map(ValorLDR, 0,500, 0, 100) ; // mapear el valor del LED client.println("Valor en la LDR: (en ANALOG IN 3) <b>"); ////////////////// Boton de Refrescar pagina ///////////////////////////////////////////////////////////////////////// client.stop(); }
|
__________________________________
Al pulsar un botón del Arduino, se envía un email a mi cuenta de correo.
(Nota: hay que depurarlo, no funciona)
Bajar el Proyecto_completo_W5100.ino
Pues eso. Pulsamos un botón en el circuito del Arduino y se envía un email a nuestra cuenta de correo.
Esto es algo complicado de hacer directamente con la librería Ethernet, así que voy a utilizar un truquito. Para ello necesito un servidor web que tenga php. Es decir un servidor "normal", un hosting externo con php.
Si tenemos un hosting de pago, muy probablemente dispondrá de php. De todos modos hay hosting gratuitos que disponen de php. Este es un hosting gratuito con php (aunque no he probado si funciona el correo): http://byethost.com/index.php/free-hosting
- Una característica, en este caso negativa, de este proyecto es que para que funcione, debe estar visualizándose previamente la página web, en mi caso: 192.168.1.15:234
Subimos a nuestro servidor web (hosting) el siguiente archivo: correo.php
(Lo subimos a la raíz de nuestro sitio web)
Subo a mi hosting este archivo: correo.php |
// Juan Antonio Villalpando <?php if (mail($para, $asunto, $mensaje,"From: $nombre <$decorreo>")) </BODY></HTML> |
Estoy utilizando: Arduino UNO, Ethernet Shield con el W5100, la librería Ethernet y el IDE 1.0 de Arduino.
Ahora cargamos en nuesto Arduino este archivo:
El casi el mismo del Proyecto_completo_W5100.ino visto anteriormente, no he querido cambiarlo para que resulte familiar.
Por supuesto que tiene muchas mejoras, por ejemplo si dejas pulsado el botón enviará varios correos. Así que debemos poner en el código un algoritmo para que solo se envíe una vez.
En fin, se puede corregir todo lo que quieras, esto es un programa de aprendizaje, no pretendo hacer un programa depurado.
Total que he añadido solamente esta línea roja:
switch (on_off6) {
case 1:
client.println("<font color=\"#00FF00\">Pulsador 9 Activado</font><br><hr>");
client.println("<iframe src=\"http://www.iesromerovargas.com\\correo.php\" frameborder=\"0\" >");
break;
case 0:
client.println("<font color=\"#CC0000\">Pulsador 9 Desactivado</font><br><hr>");
break;
}
- No voy a subir el archivo del código, es el mismo visto anteriormente Bajar el Proyecto_completo_W5100.ino, solo añade las líneas rojas anteriores en el switch(on_off6)
- Llamo al archivo correo.php mediante un iframe, se me ha ocurrido que puede ser la manera más sencilla.
El archivo correo.php lo he puesto en la raíz del sitio web.
- Cuando pulso el botón (más bien es un pulsador), sale el mensaje de Pulsador 9 Activado y se envía un correo mediante el correo.php
Voy a mi cuenta de correo y observo los mensajes que me ha enviado el Arduino.
NOTA: Si en un navegador web escribimos la dirección donde se encuentra correo.php, también recibiremos el correo, en mi caso:
http://iesromerovargas.com/correo.php
¿Por qué algunas comillas " y la barra \ lleva delante una barra?
Resulta que las comillas y la barra el código del Arduino (en lenguaje C) se utiliza para una cosa y en el código HTML se utiliza para otra.
client.println("<iframe src=\"http://www.iesromerovargas.com\\correo.php\" frameborder=\"0\" >");
Las comillas que he puesto en verde pertenecen el código del Arduino (lenguaje C)
Las comillas y la barra en azul, llevan delante una barra para indicar que no pertenecen al código Arduino, que pertenece al código HTML.
Bueno, espero que te haya gustado todo lo que hemos visto, te agradecería que me enviaras un correo de opiniones y sugerencias a juana1991@yahoo.com
__________________________________
Tarjeta de memoria microSD en el Shield Ethernet W51000
El Shield basado en el W5100 tiene un conector para tarjetas de memorias SD.
La memoria SD debe ser realmente "microSD", las SD de tamaño normal no entran en el lector, así que asegúrate antes de comprarla.
En esta tarjeta se pueden guardar y leer información en archivos y directorios.
Utilizo el Arduino UNO, el shield Ethernet basado en el chip Wizet W5100, el IDE 1.0, la librería Ethernet que viene con el IDE 1.0 y una tarjeta de memoria microSD. Carga los ejemplos que trae el mismo IDE de Arduino en Archivos / Ejemplos / SD. Suelen funcionar, la mayoría tratan de crear archivos, guardar datos en los archivos, listar archivos, borrarlos,... en la tarjeta microSD. Pero todo independientemente de la parte de Ethernet.
Si queremos trabajar a la vez con la parte Ethernet y la parte de la tarjeta microSD en nuestro shield Ethernet W5100, la cosa se complica.
En mi caso he realizado pruebas llegando a algunas conclusiones, que seguramente se pueden mejorar. He intentado que funcione "a la vez" el Ethernet y la microSD y lo he conseguido con algunos programas.
En fin, lo intento ver de esta manera...
Resulta que los datos "se mueven" por el Shield Ethernet mediante el denominado bus SPI (#include <SPI.h>). Este bus SPI lo utiliza la parte Ethernet y la parte de la tarjeta microSD, pero no pueden utilizarlo conjuntamente al mismo tiempo, o bien lo utiliza el Ethernet o bien lo utiliza la microSD.
De tal manera que el programa debe contener instrucciones que...
- anule la parte Ethernet para que el bus pueda ser utilizado por la microSD
pinMode(10, OUTPUT); // deshabilita ethernet
digitalWrite(10, HIGH ); // deshabilita ethernet
- anule la parte microSD para que el bus pueda ser utilizado por la Ethernet
pinMode(4, OUTPUT); // deshabilita microSD
digitalWrite(4, HIGH ); // deshabilita microSD
Así que cuando queramos trabajar con la parte Ethernet anulamos la microSD y cuando queramos trabajar con la microSD anulamos la parte Ethernet. Vamos cambiando de un código a otro.
Posiblemente no es necesario tanto cambio, pero me ha funcionado de esta manera, en otros tutoriales utilizan otras formas más elegantes.
¿Por qué el pin 4 y el pin 10?
Si volvemos a consultar el dibujo del Shield...
...observamos... Así que según esté el 4 o el 10 activado, el bus SPI lo tendrá el microSD o el Ethernet. Lo que en realidad se hace es deshabilitar el que no vas a utilizar... Al poner en ALTO el pin 10 estamos deshabilitando el Ethernet Al poner en ALTO el pin 4 estamos deshabilitando microSD
A parte de esto, para que funcione el Ethernet debemos escribir |
Mediante una página web podemos escribir datos en un archivo.
Para este proyecto dispongo de Arduino UNO, Shield Ethernet W5100, librería oficial Ethernet, IDE 1.0 y tarjeta de memoria microSD.
Una vez más quiero insistir que a partir de mayo de 2012 salió el IDE 1.0 del Arduino, a partir de este IDE la extensión de los archivos será .ino ( de arduino) en vez del .pde. Muchos proyectos que encontramos en Internet están realizados con IDE anteriores como el 19, 21, 22, 23, algunos de estos proyectos no funcionan con el nuevo IDE. Así que o bien adaptas el proyecto o instalas varios IDE.
Este programa lanza una página web con dos botones:
- Cuando pulsamos el botón "Incrementa" la variable x aumenta en una unidad. Y ese valor se guarda en un archivo de la microSD.
- Cuando pulsamos el botón "Decrementa" la variable x disminuye en una unidad. Y ese valor se guarda en un archivo de la microSD.
Una vez pulsado varias veces los botones, sacamos la memoria microSD del Shield de Arduino y la introducimos en un ordenador.
Obtendremos un archivo llamado test.txt con un contemido similar a este...
Incremento de x 1
Incremento de x 2
Incremento de x 3
Incremento de x 4
Decremento de x 3
Decremento de x 2
Ethernet y SDCard |
// Juan Antonio Villalpando #include <SPI.h> // Bus SPI #include <SD.h> // Tarjeta microSD - Libreria ocupa 5 KB byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; void setup() // //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx if(readString.indexOf("cmd=A")>0){ //zzzzzzzzzzz Cambia a SD - escribe archivo - cambia a Ethernet zzzzzzzzzzzzzzzzz SD.begin(4); // Inicializa la SD card mediante el pin4 } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx if(readString.indexOf("cmd=B")>0){ SD.begin(4); // Inicializa la SD card mediante el pin4 } readString=""; client.println("<html>"); client.println("<center><table><tr><td align=center>"); client.println("Suma<br>"); client.println("</td><td align=center>"); client.println("Resta<br>"); client.println("</td></tr></table></center><hr>"); client.println("</body>"); client.stop(); } |
El programa es una solución personal, que funciona. Si en el programa añadimos lineas "planas" como
client.println("<h1><center><b>Vista mi web </b></center></h1>");
el programa sigue funcionando, pero si añadimos líneas en el campo del formulario, empiezan a surgir problemas.
Todo es cuestión de experimentar.
Puedes experimentar introduciendo una línea de autorefresco...
client.println("<head><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"1\"</head>");
Intentar añadir casilleros en el formulario...
client.println("<INPUT TYPE=TEXT NAME=variable>");
Pero posiblemente empezarán los problemas...
Podemos añadir un enlace externo de esta manera...
client.println("<a href=http://google.com target=\"_blank\"> Google </a>");
__________________________________
Otro sketch solo con la SDCard en el W5100. (sin la parte de Ethernet)
Ver el contenido de un archivo. Obtenido del IDE 1.0. Archivos / Ejemplos / SD / DumpFiles
Este programa no tiene nada de Ethernet, solo trata de que ya tenemos en nuestra memoria SD un archivo de texto llamado test.txt.
Y cada vez que entramos en el Serial Monitor, vemos su contenido.
Ver el contenido de un archivo. DumpFile. Volcado de archivo. |
/* #include <SD.h> // On the Ethernet Shield, CS is pin 4. Note that even if it's not void setup() Serial.print("Initializing SD card..."); // if the file is available, write to it: void loop() |
Debemos tener en cuenta las librerías en los ejemplos con los que trabajamos, en unos ejemplos se utilizan la librería SD y en otros la SDFat.
Aquí comento los ejemplos que vienen en la librería SD del IDE 1.0.1 de Arduino.
IDE 1.0 + Shield Ethernet W5100 + librería SD los ejemplos...
Archivos / Ejemplos / SD (Están en la carpeta examples de libraries / SD / examples)
La información se consulta mediante el Serial Monitor, gracias a estas instrucciones:
Especie de reinicio cuando cerramos y abrimos el Serial Monitor
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
- CardInfo (información y listado de archivos de la tarjeta)
- DumpFile (muestra el contenido de un archivo)
- Files (consulta si un archivo existe, lo crea y lo borra)
- listFiles (muestra un listado de los archivos de la tarjeta, ERROR: cambiar la línea if (!SD.begin(4)) {,
- Datalogger, (toma datos de las entradas analógicas 0, 1 y 2 y las guarda en un archivo luego abre el archivo y muestra los datos)
- Readwrite (escribe testing 1, 2, 3. en un archivo y luego lo muestra)
__________________________________
Otro proyecto con el Shield Ethernet W51000 + la tarjeta de memoria microSD
Esta página es muy conocida y trata de trabajar con Ethernet W5100 y SDcard: http://www.ladyada.net/learn/arduino/ethfiles.html
Se trata de tener varios archivos de texto en la microSD y mediante una página web ver el listado de archivos y su contenido.
Debemos tener en cuenta qué IDE estamos utilizando, si utilizamos los IDE 19, 22, 23... el código a cargar es el clásico de extensión .pde
Si estamos utilizando el IDE 1.0 el código tendrá de extensión .ino.
Bajar los códigos de los proyectos:
https://github.com/adafruit/SDWebBrowse
Bajar la librería de:
http://code.google.com/p/sdfatlib/downloads/list
Una vez más debes tener en cuenta con qué IDE estás trabajando.
Una vez que grabes la librería en: libraries / SdFat
Reinicia el IDE.
En mi caso he utilizado: Arduino UNO, IDE 1.0.1, Shield Ethernet W5100 y tarjeta microSD
Librería: sdfatlib20120719.zip
En la tarjeta microSD debemos tener varios archivos .txt para las pruebas.
Este es el código: Arduino + Ethernet + SD
************************************************************************************************************************************
SDCard y ethernet ( funciona completamente) |
#include <SD.h> // Ocupa 5 KB byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; void setup() // if(readString.indexOf("cmd=A")>0){ //zzzzzzzzzzz Cambia a SD - escribe archivo - cambia a ethernet zzzzzzzzzzzzzzzzz SD.begin(4); // Initialize the SD card mediante su el pin4 } if(readString.indexOf("cmd=B")>0){ SD.begin(4); // Initialize the SD card mediante su el pin4 } readString=""; client.println("HTTP/1.1 200 OK"); client.println("<html>"); client.println("<center><table><tr><td align=center>"); switch (on_off2) { client.println("</td></tr><tr><td align=center>"); client.println("</td></tr></table></center><hr>"); client.println("</body>"); client.stop(); } |
http://www.elektor.nl/forum/forum/algemene-forums/microcontrollers/arduino-v1-0-met-ethershield-v1-1.2029859.lynkx
EN28J60 Ethernet Shield v1.1 library voor Arduino v1.0.
https://github.com/thiseldo/EtherShield
http://www.youtube.com/watch?v=r7E3uq_nMBg
http://www.youtube.com/watch?v=r7E3uq_nMBg
http://luisfuentesr.blogspot.com.es/
http://www.instructables.com/id/Arduino-Ethernet-Shield-Tutorial/step4/Server/
http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf
http://tuxgraphics.org/electronics/200606/article06061.shtml
http://www.microchip.com/forums/m585672.aspx
WIFI
http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_186&products_id=2165
http://www.soliddepot.com/index.php?main_page=product_info&products_id=106
http://www.cutedigi.com/wireless/wifi/linksprite-cuhead-wifi-shield-v2-0-for-arduino.html
http://todoelectronica.com/shield-arduino-wifi-p-15406.html
buscalo: http://lmgtfy.com/?q=send+email+from+arduino#
Hay dos librerías una llamada EtherCard y otra ethershield: http://blog.thiseldo.co.uk/?p=623
EtherCard: https://github.com/jcw/ethercard
- El Robot LEGO es un juguete/recurso didáctico, que se utiliza en muchos centros escolares de enseñanza secundaria para iniciar a los alumnos en la programación informática y en la robótica. Es algo caro, viene a costar unos 340 €. Aquí he puesto un tutorial en el que indico como controlar el Robot LEGO mediante Bluetooh y Visual Basic en un ordenador. Al final también indico cómo controlarlo mediante un teléfono móvil con Android utilizando Appinventor para programarlo.
Tutorial: Visual Basic + Bluetooh + Robot LEGO + AppInventor + Android.
- El Arduino y un módulo shield Bluetooth
Tutorial: Visual Basic + Bluetooh
- Otro dispositivo que vale la pena conocer es el microcontrolador Arduino, es una placa con un circuito electrónico que podemos programarlo para que haga infinidad de funciones. Aquí he puesto otro tutorial en el que indico cómo controlar al Arduino conectado por USB al ordenador, mediante Visual Basic.
Tutorial: Arduino + Visual Basic 2010.
- Aquí sigo con el Arduino en una estación meteorológica:
Tutorial: Arduino + Estación Meteorológica.
____________________________________________
__________________________________
__________________________________
Si quieres que este tutorial se mantenga y lo actualice con más programas, escríbeme un correo a: juana1991@yahoo.com
__________________________________ __________________________________