Allant au-delà de StandardFirmata - ajoutant le nouveau dispositif Support

INTRODUCTION

Avez-vous déjà pensé d’utiliser Firmata pour votre projet Arduino , seulement pour découvrir que le périphérique que vous souhaitez utiliser n’est pas supporté par Firmata ? Cet article illustre l’approche étape par étape, j’avais l’habitude d’ajouter le support du moteur pas à pas à PyMata et à ses associés Arduino Sketch, FirmataPlus. Après lecture de ce tutoriel, vous devriez être prêt à étendre Firmata pour votre appareil.

Avant de commencer - certains renseignements sur Arduino/Firmata généraux

En quoi consiste Firmata ? Citant la page web de Firmata, « Firmata est un protocole générique permettant de communiquer avec des microcontrôleurs de logiciel sur un ordinateur hôte. »

Arduino Firmata utilise une interface série pour transporter les informations de commande et de rapport entre un microcontrôleur Arduino et un PC, généralement à l’aide d’un lien de série/USB set à un taux de 57600 bps. Les données transférées à travers ce lien sont binaires dans la nature et le protocole est implémenté dans un modèleclient/serveur .

Le côté serveur est transféré à un microcontrôleur Arduino sous la forme d’une esquisse de l’Arduino. L’esquisse de StandardFirmata , fourni avec l' IDE Arduino, contrôle les broches de l’Arduino d’e/s, tel que commandé par le client, et signale des changements de la broche d’entrée, ainsi qu’autres informations en rapport au client. FirmataPlus est une version étendue de StandardFIrmata.

L' Arduino client utilisé pour cet article est PyMata. C’est une application Python qui est exécutée sur un PC. Celle-ci envoie les commandes à et reçoit des rapports de, le serveur de l’Arduino.

Pourquoi utiliser Firmata ?

Arduino microcontrôleurs sont de merveilleux petits dispositifs, mais processeur et sa mémoire ressources sont un peu limitées. Pour les applications qui sont processeur ou mémoire intensive, il y a souvent peu de choix mais au déchargement de la demande de ressources sur un PC afin que l’application soit réussie.

Mais ce n’est pas la seule raison pour l’utilisation de StandardFirmata. Lorsque vous développez des applications de Arduino poids plus légers, un PC peut fournir des outils et des fonctions de débogage non directement disponibles sur un microcontrôleur Arduino. À l’aide d’un serveur et un client « fixe » contribue à isoler la variabilité d’une application PC, où il est géré plus facilement. Une fois que l’application est parfaite, il peut être traduit à un standalone personnalisé, Arduino Sketch.

Pourquoi utiliser des PyMata?

Au moment d’écrire ces lignes, PyMata est le seul Python client qui implémente le protocole complet de StandardFirmata. C’est une bibliothèque multi-plateforme qui prend en charge les systèmes d’exploitation Windows, MAC et Linux dès le déballage !

En outre, PyMata a été conçu afin que les utilisateurs peuvent facilement étendu pour supporter d’autres capteurs et actionneurs, ne sont pas actuellement pris en charge par StandardFirmata.

Pas longtemps après que PyMata a été initialement publié, il a été étendu à l’appui de la bibliothèque de ton Arduino et à prendre en charge jusqu'à six simultanée HC-SR04 type sonar détecteurs de distance. Les extensions côté serveur pour que ces fonctionnalités sont fournies dans FirmataPlus.

Vue d’ensemble du PyMata Client et le serveur FirmataPlus

PyMata est une application Python multi-thread de haute performance. Son « thread de commande » traduit les appels API utilisateur dans les messages de protocole Firmata et transmet ces messages au microcontrôleur Arduino. Le « fil de journaliste » reçoit et interprète et agit sur les messages de Firmata provenant du microcontrôleur Arduino.

Une version personnalisée de StandardFirmata, appelé FirmataPlus, est incluse dans la distribution de PyMata . Actuellement, il ajoute ce qui suit à StandardFirmata :

  • Une interface de périphérique Piezo à l’aide de la bibliothèque de ton Arduino
  • Support pour multiples capteurs de distance à ultrasons à l’aide de la bibliothèque de NewPing
  • Prise en charge limitée (Arduino Uno uniquement) pour les encodeurs rotatifs à l’aide de la bibliothèque de molette adafruit
  • Un débogage imprimer fonction pour imprimer des valeurs internes de croquis à la console Python.

Comprendre la représentation des données Firmata

Firmata utilise une interface de communication série de données relatives aux transports vers et depuis l’Arduino. Le protocole de communication Firmata est dérivé du protocole MIDI qui utilise un ou plusieurs octets de 7 bits pour représenter les données. Parce que 7 bits peut contenir une valeur maximale de 128, un élément de données qui a une valeur supérieure à 128, doivent être « démontés » en plusieurs morceaux octets de 7 bits avant d’être marshalée à travers la liaison de données. Par convention, l’octet le moins significatif (LSB) d’un élément de données est envoyé d’abord, suivie de plus en plus importants éléments de l’élément de données. L’octet le plus significatif (MSB) de l’élément de données est la dernière donnée élément envoyée.

Ainsi, par exemple, si un paramètre appelé max_distance avec une valeur décimale de 525 a besoin d’être envoyés sur la liaison série, il faut tout d’abord être "démonté" en morceaux de 7 bits.

Voici une discussion sur comment cela est réalisé :

La valeur décimale de 525 équivaut à la valeur hexadécimale de 0x20D, une valeur de 2 octets. Pour obtenir le LSB, nous masquons la valeur de AND'ing avec 0x7F. « C » et Python implémentations sont montrées ci-dessous :

Après masquage, max_distance_LSB contiendra 0x0d. 0x20D & 0x7F = 0x0D

Ensuite, nous avons besoin d’isoler le MSB pour cette valeur de 2 octets. Pour ce faire, on passera de la valeur de 0x20D vers la droite, 7 places.

Après déplacement, max_distance_MSB contiendra une valeur de 0 x 04.

Lorsque les données marshalées « chunkified » sont reçues, il faut être rassemblés dans une seule valeur. Voici comment les données sont remontées en « C » et en Python

Après le remontage, la valeur est égale à une fois de plus les 525 décimale ou hexadécimale 0x20D.

Ce processus de démontage/remontage peuvent être effectuée par le client ou le serveur.

Mots clés: Arduino, Firmata, PyMata

Articles Liés

OUTILLAGE CLOUD : Ajouter un nouveau point de vente

OUTILLAGE CLOUD : Ajouter un nouveau point de vente

Ce tutoriel est fait pour y ajouter un élément de l'Amazonie. Pour les fournisseurs autres que Amazon voir tutoriel distinct.Étape 1: Placez le curseur dans la case de recherche universelle sur le nuage d'outillageÉtape 2: Scanner le code-barres sur
ALLANT au-delà de l’HORIZON avec LoRa RF1276

ALLANT au-delà de l’HORIZON avec LoRa RF1276

J'ai trouvé RF1276 émetteur/récepteur pour livrerles plus remarquables performances en termes de qualité et la portée du signal. Lors de mon premier vol, j'ai pu atteindre 56km distance au - niveau de signal de 70dB avec petites antennes de longueur
Ajouter East Asian Language Support pour Windows XP

Ajouter East Asian Language Support pour Windows XP

ce Instructable va vous apprendre comment faire pour ajouter des caractères d'Extrême-Orient vers Windows XP.J'ai aussi fait un Windows Vista ici.En d'autres termes cela permet d'ajouter des chinois, coréen, japonais, caractères ect vers Windows XP,
Mon 1er appareil ITO avec GeekNesia + Arduino Uno + Ethernet Shield et DHT21 via PubSub méthode

Mon 1er appareil ITO avec GeekNesia + Arduino Uno + Ethernet Shield et DHT21 via PubSub méthode

Geeknesia est une plateforme Internet Of Things, peu comme ThingSpeak mais c'est de l'Indonésie:). GeekNesia encore Beta j'espère il y aura une autre caractéristique de l'aimable bientôt. J'utilise Arduino uno et bouclier Ethernet pour envoyer des do
Grand choix de musique tube gratuit pour vos vidéos !

Grand choix de musique tube gratuit pour vos vidéos !

je cherchais partout pour certains cela, puis youtube étant aussi formidable comme d'habitude ajouté ce nouveau dispositif et nous a donné tout un ! Dites-moi si vous voulez savoir comment ajouter cette musique en toi vidéo, ou si vous voulez des tut
Comment ajouter un trou dans votre évier - Build.com

Comment ajouter un trou dans votre évier - Build.com

lors de l'installation d'un nouveau robinet vous pouvez avoir besoin d'un autre trou dans votre évier.  Au lieu de devoir acheter un évier tout nouveau montre ici comme Brent Holland vous montre comment vous pouvez ajouter un nouveau trou à votre évi
Coupe de bouteille de verre simple composé de parties communes [mis à jour... à nouveau]

Coupe de bouteille de verre simple composé de parties communes [mis à jour... à nouveau]

il est intéressant de savoir que vous pouvez apporter un verre d'une bouteille, une coupe tout autour de la circonférence de la gravure et diviser en deux, avec quelques astuces. Si vous envisagez d'effectuer de nombreux verres et si vous désirez obt
Comment ajouter un réservoir d’Air pour plus de capacité compresseur

Comment ajouter un réservoir d’Air pour plus de capacité compresseur

Si votre compresseur d'air petit n'est pas suffisant pour alimenter votre perceuse ou autres accessoires compresseur, vous n'avez pas à dépenser une petite fortune sur une configuration plus récente et plus grande. Avec ces instructions simples, je v
Ajouter les chevaux et économiser gaz avec filtre a la Performance System

Ajouter les chevaux et économiser gaz avec filtre a la Performance System

je vais vous dire comment ajouter des chevaux et économiser de l'essence avec un système de filtration de Performance.Jamais, vous devrez remplacer le filtre à air à nouveau !Cela fonctionne avec Ford, Lincoln, Mercury, BMW, Chevrolet et la plupart d
Jouer avec les neurones rougeoyants ? Un nouveau cadre pour la simulation interactive de neurone dans le matériel.

Jouer avec les neurones rougeoyants ? Un nouveau cadre pour la simulation interactive de neurone dans le matériel.

La théorie EEPA présente et la mise en œuvre matérielle correspondante ont été développés dans le cadre de mes recherches de thèse de baccalauréat. Les explications données ici sont écrits pour un large public. Si vous êtes intéressé par la thèse, le
Ajoutez un Rear Rack à l’arrière d’un Speedster couchés de soleil

Ajoutez un Rear Rack à l’arrière d’un Speedster couchés de soleil

il s'agit d'une Instructable sur comment j'ai adapté un porte-bagages arrière d'un vélo couché de soleil Speedster.  En fait, j'ai pris la grille sur ce vélo et qu'ajouté à un vélo différent, mais c'est un insturctable différent.J'ai déjà eu le panie
Comment ajouter un Lineart ou n’importe quel profil de Scan dans Windows Fax and Scan

Comment ajouter un Lineart ou n’importe quel profil de Scan dans Windows Fax and Scan

Hey, fatigué de la numérisation de vos images dessinées en mode couleur ou en niveaux de gris et ont besoin d'une meilleure façon de les numériser ? Vous savez j'ai, mais j'ai récemment découvert que l'ajout d'un autre profil de numérisation dans Win
Ajouter le Bluetooth à un écran LCD avec entrée série

Ajouter le Bluetooth à un écran LCD avec entrée série

Les écrans LCD avec entrée périodique peuvent être améliorés à Bluetooth en utilisant un JY-MCU Bluetooth Serial Port. Une bonne raison pour cela est donc l'affichage peut être utilisé avec un téléphone Android ou tablette. Une application Android si
Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

alors, j'ai essayé de pirater mon nunchuck Wii parce que je veux contrôler les moteurs et les lumières avec le nunchuck Wii.Le premier problème que j'ai trouvé était de savoir comment connecter le contrôle sans adaptateur, je comptais en faire un, ma