Étape 5: Rendre la conversation ATtiny vous
Dans le cas de l’Arduino, vous pouvez avoir une connexion série sur votre ordinateur et le moniteur de valeurs en utilisant le Serial Monitor. Malheureusement notre ATtiny ne pas ces capacités intégrées parce qu’il manque une puce FTDI pour communication série. MAIS il ne faut pas être triste à ce sujet : nous pouvons établir une communication série logicielle sur notre ATtiny et « abuse » notre Arduino comme expéditeur de série. Cela signifie que nous pouvons avoir le ATtiny nous parle par le biais de l’Arduino (et l’inverse s’il faut que).
Heureusement, nous n’avez pas à implémenter cela sur nous-même depuis Martin Thomas et Colin Gittins fait une belle bibliothèque et mettez-le sur github : avr-softuart. Nous allons utiliser cela pour créer un petit programme pour notre ATtiny qui transmet des valeurs de test via serial transfert à notre ordinateur à l’aide de notre Arduino. Vous pouvez l’utiliser par la suite dans votre propre programme pour certains basic « déboguer ».
Un mot d’avertissement: « softuart » implémente UART fonctions dans le logiciel, ce qui signifie qu’il est beaucoup plus lente que la mise en oeuvre par matériel UART. Cela signifie également que votre ATtiny doit faire quelques gros tout en gérant la communication sérielle. C’est pourquoi je recommande d’utiliser « softuart » uniquement lors du débogage de votre projet.
Commençons par notre programme pour le ATtiny. Dans un premier temps, nous aurons besoin de télécharger les sources de l’avr-softuart le dépôt github. Nous aurons besoin de suivante comprend:
--
#include < avr/io.h >
#include < avr/interrupt.h >
#include < util/delay.h >
#include « softuart.h »
--
Dans la fie softuart.h , il faut définir le SOFTUART_TXBIT dans la ligne 18 pour le code pin correct (dans notre exemple, nous définissons pour PB1). Dans la boucle principale, nous commençons la communication série avec les instructions suivantes :
--
softuart_init() ;
softuart_turn_rx_off() ; Nous ne recevons les données série
SEI() ; Cela permet aux interupts, qui sont nécessaires pour softuart
--
Le reste est assez facile. Par exemple, si vous souhaitez transmettre un personnage, vous pouvez appeler la softuart_putchar('c') ; qui va transmettre le caractère « c ». Vous pouvez également transmettre des chaînes et, si vous incluez stdio.h, vous pouvez également envoyer les numéros au format printf. Vous pouvez avoir un regard sur les exemples dans main.c de dépôt github de softuart.
Cependant, je recommande de garder aussi simple, petit et rapide que possible. Cela signifie que vous ne devez pas inclure stdio.h et utiliser printf() puisqu’il prendra environ 1,5 Ko de la mémoire flash. Par conséquent, vous devez implémenter une fonction qui envoie les entiers sous forme de chaînes de caractères. Je l’ai fait dans le deuxième exemple pour ce tutoriel et vous pouvez obtenir le code complet dans le dépôt github. Le programme écrit juste des entiers compris entre -128 et 127 à hors série. Vous pouvez télécharger, compiler et charger le code sur votre ATtiny.
Maintenant que nous avons notre programme « parler » sur le ATtiny, nous devons préparer l’Arduino pour recevoir ces données serial et le transmettre via le port USB à notre ordinateur afin que nous pouvons lire la sortie sur un moniteur de la série. Le code est très simple et vous devez le télécharger également le dépôt github. Il reçoit les données entrantes de série avec le logiciel serial d’une certaines broches (10) avec un débit de 2400 (lent logiciel serial!) et transmet à votre ordinateur via le matériel de série avec un débit en bauds de 115 200 bauds (USB rapide!). Télécharger ce code sur votre Arduino et vous pouvez continuer avec le schéma de câblage vraiment simple ci-dessus pour mettre sur pied le tout.
Lorsque vous branchez votre Arduino à votre port USB, le ATtiny va commencer à envoyer les données sérielles à l’Arduino, qui la transmettra à notre ordinateur. Vous pouvez maintenant utiliser le Serial Monitor dans l’IDE Arduino / programmes comme écran ou minicom lire la sortie. Cela vous permet de voir ce qui se passe dans votre ATtiny en utilisant seulement 1 broches et un Arduino !
J’espère que ce tutoriel aidera vous créer des programmes ATtiny intelligents qui utilisent jusqu'à qu’une fraction de l’espace et l’énergie nécessaire par un Arduino. Vous pouvez jeter un oeil à un projet pour obtenir un exemple sur la façon de lire les données de capteur analogique d’un accéléromètre pour détecter le moment où un dispositif a été ébranlé : attiny-soundcube