LABORATORIO NUMERO 15
En este laboratorio se usara el modulo ethernet para arduino, ya que con este podremos tomar datos desde una foto celda y datos térmicos por medio del encapsulado lm335, al tomar estos datos y mapearlos en el arduino se imprimirán en un servidor web creado directamente por el mismo modulo ethernet.
Para poder hacer uso optima mente de este shield debemos configurar una dirección I.P. de acuerdo a la de nuestro computador para así poder tener una compatibilidad y poder dar un muestreo de los datos obtenidos en el servidor.
La Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Está basada en el chip ethernet . El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Soporta hasta cuatro conexiones de sockets simultáneas. Usa la libreria ethernet para escribir programas que se conecten a internet usando la shield.
La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino.
Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet shield. Estos pines no pueden ser usados para e/s genéricas.
La shield provee un conectore ethernet estándar RJ45El botón de reset en la shield resetear ambos, el W5100 y la placa Arduino.
La shield contiene un número de LEDs para información:
El jumper soldado marcado como "INT" puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.
MATERIALES
- PWR: indica que la placa y la shield están alimentadas
- LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
- FULLD: indica que la conexión de red es full duplex
- 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
- RX: parpadea cuando la shield recibe datos
- TX: parpadea cuando la shield envía datos
- COLL: parpadea cuando se detectan colisiones en la red
El jumper soldado marcado como "INT" puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.
- 1 arduino mega adk
- 1 modulo ethernet shield
- 1 computador
- 1 foto celdas
- 2 encapsulados LM335
- DIAGRAMAS
DIAGRAMA DE MONTAJE EN PROTOBOARD
DIAGRAMA ESQUEMÁTICO
DIAGRAMA PARA MONTAJE EN TARJETA PERFORADA
FOTOS
foto 1
foto 2
foto 3
foto 4
foto 5
foto 6
foto 7
foto 8
foto 9
foto10
#include <Ethernet.h>
#define fotocelda A3
#define LM01 A1 // sensor de temperatura
#define LM02 A2 // sensor de temperatura
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,14); //direccion ip configurada para funcionar con el servidor.
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(fotocelda, INPUT);
pinMode(LM01, INPUT);
pinMode(LM02, INPUT);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
int valorL = analogRead(fotocelda);
int luminosidad = map(valorL, 0, 1023, 0, 100);
client.print("luminosidad");
client.print(" is ");
client.print(luminosidad);
client.println("<br />");
int valorT1 = analogRead(LM01);
int TEMP1 = map(valorT1, 0, 1023, 0, 100);
client.print("temperatura 1");
client.print(" is ");
client.print(TEMP1);
client.println("<br />");
int valorT2 = analogRead(LM02);
int TEMP2 = map(valorT2, 0, 1023, 0, 100);
client.print("temperatura 2");
client.print(" is ");
client.print(TEMP2);
client.println("<br />");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
VIDEO
No hay comentarios:
Publicar un comentario