Étape 5: Création d’une esquisse
Sketch :
Mon croquis complet est disponible dans le fichier .zip à l’étape suivante, cependant, il est utile d’avoir une idée du plan général pour le rendre plus facile à adapter.
Interrompre :
Nous avons besoin piloter la radio en modulant la broche D5 haut/bas à une vitesse de 50 bauds. Autrement dit, chaque 20ms nous devons représenter un nouveau bit de données comme une haute ou basse pour un 1 ou un 0 respectivement. Nous utilisons ce flux de données pour encoder une chaîne de texte. Il existe plusieurs méthodes pour cela, mais 7-bit ASCII est la plus fréquente. Nous allons garder un double tampon contenant la chaîne de transmission et une copie que nous préparons avec les données mises à jour.
Afin d’obtenir le plus de transmission efficace et fiable et surtout Donnez-nous précis calendrier, nous envoyons la chaîne sous interruption. Cela nécessite une pièce courte et rapide du code simplement pour garder une trace de quel bit de l’octet de la chaîne nous transmettent actuellement et passer le bit suivant chaque fois. Lorsque nous aurons fini une corde nous basculons les tampon de la chaîne, passage à envoyer les données les plus récentes de la mémoire tampon d’autre.
Boucle principale :
Dans la boucle principale, nous faire circuler, les capteurs et le GPS lire chaque fois qu’ils sont prêts. Les dernières valeurs sont stockées dans les variables. Lorsque le GPS est prêt à fournir un nouvel emplacement, nous lisons que, décoder et mettre à jour la copie de travail de la chaîne. Il faut désactiver les interruptions brièvement afin de mettre à jour la mémoire tampon afin que nous ne finissent pas transmettre une chaîne moitié construit. En conséquence, nous mettons à jour la mémoire tampon que lorsqu’un nouvel emplacement du GPS est prêt, pour que nous n’avons pas interruptions depuis trop longtemps.
Chaque fois que nous basculons tampons que nous définir un indicateur indiquant la boucle principale qu’une nouvelle transmission est démarrée. La corde usagée qui a été envoyée juste est alors écrit sur la carte SD avant d’ouvrir la mémoire tampon jusqu'à la mise à jour.
Nous devons également garder un oeil sur le GPS pour s’assurer qu’il reste en mode avion. La raison pour laquelle que nous utilisons un GPS Ublox module est que l’appareil fonctionnera jusqu'à des hauteurs qui nous visiterons - GPS beaucoup ne pas faire fonctionner au-dessus de 14 km. Afin de rendre le travail Ublox à haute altitude, il faut s’assurer qu’il est dans le mode correct.
Ports et capteurs :
Le jury peut parler au module GPS par I2C ou UART. J’ai choisi d’utiliser l’interface I2C pour que je puisse utiliser l’UART pour le débogage en attachant au port série du PC. Nous utiliserons également le I2C pour parler avec le capteur de pression Honeywell, mais les deux semblent coexister sur les lignes I2C sans conflit.
Le Comité prendra deux capteurs de température DS18B20. J’ai utilisé une interne et une externe. Ceux-ci sont très sensibles au temps et j’avais besoin d’éteindre les interruptions pendant quelques microsecondes en lisant leur. Ils sont par ailleurs très facile à utiliser. J’ai utilisé une copie de la bibliothèque de fils qui prétendait avoir moins de plantage que l’Arduino natif un. Vrai ou pas, il a bien fonctionné.
La carte SD est assis sur les broches SPI et est gérée par la bibliothèque de SDfat. Carte SD écrit prend qu'une charge de mémoire et un des vrais trucs à cette esquisse essayait de contrôler combien SRAM gratuit était disponible.