Utöver StandardFirmata - lägger till stöd för nya



INTRODUKTION

Har du någonsin tänkt på att använda Firmata för din Arduino projekt, bara för att finna att den enhet som du vill använda inte stöds av Firmata? Denna artikel visar steg för steg strategi jag brukade lägga till stepper motor stöd till PyMata och dess associerade Arduino skiss, FirmataPlus. Efter att ha läst denna handledning bör du vara redo att utvidga Firmata för din enhet.

Innan vi börjar - bakgrundsinformation några om Arduino/Firmata

Så vad är Firmata? Citerar från webbsidan Firmata, är"Firmata ett generiskt protokoll för kommunikation med mikrokontroller från programvara på en värddator."

Arduino Firmata använder ett seriellt gränssnitt för att transportera både kommandot och rapportera uppgifter mellan en Arduino mikrokontroller och en dator, oftast via en seriell/USB-länk att en skattesats på 57600 bps. Data som överförs via denna länk är binär i naturen och protokollet genomförs i enklient- servermodell.

Serversidan är upp till en Arduino mikrokontroller i form av en Arduino skiss. StandardFirmata skiss, ingår i Arduino IDE, kontrollerar de Arduino I/O pins, som under befäl av klienten och rapporter ingångsstift förändringar, liksom andra rapportinformationen tillbaka till klienten. FirmataPlus är en utökad version av StandardFIrmata.

Arduino klienten används för denna artikel är PyMata. Det är ett Python-program som körs på en PC. Det både skickar kommandon till, och tar emot rapporter från Arduino servern.

Varför använda Firmata?

Arduino microcontrollers är underbara små enheter, men processor och minne resurser är något begränsad. För program som är processor eller minne intensiv, finns det ofta inget annat val än att lasta resursefterfrågan på en PC för att ansökan ska lyckas.

Men det är inte enda skälet för att använda StandardFirmata. När de utvecklar lättare vikt Arduino program, kan en PC tillhandahålla verktyg och felsökning kapacitet inte direkt tillgängliga på en Arduino mikrokontroller. Använda en "fast" klient och server hjälper isolera variation till ett PC-program, där det lättare hanteras. När ansökan är perfekt, kan det översättas till en egen, fristående Arduino skiss.

Varför använda PyMata?

Vid tidpunkten för denna skrift är PyMata bara Python klienten som implementerar protokollet komplett StandardFirmata. Det är en multi-plattform bibliotek som stöder Windows, MAC och Linux operativsystem direkt ur lådan!

PyMata är dessutom utformad för att användare kan lätt utvidgas den för att stödja ytterligare sensorer och ställdon, för närvarande inte stöds av StandardFirmata.

Inte länge efter PyMata publicerades först, var det utvidgas att stödja Arduino tonen biblioteket, och att stödja upp till sex samtidiga HC-SR04 typ sonar avstånd sensorer. Sidan servertilläggen för dessa funktioner finns i FirmataPlus.

Översikt över de PyMata klient- och FirmataPlus

PyMata är en högpresterande flertrådade Python program. Dess "kommandot tråden" översätter användaren API-anrop till Firmata protokollmeddelanden och vidarebefordrar meddelandena till Arduino mikrokontroller. "Reporter tråden" tar emot, tolkar och fungerar på Firmata meddelanden från Arduino mikrokontroller.

En anpassad version av StandardFirmata, kallade FirmataPlus, ingår i PyMata fördelning. För närvarande läggs följande till StandardFirmata:

  • Piezo enhetsgränssnittet med hjälp av Arduino tonen biblioteket
  • Stöd för flera ultraljud avstånd sensorer med hjälp av NewPing biblioteket
  • Begränsat stöd (Arduino Uno endast) för roterande pulsgivare med hjälp av adafruit rotationsencoder biblioteket
  • En debug Skriv ut-funktion för att skriva ut interna skiss värden Python konsolen.

Förstå Firmata Data Representation

Firmata använder en seriell kommunikationsgränssnitt till transport data till och från Arduino. Firmata kommunikationsprotokoll härstammar från MIDI -protokollet som använder en eller flera 7 bitars byte för att representera. Eftersom 7 bitar kan hålla ett högsta värde på 128, måste ett dataobjekt som har ett värde större än 128, tas "isär" i flera 7 bitars byte bitar innan som marshaled över datalänken för. Konventionen skickas den minst signifikanta byten (LSB) av ett dataobjekt först, följt av allt större delar av dataobjektet. I den mest betydande byten (MSB) i dataobjektet är senaste data objekt skickas.

Så till exempel om en parameter som kallas max_distance med ett decimalvärde på 525 måste skickas över den seriella länken, måste det först vara "isär" i 7 bitars bitar.

Här är en diskussion om hur detta sker:

525 decimala värdet motsvarar det hexadecimala värdet på 0x20D, en 2 byte värde. För att få LSB, mask vi värdet av AND'ing det med 0x7F. Både "C" och Python implementeringar visas nedan:

"C" genomförande isolera LSB
int max_distance_LSB = max_distance & 0x7f; maskera den lägre byten

# Python genomförande isolera LSB
max_distance_LSB = max_distance & 0x7F # maskera den lägre byten

Efter maskering innehåller max_distance_LSB 0x0d. 0x20D & 0x7F = 0x0D

Sedan behöver vi isolera MSB för detta 2 byte värde. För att göra detta, kommer vi flytta värdet på 0x20D till höger, 7 platser.

"C" genomförande isolera MSB av 2 byte värde
int max_distance_MSB = max_distance >> 7. flytta den kick beställer byten

# Python genomförandet till isoloate MSB av 2 byte värde
max_distance_MSB = max_distance >> 7 # SKIFT att få den övre byten

Efter skiftande, innehåller max_distance_MSB värdet 0x04.

När "chunkified" marshaled data tas emot, måste det vara ihop till ett enda värde. Här är hur data är ihop i både "C" och Python

"C" genomförandet att sätta ihop 2 byte,
7 bitars värden till ett enda värde
int max_distance = argv [0] + (argv [1] << 7);

# Python genomförandet att sätta ihop 2 byte,
# 7 bitars värden till ett enda värde
max_distance = data [0] + (data [1] << 7)

Efter återmontering, värdet återigen är lika 525 decimala eller hexadecimala 0x20D.

Denna demontering/montering processer kan utföras av antingen klienten eller servern.

Se Steg
Relaterade Ämnen

Hur du lägger till en USB-fingeravtrycksläsare internt till laptop

jag hade en Dell Mini-9 att jag installerat Mac OS X på och i processen såg andra användare att lägga till en inbyggd GPS-mottagare. Detta fick mig att tänka, kunde jag lägga till en fingeravtrycksläsare i den. Användarna av http://www.mydellmini.com...

Hur man lägger till "Öppna med anteckningar" högerklicka

jag personligen hatar att använda "öppna med" på grund av tiden, även om det bara några sekunder, och att behöva komma ihåg då var exakt ett visst program finns i min katalog.Detta kommer att visa dig hur du lägger till något program högerklicka...

Hur du lägger till vipparm spool fästen till en Honda F4i

dessa är instruktioner för hur du lägger till vipparm spool monteringshålen en Honda F4i vipparm. Vipparm spolar ger en säkrare och mer bekväm metod för lyft på baksidan av din cykel för att göra ändringar av däck, kedja glidmedel, etc. De flesta cyk...

Hur du lägger till en Instructable till din lista med favoriter och Betygsätt en Instructable

för att lägga en Instructable till din lista över favoriter, klicka på länken "favorit" i det grå fältet under den Instructable bilder.Du lista över favoriter finns på din hemsida (Klicka på ditt användarnamn uppe till höger) under "Din Ins...

Hur du lägger till en SATA hårddisk till datorn

tid: 5-10 minuterDet krävs skicklighetsnivå: ingenSäkerheten är det första steget när leka med en dator.För att säkerställa att du inte chockera dig själv eller datorn, kommer att klädd i en anti-statiskt armband absorbera en avgift som du kan bära.D...

Hur du lägger till en mottagare lufttank för mer kompressor kapacitet

Om din lilla kompressor är inte tillräckligt för att driva din inverkan drivrutin eller andra kompressor bifogade filer, behöver du inte spendera en mindre förmögenhet på en nyare och större setup. Med dessa enkla instruktioner, ska jag visa dig hur...

Salta eller söta Carb eller NO Carb du bestämmer dig av vad du lägger till

Här är ett recept för att göra en välsmakande bröd eller en söt cookie beroende om du vill ett bröd typ recept med inga kolhydrater och mycket protein eller en mjuk kaka typ recept med lite sötma eller mycket, beroende på vad du sätter på den. Detta...

Hur du lägger till servrar i Minecraft Pocket Edition!

Detta instructable lär dig hur du lägger till publika servrar till Minecraft Pocket Edition!Steg 1: Komma igång Först öppna Minecraft och trycker på play.Steg 2: Lägga till något nytt Tryck på knappen ny värld i övre högra hörnet.Steg 3: + Nästa, try...

Hur du lägger till fler utgångar till din Microcontroller

detta Instructable visar dig steg för steg hur du lägger till 8 extra digitala utgångar, med endast 3 din microcontroller digital utgång.Steg 1: Vilken Microcontroller ska du använda? För att göra detta Instructable med din mikrokontroller, måste du...

Hur du lägger till en Lineart eller någon Skanna profil i Windows Faxa och skanna

Hej, trött av avsökningen din ritade bilder i färg eller gråskala läge och behöver ett bättre sätt att scanna dem? Du vet jag har, men jag nyligen upptäckt hur du lägger till en annan skanningsprofil i Windows Faxa och skanna. (Obs: detta är för Wind...

Hur du lägger till skript RSBot

Hej,Idag kommer jag att visa dig hur du lägger till ett skript till RSBot.Detta är mycket enkelt och tar inte så lång tid.Steg 1:1) samla nödvändiga objekt Behöver du följande saker:1) Java Development Kit - DL-2)rsbot(duh)3) skript för att lägga til...

Hur du lägger till anpassade sökmotorer i Opera

så använder du Opera? (Förmodligen ja eftersom du visar detta instructable)Du vet den "g * söka termen *" söka * söka termen * på Google, och samma för Wikipedia etc.?Jag använder dem hela tiden, och jag har lagt till ett par av mina egna, och b...

Hur du lägger till en frontlight till Gameboy färg

om du växte upp med att spela Game Boy som jag gjorde, jag är säker på att du minns otaliga timmar av pokemon strider, av vilka många var endast möjligt genom den frälsande nåd av din wormlight. Jag vet att jag är skyldig många långa nätter av Gamebo...

Hur man lägger till spel till LG VX9900 (env) (avund) mobiltelefon

jag kommer att visa dig steg för steg hur du lägger till flera .swf spel på telefonen LG VX9900 enV.Steg 1: Vad du behöver Här är en lista över saker som du behöver. Det ska inte kosta dig något förutsatt att du redan har en dator, en LG VX9900 env o...

Hur du lägger till textrutor

jag kunde aldrig hitta hur du lägger till de textrutor som gjorde livet så mycket easyer. Jag slutligen gjorde självklart, men för att göra det easyer å du stötarna... här är hur ya gör den.Steg 1: Här är en video på hur man gör det> här är en video...

Hur du lägger till flera bilder till Pintrest.

Här jag ska visa dig hur du lägger till flera bilder till ett stift på Pintrest. Det är lätt! Följ bara dessa några steg. Lets go!Steg 1: Ladda ner Photo Collage (iOS 6.12 +) jag använder iOS 6.12. Så om din med android då någon bild collage app fung...

Hur du lägger till blandade tal AKA blandade fraktioner

En enkel steg för steg video handledning om hur du lägger till blandade tal AKA blandade fraktioner....

Hur du lägger till bråk med till skillnad från nämnare

I den här videon visar jag steg för steg hur du lägger till bråk med till skillnad från nämnare....

Hur du lägger till fraktioner

I denna steg för steg video visar jag hur du lägger till bråk med som nämnare....