Mechanical Design, Machine Design
Group Assignment:
Design a machine that includes mechanism + actuation + automation + application
Build the mechanical parts and operate it manually
Document the group project
Individual Assignment:
Document your individual contribution
Have you answered these questions?
Documented the machine building process to the group page ✅
Documented your individual contribution to this project on your own website✅
Linked to the group page from your individual page as well as from group page to your individual pages✅
Shown how your team planned, allocated tasks and executed the project (Group page)✅
Described problems and how the team solved them (Group page)✅
Listed possible improvements for this project (Group page)✅
Included your design files (Group page)✅
You need to present your machine globally and/or include a 1 min video (1920x1080 HTML5 MP4) + slide (1920x1080 PNG) (Group page)✅
Group assignment
Design a machine that includes mechanism + actuation + automation + application
Build the mechanical parts and operate it manually
Document the group project
Teamwork
The development of the project was collaborative, as I worked alongside my teammate Armando, who is also attending the Fab Academy. Due to the distance, with him in Huancayo and me in Lima, we connected virtually to review our progress and improve the project, with a clear division of tasks. Our instructors — Roberto, Ulises, Luis Miguel, and Cristian— played a crucial role, guiding us throughout the process and helping us refine the concept of the machine we aimed to create:
Design and assembly of the structure ("the shell")
Integration of motors and moving parts
I was responsible for the "spirit" of the machine, including:
Original idea and conceptualization
Initial 3D modeling
Design of the sensory and electronic system
Full programming in Arduino IDE
Integration of sensors, lights, and controllers
Design and editing of the project poster for visual presentation
Here is the link to learn more about the group project.
Reflections
This group project experience, carried out remotely, was undoubtedly a major learning moment for me—both technically and personally. At first, I felt a lot of uncertainty, as I had never worked on such a complex project without being physically present with my teammate. Coordinating with Armando, who lives in another city, meant facing communication barriers, differences in scheduling, and a new level of responsibility.
I had to trust my own skills more and take full responsibility for ensuring the electronics worked properly. At the same time, I learned how valuable teamwork is, even from a distance. I learned to listen, to contribute, and most importantly, to adapt when things didn’t go as planned.
I also realized the importance of having a support network. The help we received from experts was crucial, and it taught me that in complex projects, it’s okay to ask for help—you don’t have to do everything alone.
In the end, seeing the machine working was incredibly rewarding—not just because of the technical achievement, but because it represented all the effort, patience, and teamwork we invested. This experience has left me feeling more confident, more prepared, and excited to continue exploring technology and creative collaboration.
Individual assignment
Document your individual contribution
Project Conceptualization: "VibroBot – A Sound-Driven Kinetic Machine"
1. Origin and Development of the Idea
Before starting the development of the project, I carried out an exploratory research phase. I reviewed official documentation on the Fab Academy website, searched for visual references on platforms like Pinterest, and analyzed various past projects. This process allowed me to gather ideas, identify possibilities, and find a clear direction for designing a machine that integrates art, technology, and movement.
This project originated from a conceptual idea that I initially proposed, aimed at exploring how sound can be transformed into a visual and three-dimensional experience. From the beginning, the intention was to combine art, technology, and sensory perception in an interactive machine.
Based on this idea, I created the preliminary 3D model of the design and established the foundation for the integration between the electronic and mechanical components.
This stage was essential for visualizing the overall structure of the machine and anticipating how its different parts would interact.
Later on, Armando and I met to review our progress and ensure that we were aligned with the overall concept of the project. Once everything was clarified, Armando took charge of building the entire mechanical structure of our machine.
The preliminary design I created included some plans that I shared with Armando for him to consider when developing the mechanical part of the machine.
With the conceptualization defined, Armando began to execute the idea, improving the mechanisms and the automation of the machine.
2. List of Components
The components I will use for the project include: an Arduino board, a Neopixel, a sound sensor, and a switch. These elements will allow me to configure the electronic system required for the development of the program and the machine's interaction with its environment.
Components Used
Arduino UNO
Type: Microcontroller board based on the ATmega328P
Inputs/Outputs: 14 digital I/O pins (6 with PWM), 6 analog inputs
Power Supply: 5V via USB or 7–12V external power
Communication: USB, UART, I2C, SPI
Use in project: Serves as the main control unit, processing input signals from sensors and controlling outputs such as LEDs.
Neopixel Strip (WS2812B)
Type: Individually addressable RGB LED strip
Voltage: 5V DC
Input: One digital data line from Arduino
Power Consumption: ~60 mA per LED at full brightness
Use in project: Provides visual feedback in response to detected sound, allowing for interactive lighting effects.
KY-038 Sound Sensor
Type: Sound detection module with analog and digital outputs
Power Supply: 3.3V – 5V
Outputs:
- A0 (analog): Outputs a signal proportional to sound intensity
- D0 (digital): High/low output based on adjustable sensitivity threshold
Use in project:
Detects ambient sound and sends corresponding signals to the Arduino for reactive behavior.
Switch (Push Button or Toggle Switch)
Type: Digital input component
Voltage Compatibility: 3.3V – 5V logic
Input:
Connected to a digital pin with pull-up or pull-down resistor
Use in project: Allows the user to power the system on/off or trigger specific actions in the program.
For the aesthetic aspect, the idea was to incorporate an origami structure that could rotate. To achieve this, inspiration was taken from Pinterest, where the design and model used were found.
For this, I chose microporous material and carried out the cutting using a laser cutter.
Now I have the model cut and marked, ready to start testing.
3. Electronic Programming in Arduino IDE
I was responsible for the complete development of the code in Arduino IDE, which includes:
Reading analog signals from the KY-038 sound sensor
Interpreting sound intensity to modulate the system’s response
Controlling Neopixels using the Adafruit_NeoPixel library
Using a physical switch to control the system's power state
Having already defined the components for this project, I began making the connections as follows using an Arduino Uno. I used a breadboard to distribute the 5V power supply, since the Arduino does not have enough dedicated power pins. This way, both the Neopixel strip and the KY-038 sound sensor could be connected properly.
Connection Details
Component |
Arduino Pin |
Component Pin |
Description |
KY-038 Sound Sensor |
A0 (Analog Pin 0) |
A0 (Analog Output) |
Connects to A0 to detect sound |
KY-038 Sound Sensor |
5V |
VCC |
Provides power to the sensor |
KY-038 Sound Sensor |
GND |
GND |
Ground connection |
NeoPixel |
6 |
Data Input (DI) |
Data line to control NeoPixel strip |
NeoPixel |
5V |
VCC |
Power the NeoPixel strip |
NeoPixel |
GND |
GND |
Ground connection |
Switch |
4 |
Switch Pin |
Controls when to turn the system on/off |
Switch |
GND |
Other side of switch |
Connects to GND to complete the circuit |
Code Arduino IDE
#include
#define SOUND_SENSOR_PIN A0 // Pin analógico para el sensor de sonido
#define SWITCH_PIN 4 // Pin del interruptor
#define NEOPIXEL_PIN 6 // Pin para los LEDs NeoPixel
#define NUM_PIXELS 60 // Número de LEDs en la tira
#define SOUND_THRESHOLD 78 // Umbral de detección de sonido
Adafruit_NeoPixel strip(NUM_PIXELS, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
unsigned long lastChangeTime = 0;
int colorIndex = 0;
// Colores que se pueden usar (en formato RGB)
uint32_t colorList[] = {
strip.Color(255, 0, 0), // Rojo
strip.Color(0, 255, 0), // Verde
strip.Color(0, 0, 255), // Azul
strip.Color(255, 255, 0), // Amarillo
strip.Color(0, 255, 255), // Cian
strip.Color(255, 0, 255), // Magenta
strip.Color(255, 255, 255) // Blanco
};
void setup() {
pinMode(SWITCH_PIN, INPUT_PULLUP); // Configura el switch como entrada con pullup
strip.begin(); // Inicializa la tira de LEDs
strip.clear(); // Apaga todos los LEDs
strip.show();
Serial.begin(9600); // Inicia la comunicación serial para debug
}
void loop() {
bool switchOn = digitalRead(SWITCH_PIN) == LOW; // Verifica si el switch está encendido
int soundLevel = analogRead(SOUND_SENSOR_PIN); // Lee el valor del sensor de sonido
// Imprime los valores para verificar el funcionamiento en el Monitor Serial
Serial.print("Sound: ");
Serial.print(soundLevel);
Serial.print(" | Switch: ");
Serial.println(switchOn ? "ON" : "OFF");
// Si el switch está encendido y el sonido supera el umbral
if (switchOn && soundLevel > SOUND_THRESHOLD && (millis() - lastChangeTime > 200)) {
lastChangeTime = millis(); // Actualiza el tiempo de la última vez que se cambió el color
// Cambia al siguiente color aleatorio
colorIndex = (colorIndex + 1) % (sizeof(colorList) / sizeof(colorList[0]));
// Enciende todos los LEDs con el color seleccionado
for (int i = 0; i < NUM_PIXELS; i++) {
strip.setPixelColor(i, colorList[colorIndex]);
}
strip.show(); // Muestra los cambios en los LEDs
} else if (!switchOn || soundLevel <= SOUND_THRESHOLD) {
// Si no hay sonido o el switch está apagado, apaga los LEDs
strip.clear();
strip.show();
}
delay(20); // Pequeña demora para suavizar la lectura
}
Did you have any difficulties while developing this part of the group assignment?
Yes, I did face some difficulties while working on this part of the group assignment, since I wasn't familiar with how the threshold is handled. It took me some time to understand this aspect in order to make the sound react in sync with the music.
Now, the connections are correct.
The switch also worked correctly, turning the LED light on and off.
Ready, now the real test begins: proving that the LEDs move in sync with the music.
The code works perfectly, and the LEDs move in sync with the music. I’m very happy with the result. When the music is changed or a different playlist is used, the system still works correctly.
Reflections
Upon reviewing the Week 12 documentation of the Fab Academy 2025, I feel deeply satisfied with the progress made in the project "VibroBot – A Sound-Driven Kinetic Machine." This project allowed me to integrate various knowledge gained throughout the course, from conceptualization to technical implementation, merging art, technology, and sensory perception into an interactive experience.
The virtual collaboration with my partner Armando, despite the physical distance between Lima and Huancayo, was crucial. Together, we efficiently divided tasks: he handled the construction of the mechanical structure, while I focused on programming, designing the sensory system, and electronic integration. This experience strengthened my teamwork and communication skills, which are essential in collaborative tech projects.
Additionally, the guidance from our instructors was invaluable. Their continuous support allowed us to overcome both technical and conceptual challenges, ensuring that the project not only met academic requirements but also reflected our creativity and collective effort.
This project not only solidified my skills in digital fabrication and programming, but it also inspired me to explore new forms of interaction between art and technology. I am excited about the future possibilities that this learning opens up, both in academic settings and in personal and professional projects.