Étape 4: Firmware
Fonctions du réseau TCP/IP stack et base
Pile TCP/IP "libre" de Microchip fournit toutes les fonctions réseau , que nous avons besoin d’exister sur un réseau domestique et de saisir les données de Twitter. La pile est open source et libre-comme-en-bière, mais la licence de Microchip interdit de distribution. En raison de problèmes de licence, nous mettons uniquement le code source de notre domaine public dans le projet Google Code SVN, apprendre comment télécharger et compiler la source ici.
La pile a un client Dynamic Host Configuration Protocol qui configure automatiquement les paramètres réseau à l’aide du serveur DHCP sur votre réseau local. La #twatch nécessite un serveur DHCP, mais la grande majorité des routeurs et des réseaux ont cette option. L’adresse IP, masque, passerelle et premier serveur DNS sont affichés sur l’écran LCD jusqu'à ce que les données de Twitter valide sont disponibles.
La pile comprend également de Microchip annoncer serveur. Lorsque l’adresse IP est acquis par DHCP, le #twatch annonce son adresse IP avec un paquet de diffuser à tous les ordinateurs sur le réseau local. Utilisez l’utilitaire MCHPDetect.exe dans l’archive du projet pour afficher ces paquets.
Enfin, nous avons inclus un serveur ping (IMCP). Utilisez n’importe quel client de ping pour vérifier si le #twatch est vivante sur le réseau.
Client TCP Twitter
La tendance de Twitter suite programme est un simple client TCP, semblable à un navigateur web, qui extrait des données de serveurs web. API de Twitter nous donnera des données dans divers formats. Nous avons utilisé le format JSON léger car il est plus facile pour la puce PIC de faible puissance à décoder, check out JSONView si vous utilisez Firefox.
Après que la #twatch configure automatiquement les paramètres réseau, le client Twitter TCP prend le contrôle et s’empare de l' actuel sujets tendances. Il parcourt la cette datafeed JSON et recherche la balise « name ». Jusqu'à 10 sujets tendances sont copiés dans un mémoire tampon d’octets 225. Un tableau distinct enregistre la position de fin de chaque rubrique dans la mémoire tampon, donc nous pouvons récupérer les sujets à l’étape suivante.
Ensuite, le #twatch recherche Twitter pour 2 tweets pour chaque sujet. Il ajoute chaque sujet à la fin de la JSON Twitter url de recherche, des caractères spéciaux comme les espaces et la ponctuation sont codés URL.
Le client TCP analyse à travers les résultats de recherche et recherche des tweets qui suivent l’étiquette de « texte ». Tweets ont plusieurs couches de codage. Nous décoder les caractères réservés au HTML comme l’esperluette (&) et les guillemets (") parce que l’écran LCD peut afficher. Supprimons les caractères internationaux UTF8 parce que l’écran LCD HD44780 ne les a pas dans son jeu.
Les tweets analysées, décodés sont stockés dans un mémoire tampon d’octets 2100, un tableau supplémentaire marque le début et la fin de chaque tweet dans la mémoire tampon. RAM espace a été un gros problème sur le circuit de 18F67J60, il a seulement sur 4000bytes total, mais la mémoire tampon d’octets 2100 semble assez grand pour gérer 20 tweets de taille moyenne. Nous avons pris soin de protéger contre des problèmes de mémoire, et nous avons testé le client dans des conditions de RAM réduites pour s’assurer qu’il ne parvient pas gracieusement lors d’erreurs.
Twitter est bien connu pour son indisponibilité occasionnelle. Si le #twatch ne peut pas se connecter à Twitter, il affiche un message d’erreur de connexion et les tentatives deux fois. Si elle ne peut pas se connecter après trois essais, il attend cinq minutes avant de réessayer. Ce qui donne une chance de résoudre leurs problèmes sans être martelé par #twatch requêtes de Twitter.
Le #twatch s’empare de tendance fraîche et tweet alimente toutes les cinq minutes. Twitter met une limite sur le nombre de requêtes client peut faire, alors soyez prudent sur l’actualisation plus souvent. Twitter permet la mises à jour de la rubrique des tendances de 150 à l’heure et les requêtes de recherche « beaucoup plus ».
Serveur TCP en mode réseau LCD sac à dos
Le #twatch peut également afficher des informations d’état système de programmes tels que LCD Smartie. Le #twatch dispose d’un serveur TCP sur le port 1337 qui accepte les orbitales matrice formatée commandes. Cela fournit également un contrôle sur le rétro-éclairage LCD. Nous allons vous montrer comment faire pour rediriger LCD Smartie depuis un port COM sur le serveur TCP de #twatch dans la deuxième partie de notre article #twatch.