Arduino (IoT): Simple Tutorial Ethernet W5100 Arduino Shield

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Ethernet 5100 Arduino Shield

En este tutorial exploramos la shield original de Arduino, Ethernet, W5100.  Tambien esta la Arduino CC3000 WiFi, la cual acaba de ser reemplazada (Nov 2015) por la WiFi 101.  Veremos estas en tutoriales futuros.

Ahora veamos los componentes requeridos.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Arduino Ethernet Shield W5100
  4. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino Simple Tutorial W5100 Ethernet
Arduino Simple Tutorial W5100 Ethernet

Las shields son muy practicas y fáciles de usar.  Simplemente se conectan sobre los headers de la Arduino UNO.  Cuidado porque hay shields para distintas placas.  Es decir que una shield es especifica para la UNO y no funciona sobre la MEGA y vv.

Ya conectada podemos repasar el código rápidamente para montar un servidor que muestre datos de sensores análogos (o digitales) de nuestra AVR como para montar rápidamente un servidor de datos de sensores.

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
// Iniciar en puerto 80
EthernetServer server(80);
void setup() {
//Inicializar
Serial.begin(9600);
while (!Serial) {
; // esperar el puerto (necesario solo en Leo)
}
Ethernet.begin(mac, ip);
  server.begin(); //Iniciar conexión
  Serial.print("servidor en ");
  Serial.println(Ethernet.localIP());
}
void loop() {
// Buscar clientes activamente
EthernetClient client = server.available();
if (client) {
Serial.println("Cliente Nuevo");
// Un HTTPRequest termina con una linea en blanco
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// Si se llego al final de una linea (via un caracter de linea nueva
// y la linea esta en blanco, el HTTPRequest ha terminado,
// asi que podemos responder asi...
if (c == '\n' && currentLineIsBlank) {
// Enviar header de HTTPResponse tipico...
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // La conexion cerrara luega de la HTTPResponse
client.println("Refresh: 5"); // Refrescar cada 5 segundos
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>"); //tambien puede insertar php
// Escribir en pantalla los niveles de los puertos analogos
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("Input analogo ");
client.print(analogChannel);
client.print(" es ");
client.print(sensorReading); //algun sensor conectado a cada pin/channel
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// Nueva linea
currentLineIsBlank = true;
}
else if (c != '\r') {
// Nuevo caracter en la linea actual
currentLineIsBlank = false;
}
}
}
// Dar tiempo para que browser reciba datos
delay(1);
// Cerrar conexion
client.stop();
Serial.println("cliente desonectado");
Ethernet.maintain();
}
}
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s