22
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Manual de Netduino como Web Server Integrantes: Ana Karen López Contreras Ángela Olán Acosta Vanessa del C. Zetina Totosaus William Damián de la Cruz Equipo: 3 Maestro: M.A.T.I. Nicolás Torres Martínez Materia: Sistemas Analógicos y Digitales Lugar y Fecha: Cunduacán, Tabasco a 03 de

Manual de Netduino Como Web Server

Embed Size (px)

DESCRIPTION

como configurar el netduino para encender y apagar una luz

Citation preview

UNIVERSIDAD JUREZ AUTNOMA DE TABASCO

Manual de Netduino como Web Server

Integrantes: Ana Karen Lpez Contreras ngela Oln AcostaVanessa del C. Zetina TotosausWilliam Damin de la Cruz

Equipo: 3

Maestro: M.A.T.I. Nicols Torres Martnez

Materia:Sistemas Analgicos y Digitales

Lugar y Fecha: Cunduacn, Tabasco a 03 de Diciembre de 2014

Divisin Academia de Informtica y Sistemas

ndice

I.Materiales a utilizar:3II.Configuracin de AP:31.Inicio del modem32.Entrada del modem43.Configuracion de Modem AP44.Tipo de seguridad55.Rango de IP56.Guardar configuracion67.Reboot68.Finalizado7III.Codigo para Web Server:7Cdigo Program7Cdigo WebServer8IV Conexin del modem con el netduino14I.Anexos15a.Conexin del mdem a la corriente y computadora15b.Conexin de netduino a la corriente y a la computadora.16c.Programacin del netduino.16d.Conexin del celular a la red.17e.Pgina con opcin de apagar y encender el foco.18f.Encendido del foco.19

I. Materiales a utilizar:

Este manual trata de como encender un foco a travs de una red intranet (usando el netduino como Web Server), y para ello utilizamos: Un netduino plus 2 previamente configurado Cdigo para Web Server Acces point (TP LINK) Cargador del AP Cable UTP Cable de datos Una laptop para alimentar el netduino Un circuito elctrico (en el que se ara la prueba) caimanes

II. Configuracin de AP:

1. Inicio del modem

2. Entrada del modem

Se elige el modelo del modem a configurar

3. Configuracion de Modem AP

Se selecciona el tipo de configuracion a utilizar

4. Tipo de seguridad

Se configura el nombre ID, el password, y el tipo de seguridad.

5. Rango de IP

Se determina el rango de las direcciones IP y se habilita como servidor

6. Guardar configuracion

Una vez configurado se procede a guardar

7. Reboot

Se selecciona la opcion reboot para grabar la nueva configuracion en el AP8. Finalizado

III. Codigo para Web Server:Cdigo ProgramCdigo con que se programa el netduino, al cual se le tiene que indicar la direccin IP y hace que podamos controlarlo desde el celular o cualquier dispositivo con conexin a la red creada:

using System;using System.Net;using System.Net.Sockets;using System.Threading;using Microsoft.SPOT;using Microsoft.SPOT.Hardware;using SecretLabs.NETMF.Hardware;using SecretLabs.NETMF.Hardware.Netduino;

namespace WebServer{ public class Program { //static Server webServer; //static Thread webServerThread;

public static void Main() {

//Establecer la configuracin de la interfaz de red Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].EnableDhcp(); // Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].EnableStaticIP("192.168.1.73", "255.255.255.0", "192.168.1.73");

//Crea el nuevo servidor en un hilo nuevo por separado. Server webServer = new Server(); webServer.ListenForRequest();

}

}}

Cdigo WebServerCdigo que contiene la mayor funcionalidad de dicha prctica, en el cual se crea un mtodo al que se le va a mandar el pulso que accionar los otros dispositivos, al mismo tiempo contiene el cdigo de html que se usa para poder visualizar la pgina del botn encendido y apagado:

using System;using Microsoft.SPOT;using Microsoft.SPOT.Hardware;using SecretLabs.NETMF.Hardware.Netduino;using System.Net.Sockets;using System.Net;using System.Text;using System.Threading;

namespace WebServer{ public class Server : IDisposable { static OutputPort relayPin = new OutputPort(Pins.GPIO_PIN_D1, true);

private int caso { get; set; } private Socket socket = null; //abre la conexin en la interfaz de red, por cada conexin puede parpadar el led private OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); IPEndPoint clientIP; EndPoint clientEndPoint; Socket clientSocket; int seleccion = 0;

public Server() { //Inicializa el socket de conexin socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //Establece el puerto escucha a 80 (http) socket.Bind(new IPEndPoint(IPAddress.Any, 80)); //Manda a imprimir en Debug la direccin ip establecida Debug.Print(Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress);

//Inicia la escucha en el puerto 80 socket.Listen(10); ListenForRequest(); }

public void ListenForRequest() { while (true) {

using (clientSocket = socket.Accept()) { //Obtiene cliente IP clientIP = clientSocket.RemoteEndPoint as IPEndPoint; clientEndPoint = clientSocket.RemoteEndPoint; //int byteCount = cSocket.Available; int bytesReceived = clientSocket.Available; if (bytesReceived > 0) { //Obtiene la solicitud byte[] buffer = new byte[bytesReceived]; int byteCount = clientSocket.Receive(buffer, bytesReceived, SocketFlags.None); string request = new string(Encoding.UTF8.GetChars(buffer)); string firstLine = request.Substring(0, request.IndexOf('\n')); //Ejemplo "GET /inicio HTTP/1.1" string[] words = firstLine.Split(' '); //Separa la linea en palabras string command = string.Empty; if (words.Length > 2) { string method = words[0]; //Primera palabra debe de ser GET command = words[1].TrimStart('/'); //La segunda palabra debe de ser el comando, se elimina la barra diagonal } //Creamos una seleccion de caso y convertimos la cadena a minusculas switch (command.ToLower()) {

case "op1": // pantalla("Listo Practica 2 Puesta en Marcha"); Enciende1(); pantalla("Se ha encendido el foco con exito"); break; case "op2": //pantalla("Listo Practica 3 Puesta en Marcha"); Apaga2(); pantalla("Se ha apagado el foco con exito"); break; default: pantalla("Encendido y Apagado de un foco desde la wed
Selecciona tu opcion"); break; } } } } } public int getCaso() { return this.caso; }

private void pantalla(string mensaje) { string codigoHTML = " " + " " + "Netduino" + "" + "" + "Programa Web de Netduino" + "Mensaje:
"; codigoHTML = codigoHTML + mensaje; codigoHTML = codigoHTML + "

" + // " Practica 1" + // "
" + " Enciende el foco" + "" + " Apaga el foco" + "" + "Salir" + "" + "";

//Mensaje Bsico string header = "HTTP/1.0 200 OK\r\nContent-Type: text; charset=utf-8\r\nContent-Length: " + codigoHTML.Length.ToString() + "\r\nConnection: close\r\n\r\n"; clientSocket.Send(Encoding.UTF8.GetBytes(header), header.Length, SocketFlags.None); clientSocket.Send(Encoding.UTF8.GetBytes(codigoHTML), codigoHTML.Length, SocketFlags.None);

}

private void Enciende1() { seleccion = 0; while (seleccion