PDF de programación - Cómo interactuar con arduino usando Python y Firmata

Imágen de pdf Cómo interactuar con arduino usando Python y Firmata

Cómo interactuar con arduino usando Python y Firmatagráfica de visualizaciones

Publicado el 22 de Junio del 2019
3.317 visualizaciones desde el 22 de Junio del 2019
181,6 KB
9 paginas
Creado hace 12a (18/10/2011)
Pyfirmata

Cómo interactuar con arduino usando

Python y Firmata

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Puesta a punto

● Volcar en Arduino el sketch StandardFirmata
● Volcar en Arduino el sketch StandardFirmata.
● Instalar pyfirmata
● Instalar pyfirmata:

$ hg clone https://bitbucket.org/tino/pyfirmata
$ cd pyfirmata; python setup.py install

● Si necesitas servos:

$ svn export https://lagunak/svn/krnl/pyfirmata_servo/servo.patch .
$ patch -p0 < servo.patch
$ python setup.py install

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Hola mundo (blink)

● Este ejemplo hace parpadear el
led enchufado al pin digital 13
● Ademas de digital también hay

analog, y además de write
también hay read :-)

import time
from pyfirmata import Arduino

board = Arduino('/dev/ttyUSB0')

while 1:

board.digital[13].write(1)
time.sleep(1)
board.digital[13].write(0)
time.sleep(1)

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Lecturas

● Para evitar que el Arduino nos esté mandando contínuamente datos en

los pines de lectura, se utiliza un Iterator:

it = util.Iterator(board)
it.start()
board.analog[0].enable_reporting()
board.analog[0].read()

● El Iterator es un thread, por lo que hay que matarlo al salir. Lo más

facil es romper la conexión con el puerso serie, el thread se suicida el
solito.

board.exit()

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Ventilador (Digital)
● pin.read() == 0..1
● pin.write([0,1])

24 def start(self):
25 while self.loop:
26 newvalue = self.board.analog[self.pot_pin].read()
27 print newvalue
28 if self.value != newvalue:
29 if newvalue > 0.5:
30 self.board.digital[self.motor_pin].write(1)
31 else:
32 self.board.digital[self.motor_pin].write(0)
33 self.value = newvalue
34 time.sleep(0.5)

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

PC Speaker (PWM)
● pin.mode = PWM
● pin.write(0..1)

6 def __init__(self, port, pot_pin, motor_pin):
[...]
17 self.board.digital[self.motor_pin].mode = PWM
[...]
26 def start(self):
27 while self.loop:
28 newvalue = self.board.analog[self.pot_pin].read()
29 print newvalue
30 if self.value != newvalue:
31 self.board.digital[self.motor_pin].write(newvalue)
32 self.value = newvalue
33 time.sleep(0.5)

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Servos
● pin.mode = SERVO
● pin.write(angulo)

6 def __init__(self, port,
pot_pin, motor_pin):
[...]
17 self.board.digital[self.motor_pin].mode = SERVO
[...]
26 def start(self):
27 while self.loop:
28 newvalue = self.board.analog[self.pot_pin].read()
29 if (newvalue is not None) and (self.value != newvalue):
30 angle = int(180 * newvalue)
31 print"%s => %s" % (newvalue, angle)
32 self.board.digital[self.motor_pin].write(angle)
33 self.value = newvalue
34 time.sleep(0.5)

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Otro ejemplo

● Representacion del estado del
Arduino con una GUI en PyQT

● De igual manera podríamos

usar sockets, la carga del
ordenador, consultas http...

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala

Comentarios

● Es muy fácil de usar.

● Con la consola de python podemos hacer pruebas directamente en

Arduino.

● También existe pyduino, pero parece que es un proyecto

abandonado.

● En pyfirmata hay un desarrollador (un tanto esporádico), y una

persona que envía parches (además del mío :-).

● Tiene sus limitaciones (DHT11).

● Todavía le faltan cosas para implementar completamente firmata,

aunque lo más típico ya está.

Hackmeeting – 2011

http://lagunak.gisa-elkartea.org/projects/krnl
http://lagunak.gisa-elkartea.org/svn/krnl/recetario/firmata

GISA Elkartea

Ales Zabala
  • Links de descarga
http://lwp-l.com/pdf16164

Comentarios de: Cómo interactuar con arduino usando Python y Firmata (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad