Étape 4: Étape 4: le Code
Donc, je suis sûr à ce stade, la plupart d'entre vous est familier avec l’IDE Arduino. Nous allons utiliser que pour télécharger notre code d’accesseur Get météo sur l’Arduino. J’ai joint une version nettoyée et documentée du code à cette étape, mais nous allons passer dessus un peu ici (pas laborieusement, juste assez pour vous comprenez ce qui se passe).
La première partie du code est notre #defines, juste pour rendre la vie un peu plus facile. Nous avons aussi quelques variable en haut qui nous aident à analyser les données un peu plus faciles.
Setup() fonction
Nous y voilà, c’est comment nous nous connectons nos ESP à notre Arduino. J’ai réservé un espace en haut pour la chaîne de réponse. Il s’agit d’un cale-over d’une itération précédente du code qui avait répété pile tombe en panne, parce que la. JSON accablé juste mon petit micro. Vous pouvez probablement jeter cette ligne de code sur, je l’ai gardé. Après cela, vous voyez que je démarre un I2C (TWI, fil, SMB, quoi que...) connexion. C’est où mes données se passe réellement. Vient ensuite le numéro de série. Il s’agit de la connexion à l’ESP, vous remarquerez la 115200 baud. C’est SUPER important de faire les choses, sinon votre Arduino est parlant l’anglais et l’ESP est parlant cantonais et tout le monde est confus. Vous remarquerez que les commandes AT sont de retour, que je vous ai dit qu’ils serait importants ! Notre code vérifie d’abord s’assurer que l’appareil est prêt à effectuer une réinitialisation du logiciel et d’attendre l’ESP répondre. Après cela, nous avons mis l’ESP en mode station et autoriser les connexions multiples. Nous pouvons nous connecter à APs multiples, mais pour notre usage maintenant nous n’utiliserons une des connexions. C’est suite à une tentative de connexion au WiFi (fonction suivante nous regardons). Une fois que nous avons avec succès (j’espère) connecté au WiFi nous pousser et vous connecter à notre hôte (dans ce cas Wunderground).
connectWiFi() Function
Cette fonction est la viande et pommes de terre de notre code. Donc ce que nous avons ici est une commande (AT + CWJAP) qui est révélateur de notre ESP pour rejoindre un point d’accès. Elle est suivie de l’AP SSID et le mot de passe. Si l’ESP renvoie « OK » puis nous avons rejoint avec succès de l’AP. Si ce n’est pas le cas, la connexion a échoué. Si vous utilisez un méga ou autre multiples serial microcontrôleur, que vous pouvez lui affecter jusqu'à messages envoyer le PC de ce qui se passe. Je vous envoie mes données sur I2C d’un FPGA, donc j’ai juste jeté les réponses.
Loop() fonction
Il s’agit de la dernière plus grande partie du code. Cette zone se connecte à l’API de Weather Underground et télécharge les données. Une fois l’ESP commence à envoyer des données en arrière nous pousser dans la variable de chaîne de réponse que nous avons déclaré plus tôt. J’ai capturé les données ligne par ligne (commençant par "et finissant avec), et cherché les données j’ai besoin (temp_f et météo). Cela permet de maintenir la quantité de données que l’Arduino essaie de magasin/analyser à la fois à un minimum.
Autres fonctions
La plupart de ce code est assez bien documenté, donc vous devriez être en mesure de comprendre ce qui se passe dans le reste de celui-ci. J’ai traverser et recherchez temp_f et météo. J’ai ensuite convertir ces valeurs en octets à envoyer à mon FPGA (en gardant la taille minimale). J’ai converti le temps en une valeur de 1 octet. Cela me donne jusqu'à 256 codes météo différents. J’ai ensuite utilisé une méthode simple pour convertir la température en décimale codée en binaire et envoyer que pour le FPGA dans 2 paquets de 1 octet (total sur un afficheur sept segments de 4 chiffres).
Crédits
Ce code s’est partiellement de mon propre travail et partiellement de celui des autres. Je ne me souviens pas de toutes les sources que j’ai pu glaner des idées et le code de, mais si quelqu'un d'entre vous arrive à d’autres travaux qui ressemble à ceci, faites le moi savent. J’aimerais donner le crédit où elle est due.
cleanWunderground.ino