StandardFirmata - Unterstützung für neue Hardware hinzufügen hinausgehende


EINFÜHRUNG

Haben Sie jemals daran gedacht, mit Firmata für das Arduino -Projekt, nur um herauszufinden, dass das Gerät, das Sie verwenden möchten, nicht von Firmata unterstützt wird? Dieser Artikel beschreibt Schritt für Schritt Vorgehensweise ich Stepper motor PyMata und seiner damit verbundenen Arduino Sketch, unterstützen FirmataPlus. Sie sollten nach der Lektüre dieses Tutorial bereit, Firmata für Ihr Gerät zu erweitern.

Bevor wir beginnen - Hintergrundinformationen einige Informationen über Arduino/Firmata

Was ist Firmata? Zitat von der Webseite Firmata ist"Firmata ein generisches Protokoll für die Kommunikation mit Mikrocontrollern von Software auf einem Host-Computer."

Arduino Firmata verwendet eine serielle Schnittstelle, um Befehl und Bericht Informationen zwischen einem Arduino-Mikrocontroller und einem PC, in der Regel mit einem seriell/USB-Link setzen auf eine Rate von 57600 bps zu transportieren. Die Daten über diese Verbindung übertragen ist binär in der Natur und das Protokoll wird in einerClient/Server -Modell realisiert.

Die Server -Seite ist ein Arduino-Mikrocontroller in Form von einem Arduino-Skizze hochgeladen. Die StandardFirmata Skizze, aufgenommen mit der Arduino IDEsteuert die Arduino-i/o-Pins, wie durch den Kunden geboten, und es meldet Eingangs-Pin-Änderungen sowie sonstige Berichtsinformationen an den Client zurück. FirmataPlus ist eine erweiterte Version des StandardFIrmata.

Der Arduino- Client verwendet für diesen Artikel ist PyMata. Es ist eine Python-Anwendung, die auf einem PC ausgeführt wird. Es sendet Befehle, um sowohl Berichte aus dem Arduino-Server erhält.

Warum verwenden Firmata?

Arduino-Mikrocontroller sind wunderbare kleine Geräte, aber Prozessor und Speicher-Ressourcen sind etwas begrenzt. Für Anwendungen, die Prozessor oder speicherintensiv sind, gibt es oft wenig Wahl aber, entlasten den Ressourcenbedarf auf einem PC in Reihenfolge für die erfolgreiche Bewerbung.

Aber das ist nicht der einzige Grund für die Verwendung von StandardFirmata. Bei der Entwicklung von leichterer Gewicht Arduino Anwendungen kann ein PC Tools und debugging-Funktionen nicht direkt verfügbar auf einen Arduino-Mikrocontroller bieten. Mit einem "festen" Client und Server hilft Variabilität auf einer PC-Anwendung zu isolieren, wo es leichter verwaltet wird. Wenn die Anwendung perfektioniert ist, kann es zu einem benutzerdefinierten, eigenständigen Arduino Sketch übersetzt werden.

Warum verwenden PyMata?

Zum Zeitpunkt des Schreibens dieses Artikels ist PyMata nur Python-Client, der das komplette StandardFirmata-Protokoll implementiert. Es ist ein Multi-Plattform-Bibliothek, die Windows, MAC und Linux Betriebssysteme direkt aus der Box unterstützt!

Darüber hinaus war PyMata so konzipiert, dass Benutzer problemlos erweitert es um zusätzliche Sensoren und Aktoren, unterstützt derzeit nicht durch StandardFirmata zu unterstützen können.

Nicht lange nach PyMata ursprünglich veröffentlicht wurde, war es, die Arduino- Ton -Bibliothek unterstützen und bis zu sechs gleichzeitige HC-SR04 Art Sonar Abstandssensoren unterstützen erweitert. Die Server-Seite-Erweiterungen für diese Funktionen werden in FirmataPlusangeboten.

Übersicht über die PyMata Client- und FirmataPlus

PyMata ist ein Hochleistungs-Multi-threaded Python-Anwendung. Seine "Befehl-Thread" übersetzt Benutzer API-Aufrufe in Firmata Protokollnachrichten und leitet diese Nachrichten an den Arduino-Mikrocontroller. Die "Reporter-Thread" empfängt, interpretiert und wirkt auf die Firmata Nachrichten von der Arduino-Mikrocontroller.

Eine angepasste Version von StandardFirmata, genannt FirmataPlus, ist die PyMata Verteilung enthalten. Derzeit werden StandardFirmata Folgendes hinzugefügt:

  • Ein Piezo-Device-Schnittstelle mit der Arduino-Ton-Bibliothek
  • Unterstützung für mehrere Ultraschall Abstandssensor mit Hilfe der NewPing-Bibliothek
  • Eingeschränkter Support (nur Arduino Uno) für Drehgeber Adafruit Drehgeber Bibliotheksbenützung
  • Eine Debug-Druckfunktion, interne Skizze-Werte in der Python-Konsole zu drucken.

Verständnis Firmata Datendarstellung

Firmata verwendet eine seriellen Schnittstelle um Daten zu transportieren und nach dem Arduino. Firmata Kommunikationsprotokoll ist das MIDI- Protokoll abgeleitet, die mindestens eine 7-Bit-Byte verwendet, um Daten darzustellen. Weil 7 Bits zu einen maximalen Wert von 128 halten können, muss ein Datenelement, das einen Wert größer als 128, hat "demontiert" in mehrere 7-Bit-Byte-Blöcke vor über die Datenverbindung gemarshallt wird. Gemäß der Konvention ist das niederwertigste Byte (LSB) eines Datenelements zuerst schickte gefolgt von zunehmend wichtige Komponenten des Datenelements. Der das höchstwertige Byte (MSB) des Datenelements ist das letzte Element gesendeten Daten.

So zum Beispiel, wenn muss ein Parameter mit dem Namen Max_distance mit einem Dezimalwert von 525 muss über die serielle Schnittstelle gesendet werden, es zuerst in 7-Bit-Stücke "zerlegt" werden.

Hier wird besprochen, wie dies erreicht wird:

Der Wert Dezimal 525 ist gleichbedeutend mit der hexadezimale Wert des 0x20D, eine 2-Byte-Wert. Um die LSB zu erhalten, haben wir den Wert von AND'ing verdecken es mit 0x7F. "C" und Python-Implementierungen sind nachfolgend dargestellt:

 // "C" implementation to isolate LSB int max_distance_LSB = max_distance & 0x7f ; // mask the lower byte # Python implementation to isolate LSB max_distance_LSB = max_distance & 0x7F # mask the lower byte 

Nach der Maskierung, wird Max_distance_LSB 0x0d enthalten. 0x20D & 0x7F = 0x0D

Als nächstes müssen wir das MSB für diese 2-Byte-Wert zu isolieren. Um dies zu tun, werden wir den Wert des 0x20D auf der rechten Seite, 7 Plätze verschoben.

 // "C" implementation to isolate MSB of 2 byte value int max_distance_MSB = max_distance >> 7 ; // shift the high order byte # Python implementation to isoloate MSB of 2 byte value max_distance_MSB = max_distance >> 7 # shift to get the upper byte 

Nach einer Verlagerung, enthält die Max_distance_MSB einen Wert von 0 x 04.

Wenn die "chunkified" gemarshallten Daten empfangen werden, muss es in einen einzelnen Wert zusammengesetzt werden. Hier ist, wie die Daten in "C" und Python zusammengesetzt ist

 // "C" implementation to reassemble the 2 byte, // 7 bit values into a single value int max_distance = argv[0] + (argv[1] << 7) ; # Python implementation to reassemble the 2 byte, # 7 bit values into a single value max_distance = data[0] + (data[1] << 7) 

Nach dem Zusammenbau entspricht dem Wert erneut 525 dezimal oder Hexadezimal 0x20D.

Diese Demontage/Remontage Verfahren können durch den Client oder Server ausgeführt werden.

Stichworte: Arduino, Firmata, PyMata

In Verbindung stehende Artikel

Fan-Unterstützung für Gen6 Elektronik hinzufügen

Fan-Unterstützung für Gen6 Elektronik hinzufügen

für eine Weile jetzt habe ich einen 3D-Drucker. Ein Orca V0.43 um genau zu sein.Dies ist ein 3D-Drucker von http://www.mendel-parts.com/.Ich bin sehr zufrieden mit dem Drucker, druckt es gut, es ist nicht so schwer, zusammen und es sieht gut aus.Aber
Werkzeuge-CLOUD: Neue Werkzeug hinzufügen

Werkzeuge-CLOUD: Neue Werkzeug hinzufügen

Neues Werkzeug hinzufügenSchritt 1: Klicken Sie "Werkzeug"Schritt 2: Daten bearbeitenGeben Sie BlueSwarf Dashboard sechsstellige Nummer, falls zutreffend. Wenn Sie eine zuweisen möchten, benutzen Sie diesen Zufallszahlen-Generator. Wenn Sie eine
ALTES MESSER NEUE HOLZ HINZUFÜGEN!

ALTES MESSER NEUE HOLZ HINZUFÜGEN!

Haben Sie ein altes Taschenmesser, Sie lieben, aber das Holz sieht schrecklich, nun ist es besser als neu aussehen könnte.Schritt 1: Finden Sie Holz ich habe einen Pice übrig gebliebenen Walnuss aus einem früheren Projekt aber können Sie, was Ihnen a
Wie Peter Ritters Auduino Projekt hinzufügen Schaltfläche Funktionen

Wie Peter Ritters Auduino Projekt hinzufügen Schaltfläche Funktionen

es macht Spaß! Gib nicht auf! Ich will nicht.Schritt 1: Erstellen der Auduino! Dieses Projekt ist einfach und sehr lustig. Ein großes Lob an Peter Ritter!Leute empfehlen in der Regel Prototyping mit einem Steckbrett sicherstellen, Ihre Töpfe arbeiten
Lebensdauer der Batterie für Ihre Turtle Beach X31 drahtlose Kopfhörer hinzufügen

Lebensdauer der Batterie für Ihre Turtle Beach X31 drahtlose Kopfhörer hinzufügen

haben Sie ein paar dieser Turtle Beach wireless-Gaming-Kopfhörer, Sie bereits wissen, sie sind ziemlich süß. Leider, Sie wahrscheinlich auch wissen, dass sie zu häufig aus Batterien ausgeführt werden können.Geringe Turtle Beach Attribute Akkulaufzeit
Mit Ihrem iPhone OSM POI-Standorte hinzufügen

Mit Ihrem iPhone OSM POI-Standorte hinzufügen

hinzufügen von Orten von Interesse (OVI) Standorte für das Projekt Open Street Map (OSM) ist ein guter Weg, um die digitale Darstellung von den umliegenden Gemeinden zu verbessern! Es ist einfacher als Sie denken, da Sie einfach mit Ihrem iPhone (und
Gewusst wie: Hinzufügen von Übergängen in iMovie HD

Gewusst wie: Hinzufügen von Übergängen in iMovie HD

Dieser Screencast zeigt Ihnen die Grundlagen des Hinzufügen von Übergängen in iMovie HD. Es bietet Ihnen Schritt für Schritt Anleitung beginnen ganz am Anfang des gewusst wie: Öffnen Sie die Anwendungen und starten Sie ein neues Projekt hinzufügen vo
Gewusst wie: hinzufügen Emoticons auf iOS 6

Gewusst wie: hinzufügen Emoticons auf iOS 6

Schritt 1: Öffnen Sie die Einstellungen Einstellungen öffnen, und tippen Sie auf allgemein.Schritt 2: Wählen Sie Tastatur Tastatur finden Sie im unteren Bereich.Schritt 3: Wählen Sie Tastaturen.Schritt 4: Wählen Sie neue Tastatur hinzufügenSchritt 5:
Hinzufügen von Digispark (mit Bootloader) Unterstützung zu bestehenden Arduino 1.6.x IDE

Hinzufügen von Digispark (mit Bootloader) Unterstützung zu bestehenden Arduino 1.6.x IDE

Digispark ist kleiner Arduino IDE kompatibel Entwicklungsboard basiert auf dem Atmel attiny85, die direkt mit USB verbunden. Es hat sehr wenige Pins, aber immer noch einige nette Dinge tun kann. Digispark ist copyright von Digistump LLC (digistump.co
ESP8266 mit Beispielcode Test Arduino-Unterstützung hinzufügen

ESP8266 mit Beispielcode Test Arduino-Unterstützung hinzufügen

Esp8266 packt eine Menge Punch. Es ist nicht nur ein WiFi-Modul, sondern auch einen anständigen Mikrocontroller erbaut. Jetzt ist das beste Teil hat die Gemeinschaft gemacht Programmierung dieser eingebauten Mikrocontroller sehr einfach durch das Hin
Hinzufügen von Bluetooth-Unterstützung zu Ihrem Auto

Hinzufügen von Bluetooth-Unterstützung zu Ihrem Auto

Ich kaufte mir eine gebrauchte Toyota Matrix 2011 und es hat einen AUX-Anschluss Ihr Handy oder MP3-Player anschließen, so dass es auf das Autoradio spielt. Es ist ein großartiges Feature und ich nutze es aber das Audio-Kabel ist ärgerlich und ist im
Machen Sie unentbehrlich, Portable, nützliche Unterstützung Beiträge.

Machen Sie unentbehrlich, Portable, nützliche Unterstützung Beiträge.

Diese instructable zeigt wie man eine portable, und äußerst hilfreiche Unterstützung post(s). Einsetzbar in vielen Funktionen, viele Bereiche. Wie Sie sehen werden, gibt es viele Einsatzmöglichkeiten für diese Beiträge.Schritt 1: Verwenden von Formul
Stativ-Unterstützung für eine QuickCam (oder andere Webcam)

Stativ-Unterstützung für eine QuickCam (oder andere Webcam)

es gibt viele Gründe, vielleicht möchten Ihre Webcam auf einem Stativ zu setzen.  Ich musste dies tun, da Stand für meine Logitech QuickCam Pro 4000 fehlte, aber es oft schön, im Allgemeinen für bessere Bilder mit einem Stativ verwenden, ist vor alle
Unterstützung der Obdachlosen auf einem Etat

Unterstützung der Obdachlosen auf einem Etat

Ich arbeite an einer sehr belebten Ecke in L.A. mit einer signifikanten obdachlose Bevölkerung in der Nachbarschaft. Es ist ein besonderer Kerl mit einem kleinen Hund, der immer vor dem gleichen Restaurant, und jedes Mal, wenn ich an ihm vorbeiging,