Table of Contents....Portfolio of Work....Informes
 

informes de investigación

por Adam M. Hasler

 
sobre estos
informes
 
informes introductorios
diario de diciembre
 
introducción al Arduino y otras herramientas

 
informes de sensores y protocolos
Making Things Talk proyecto 1
 
Making Things Talk proyecto 2
 
informes de microcontroladores
microcontroladores parte 1: el fracaso
 
microcontroladores parte 2: el éxito
 
microcontroladores parte 3

Making Things Talk proyecto 2:


describe: La consigna de este proyecto es introducir el lector al redes más complejos que los que son construidos por sólo los recipientes y el remitente. Aprendí sobre la estructura del internet, los dispositivos que se usa para interactuar en el internet, y los protocolos compartidos que hace esa comunicación posible. Para explorar este tema, construí una interfaz física de resistencia variable, que cuando tenía un valor más grande de un valor fijo, pasó un mensaje a un sistema en la computadora que me envió un email para avisar de un estimulo en el sensor. También, al recibir un mensaje del sensor, empezó enviando datos de foto a otro sistema en un sitio de web, en que cualquier persona con la dirección del sitio podía ver una imagen refrescada cada 15 segundos capturada por la camera en mi compu.
fechas: 8 febrero - 24 febrero
materiales: resistencia variable, resistencia 1k ohm, protoboard, microcontrolador Arduino, camera web (usé el iSight que es parte de mi Mac), programa de webcam (usé lo que fue sugerido, el Evocam por Evological.).

Arreglo y funcionamiento de redes tecnológicas

La manera más fácil de organizar un red es conectar cada punto con cada otro punto. Sin embargo, la cantidad de conexiones en esta forma de red puede ser grandísima. Otras formas de crear un red son una estrella, en que todos los puntos conectan con un punto central, a través de todos los mensajes viajan, o una cadena. El internet funciona como varias estrellas, con puntos centrales contectados con puntos aún más centrales a través de viaja todo. El fracaso de un punto no afecta el funcionamiento del red entero, y todos los puntos tienen camino a los demás puntos en el red. En este caso, ¿cómo se diseña el red que un mensaje sabe a donde tiene que viajar? En el caso del internet, el sistema que existe exige en el uso de los dispositivos siguientes: modems, que convierte un tipo de señal al otro; centros (hubs), que recibe mensajes y los pasa en una sola señal al resto de los puntos con que está conectado; un switch, que no sólo pasa los señales, pero los filtra basado en la dirección del mensaje; y los routers, que tiene direcciones en el red, y asigna direcciones a los dispositivos que están conectados con ellos.

Es este proceso de asignar las direcciones y navegar usándolos que nos preocupan acá. ¿Cómo es el formato de las direcciones, y cuales necesito saber para enviar mensajes en la misma forma que envían los sistemas de email, y servidores del web?

Ya usaba esquemas de dirección con otros proyectos, específicamente cuando trabajé con Bluetooth, y tenía que manejar el protocolo Bluetooth. El internet tiene el mismo tipo de dirección, pero con el protocolo internet (IP). Además, el mayor parte de aparatos que conectan con el internet usa también el protocolo Ethernet, y como tal usa una dirección Ethernet. Estas direcciones pueden cambiar si el red que usa el aparato, como una computadora, cambia su punto de acceso con el resto de la red (como cuando uso mi laptop en Lateral o en casa, o acá en Argentina o en los Estados Unidos). Finalmente, cada dispositivo (no sólo cada tipo de dispositivo, pero cada cosa física que conecta con el internet), tiene su propia dirección del hardware: la dirección de control de acceso de medios (media access control, o MAC).

MAC address
Dirección de MAC/Ethernet:
System Preferences>Network>Ethernet
Estas direcciones no son arbitrarias. Contiene información sobre el fabricador, la ubicación del router o modem usado por el aparato, o cuantos otros aparatos conectan con el mismo router. Además, como en el caso de routers, tiene dos direcciones IP, una pública y una privada, que expanda el numero de aparatos que pueden conectar con el internet. Pero no usamos números para enviar e-mail y ir a sitios en el internet. Este paso de dar nombres y títulos en letras que podemos leer sucede con la ayuda de un sistema de dominios de nombre (domain name system, o DNS). En cada red, y maquinas que sirve para mantener los archivos que dicen cuales números van con cuales nombres de dominio. Estas maquinas se llaman un nameserver, accedido por el router. Usando el protocolo de DHCP, el router pide información del nameserver sobre la dirección de un nombre de dominio.

Así está construída la red, ¿pero cómo pasan los mensajes entre los puntos? Exigen en packet switching (cambio de cajetillas), que operan en tres niveles: el datalink o ethernet, el transporte, y el protocolo de control de transmisión (transmission control protocol, o TCP). En el nivel de datalink, cada mensaje está roto hasta piezas más chicos. En el nivel de IP, cada uno está dado un encabezamiento (header), con información sobre su posición relativo a las otras cajetillas de que está construido el mensaje. Estas cajetillas están enviado, uno tras otro, por cualquier camino en la red menos ocupada hacia el destino. Esta ocurre en el nivel de transporte. Finalmente, el nivel que maneja el viaje, el TCP, asegura que cada paquete alcanza su destino querido.

Pruebas con HTML, PHP, SMTP

Cómo usar "ping"

En el programa terminal, tecla:
ping -c 10 127.0.0.1

Debe devolver algo así:
10 packets transmitted, 10 packets received, 0 data loss

Se puede usar cualquier dirección. Este ejemplo usa un loopback, o localhost: 127.0.0.1
Este intercambio de cajetillas y mensajes es la fundación de cada actividad que sucede en el internet. En el caso de navegar sitios en el internet, mi browser Firefox envía mensajes a una maquina ubicada en una dirección especificada, y la maquina devuelve la información pedida en forma de mensajes y cajetillas. La maquina que pide la información se llama el cliente, y la que provee la información es el servidor. Cada servidor tiene una variedad de programas que usa para varias funciones, y cada uno tiene su propio numero de puerto (eg., el programa de servidor de red es 80, y el servidor pasa cada pedido para la puerta 25 a la puerta de e-mail). Este proceso es más aparente con el uso de la línea comanda para conectar con sitios, donde se puede ver todo el mensaje enviado de un sitio. No vemos todo esto cuando usamos un browser, porque el código HTTP (hypertext transport protocol, o protocolo de transporte de texto super) indica como leer de mostrar el mensaje. Números de puerta no usados pueden estar usados para otras funciones, pero como las puertas seriales, sólo un programa puede usar una puerta a la vez.

Para ver como pasan los datos el servidor y el cliente en linea comanda...
GET /index.html HTTP/1.0
HOST: www.google.com

y observa que pasa...
Las pruebas iniciales del capítulo demuestran como funciona PHP, en términos de como se usa programas en la computadora de crear un resultado con información guardado en un sitio de la red. La primera prueba requiere el uso de un archivo que puse en mi servidor de red en mi primera etapa de pruebas, time.php. Esta prueba demostró como un sketch en Processing o un microcontrolador puede extraer información de un sitio en el internet, con un intercambio de secuencias de caracteres. La serie de pruebas que seguía en que se usa la dirección del sitio para pedir información, presentó un reto un poco más grande. Este tiene que ver más con el uso de PHP como idioma de programación. Es un idioma emergente, entonces tengo ganas aprender manejarlo. Para más sobre PHP, visita php.net. W3schools ofrece una lección de PHP también.

E-mail funciona en la misma manera que sitios...un servidor guarda la información, que está pedido por un cliente. Si envío un e-mail, sale de la puerta de mi computadora, y llega al servidor del email del recipiente. Cuando el programa del email del recipiente pide información del servidor, el servidor envía el email al recipiente. El protocolo para el transporte para este tipo de mensajes se llame el protocolo sencillo de transporte de correo (Simple Mail Transport Protocol, o SMTP), semejante al HTTP que usa sitios de la red. Para la prueba que describe el libro con el uso de email en la linea comanda, usé el email de mi servidor de web, projectpageone.com.

La parte gloriosa de todos estos intercambios es que son basados en texto....la programación es sencillo, y se puede acceder esta información con celulares, microcontroladores, y varios otros dispositivos con conexión al internet, sin usar una computadora. En mi opinión, tiene una potencial extraordinaria para el futuro, y objetos que se comunican.

construyendo el proyecto: varios cambios y el proceso de hacerlo

Exito Significa Success
Este proyecto fue relativamente fácil de armar. El intento del proyecto es que un gato envía un email. Aunque nosotros tenemos tecladoras y mouses para nuestra interfaz con la computadora, un gato no tiene manera para interactuar digitalmente. Sin embargo, si nosotros le da el gato una interfaz, puede comunicar en maneras originales. En el caso de nuestro proyecto, el interfaz es una colchoneta. Cuando el gato se acuesta, envía un señal a la computadora que el gato está. Este señal provoca un programa CGI, que le envía un email a un recipiente, diciendo que el gato está en la colchoneta. Este email incluye un vinculo a un sitio de internet, que cuando lo visita el recipiente del email, él o ella ve una foto del gato en la colchoneta. Yo no tengo gato. Más importante es que no tuve acceso a las resistencias de presión que necesitaba para construir una colchoneta que respondía a la presencia del cuerpo caliente de un gato. Entonces, improvisé, como verás.

Sigue pronto...

 
contacto

amhasler[at]gmail[dot]com

 
textos
Making Things Talk
 
Getting Started with Arduino
 
seminarios de Sparkfun
 
otros vínculos
Processing
 
Arduino
 
Estado Lateral
 
Adafruit
 
AVRFreaks
 
Doing the Projects in Making Things Talk