Pedal USB basado en Rpi Pico
Pedal USB (o cualquier otro interruptor momentaneo) que emula la pulsacion de teclas o combinaciones de teclas. Util para usar con aplicaciones de edicion de video para detener/reproducir sin tener que quitar las manos del teclado ni del raton, tambien puede usarse con aplicaciones de videoconferencia para hacer mute rapidamente. No se requiere ninguna aplicacion especial para descargar el firmware inicial, ni tampoco para configurar las teclas (un simple editor de texto bastara). Funciona practicamente con cualquier sistema operativo, incluso con dispositivos Android usando un adaptador USB OTG.
Componente clave: Rpi Pico.
El concepto:
La gran mayoria de los pedales programables USB que se encuentran en el mercado poseen la gran desventaja de requerir instalar una aplicacion para poder ser configurados. Esta aplicacion la mayoria de las veces solo funciona en Windows y generalmente viene traducida a muy pocos idiomas(a veces no viene traducida!). Esto supone que para usuarios de Linux o Mac, se requiera instalar una maquina virtual para poder configurar dicho pedal, o pedir el favor a algun usuario de windows que nos ayude con esta tarea.
Es aqui donde cobra importancia el Raspberry Pi Pico, por 2 grandes razones: Tiene interfaz nativa USB, por lo que no se requiere de programador ni hardware adicional para descargar los programas y la mas importante aun es que soporta CircuitPython, por lo que se puede programar “en caliente” sin necesidad de estar permanentemente compilando y descargando firmware durante el proceso de depuracion. ¡Por lo tanto es el candidato perfecto para hacer nuestro propio pedal!
Otra ventaja adicional con respecto a los pedales USB comerciales, es que el propio pedal, puede ser reemplazado facilmente por uno de mejor calidad o resistencia, pero conservando el circuito original. Tambien podria usarse otro tipo de interruptores diferentes para ser activados con partes del cuerpo diferentes a los pies. ¡La cantidad de interruptores que se le pueden adicionar solo esta determinada por los GPIO disponibles del Rpi Pico y por el tamaño de la caja!
En cuanto al montaje fisico, se utilizo el sistema de prototipado de hardware MISISTEMITA que proporciona una serie de modulos y elementos pre construidos que permiten realizar un proyecto electronico sin necesidad de soldaduras, haciendolo facilmente modificable y flexible, pero a la vez robusto. Todo el conjunto va dentro de una caja a prueba de agua IP65, la cual le proporciona resistencia al polvo y al agua. Dicha caja ademas de proporcionarle un aspecto estetico “industrial” tambien le otorga suficiente robustez mecanica para soportar uno que otro abuso. Los cables de conexiones electricas externas de la caja, fueron complementadas con accesorios para garantizar el sellamiento IP65.
Principales Caracteristicas:
- Desarrollado mediante CircuitPython, amigable y facil de entender
- Compatible con los sistemas operativos mas conocidos
- No se requiere instalar ninguna aplicacion para descargar el Firmware inicial
- La configuracion de las teclas se realiza mediante la edicion de un archivo de texto
- Resistente al agua y golpes.
- Pedales reemplazables
- Montaje realizado mediante el sistema de prototipado robusto para hardware electronico MISISTEMITA
- Alimentacion mediante puerto USB, no requiere fuente adicional.
El hardware es bastante simple, solo se requiere el Rpi Pico y los interruptores conectados cada uno a un GPIO y a tierra. Se usan las resistencias de pull-up internas. La alimentacion y los datos llegan por el conector USB
Que es CircuitPython?:
Dicho en palabras de Industrias Adafruit, creadores de CircuitPython:
es un lenguaje de programación diseñado para simplificar la experimentacion y aprendizaje de programar en microcontroladores de bajo costo. Hace el iniciar mas sencillo que nunca sin necesidad previa de descargar herramientas a la estación de trabajo. Una vez que tu tarjeta ha sido preparada, abres cualquier editor de texto, y puedes comenzar a escribir codigo. Es asi de simple.
Otras razones para usar CircuitPython incluyen:
- Quieres tener tu ambiente listo para trabajar, en poco tiempo. Creas un archivo, editas tu codigo, salvas el archivo y se ejecuta de inmediato. No hay proceso de compilado, sin descargas ni subidas necesarias.
- Eres nuevo en programacion. CircuitPython es diseñado pensando en educacion. Es sencillo comenzar a programar, y recibes retroalimentacion inmediata de la tarjeta.
- Actualiza sencillamente tu codigo. Dado que tu codigo vive en la unidad de disco, puedes editarlo cuando gustes, y puedes mantener varios archivos con diferentes archivos para facil experimentacion.
- La consola serial y REPL. Estas te permiten recibir retroalimentacion en vivo de tu codigo y programando de forma interactiva.
- Almacenamiento de archivos. El almacenamiento interno de CircuitPython es un excelente lugar para bitacoras de datos, tocar archivos de audio o para interactuar con archivos.
- Fuertes capacidades de hardware. Hay muchas bibliotecas y controladores para sensores, tarjetas especificas y otros componentes externos.
El programa:
El firmware presentado en este proyecto realiza dos tareas: Inicializar los GPIO dependiendo del archivo de configuracion y luego de esto un ciclo infinito estara verificando la pulsacion de cada interruptor para enviar el respectivo codigo de tecla. Se ha hecho uso de un antirebote por software para evitar falsas pulsaciones. Cada vez que se activa cualquiera de las entradas, se encendera el led incorporado en la tarjeta Rpi Pico
El archivo de configuracion tiene una estructura muy simple, en donde esta escrito cuales son los GPIO a usar, que codigo de tecla enviara cuando dicho GPIO se active y adicionalmente que modificador de tecla se usara (por ejemplo SHIFT, CONTROL, ALT). En caso de no encontrarse el archivo de configuracion, el programa asumira unos valores por defecto. En dicho archivo no solo se puede modificar las teclas que se envian, sino que se pueden agregar tantos GPIO como se quiera, de esta forma se podrian tener 3 o 4 pedales.
Ensamblaje:
El prototipo del sistema fue montado usando varios componentes de MISISTEMITA, como la placa trasera para montaje, y la tarjeta de salida a terminales de tornillo para el Rpi Pico
Una vez descargada la aplicacion por primera vez y comprobado que las conexiones electricas funcionan bien, se puede pasar a la caja para montaje definitivo sin ningun traumatismo. Solamente hay que desconectar el puerto USB y las terminales de tornillo donde estan conectados los interruptores de prueba, fijar la placa a la caja y reconectar nuevamente.
Se escogio un conector USB tipo impresora, por ser uno de los mas robustos e intuitivos. El conector usado es del tipo para montaje en panel y tiene 4 pines para soldar los cables (VCC,USB+,USB-,GND). Este conector se soldo a una extension Micro USB que conectara al Rpi Pico. Los pedales usan conectores tipo aviacion
Una vez cerrada la caja, las actualizaciones al programa pueden hacerse modificando el archivo de CircuitPython, o usando la interfaz interactiva. Si se requiere hacer una reinstalacion de CircuitPython o “formatear” el Rpi Pico, debera abrirse la caja para tener acceso al boton bootsel.
Listado de materiales
Componente | Consigue el tuyo! | Hoja de caracteristicas |
---|---|---|
Tornillo M2.6 autorroscante tipo B | 💸 | M2.6x5-6-8-12mm.pdf |
Espaciador separador de nylon G228 | 💸 | G228.pdf |
Tubo termoencogible 2:1 multiples colores | 💸 | 2_1_heatshrink_tube_colors.pdf |
Caja estanca generica resistente al agua de 115x90x55 mm | 💸 | KH-F2.pdf |
Raspberry Pi Pico | 💸 | pico-datasheet.pdf |
Conector USB Tipo B IP68 para panel | 💸 | USB_TYPE_B_PANEL_MOUNT_CONNECTOR.pdf |
Conector de aviacion 4 pines | 💸 | CIRCULAR_AVIATION_PANEL_CONNECTOR.pdf |
Interruptor momentaneo de pedal Metalico | 💸 | METAL_MOMENTARY_ELECTRIC_FOOT_SWITCH.pdf |
Cable de impresora USB tipo A | 💸 | USB_PRINTER_CABLE.pdf |
Cable Micro USB | 💸 | MICRO_USB_CABLE.pdf |
Componentes MISISTEMITA
PCB | Archivos fuente |
---|---|
Placa trasera para montaje A01 para caja de 158x90x60mm | A01 |
Tarjeta breakout C11 con salida a terminales de tornillos para Rpi Pico | C11 |
Software
Software | Archivos fuente |
---|---|
Firmware | PEDAL_USB_RPI_PICO |
Componentes opcionales:
Componente | Consigue el tuyo! | Hoja de caracteristicas |
---|---|---|
Juego de 3 brocas escalonadas 3-20 mm + centropunto | 💸 | 3_pc_set_3-20mm_drill_bit_incremental_center_punch.pdf |
Broca escalonada de 8 pasos 10-45 mm | 💸 | 8_steps_10-45mm_incremental_drill_bit.pdf |