100% encontró este documento útil (1 voto)
304 vistas4 páginas

PyFirmata2: Controla Arduino con Python

PyFirmata2 convierte un Arduino en una tarjeta de adquisición de datos controlada por Python mediante la carga del sketch Firmata predeterminado en el Arduino. Esto permite el muestreo preciso de señales y su procesamiento en Python. El programa Python registra callbacks que se llaman cada vez que llegan nuevos datos del Arduino, permitiendo aplicaciones como osciloscopios en tiempo real y lectura/escritura de puertos digitales y analógicos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
304 vistas4 páginas

PyFirmata2: Controla Arduino con Python

PyFirmata2 convierte un Arduino en una tarjeta de adquisición de datos controlada por Python mediante la carga del sketch Firmata predeterminado en el Arduino. Esto permite el muestreo preciso de señales y su procesamiento en Python. El programa Python registra callbacks que se llaman cada vez que llegan nuevos datos del Arduino, permitiendo aplicaciones como osciloscopios en tiempo real y lectura/escritura de puertos digitales y analógicos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

pyFirmata2

PyFirmata2 convierte su Arduino en una tarjeta de adquisición de datos controlada por


Python.

Simplemente cargue el boceto de firmata predeterminado en su Arduino y ya está todo


listo.

pyFirmata2 es una versión actualizada de pyFirmata que agrega un muestreo preciso a la


API para que sea posible filtrar las señales y, en general, procesar las señales. En lugar de
comandos de "suspensión" que tienen un tiempo poco confiable, el Arduino realiza el
muestreo en su firmware y luego transmite los datos a pyFirmata2. La aplicación Python
simplemente registra una devolución de llamada que luego se llama cada vez que llegan
nuevos datos.

Esta API se ha utilizado en mi clase de Procesamiento de señal digital (DSP) para practicar
el filtrado en tiempo real de datos de sensores analógicos. Se pueden ver ejemplos en el
canal de YouTube de la clase: [Link]

Instalación
Subir firmata

Instale el IDE de Arduino en su computadora: [Link]

Inicie el IDE y cargue el boceto estándar de firmata en su Arduino con:

Archivo -> Ejemplos -> Firmata -> Firmata estándar

Instalar pyfirmata2

La forma preferida de instalación es con pip / pip3. Bajo Linux:

pip3 install pyfirmata2 [--user] [--upgrade]

y en Windows / Mac escriba:

pip install pyfirmata2 [--user] [--upgrade]

También puede instalar desde la fuente con:

git clone [Link]


cd pyFirmata2

Bajo tipo de Linux:

1
instalación de python3 [Link]

En Windows / Mac:

instalación de python [Link]

Uso
Inicialización

Cree una instancia de la clase Arduino:

de pyfirmata import Arduino


tablero = Arduino ([Link])

que detecta automáticamente el puerto serie del Arduino.

Si esto falla, también puede especificar el puerto serie manualmente, por ejemplo:

tablero = Arduino ('COM4')

En Linux, esto suele ser / dev / ttyACM0. En Windows, este es un puerto COM, por
ejemplo COM4. En un MAC es / dev / ttys000, /dev/cu.usbmodem14101 o busque la
última incorporación: ls -l -t / dev / *.

Comenzar el muestreo en un intervalo de muestreo dado

Para muestrear datos analógicos, debe especificar un intervalo de muestreo en ms. El


intervalo más pequeño es de 10 ms:

[Link] (intervalo de muestreo en ms)

Llamar a samplesOn () sin su argumento establece el intervalo de muestreo en 19ms.

Habilitación y lectura de pines análogos

Para procesar datos en un intervalo de muestreo dado, registre un controlador de devolución


de llamada y luego habilítelo:

[Link] [0] .register_callback (myCallback)


[Link] [0] .enable_reporting ()

donde myCallback (datos) se llama cada vez que se reciben los datos y el propio arduino
los temporiza.

También puede leer pines analógicos adicionales en cualquier momento emitiendo un


comando de lectura:

2
[Link] [1] .read ()

Esto es útil para leer pines adicionales dentro de un controlador de devolución de llamada
para procesar múltiples pines simultáneamente. Tenga en cuenta que los datos obtenidos
por read () se leen desde un búfer interno que almacena el valor más reciente recibido del
Arduino. Esta llamada no es de bloqueo. También debe ejecutar enable_reporting () en ese
pin antes de poder usar read ().

Escribir en un puerto digital

Los puertos digitales se pueden escribir en cualquier momento:

[Link] [13] .escribir (1)

Para cualquier otra funcionalidad, use la clase de pin a continuación.

La clase pin

El comando get_pin solicita la clase de un pin especificando una cadena, compuesta de 'a' o
'd' (dependiendo de si necesita un pin analógico o digital), el número de pin y el modo ('i'
para la entrada, 'o' para salida, 'p' para pwm). Todo separado por:. [Link]. a: 0: i para 0
analógico como entrada o d: 3: p para pin digital 3 como pwm:

analog_0 = board.get_pin ('a: 0: i')


analog_0.read ()
pin3 = board.get_pin ('d: 3: p')
[Link] (0.6)

Cerrando el tablero

Para cerrar el puerto serie al Arduino, use el comando de salida:

[Link] ()

Código de ejemplo
El directorio [Link] contiene dos
osciloscopios en tiempo real con una frecuencia de muestreo precisa, un lector de puerto
digital, el omnipresente programa de LED parpadeante y un programa que imprime datos
utilizando el controlador de devolución de llamada.

Solución de problemas
Spyder

3
Inicie su programa desde la consola / terminal (Anaconda-) y nunca dentro de Spyder. Aquí
hay un ejemplo para Windows:

(base) D: \>
(base) D: \> cd pyFirmata2 \ ejemplos
(base) D: \ pyFirmata2 \ examples> python realtime_two_channel_scope.py

El problema con Spyder es que no permitirá que su programa Python termine


correctamente, lo que deja el puerto serie en un estado indefinido. Si luego vuelve a
ejecutar su programa, no podrá hablar con su Arduino. En el peor de los casos, debe
reiniciar su computadora. En pocas palabras: use Spyder para editar, ejecute el programa
desde la consola / terminal.

Después de una actualización, todavía se está utilizando la versión anterior

Si usa la opción --user para instalar / actualizar paquetes, Python podría mantener versiones
anteriores.

Solución: realice una desinstalación de pip pyfirmata2 varias veces hasta que no quede
ninguna versión en su computadora. Luego instálelo nuevamente como se describe arriba.

También podría gustarte