My team and I developed a robotic bass player using an ESP32 microcontroller programmed with MicroPython, and a LabView GUI for coordinating and actuating the hardware and GUI indicators simultaneously. The hardware consisted of a protoboard (right image) with LEDs simulating the frets and strings of the bass, a buzzer for imitating notes, and an accelerometer at the end of a wand to mimic the conductor's baton in an orchestra.
To comply with the embedded systems' basic principles of real-time programming and multitasking, we had to poll accelerometer (left images) data at a constant rate of 10ms for the real-time aspect of the project. For multitasking, we created different queues in LabView to run through different loops simultaneously. One queue is dedicated for users to input melody manipulated by a drop-down in the GUI menu with different notes (right image). These notes were stored in an array and read individually on a second loop with AutoIndexing functionality to send them to a parallel queue controlled by an even structure.
The second queue is connected with the VISA function block to send the queue of notes to the microcontroller using the UART communication protocol. Troubleshooting and debugging skills were essential in this project, as we faced continuous errors that needed to be resolved according to the project's necessities.
This project equipped me with practical experience in Micropython and Labview, enabling me to develop a real-time and multitasking embedded system using various hardware components.