Más allá de StandardFirmata - agregar nuevos dispositivo soporte

INTRODUCCIÓN

¿Has pensado usar una firmado para su proyecto Arduino , sólo para descubrir que el dispositivo que desea utilizar no está soportado por una firmado? Este artículo demuestra el enfoque paso a paso solía añadir soporte motor paso a paso a PyMata y a su asociado Arduino Sketch, FirmataPlus. Después de leer este tutorial debe ser listo para extender una firmado para su dispositivo.

Antes de comenzar - algunos antecedentes sobre una Arduino/firmado

¿Qué es una firmado? Citando la página web de una firmado, "una firmado es un protocolo genérico para la comunicación con microcontroladores de software en un equipo host".

Arduino Firmata utiliza una interfaz en serie para transportar información tanto comandos como informe entre un microcontrolador Arduino y un ordenador, normalmente utilizando un enlace serie/USB a una velocidad de 57600 bps. Los datos transferidos a través de este enlace están binarios en la naturaleza y el protocolo está implementado en un modelo decliente/servidor .

El lado del servidor se carga a un microcontrolador Arduino en la forma de un Arduino Sketch. El bosquejo de StandardFirmata , incluido con el IDE de Arduino, controla los pernos de la entrada-salida de Arduino, como mandado por el cliente, e informa de cambios de entrada de pin, así como otra información del informe al cliente. FirmataPlus es una versión ampliada de StandardFIrmata.

El Arduino cliente utilizada para este artículo es PyMata. Es una aplicación de Python que se ejecuta en un PC. Tanto envía comandos a y recibe informes desde el servidor de Arduino.

¿Por qué utilizar una firmado?

Microcontroladores Arduino son maravillosos dispositivos, pero procesador y memoria recursos son algo limitados. Para aplicaciones intensivas de memoria o procesador, es a menudo más remedio a la descarga de la demanda de recursos en una PC para la solicitud tener éxito.

Pero eso no es la única razón para usar StandardFirmata. Al desarrollar aplicaciones de Arduino de peso ligeros, un PC puede proporcionar herramientas y capacidades de depuración no directamente sobre un microcontrolador Arduino. Usando un "fijo" cliente y servidor ayuda a aislar la variabilidad para una aplicación de PC, donde se es más fácil de administrar. Una vez que se perfecciona la aplicación, puede ser traducido a un independiente personalizada, Arduino Sketch.

¿Por qué utilizar PyMata?

En el momento de escribir esto, PyMata es el sólo Python cliente que implementa el protocolo completo de StandardFirmata. Es una biblioteca multiplataforma que soporta sistemas operativos Windows, MAC y Linux fuera de la caja!

Además, PyMata fue diseñado para que los usuarios podrían fácilmente extendido para apoyar adicionales sensores y actuadores, actualmente no soportados por StandardFirmata.

No mucho después PyMata fue publicado inicialmente, fue ampliado para apoyar la biblioteca de tono de Arduino y soporta hasta seis simultánea HC-SR04 sonar distancia sensores de tipo. Las extensiones de lado del servidor para que estas características se encuentran en FirmataPlus.

Resumen del PyMata de cliente y el servidor de FirmataPlus

PyMata es una aplicación de Python de multiproceso de alto rendimiento. Su "hilo de comando" traduce las llamadas de API de usuario en los mensajes de protocolo una firmado y remite estos mensajes para el microcontrolador de Arduino. El hilo de"reportero" recibe, interpreta y actúa sobre los mensajes de una firmado recibidos desde el microcontrolador de Arduino.

Una versión personalizada de StandardFirmata, llamado FirmataPlus, se incluye con la distribución de PyMata . Actualmente, agrega lo siguiente a StandardFirmata:

  • Una interfaz de dispositivo piezoeléctrico usando la biblioteca de tono de Arduino
  • Soporte para múltiples sensores de distancia por ultrasonidos mediante la biblioteca de NewPing
  • Soporte limitado (Arduino Uno sólo) para codificadores rotatorios utilizando la biblioteca de codificador rotatorio de adafruit
  • Función para imprimir valores internos del bosquejo a la consola de Python de la impresión de una depuración.

Comprender la representación de los datos de una firmado

Una firmado utiliza un interfaz serie de comunicaciones al transporte de datos a y desde el Arduino. El protocolo de comunicaciones una firmado se deriva el protocolo MIDI que utiliza uno o más bytes de 7 bits para representar datos. Porque 7 bits puede contener un máximo de 128, un elemento de datos que tiene un valor mayor que 128, debe ser "desarmado" en múltiples trozos de bytes de 7 bits antes de ser calcular referencias a través del enlace de datos. Por Convención, el byte menos significativo (LSB) de un elemento de datos se envía en primer lugar, seguido por los componentes cada vez más importantes del elemento de datos. El el byte más significativo (MSB) del elemento de datos es el dato último artículo enviado.

Por ejemplo, si un parámetro llamado max_distance con un valor decimal de 525 debe ser enviado a través del enlace serial, primero necesita a "desmontar" en trozos de 7 bits.

Esta es una discusión de cómo esto se logra:

El valor de 525 decimal es equivalente al valor hexadecimal de 0x20D, un valor de 2 bytes. Para obtener el LSB, enmascaran el valor por AND'ing con 0x7F. Las implementaciones de "C" y Python se muestran a continuación:

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

Después de enmascarar, max_distance_LSB contendrá 0x0d. 0x20D & 0x7F = 0x0D

A continuación, tenemos que aislar el MSB para este valor de 2 bytes. Para ello, cambiará el valor de 0x20D a la derecha, 7 lugares.

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

Después de cambiar de puesto, max_distance_MSB contendrá un valor de 0 x 04.

Cuando se recibieron los datos referencias "chunkified", es necesario montarlo en un solo valor. Aquí es cómo se vuelve a montar los datos en "C" y Python

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

Después del reensamblaje, el valor nuevo es igual a 525 decimal o hexadecimal 0x20D.

Este procesos de desmontaje y montaje se pueden realizar por el cliente o el servidor.

Etiquetas: Arduino, PyMata, Firmado

Artículos Relacionados

Agregar nuevo suelo a la ventana del usb

Agregar nuevo suelo a la ventana del usb

abrir la memoria USBy copiar este código en un bloc de notas[{BE098140-A513-11D0-A3A4-00C04FD706EC}]IconArea_Image =img.jpgIconArea_Text = 0 × 000000Guarde el archivo como desktop.iniSustituir ** img.jpg ** con el nombre del archivo de imagenNota: co
¿LEGO NXT el control con wiimote

¿LEGO NXT el control con wiimote

siempre quiere construir su propio vehículo RC? Ahora usted puede. En control de su diseño y fácil de usar Legos, por ser Legos. Todo lo que necesitas es un Lego NXT, un ordenador con un software de control y Bluetooth dongleTengo 17 años.Paso 1: mat
Mi 1 º dispositivo de Iot con GeekNesia + Arduino Uno + Ethernet Shield y DHT21 via PubSub método

Mi 1 º dispositivo de Iot con GeekNesia + Arduino Uno + Ethernet Shield y DHT21 via PubSub método

Geeknesia es una plataforma de Internet de las cosas, como ThingSpeak pero es :) de Indonesia. GeekNesia todavía Beta espero que habrá algún otro rasgo bueno pronto. Usar Arduino uno y shield Ethernet para enviar datos de DHT21 (Humadity y temperatur
Cómo obtener juegos gratis en Samsung restaurar para VM

Cómo obtener juegos gratis en Samsung restaurar para VM

** este instructable es introducido en el desafío de "hackear", por favor voten por mí:) **Hace unos meses me compré mi primer teléfono, el samsung restore para móvil virgen. Después de unos días de descubrir el teléfono decidí que necesitaba al
Discurso controlado Quadropod

Discurso controlado Quadropod

Este es mi primer post en Instructables y estoy super emocionada de compartir mi conocimiento!Mi post de robot original está aquí: Spryo SpoonTail que es sólo mi robot que muestra algunos trucos pero con un control anclado.En este Instructable voy a
Configurar tu PSP como Monitor secundario

Configurar tu PSP como Monitor secundario

antes de empezar, este es mi primer instructivo, por lo que cualquier información sería genial, gracias.Este instructable le mostrará cómo configurar tu PSP para ser utilizado como un segundo Monitor en tu PC. Esto puede ser útil de muchas maneras, p
¿Cómo usar un Wiimote como Mouse de su computadora

¿Cómo usar un Wiimote como Mouse de su computadora

alguna vez se preguntó qué cosas interesantes se puede hacer con un Wiimote? Si es así, este es sin duda donde debe iniciar-como un ratón!Paso 1: Paso 1: materiales1. un Wiimote (por supuesto)2. WiiMotionPlus (realmente es construido en algunos nuevo
¿Cómo configurar Chromecast con el IPhone?

¿Cómo configurar Chromecast con el IPhone?

Este conjunto de instrucciones le guiará para configurar y utilizar su nuevo chromecast usando tu iPhone.Referencia - fotosGoogle - www.google.com/chromecastTodas las fotos son tomadas de la fuente de chromecast oficial de googlePaso 1: ¿Qué necesita
Elegante casa parte 1: registrador de temperatura de fácil nube habilitado.

Elegante casa parte 1: registrador de temperatura de fácil nube habilitado.

Siempre estuve tentado a tener una "casa inteligente". Gracias a Instructables y Intel que me envió el kit compuesto por Edison Intel con kit de arranque placa Arduino y Grove finalmente tengo la oportunidad de perseguir este sueño. Este es el p
Elegante hogar parte 2: relé de conducción a través de la nube.

Elegante hogar parte 2: relé de conducción a través de la nube.

Por favor familiarizarse y tratar de hacer mi primer instructivo donde te muestro cómo registrar la temperatura de su casa en nube de intel con Edison. Por favor siga los pasos 2-3 lo anterior instructable para configurar su edison y su tablero de in
Cómo agregar un circuito a tu coche

Cómo agregar un circuito a tu coche

Tal vez usted está también en una situación donde usted quiere alguna funcionalidad extra en su coche.Ya sea un extra de salida, una puerta central de bloqueo de sistema o una cafetera integrada.En este instructable quiero mostrarte cómo agregar corr
Como prototipo de un dispositivo lucha de postura para los pies separado

Como prototipo de un dispositivo lucha de postura para los pies separado

Ahora, justo cuando pensabas que tu lucha postura es buena, el entrenador le encendió por las noticias de última hora, su pésimo! Y, arriesgando su posición se arriesga a la Fundación para la luchas todas las jugadas. Experimentado los combatientes -
IoT DIY dispositivos de conexión a Internet con pfodApp

IoT DIY dispositivos de conexión a Internet con pfodApp

Cómo conectarse en casa y a usar la misma conexiónEste instructabe incluye cómo obtener su pfodDevice WiFi, IoT, conectado a Internet. También muestra cómo el pfodApp soluciona el problema de no poder conectarse al dispositivo local a través de Inter
Lucha contra postura Coaching dispositivo (pivote) - previene el pie de pivote Slacking por los ladridos

Lucha contra postura Coaching dispositivo (pivote) - previene el pie de pivote Slacking por los ladridos

Lucha contra principiantes a través de los veteranos puede ahora entrenar con un entrenador incansable que está con usted cada paso del camino, para mejorar la Fundación más básica y vital para ganar una pelea, la postura básica. Enfrentémoslo, sin a