Paso 4: Firmware
Funciones de TCP/IP pila y base red
'Libre' pila de TCP/IP de microchip proporciona todas las funciones de red que necesitamos para existir en una red doméstica y coge datos de Twitter. La pila es de código abierto y libre-como-de-cerveza, pero la licencia Microchip prohíbe distribución. Debido a problemas de licencias, sólo estamos poniendo nuestro código fuente de dominio público en el proyecto Google código SVN, aprende a descargar y compilar la fuente aquí.
La pila tiene un cliente de Protocolo de configuración dinámica de Host que configura automáticamente los ajustes de red utilizando el servidor DHCP en su red local. Los #twatch requiere un servidor DHCP, pero la gran mayoría de redes y routers tener esto habilitado. La dirección IP, máscara, gateway y primer servidor DNS se muestran en la pantalla LCD hasta datos válidos de Twitter están disponibles.
La pila también incluye Microchip anunciar servidor. Cuando se adquiere la dirección IP por DHCP, la #twatch anuncia su dirección IP con un paquete de broadcast a todos los equipos de la red local. La utilidad MCHPDetect.exe en el archivo de proyecto para ver estos paquetes.
Por último, incluimos un servidor ping (IMCP). Utilice a cualquier cliente de ping para comprobar si la #twatch está vivo en la red.
Twitter cliente TCP
La tendencia de Twitter programa es un sencillo cliente TCP, similar a un navegador web, que extrae datos desde servidores web. API de Twitter nos darán datos en una variedad de formatos. Utilizamos el formato JSON ligero porque es más fácil para el chip de baja potencia PIC decodificar, Echale JSONView Si utilizas Firefox.
Después de la #twatch configura automáticamente la configuración de red, el cliente de Twitter TCP toma el control y agarra los actuales temas. Se busca a través de este cuantitativo datafeed JSON y busca la etiqueta "nombre". Hasta 10 temas se copian en un búfer de bytes 225. Una matriz distinta almacena la posición final de cada tema en el buffer por lo que podemos recuperar los temas en el siguiente paso.
A continuación, el #twatch de búsquedas de Twitter para 2 tweets para cada tema. Agrega cada tema al final de la JSON Twitter url de búsqueda, caracteres especiales como espacios y puntuación son codificados de URL.
El cliente TCP analiza a través de los resultados de búsqueda y busca tweets que la etiqueta "texto". Tweets con múltiples capas de codificación. Decodificar HTML reservados personajes como ampersand (&) y Comillas ('') porque la pantalla LCD puede mostrarlos. Nos quite caracteres internacionales UTF8 porque el LCD HD44780 no tenerlos en su carácter.
Los tweets analizados, descifrados se almacenan en un búfer de bytes 2100, una matriz adicional marca el inicio y final de cada tweet en el búfer. Espacio de RAM era un gran problema en el chip 18F67J60, sólo tiene de 4000bytes total, pero el búfer de bytes 2100 parece lo suficientemente grande como para manejar 20 tweets de tamaño medio. Tomamos especial cuidado en proteger contra problemas de memoria, y probamos el cliente bajo condiciones reducidas de RAM para asegurarse de que no puede con gracia durante errores.
Twitter es conocido por su tiempo ocasional. Si el #twatch no se puede conectar a Twitter, muestra un mensaje de error de conexión y los reintentos dos veces. Si no se puede conectar después de tres intentos, espera cinco minutos antes de intentar otra vez. Este da Twitter oportunidad de arreglar sus problemas sin ser martillado por consultas #twatch.
El #twatch agarra tendencia fresca y tweet alimenta cada cinco minutos. Twitter pone un límite en el número de consultas de un cliente puede hacer, así que tenga cuidado acerca de actualizar más a menudo. Twitter permite actualizaciones de tema tendencias 150 por hora y "mucho más" consultas de búsqueda.
Red LCD mochila modo TCP del servidor
El #twatch también puede mostrar información de estado del sistema de programas como LCD Smartie. El #twatch dispone de un servidor TCP en el puerto 1337 que acepta comandos de formato matriz Orbital. Esto también proporciona control de la retroiluminación de la LCD. Te mostramos cómo redireccionar Smartie LCD desde un puerto COM en el servidor TCP de #twatch en la segunda parte de nuestro artículo de #twatch.