Étape 7: Creuser dans le Code
IMP firmwares sont rédigés dans un langage orienté objet appelé écureuil, qui ressemble et se sent un peu comme javascript. Écureuil s’exécute dans une machine virtuelle sur le dessus de l' imp OS à l’intérieur de l’imp, erreurs d’exécution ne sera pas frapper votre appareil en mode hors connexion, et vous avez accès à un grand nombre de fonctionnalités intéressantes axées sur les OS, comme dans la mémoire tampon d’entrée périodique et simple une ligne API pour définir GPIO ou communiquer avec les périphériques.
Pour jeter un oeil à tous les choses que vous pouvez faire dans votre firmware imp, découvrez l’imp électrique QAnywhere et imp électrique travaillé page d’exemples. Pour voir quelles broches peuvent faire quoi, Découvrez la imp broche mux.
Notre code ici est assez simple. Voici notre procédure d’exploitation de base :
- Définissez des constantes
- Définissez une classe pour notre capteur de température
- Instancier notre classe pour créer un objet de capteur de température
- Lire le capteur de température
- L’agent envoie le datapoint
- Annexe nous réveiller un peu et le faire tout de nouveau
L’une des constantes sur les lignes 8 et 9 regarder un peu inquiétants, mais ils sont simples. Ce sont les paramètres pour votre thermistance - vous pouvez les trouver sur la feuille de données pour la thermistance que vous utilisez. Si vous utilisez la thermistance, j’ai lié au plus tôt, vous pouvez même garder les paramètres déjà définis ici.
Lignes 20 à 71 sont une définition de classe - c’est essentiellement un ensemble d’instructions pour savoir comment faire différentes choses importantes avec une thermistance, comme lire la température. Cela vient directement de github - c’est une pièce agréable et modulaire du code afin qu’elle puisse facilement être réutilisée.
Après cela, nous avons juste besoin de définir notre logique de haut niveau. Sur les lignes de 79 à 83, nous configurons les deux goupilles que nous utilisons. Me souviens de quand nous avons construit l’appareil - une des broches est une tigepermettent , qui permettra aux courant de circuler à travers la thermistance quand il est bas. L’autre axe est notre broche d’entrée analogique, dont nous allons utiliser pour lire la tension dans l’ensemble de la thermistance.
Sur la ligne 86, nous demandons à notre définition de classe de plus tôt pour créer un objet de thermistance. Cet objet prend les constantes que nous avons mis plus tôt et a des méthodes qui permettent de lire la température en degrés Celsius ou Fahrenheit.
Les lignes 88 à 96 sont où la magie opère - nous activer le capteur, effectuer une lecture, envoyez-le à l’agent et désactiver le capteur à nouveau pour économiser la batterie.
Et enfin, programmer un réveil en quinze minutes. Nous irons au sommeil profond pendant ce temps, économiser de la batterie :
C’est le microprogramme du périphérique - nous allons jeter un oeil à l' agent. Vous avez déjà vu la part de l’agent - nous avons mis les lignes Sparkfun clé publique et clé privée 6 et 7 de l’agent plus tôt. Au-dessous, nous avons une autre définition de classe ; celui-ci définit les méthodes permettant d’interagir avec un flux de données Sparkfun.
Lignes 62 à 65 ans sont un peu vraiment intéressant de code - il s’agit de l’hameçon utilisé par l’agent pour recevoir les nouvelles données sur la température de l’appareil. Cela se fait en inscrivant un agent « rappel » avec agent.on. Cela dit, « lorsque l’appareil vous envoie un événement appelé « temp », appeler la fonction suivante avec les données marquées avec cette étiquette ». Retour à ligne 95 du micrologiciel, nous constatons que nous avons envoyé les données indiquées « temp » avec une fonction appelée « agent.send ». C’est où que les données sont allés !
Enfin, nous voyons l’agent d’accomplir deux choses quand il commence tout d’abord en cours d’exécution. Le premier : il envoie un message de journal pour nous faire savoir qu’elle a commencé et qu’il est prêt à obtenir des données. Deuxièmement, il instancie un objet de flux de données Sparkfun avec la classe nous avons défini précédemment, nous laisser utiliser les méthodes de ces classes pour envoyer des données vers Sparkfun comme elle vient.
L’agent ne pas redémarrer ou dormir ; Il commence la première fois, l’appareil démarre avec ce modèle et continue de s’exécuter pour toujours, chaque datapoint nouvelle de manutention lorsqu’il arrive en appelant le rappel « device.on ». C’est le cerveau de l’appareil dans le nuage !
C’est le firmware ! Profitez de votre nouveau thermomètre connecté à Internet.