Final Project Documentation
Automated Perler Bead Color Sorting Machine
This is where I will start defining my final project idea and start to get used to the documentation process.
Project summary
Mixed Perler beads are fed through a funnel onto a servo-driven turntable. A TCS34725 RGB sensor reads each bead; a second servo rotates a chute to sort red, green, yellow, and blue into separate bins. An ESP32 XIAO C3 runs detection firmware and optional Wi-Fi web control (machineRunning).
Presentation media
Final presentation files in the website root directory:
- presentation.png — summary slide (1920×1080)
- presentation.mp4 — ~1 min demo video
System integration
Mechanical (3D-printed funnel/disc + laser-cut frame) + electronics (custom KiCad PCB, XIAO ESP32-C3, TCS34725, dual servos) + firmware (color classification → servo angles → feed cycle). Documented in Electronics and Week 16.
Documentation sections
Use the pages below to document research, design, fabrication, electronics, and the bill of materials for this project.
Click any card below to open the full documentation page — Research, Design, Electronics, and Materials are all linked and ready to view.
Research
Background, motivation, and prior art for bead sorting.
View page2D & 3D Design & Fabrication
CAD models, renders, mechanical layout, 3D printing, laser cutting, and assembly steps.
View pageElectronics
Board, sensors, actuators, firmware, wiring, and system integration.
View pageMaterials
Bill of materials, costs, and purchase links.
View pageThe results of my final project
Sorting accuracy
I evaluated sorting using the protocol from Week 18: calibrate the TCS34725 with five beads per color, then run a mixed batch of 60 beads (20 each of red, green, yellow). After each run I counted correct vs. incorrect beads in every bin.
| Test run | Beads correct | Total beads | Accuracy | Notes |
|---|---|---|---|---|
| Run 1 (indoor, stable light) | 49 | 60 | 82% | Red reliable; 3 green/yellow swaps |
| Run 2 (indoor, stable light) | 47 | 60 | 78% | Yellow misclassified as green/red in 4 cases |
| Run 3 (window light on sensor) | 42 | 60 | 70% | Ambient light shifted RGB readings |
| Average | 46 | 60 | 77% | — |
Throughput: A full 60-bead batch took about 22–26 minutes per run (~2–3 beads/minute) — slower than the 1–2 beads/second target in the Week 18 plan, mainly because Servo2 must finish rotating before the next bead is released.
What worked / what didn't
What worked:
- ESP32-C3 communicates reliably with the TCS34725 over I²C.
- Servo1 advances the turntable; Servo2 routes beads into separate bins.
- Red, green, and yellow beads are sorted automatically in controlled lighting.
- Wi-Fi web interface (
machineRunning) lets me start and stop the machine from a phone. - 3D-printed funnel/chute and laser-cut chassis hold up after repeated test runs.
What didn't work (yet):
- Color detection is sensitive to ambient light and sensor height — readings drift when sunlight hits the bench.
- Similar hues (yellow vs. green, orange vs. red) are sometimes misclassified.
- SG90 servos occasionally jitter, which can drop a bead before the chute is aligned.
- Sorting speed is too slow for practical bulk sorting of a full mixed bag of beads.
- Power supply is not yet optimized for running two servos under continuous load.
More detail on open questions is in Week 19.
Bill of materials & costs
Full itemized BOM with quantities, estimated prices (¥), and purchase links: Materials — Bill of Materials. Core purchased parts total approximately ¥138; with lab-supplied filament, laser-cut wood, and PCB blanks the overall project cost is about ¥150–160. A shorter cost summary is also in Week 18.
Project timeline
Planned schedule (from Week 19); dates shifted slightly as mechanical fit and firmware debugging took longer than expected.
| Time | Planned activities | Status |
|---|---|---|
| May 11 – May 16 | 3D design, printing, and mechanical assembly | Done — funnel, disc, ramp printed and fitted |
| May 17 – May 23 | Program Servo1 & Servo2; connect ESP32 + TCS34725; test color detection | Done — basic color read and servo mapping working |
| May 24 – May 31 | Improve reliability and power supply | Partial — servos stable indoors; power still needs work |
| June 1 – June 3 | Wi-Fi monitoring and sorting algorithm optimization | Done — web start/stop; RGB thresholds tuned |
| June 4 – June 7 | Final testing and presentation materials | Done — 60-bead accuracy runs + summary slide |
| June 8 – June 10 | Summary slide and ~1 min demo video | Done — presentation.png, presentation.mp4 |
License
This project is licensed under the MIT LicenseMIT License.
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material Under the following terms:
- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made
- NonCommercial — You may not use the material for commercial purposes
- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license
You are free to:
- Fab Academy - Neil, all the instructors, and fellow students
- Instructors - My local instructor (Matthew) and global instructor (Lambert) at FAB Academy 2026 for tutorials and feedback
- Fellow students at FAB Chaihuo - Tim, Meia, Alison, Sunny, Jerry, Maggie, Jenny, Guannan, Dolphin, John, Henry, Ruili
- Chaihuo Makerspace — thanks to all the Chaihuo members & managers: Chris, Yumi, Jovan, Dumpling, Dean, Aaron, Xiaotong, Bianca, Ethan, Namas
- Instructors - My local instructor (Matthew) and global instructor (Lambert) at FAB Academy 2026 for tutorials and feedback
- Fellow students at FAB Chaihuo - Guannan,Jenny, Emily,Tim, Meia, Alison, Sunny, Jerry, Dolphin, John, Henry, Ruili.
Acknowledgments
License: Creative Commons Attribution-NonCommercial. Source code and design files hosted in this GitLab repository (no external file hosting).