Arduino Panel is a web app, where a user can send actions to a Raspberry Pi in order to perform certain hardware tasks. Hardware tasks could be turning on an LED light, creating noise with a buzzer, or using an SR04 ultrasonic sensor to see if an object is within its proximity.
The frontend aspect of this project was built with NextJS, and made interactions with an API endpoint created using NodeJS & ExpressJS. On the frontend, a user would press a button, which would trigger a get request to the API endpoint/server we created. Upon receiving that request from the frontend, our backend uses NodeJS to create child processes. These child processes execute Python scripts, and cause our hardware components to perform certain actions, based on the parameters that are given by the get request. Once the Python scripts are executed, we use NodeJS to collect their output, from print statements, and send them back as part of a JSON response to our frontend. We use that JSON data to let the user know what happened when the buttons are clicked.
The Python scripts used the gpiozero library in order to make interactions with our Raspberry Pi.
How much experience do you have? Does the project use anything you didn't create?
Bryan: Intermediate to advanced level experience with hardware & system programming with Python & Java. Focuses on development using Arduinos, Raspberry Pi's, and other IoT devices. Also has beginner level experience when it comes to web development. Besides working with Python and Java, Bryan enjoys working with C & C++.