r/ArduinoProjects

▲ 235 r/ArduinoProjects+1 crossposts

A few years of evolution: my Arduino-powered guitar robot

This is the same idea a few years apart.

The early version used a large rail-based mechanism. The current version is much more compact and modular, but the core idea is still the same: using Arduino-controlled actuators to physically play a real guitar.

Still a lot I want to improve, but it’s fun looking back at how far the mechanism has evolved.

u/MegCell — 2 days ago
▲ 41 r/ArduinoProjects+2 crossposts

I built a wireless keytar from scratch — and even made my own MIDI receiver for it 😭

I built my own wireless keytar from scratch 😭 Using ESP32-S3

So after months of building, debugging, rewiring, breaking things and fixing them again, I finally finished my DIY keytar.

The project started with a Yamaha PSR-E303 keybed. I kept the key mechanism and rebuilt basically everything around it to turn it into a standalone MIDI controller.

The main controller is an ESP32-S3, which handles the key scanning, velocity calculation, sensors, controls, OLED, MIDI processing and wireless communication.

Hardware

The keybed has 36 velocity-sensitive keys with aftertouch. I built a custom matrix-scanning system for the key contacts and measure the timing between the key contacts to calculate velocity.

The controller also has:

  • 36 velocity-sensitive keys
  • Aftertouch
  • Pitch controller with dynamic centering
  • Modulation + filter control
  • SoftPot ribbon controller with 5 assignable banks
  • Dynamic centering for the ribbon
  • Dedicated octave and transpose buttons
  • Sustain control
  • Tilt sensor with dynamic centering
  • Expression slider
  • Custom assignable CC control
  • 4 custom faders
  • 3 custom knobs
  • Multiple banks of custom buttons
  • OLED display

Most of the analog controls are read through the ESP32-S3's ADC inputs and converted into MIDI CC values.

The pitch and ribbon inputs have software-based dynamic centering, so the controller can detect the center position and return the value to the configured center when released.

The SoftPot was one of the more annoying parts to get working reliably because it needs continuous analog scanning and filtering while still responding quickly enough for live playing.

MIDI / firmware

The ESP32-S3 handles the MIDI generation directly.

Key presses are converted into:

Key matrix → contact timing → velocity calculation → MIDI Note On/Off

while the other controls generate MIDI CC, pitch bend and other appropriate MIDI messages.

I also implemented filtering/debouncing and value handling so the controls don't constantly spam duplicate MIDI messages when they're sitting still.

The OLED is updated with things like octave, transpose, ribbon bank/value, connection state and the currently active CC/value.

📡 Wireless MIDI

For wireless MIDI I built my own Wi-Fi transport instead of relying on Bluetooth MIDI alone.

The ESP32 creates the wireless connection and sends MIDI data using UDP packets.

The basic architecture is:

ESP32-S3 → Wi-Fi → UDP → Receiver application → MIDI output → PC / synth

The receiver listens for the incoming UDP MIDI packets and converts them back into normal MIDI messages.

I also built the receiver application myself. It shows the connection state and MIDI activity and can route the received MIDI to the computer or a supported external synthesizer.

This ended up being a whole separate project by itself lol 💀

Some of the problems

The hardware was only one part of it.

I had to debug:

  • Key matrix scanning
  • Velocity timing
  • Key debouncing
  • Aftertouch
  • ADC readings
  • SoftPot filtering
  • Ribbon centering
  • Tilt sensor calibration
  • MIDI CC handling
  • Pitch bend stability
  • UDP packet transmission
  • Wireless latency
  • OLED updates
  • Battery power
  • Firmware bugs

There were definitely points where I thought:

"yeah this thing is never getting finished" 💀

But eventually everything started behaving properly and I ended up with an actual playable instrument.

What's next?

I'm also planning another part of the project: a Raspberry Pi-based sound engine that isn't limited to this keytar.

The idea is to make a standalone sound module that can accept MIDI from basically any MIDI controller, process the MIDI and generate the sounds directly on the Pi.

So eventually the setup could be something like:

Any MIDI controller → Raspberry Pi sound engine → audio output

I'll post a proper video demo tomorrow showing the keytar being played and going through the controls, wireless MIDI and receiver.

For now, here's the finished build. Would love to hear what you guys think!

u/Vutu_Vox — 3 days ago

I built a PCB editor for people who have never designed a PCB

I’ve been building SketchForge Circuits, an open-source PCB editor that runs completely in the browser.

The idea came from a problem I kept noticing: PCB tools are incredibly powerful, but they can feel brutal when you are designing your first board.

So I wanted to try the opposite approach.

Place components visually. Connect them. Arrange your PCB. Inspect it in 3D. Keep the interface focused on what you are actually building instead of throwing every professional feature at you from the first minute.

The goal is not to replace KiCad.

The goal is to create something closer to Tinkercad for PCB design, especially for beginners, students, hobbyists, and makers who just want to start building.

It is still an early prototype. There are missing features, rough edges, and plenty of things I probably got wrong.

That is actually why I’m posting it now.

I’d love feedback on the workflow, UI, and especially this question:

What would SketchForge Circuits need before you would actually use it for a real project?

Try it:
https://pcb.sketchforge3d.com/

GitHub:
https://github.com/Formsmith746/SketchForge-PCB

reddit.com
u/FlatCarrot3943 — 4 days ago

Synthesizer

Still a little buggy. I think I’m overdriving the Leonardo.

Currently pushing a detune for OSC 1, pitch for OSC 2, and a mix pot between them.

ADSR pots not working right.

Fidget spinner speed effects 1 of 4 effects. Tremolo, detuve width, vibrato, or sub bass volume.

I think I can pull a few things out and make it smoother.

Only my third arduino project.

u/somnambulistic — 4 days ago
▲ 12 r/ArduinoProjects+4 crossposts

Radio Control vs. Bluetooth:

Hey everyone, I'm a Mechanical Engineering student and I’ve been documenting my journey into building stuff.

I wanted to break down the technical differences: how the joystick inputs (potentiometers) actually turn into wireless signals, and where each protocol really shines in terms of reliability and use-case.

I made this video to explain the signal path and the electronics involved for anyone trying to decide which route to take for their next project.

youtu.be
u/SheBuilds_Eng — 4 days ago

I made a Rotating Qi Wireless Charger Pedestal

Action Shot

The table spins and flashes red when a wireless charging device is present and charging. It stops automatically when charging is complete. The knob varies the table spin speed. Runs on 12V and has a high power Qi charger built in. An Arduino inside senses the Qi charger state and controls the LEDs and motor.

The Arduino code is pretty trivial; it's posted with the project on Thingiverse along with an electrical diagram and 3D print files.

u/Hissykittykat — 3 days ago

32x8 scrolling clock

I was looking for a project to help be understand how API links feed data to the ESP32 and can I scroll it across my screen. I'd say yes, I figured that out.

I'm looking for free API connections. I've linked the National Weather Service, Stock Markets, BLS, AP News and CNN. My next attempt is my company's ERP, maybe I can pull the data for a digital dashboard

u/Sweet-Device-677 — 5 days ago
▲ 21 r/ArduinoProjects+5 crossposts

A 4-servo quadruped that reconfigures into 5 different locomotion modes (biped, tricycle, bar-spin, 4WD, water-paddle)

Been testing how much mechanical diversity I can get out of Quaddle robot by changing the attachment instead of adding more actuators. Same 4 servos and the same OpenCat firmware the whole time — what changes is the attachment (3D-printed, mostly) and which gait is loaded for it:

- Biped: printed base clips on, switches to two-legged walking

- Tricycle: printed wheel mount + a bearing wheel, front legs go passive and drag

- Bar-spin: printed grippers clip onto a bar, full 360° rotation gait

- 4WD: wheel kit replaces all 4 legs, standard car driving

- Water-paddle: printed footpads, paddling gait (works, though we've sunk it twice)

This is pre-release — not in production yet, but I wanted to share this fun experiment since keeping the servo count fixed while switching locomotion modes was a fun constraint to design around. The gait codes and the 3D-printed parts will be open sourced.

Happy to go into Quaddle's gait/kinematics details in the comments if anyone's curious.

youtube.com
u/PetoiCamp — 5 days ago

My first Arduino Box

Details:

  1. Arduino Nano BLE Sense (1st rev).
  2. LiPol 90 mAh battery.
  3. OLED 0.91 128x32 I2C.
  4. USB C charger.
  5. Boost convertor.

Soldering:

  1. One of resistors (RPROG) on USB C charger is replaced to 15 kOm to provide proper charge DC.
  2. Switch connects the battery either with the USB C port or with the board (through the boost convertor). They cannot works simultaneously.
  3. The boost convertor gets 3.7 V and provides 5 V straight to the board VIN pin.
  4. OLED uses the 3V3 board pin.

Box is created in FreeCAD (what a nightmare) and 3D-printed with PLA. And, of course, it damaged a bit during soldering :)

u/olgampavlova — 5 days ago

ESP32 Rhine Barge

https://preview.redd.it/2pal9jjo56jh1.jpg?width=4096&format=pjpg&auto=webp&s=d85c1456c4393a352fcaa0766b406c3a63b4c21b

My first project in FreeCAD to practice with it: A 3D printed barge.

All but the blue parts were printed on my Ender 3 V2. The hull is PETG, the rest is PLA. It uses an esp32 as flight controller with fs-ia10b receiver to capture the I-Bus signal. This was the first real test, worked pretty well until it started leaking after 20 minutes, so I sealed the hull seams some more for round 2.

u/Olaf686 — 7 days ago

Automated trashbin that detect plastic paper and metal

Hi everyone! We’re currently working on a research project where we need to build an automated trash bin that can sort paper, plastic, and metal. We only have around 1 week to make the prototype, so we’re trying to figure out what materials and sensors we should buy.

We’ll be using an Arduino Uno R3 as the main controller, but we’re not really sure yet which sensors would be best for detecting each type of waste.

We’d really appreciate any advice on:

What sensors can detect metal, plastic, and paper

Other components/materials we’ll need for the prototype

How we can make the sorting mechanism work with Arduino

Any tips or research papers/tutorials we can use as a guide

We’re still beginners with Arduino, so any help or recommendations would mean a lot. Thank you so much in advance

reddit.com
u/voltoriax — 8 days ago
▲ 776 r/ArduinoProjects+2 crossposts

I started this Arduino guitar robot with popsicle sticks 6 years ago

In 2020, I was new to Arduino, coding, and electronics.

I studied shipbuilding, so none of this was really my field. I just had a strange idea: could I build something that could play a real guitar?

The first prototype was made with popsicle sticks and cheap servos. It worked — barely — but that was enough to keep going.

After getting my first 3D printer, I kept redesigning the mechanisms, control system, and software.

Six years later, I've gone through six major generations, and I'm still working on it.

I'm still building.
I'm still struggling.
But I'm still moving.

This is a short video of how the project evolved over the years.

u/MegCell — 11 days ago
▲ 81 r/ArduinoProjects+8 crossposts

GitHub - Jchountas/ESP32-web-shell: This project is an aproach in the development of an ESP32 web shell. It acts as a way to the microcontroller with a UNIX like experience, hence most of the experience will seem familiar to a lot of users.

Hello! I would like to share my recent project for my master's dissertation, where I made a working esp32 web shell.

I tried to emulate basic linux commands and functionalities. You can use both serial and web shell to use the system.

The system features the following:
-embedded file system with no SD card requirement as it uses LittleFS
-FreeRTOS FIFO scheduling
-JavaScript system language and scripting through duktape
-Web-shell interactive UI which is customizable

I tried to keep the code as organized and as clean as possible for the best possible user customization.

I'd love for anyone to try it and have feedback. I won't work on it for much longer but I wanted to share it.

github.com
u/I_save_in_jpeg — 10 days ago

Arduino Train with IR remote

I'm a beginner. I wish I had access to electronics when I was a kid 30+ years ago. But now I'm building a toy for my own kids and it's my first project more complex than connecting a couple of LEDs and sensors on a breadboard. But I believe this should work 😂.

Actually, version 1 worked for a while (almost a year). It was ugly, but it worked. There were too many wires (and really bad maintainability), awful soldering, 2x18650 batteries with a built-in charger and protection but no balancer, and it worked for a while before one battery died. The LEDs were powered directly by Arduino pins, limiting the number of available Arduino pins and increasing the total current almost to the limit.

It started when I found someone else's project: STL files for a 3D model of a DUPLO-compatible train, a simple electronic circuit, and a simple Arduino program. I modified the 3D model slightly, added RGB LEDs, a tilt sensor, a battery voltage meter, and wrote my own more advanced and feature-rich Arduino program. I have some basic programming experience, and AI is incredibly helpful when you know how to use it properly.

Features (version 1):

  • IR remote control (21 buttons)
  • 3 speed levels
  • Stop button: stops; red lights
  • Speed up button: speed level +1, moves forward; white lights
  • Speed down button: speed level -1, moves forward until speed level = 0; white lights while moving, red lights when stopped
  • Move backward button: moves backward at speed level 1 while the button is pressed; blue lights
  • Move forward button: moves forward at speed level 1 while the button is pressed; white lights
  • Auto button: moves forward with obstacle detection enabled (ultrasonic sensor). Stops if there is an obstacle. Moves forward if the obstacle is removed. Speed depends on the distance to the nearest obstacle. White lights and green light
  • Horn button: horn sound effect
  • Siren button: red and blue lights; siren sounds
  • Music buttons: 8 different melodies
  • Mute button: sound on/off
  • Battery status button: indicates battery level by sound beeps, for example, 7 long beeps and 3 short beeps = 7.3V
  • Battery status detection: warning level with red lights and sound; shutdown level
  • Sleep mode after 5 minutes without IR remote input
  • Tilt sensor: stops when the train is on its side; red lights; if the train is back in a vertical position, yellow light

Planned changes (version 2):

  • speed boost (limited in time >6V on the 6V DC motor) [makes sense?]
  • probably a laser distance sensor instead of ultrasonic one [an experiment, to see if it works better]
  • color sensor to make it compatible with the original action bricks
  • Built-in USB charger and BMS for the battery pack
  • RGB LEDs connected via an expander and transistors to get free pins and reduce current on Arduino, so I can add more sensors/devices in the future. As an alternative I'll probably use an expander module with built-in transistors, not yet decided.
  • DRV8833 DC motor driver instead of HG7881/L9110
  • my own 3D model designed from scratch

Future versions:

  • Maybe an mp3 player and small speaker instead of a buzzer?
  • Ambient light sensor?
  • Railroad switches controlled from the same IR Remote?

If you see any issues on the circuit diagram let me know. I have no idea when a where I should use capacitors. I should use at least one with a DC motor, right? (there were none in version 1).

Links:

Original project: https://cults3d.com/en/3d-model/game/locomotora-sofia-controlada-por-infrarojos-con-control-de-velocidad-por-ultrasonidos-y-motor-superior-multiusos-lego-duplo
My project (version 1): https://makerworld.com/en/models/1854728-arduino-train-compatible-with-duplo-tracks#profileId-1983131
My Arduino code (version 1): https://github.com/avatorl/Arduino/tree/main/duplo-train

u/AVatorL — 9 days ago

I generated a complete Arduino obstacle-avoiding rover design - would you actually build this?

I've been experimenting with automatically generating complete Arduino project designs from a simple description, and I wanted to see how useful the result would actually be to someone trying to build the project.

For this test, the prompt was essentially:

Design a small Arduino-based rover that can move autonomously and detect and avoid obstacles.

The result included:

- The proposed robot design

- Arduino and component selection

- Motors, sensors and motor drivers

- A complete bill of materials

- Wiring instructions / diagram

- Assembly steps

- Starter Arduino code

I've attached the main outputs.

I haven't physically built this rover yet, so I'm particularly interested in having people who actually work with Arduino look at it critically.

If you were going to build this yourself, what would you change?

Are there any components you wouldn't use?

Anything wrong or unnecessarily complicated in the wiring?

Anything missing from the BOM?

Would the proposed design actually make sense as a beginner project?

The larger thing I'm trying to understand is whether automatically generated project plans like this can actually help people get from "I want to build a robot" to something concrete enough that they can start building.

Happy to share more of the generated design/code in the comments if anyone wants to dig into it!

https://preview.redd.it/bd96s2awdeih1.png?width=1267&format=png&auto=webp&s=2a2a32430de14a41243f5b719268d3c5d032be89

u/True_Value_6299 — 11 days ago