Faire un bouton facile tweet la manière dure: 6 étapes

Faire un bouton facile tweet la manière dure: 6 étapes

Table des matières:

Anonim

Il existe plusieurs façons de tweeter un microcontrôleur. Les méthodes faciles sont bien couvertes dans d'autres instructables.

  1. Connectez-le à un ordinateur exécutant un script Python ou similaire.
  2. Connectez-le à un routeur piraté (gentil - vous savez qui vous êtes).
  3. Utilisation d'un serveur proxy tiers, par exemple ThingTweet, la bibliothèque Arduino de NeoCat, Arduino Tweet Library.
Une méthode mal maîtrisée consiste à gérer l’ensemble du processus de génération d’un tweet à l’aide du microcontrôleur uniquement. Cette méthode présente quelques avantages par rapport aux autres méthodes.

  • Il ne nécessite pas d’ordinateur / routeur externe.
  • Il n'a pas les risques de sécurité de la méthode trois. Passer des informations d'identification de sécurité sur un transport non sécurisé est risqué. Si vous utilisez un serveur proxy pour générer vos tweets, assurez-vous de bien comprendre les risques.
Bien entendu, cette méthode présente également des inconvénients en termes de taille et de complexité du code; c'est pourquoi je l'ai appelé la "voie dure".

Le but de cette instruction est de donner aux autres un cadre autonome de base pour générer des Tweets à partir d’un microcontrôleur. L’application elle-même est assez simple; appuyez sur le bouton et il génère un Tweet semi-aléatoire.

Provisions:

Étape 1: Pièces

J'ai utilisé la carte de découverte STM32 (STM32F103RG) pour ce projet, car je la connaissais bien et j'en avais une sous la main. La plupart du code situé au-dessus du niveau du pilote (easybutton.c, nokia5110.c et wiznet5100.c) doit être indépendant de la plate-forme. Par conséquent, le portage du code sur d'autres microcontrôleurs doit être simple.

Quelques pièces seulement sont nécessaires pour ce projet

  • STM32 Discovery Board ou similaire
  • Module de réseau WIZnet W5100 -
  • Ecran LCD graphique du Nokia 5110 -
  • Breadboard Power Supply 5V / 3.3V -
  • Staples® Easy ButtonTM -

Étape 2: Modifier le bouton Easy

Modifier le bouton facile de Staples est, pour forger une phrase, facile.

  1. Retirez les quatre pieds en caoutchouc et les quatre petites vis situées sous eux.
  2. Dessouder les fils Vss et Vdd qui se connectent aux bornes de la batterie.
  3. Retirez les bornes de la batterie.
  4. Souder de nouveaux fils aux pads Vss et Vdd.
  5. Souder un fil au plot vide près du commutateur à bouton-poussoir (voir image).
  6. Percez un trou dans le compartiment à piles et passez les trois fils.
  7. Remontez le bouton.
Vous allez maintenant avoir un bouton avec trois fils qui sortent.
  • Vss - sol
  • Vdd - tension d'alimentation positive (3V bien qu'il semble gérer assez facilement 3,3V)
  • Sens du bouton - 0V passant à 3V lorsque le bouton est enfoncé.

Étape 3: Schéma du matériel

Le matériel est assez basique. Les contraintes de temps l'ont amenée à rester sur une planche à pain, mais je prévois de créer prochainement un circuit plus permanent avec toutes les pièces insérées dans une petite base située sous le bouton.

L’alimentation fournit au Discovery Board 5V, puis le régulateur intégré abaisse à 3,3V pour faire fonctionner tous les périphériques.

Le bouton modifié est connecté au PA1 du Discovery Board et alimenté en 3,3V, ce qui ne semble pas affecter son fonctionnement standard (la bande son "that was easy").

Le module réseau WIZnet W5100 est connecté au périphérique SPI1 (broches PA5, PA6 et PA7) avec des connexions supplémentaires pour / Reset (broche PA2) et / Slave Select (broche PA4).

Le module LCD graphique du Nokia 5110 est connecté au périphérique SPI2 (broches PB13 et PB15) avec des connexions supplémentaires pour / Réinitialiser (broche PB10), Données / Commande (broche PB11) et / Slave Select (broche PB12).

Un grand nombre de broches et de périphériques d’E / S universels restent dans Discovery Board pour des applications de Twitter plus avancées à l’avenir.

Étape 4: Modules de flux de travail et de code

Le module main.c contient le workflow du projet (voir image). Après l’initialisation de la carte du microcontrôleur, une requête est envoyée au serveur DHCP du réseau pour obtenir une adresse IP et les paramètres réseau. Ensuite, une demande est envoyée à un serveur Simple Network Time Protocol pour obtenir l'heure et la date actuelles. Le code entre ensuite dans une boucle qui attend que vous naviguiez jusqu'à l'adresse IP et définissez les paramètres Oauth. Une fois les paramètres définis, le code attend que vous appuyiez sur le bouton facile, puis Tweets un message aléatoire de la sélection fournie.

Le fichier binaire est actuellement à un peu moins de 35K en taille. Le code n'est pas actuellement optimisé, il devrait donc être possible d'obtenir le binaire de moins de 32 Ko avec un peu de travail; bien sûr, cela dépend de la plate-forme et du compilateur.

Vous trouverez ci-dessous un aperçu des modules de code source du projet. Les contraintes de temps signifient que le code n'est pas aussi bien commenté que je le souhaiterais habituellement, mais avec la documentation de cette instruction, les modules devraient être assez faciles à suivre.

Commun

dictionnaire.c

  • une classe d'assistance utile qui contrôle une liste chaînée de paires nom / valeur.
Cryptage

sha1.c

hmacsha1.c

  • Utilisé pour créer un hachage de la demande OAuth, puis le chiffrer avec le secret du consommateur et le secret du jeton d'accès.
  • Je ne peux pas prendre le crédit pour ces modules; ils proviennent en grande partie de la bibliothèque de cryptage AVR (http://www.das-labor.org/wiki/Crypto-avr-lib).
base64.c
  • Base64 encoder et décoder.

Les chauffeurs

easybutton.c

  • Pilote pour le bouton Staples Easy modifié.
nokia5110.c
  • Pilote LCD graphique Nokia 5100 (SPI).
wiznet5100.c
  • Pilote de module de réseau WIZnet W5110 (SPI).

Protocoles

Transport

udp.c

tcp.c

  • Le module WIZnet prend en charge ces deux protocoles de couche de transport, donc techniquement, ils relèvent également des modules de pilotes, mais ils ont été séparés pour des raisons de clarté.

Application

formdata.c

  • Méthodes client HTTP pour effectuer des requêtes GET et POST sur un serveur Web.
  • Méthodes de serveur HTTP pour accepter les appels GET et POST entrants.
dhcp.c
  • Obtenez une adresse IP, un masque de sous-réseau, une passerelle et l'adresse IP du serveur DNS auprès du serveur DHCP du réseau.
dns.c
  • Résoudre une URL donnée en une adresse IP correspondante.
sntp.c
  • OAuth exige un horodatage précis; Ce module demande l'heure actuelle à un serveur Simple Network Time Protocol.

Serveur Web

serveur web.c

  • Un écouteur pour les requêtes HTTP GET et POST.
  • Permet de définir la clé de consommateur OAuth, le secret de consommateur, le jeton d'accès et le secret de jeton d'accès.

Gazouillement

twitter.c

  • Implémentation de l'API Twitter (seule la mise à jour de statut est actuellement utilisée).
  • La majeure partie des charges lourdes est gérée par le module OAuth.
oauth.c
  • Le module de base du cadre Twitter.
  • Générez un identifiant unique pour la requête (nonce).
  • Générez l'horodatage de la demande.
  • Générez la base de signature pour la demande OAuth.
  • Calcule un hachage de la base de signature (SHA1).
  • Signez le hachage en utilisant le secret du consommateur et le secret du jeton d'accès (HMAC-SHA1).
  • Envoyez la demande signée au serveur Web (HTTP GET ou POST).

Étape 5: Créer une nouvelle application Twitter

Pour pouvoir tweeter, vous devez disposer des éléments suivants:
  • La clé du consommateur
  • Secret du consommateur
  • Jeton d'accès
  • Secret de jeton d'accès
La clé de consommateur indique à Twitter quelle application envoie le Tweet.

Le jeton indique à Twitter quel utilisateur tweet.

Le secret du consommateur et le secret du jeton ne sont pas envoyés à l'API Twitter, mais servent à calculer un hachage cryptographique de la demande, utilisé comme signature pour empêcher toute falsification. La demande comprend un identifiant unique (nonce) et un horodatage qui doit être dans les cinq minutes suivant l'heure UTC. Une seule demande sera acceptée pour un appariement nonce / horodatage donné.

Pour obtenir ces clés / secrets, vous devez créer une nouvelle application Twitter.

Accédez à http://dev.twitter.com/apps - utilisez vos identifiants Twitter pour vous connecter.

Sélectionnez "Enregistrer une nouvelle application".

Entrez les détails de l'application

  • Nom de l'application - tout ce que vous aimez
  • Description - tout ce que vous aimez
  • Site Web de l'application - (obligatoire) tout ce que vous aimez
  • Organisation - tout ce que vous aimez (facultatif)
  • Type d'application - Client
  • Type d'accès par défaut - Lecture et écriture
  • Icône de l'application - utilisez les valeurs par défaut ou téléchargez votre propre
Cela créera une nouvelle application et vous donnera une clé de consommateur et un secret de consommateur.

Normalement, pour les applications, vous demanderiez un jeton d'accès et un secret de jeton pour chaque utilisateur. dans ce cas, il n'y aura qu'un seul utilisateur pour l'application, il y a un raccourci. Dans la page des paramètres de l'application, sélectionnez "Mon jeton d'accès" pour obtenir un jeton d'accès et un secret de jeton d'accès.

Félicitations, vous êtes maintenant prêt à faire votre premier tweet.

Étape 6: Opération

Le fonctionnement de ce projet est simple
  1. Connectez la prise Ethernet à votre réseau / routeur.
  2. Vérifiez l'écran LCD pour voir quelle adresse IP a été attribuée.
  3. Dans un navigateur Web, accédez à l'adresse IP (par exemple,
  4. Entrez la clé du consommateur, le secret du consommateur, le jeton d'accès et le secret du jeton d'accès que vous avez obtenus, puis cliquez sur Définir.
  5. L'écran LCD affichera maintenant «Prêt» et le bouton sera armé.
  6. Tweetez jusqu'à ce que vous vous ennuyiez ou que vos amis cessent de vous suivre:)