Die verder gaan dan StandardFirmata - ondersteuning voor nieuwe apparaten toe te voegen


INTRODUCTIE

Heb je ooit gedacht van het gebruik van Firmata voor het project van Arduino , alleen om erachter te komen dat het apparaat dat u wilt gebruiken niet wordt ondersteund door Firmata? Dit artikel toont de aanpak van de stap voor stap ik gewend stepper motordrager toevoegen aan PyMata en aan de bijbehorende Arduino Sketch, FirmataPlus. Na het lezen van deze tutorial moet u klaar zijn om uit te breiden Firmata voor uw apparaat.

Voordat We beginnen - achtergrondinformatie enkele over Arduino/Firmata

Dus wat is Firmata? Citaat uit de web-pagina van de Firmata, is"Firmata een generic-protocol voor de communicatie met microcontrollers van software op een hostcomputer."

Arduino Firmata maakt gebruik van een seriële interface voor het vervoer van zowel in opdracht als verslag informatie tussen een Arduino microcontroller en een PC, meestal met behulp van een seriële of USB-koppeling ingesteld op een tarief van 57600 bps. De gegevens overgedragen via deze koppeling is binair in de natuur en het protocol is geïmplementeerd in eenclient/server -model.

De server kant is geüpload naar een Arduino microcontroller in de vorm van een Arduino Sketch. De schets van de StandardFirmata , opgenomen met de Arduino IDE, bepaalt de Arduino i/o-pinnen, zoals geboden door de client, en verslagen invoer pin veranderingen, evenals andere informatie verslag terug naar de client. FirmataPlus is een uitgebreide versie van StandardFIrmata.

De Arduino client gebruikt voor dit artikel is PyMata. Het is een Python-toepassing die wordt uitgevoerd op een PC. Het stuurt commando's naar zowel rapporten van, de Arduino-server ontvangt.

Waarom gebruiken Firmata?

Arduino microcontrollers zijn prachtige kleine apparaten, maar processor en het geheugen middelen zijn enigszins beperkt. Voor toepassingen die processor of geheugen intensieve zijn, is er vaak weinig andere keus dan te ontladen de behoefte aan bronnen op een PC om de toepassing om succesvol te zijn.

Maar dat is niet de enige reden voor het gebruik van StandardFirmata. Bij het ontwikkelen van toepassingen van de Arduino lichter gewicht, kan een PC voorzien in hulpmiddelen en foutopsporing mogelijkheden niet direct beschikbaar op een Arduino microcontroller. Met behulp van een "vaste" client en server helpt isoleren variabiliteit naar een PC-toepassing, waar het gemakkelijker wordt beheerd. Zodra de toepassing is geperfectioneerd, kan het worden vertaald naar een aangepaste, standalone Arduino Sketch.

Waarom gebruiken PyMata?

Op het moment van dit schrijven is PyMata de alleen Python client waarmee het volledige StandardFirmata-protocol. Het is een multi-platform bibliotheek die ondersteuning biedt voor Windows, MAC en Linux besturingssystemen recht uit de doos!

Daarnaast is PyMata zo ontworpen dat gebruikers gemakkelijk uitgebreid kunnen ter ondersteuning van extra sensoren en actuatoren, op dit moment niet ondersteund door StandardFirmata.

Niet lang na PyMata werd aanvankelijk gepubliceerd, het was uitgebreid ter ondersteuning van de Arduino Tone Library, en ondersteunt tot zes gelijktijdige HC-SR04 type sonar afstand sensoren. Kant de serverextensies voor deze functies vindt u in de FirmataPlus.

Overzicht van de PyMata -Client en de Server van de FirmataPlus

PyMata is een krachtige toepassing voor multithread Python. Haar "opdracht draad" vertaalt gebruiker API-aanroepen in Firmata-protocolberichten en stuurt deze berichten door de Arduino microcontroller. De "verslaggever wol" ontvangt, interpreteert en handelingen op de Firmata-berichten ontvangen van de Arduino microcontroller.

Een aangepaste versie van StandardFirmata, genaamd FirmataPlus, is opgenomen in de verdeling van de PyMata . Het wordt momenteel het volgende aan StandardFirmata toegevoegd:

  • Een Piezo apparaat interface met behulp van de Arduino Tone Library
  • Ondersteuning voor meerdere ultrasone afstand sensoren met behulp van de NewPing-bibliotheek
  • Beperkte ondersteuning (alleen voor Arduino Uno) voor rotary encoders met behulp van de adafruit roterende encoder bibliotheek
  • Een debug functie om interne schets waarden aan de console Python print.

Begrip Firmata gegevensvertegenwoordiging

Firmata maakt gebruik van een seriële communicatie-interface naar vervoer gegevens naar en van de Arduino. Het Firmata communicatieprotocol is afgeleid van het MIDI protocol die één of meer 7 bit bytes worden gebruikt voor het weergeven van gegevens. Omdat 7 bits kan houden een maximum waarde van 128, moet een gegevensitem dat een waarde groter dan 128, worden "gedemonteerd" in meerdere 7 bits byte brokken voordat het via de gegevenskoppeling wordt gemarshald. Door de Conventie, de minst significante byte (LSB) van een gegevensitem is het eerst verzonden, gevolgd door steeds meer belangrijke onderdelen van het gegevensitem. De de meest significante byte (MSB) van het gegevensitem is de laatste gegevens item verzonden.

Dus bijvoorbeeld, als een parameter met de naam max_distance met een decimale waarde van 525 via de seriële verbinding worden verzonden moet, moet het eerst worden "gedemonteerd" in 7 bit brokken.

Hier is een bespreking van hoe dit gebeurt:

De waarde 525 decimaal komt overeen met de hexadecimale waarde van 0x20D, een waarde van 2 byte. Als u de LSB, maskeren we de waarde door AND'ing met 0x7F. Zowel de "C" en de Python implementaties zijn hieronder weergegeven:

 // "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 

Na maskeren bevat max_distance_LSB 0x0d. 0x20D & 0x7F = 0x0D

Vervolgens moeten we isoleren de MSB voor deze 2 byte-waarde. Om dit te doen, zullen we de waarde van 0x20D verschuiven naar het recht, 7 plaatsen.

 // "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 

Na het verschuiven, zal max_distance_MSB een waarde van 0x04bevatten.

Wanneer de "chunkified" gebundelde gegevens wordt ontvangen, moet het worden samengevoegd in één enkele waarde. Hier is hoe de gegevens in zowel de "C" en de Python is samengevoegd

 // "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) 

Na de herbouw resulteert de waarde nogmaals 525 decimale of hexadecimale 0x20D.

Deze demontage/montage-processen kunnen worden uitgevoerd door zowel de client als de server.

Labels: Arduino, Firmata, PyMata

Gerelateerde Artikelen

Die verder gaan dan de HORIZON met LoRa RF1276

Die verder gaan dan de HORIZON met LoRa RF1276

Ik heb gevonden RF1276 Transceiver te leverende meest opmerkelijke prestaties in termen van signaalbereik en kwaliteit. Op mijn eerste vlucht was ik in staat tot 56km afstand op - 70dB signaalniveau met kleine kwart golflengte antennes.Stap 1: BOM (r
Help en ondersteuning voor Yahoo E-mail problemen vandaag Contact nummer

Help en ondersteuning voor Yahoo E-mail problemen vandaag Contact nummer

Yahoo E-mail is een's werelds meest prominente e-mail beheer met een groot aantal records van de klant in aanwezigheid. Nog wat kunnen overreden problemen geïdentificeerd met Yahoo E-Mail waren we in komt. Onze gecertificeerde specialisten probleem a
Het afstellen van de Ember afdrukinstellingen voor nieuwe harsen

Het afstellen van de Ember afdrukinstellingen voor nieuwe harsen

Heb je een nieuwe hars uw willen proberen met behulp van in de Ember printer, of is een bijzonder afdrukken waardoor u problemen? In beide gevallen is er een goede kans dat het veranderen van de standaard afdrukparameters u toelaten zal om betere res
Gebruikt rotoren prepping voor nieuwe Pads

Gebruikt rotoren prepping voor nieuwe Pads

nu als de titel van dit niet duidelijk genoeg ik weet niet hoeveel meer ik kan u helpen =)Deze techniek kan niet alleen worden gebruikt voor nieuwe pads, maar ook om te proberen andere problemen diagnosticeren die u zou kunnen hebben met uw huidige r
De externe auto die kan gaan enywhere

De externe auto die kan gaan enywhere

dit is een auto die kan gaan waar je maar aan het wilt water, land en veel meer plaatsen!!om deze auto de dingen die je zal nodig zijn:-1.a oude auto die het motor van de achterwielen en front draaien motor heeft2. ubehoefte 2 van 9 volt batterijen3.
Hoe te te herbouwen van een Dana-Spicer transmissie voor een Lil' Gasser 7 1/2 "meten van 1 1/2" schaal locomotief

Hoe te te herbouwen van een Dana-Spicer transmissie voor een Lil' Gasser 7 1/2 "meten van 1 1/2" schaal locomotief

dit ' Ible "brengt u door de stappen te demonteren, indien nodig te repareren, inpakken en monteer een kleine F-N-R transmissie voor een Cannonball schaal ride-on locomotief, aangedreven door een kleine benzinemotor. De kleine gele locomotief is dege
Ondersteuning voor laptop en Smartphone geïntegreerd

Ondersteuning voor laptop en Smartphone geïntegreerd

dit instructable is gewijd aan de opbouw van een laptop stand met een ingebouwde draaibare ondersteuning voor smartphone; Het lijkt bijna nutteloos, maar mijn ervaring vertelt me dat soms ik heb ze allebei om tegelijkertijd te gebruiken, en de mogeli
Tumblr: Aangepast minimalistische thema met ondersteuning voor Addthis, Adsense, en Disquss

Tumblr: Aangepast minimalistische thema met ondersteuning voor Addthis, Adsense, en Disquss

Opmerking: Species identificatie wedstrijd 2Herkent u dit beestje hier ? Gevonden 9 oktober in de Heritage Park in Blacksburg, Virginia. Exemplaar werd gevonden in een enkele, geïsoleerde patch op een korte heuvel, onder diepe borstel en ongeveer 10
PcDuino3 nano is een kleinere, goedkopere mini PC met Arduino ondersteuning voor

PcDuino3 nano is een kleinere, goedkopere mini PC met Arduino ondersteuning voor

De makers van de pcDuino-lijn van producten bieden meerdere kleine, low-power single-board computers met ARM-processors en ondersteuning voor Arduino Shields.Het nieuwste model is de kleinste (en goedkoopste) tot nu toe. De pcDuino3 nano is nu beschi
Automatische k'nex verborgen mes (voor nieuwe mensen zoals ik)

Automatische k'nex verborgen mes (voor nieuwe mensen zoals ik)

dit is een gewijzigde versie van een andere verborgen blad ik zag, gemaakt door Raz1r Knex Bull3t.Ik maakte het automatische door middel van elastiekjes, ik maakte een trigger vinger, en zet een kartonnen vambrace op, zodat u kunt van nemen en zet he
Statief ondersteuning voor een QuickCam (of andere webcam)

Statief ondersteuning voor een QuickCam (of andere webcam)

er zijn vele redenen wilt u misschien uw webcam op een statief gezet.  Ik moest dit doen omdat de stand voor mijn Logitech QuickCam Pro 4000 ontbrak, maar het is vaak leuk om te gebruiken met een statief voor betere foto's in het algemeen, vooral als
PVC ondersteuning voor fotografische camera

PVC ondersteuning voor fotografische camera

maken van een functionele PVC-ondersteuning voor uw camera. gebruik voor verschillende filmen en fotografiePS:Excuse de mogelijke spelling fouten ik kom uit een ander land en een andere taal te gebruiken als u de tekst niet begrijpt, de foto's kunnen
Help en ondersteuning voor Yahoo E-mail problemen deze dagen Contact Support nummer

Help en ondersteuning voor Yahoo E-mail problemen deze dagen Contact Support nummer

Er is geen gewijzigde tijd voor de kopers aanpak de yahoo lijn bereik van Yahoo vergemakkelijken. De kopers op ongeacht doel ze confronteren elk type van dergelijke problemen bekend met Yahoo, zij zal alleen het bereik van de hulplijn benadering zelf
Ondersteuning voor overhead Camera's

Ondersteuning voor overhead Camera's

Bekijk de video hierboven waar ik ben het opbouwen van mijn eigen ondersteuning voor overhead camera's te verminderen van het gewicht op mijn gimbal.