Étape 7: Firmware
Remarque : Sur cette étape, j’ai joint autonome code de démonstration pour la molette et de la communication MCP3008 SPI comme référence. C’est le code de barebones pour chaque type d’entrée. C’est incroyable de voir comment il n’y a aucun tutoriels pour utiliser le MCP3008 avec Arduino ou Launchpad ! Je ferai une Instructable juste pour expliquer cela...
Comme indiqué précédemment, ce projet a deux microcontrôleurs différents qui gèrent des différents contrôles dans le circuit. Le microcontrôleur primaire est responsable de la lecture d’entrée de 6 des contrôles analogiques, 5 boutons de lecture, interprétant l’encodeur rotatif et son bouton poussoir intégré et données série passant le microcontrôleur secondaire à l’ordinateur. Le microcontrôleur secondaire est responsable de la communication de SPI avec le convertisseur analogique-numérique de MCP3008 et interprétation d’entrée du circuit du clavier (qui comprend le clavier, l’interrupteur de pont et le commutateur de mode). Ces ICs travaillent main dans la main pour nous donner un large éventail de contrôles !
Vous allez avoir besoin de quelques petites choses à programmer les microcontrôleurs.
Matériaux :
- Energia, un IDE Arduino-comme pour le tremplin de TI
- Bibliothèque de l’Arduino clavier
- TI Launchpad
- MSP430G2553 (x 2)
Se mettre en place
Si vous n’avez pas utilisé/installé par défaut IDE (Studio de TI Code compositeur) pour programmer votre Launchpad avant, vous devez obtenir les pilotes pour le tremplin avant que votre ordinateur va « voir » elle. Pour obtenir l’installation initialement à l’aide de Energia, suivez ce guide. Si c’est votre première fois à l’aide de Energia, je recommande téléchargeant un couple de leurs programmes de démo super simple tout d’abord et essayer tout ça. Il est très facile et ne prend pas beaucoup de temps, je vais attendre !
Quand tu rentreras de cela, nous avons besoin d’installer la bibliothèque de clavier. Il est écrit pour Arduino, mais il travaille avec Energia aussi. Pour installer la bibliothèque, trouver votre dossier de Energia (habituellement dans les Documents) et extrayez le clavier bibliothèque zip dans le dossier Energia\libraries.
Assurez-vous que vous avez Energia configuré pour programmer un MSP430G2553 sur un tableau de bord, et que vous devez la sélectionner de port COM correcte. Suivez le guide ci-dessus pour mettre en place et de télécharger un programme de démonstration afin que vous sachiez que ça marche !
Energia doit être tous sur programme maintenant !
Comprendre le protocole
Les microcontrôleurs communiquent avec l’ordinateur en utilisant un protocole personnalisé que j’ai fait. Il utilise seulement deux octets (16 bits) messages pour indiquer les informations d’ordinateur sur tous les contrôles. C’était dans le but de réduire toute latence possible et juste de pratiquer mes compétences en mathématiques au niveau du bit. Notez que les données brutes de série ne soient pas humaines lisible le moins du monde ! Une explication du protocole est incluse dans cette section pour que vous puissiez comprendre comment tout le code fonctionne mieux. Vous n’avez pas à lire cette section, mais il peut vous aider si vous souhaitez modifier ce projet.
Format général
Le format général pour tous les messages est comme suit :
[00000] | [0] | [0000000000]
ID Num | Type | Valeur
Le numéro d’identification nous dit quel contrôle a envoyé le message. Le type nous dit si c’est un appareil photo numérique (0) ou analogique (1) commande. Et la valeur n’est qu’un espace pour le contrôle de mettre quelque message qu’il doit envoyer.
Analog
Les messages analogiques sont super simples. Ils sont mis en forme comme suit :
[00000] | [1] | [0000000000]
ID Num | Type | 10-bit ADC valeur
Semblera familier ? C’est parce que c’est exactement la même chose qu’un message général, seul bit type sera toujours un 1 pour commandes analogiques. Les convertisseurs a/n que nous arrive d’être à l’aide de valeurs de sortie 10 bits, comment commode !
Digital
Le format des commandes numériques exactement comme les contrôles analogiques, excepté bit type sera toujours un 0 pour commandes numériques. La valeur est simplement une valeur booléenne, le dernier morceau sera un 1 (pour high digital) ou un 0 (pour « low » numérique).
Clavier
C’est où il commence à devenir un peu plus compliqué. Le clavier doit communiquer plusieurs valeurs différentes afin de fonctionner correctement. Pour cette raison, ses messages sont formatés comme suit :
[00000] | [0] | [0000] | [00] | [0] | [00]
Numéro d’identification | Type | Key ID | Marche/arrêt | Mode | Pont | S’en fout
Le clavier sera toujours un contrôle numérique (type = 0). Le numéro d’identification de 0 est réservé pour l’entrée de clavier donc les 6 premiers bits sera toujours [000000] pour les messages de clavier. Les quatre bits sont le numéro d’identification de la clé. Puisque nous avons un clavier à 12 touches, nous utilisons des numéros d’ID 0 à 11. Toutefois, les numéros restants peuvent être utilisés pour d’autres choses, étant donné que le matériel ne recevront jamais eux comme entrées. J’ai décidé d’utiliser le numéro d’identification de clé 15 pour indiquer le pont changer les commandes (envoyés lorsque le commutateur de pont est retourné). Cela nous permet de mettre le pont actif et PFL avec le sélecteur de pont. Le bit suivant nous dit juste si le bouton est enfoncé (sur) ou relâché (off). Les bits de deux suivants représentent le mode sélectionné. Il varie de 0 à 2 (donc nous avons besoin de deux bits pour représenter le mode). Le bit suivant représente la platine choisie, pont 0 ou 1 de pont. Les deux derniers bits que nous ne se soucient et ils ne sera pas être interprétés.
Encodeur rotatif
La molette n’est pas aussi compliquée, mais notez qu’il a aussi un numéro d’identification réservé 1 à commandes numériques. Les messages de molette sont mis en forme comme suit :
[00001] | [0] | [00] | [0] | [0000000]
Numéro d’identification | Type | Valeur | Super Vitesse | S’en fout
Le numéro d’identification de l’encodeur rotatif sera toujours 1 et le type sera toujours 0. La valeur a trois significations différentes, 0 signifie rotation vers la droite, 1 signifie rotation vers la gauche et 2 signifie un double-clic, 3 n’est pas utilisé. Les derniers bits 7 que nous ne se soucient et ils ne sera pas être interprétés.
C’est tout là est à lui ! Le protocole n’est vraiment pas difficile à comprendre. Et c’est un bon moyen de pratiquer les compétences en mathématiques au niveau du bit et étirer les limites sur comment petit format, vous pouvez obtenir les paquets de données. J’ai décidé d’utiliser les 5 bits pour le numéro d’identification afin que le protocole peut supporter jusqu'à 32 entrées numériques et 32 entrées analogiques (5 ^ 2 = 32).