Angel the Robot

Angel, autonomously picking up cans.

ENPH 253 - Instrument Design Course - Summer 2021



Build an autonomous robot that can pick up cans, orient them vertically and drop them in a stationary box with vertical silos.

We were in a team of 4 for this project. Due to COVID, we each built our own robot at home and collaborated remotely for design ideas.

Main challenges

  • 2' x 2' dimension limit
  • Using low torque geared motors
  • Time crush: 6 weeks to build

To know more about our design and thought processes, click here.

Angel's main features

BluePill STM32F103C8T6.
Rechargeable 12V for the wheels and flap motor. 6 x AAA with a voltage regulator for the 2 servos. 9V with a voltage regulator for the BluePill and the reflectance sensors.
Tape following using 2 reflectance sensors.
1 geared motor/wheel. Soldered H-Bridge to go forward or backwards.
Can detection
Blind. Optimized tape path to cover most of the competition surface and increase our chances to pick up cans.
Picking mechanism
Angled side arms to bring cans towards the flap. The flap pushes cans up the high curved ramp.
Vertical orientation
Top plateforme after the ramp to give the cans speed and a servo arm to guide them towards a vertical hoslter.
Drop off
Magnets on Angel and the box to reach perfect alignment between the holsters and the box silos. Microswitch to lower the flap under the cans and drop them.

H-Bridge circuits

For the two wheels:


Main components: MCT6 optocouplers, LT1161 Gate Driver IC, IRFZ44 MOSFETs

Wheel motors: ROB-13302 140RPM 4.5V

For the front spinning flap:

Half H-Bridge for speed control (only spinning in one direction).


Picking mechanism


Motor-dowel coupler

DIY couler made out of coroplast and hot glue. It was surprisingly durable!



The flap was by far the biggest challenge with this robot design. It was all about finding the perfect balance between softness to prevent cans from getting stucked and rigidity to propulse them with enough force on the plateforme. I spent lots of time testing it and making small adjustments with cuts and tape.

It was working very well at some point, but was going over the 2ft dimension limit.

Solution: tying the "fingers" with ropes to keep them within the 2ft limit at all times while rotating.


Ramp (top view)

I made a higher ramp then originally planned in our CAD to have a steeper plateforme and orientation ramp. This decision definitely helped give the cans more speed, improving the vertical orientation process.


Vertical Orientation


Servo to control the moving arm (bottom view):


Reflectance sensor in the first two holsters to change the arm position.

Slope attached with velcros to remove it and access the electronics easily.


  1. Cans blocking between the top plateforme and the orientation slope.
  2. Cans getting stuck on the arm because they didn't have enough speed (especially the last one).
  3. Cans not falling properly in their holster.


  1. Testing all the possible ways cans could come in from the top plateforme and cutting the left wall accordingly.
  2. Cutting the holsters back wall by around 2cm to give more steepness to the slope. Glueing the moving arm at an angle instead of perpendicular to the slope → gave the cans more speed.
  3. Adjusting the moving arm positions & cutting a part of the side walls between holsters.

Drop Off


2 magnets on the box and 2 on Angel for perfect alignment between the holsters and box silos.

Microswitch on Angel placed near one of the magnets to know when the cans should be dropped.

Servo to control the dropping flap:



  1. Angel's front side arms bumbing into the box.
  2. Angel's front magnet sticking to the box's back one.
  3. Microswitch not pressed properly by the box.


  1. Finding the perfect distance between navigation tape and the box. Adjusting tape following to make sure Angel would follow tape very well. Putting the box at the end of a long straight line to give Angel time to adjust after a turn.
  2. Putting the two different sets of magnets at different heights. Install them with flipped polarities.
  3. Adjusting how far out the microswitch was. Reinforcing the cardboard box to make sure it would press the microswitch firmly instead of bending.

Electronics overview


I chose to leave the BluePill and other 3.3V components (speed adjustment potentiometers, reflectance sensors and OLED display) on a breadboard. Even though it was not recommended by our instructors (risk of bad connections), it made my life so much easier! I could change BluePill pin connections easily. It also saved me from having to solder on top of Angel (poor visibility and accessibility).

We chose to power this 3.3V board from a 9V (+ a voltage regulator) instead of the rechargeable 12V to avoid noise issues with the BluePill. For similar reasons, we powered the 2 servos separately from two AAA packs soldered together.

We used the 12V for the wheels and the spinning flap motor (high noise circuits).

Wires were soldered to all reflectance sensors and plugged to the breadboard on the other end. We used 2 sensors for tape following and one in each of the first two holsters to control the moving arm servo.

C++ code

We used Visual Studio Code for this project. You can check my code here:


  • Competition surface: 8' x 8'
  • 6 cans total
  • 1 minute maximum/run
  • 1 point/can for vertical position. 2 additional points/can for successful drop off.
  • Tape path needed to be submitted the night before competition day.
  • Can placement chosen by our professor and only shared on competition day. We could not adjust our tape path accordingly.

My results:

First run → 1 can upright.

Second run → 3 cans upright and dropped off succesfully. 🥳

Only the best teams move on.

Third run → 3 cans upright and dropped off successfully, but I had to put Angel back on the tape. It turned at the tape crossing instead of going straight.

2nd Competition run & Angel in its glory

Main learnings/takeaways from this project

  • Planning and debugging circuits efficiently.
  • Soldering electrical components on PCBs.
  • Understanding when to use what type of battery.
  • Preventing noise issues.

  • Taking more time to plan properly (dimensions, part placement, chosen design...) ends up saving lots of time during building.
  • When possible, it is nice to have parts temporarily fixed to test them before glueing permanently.
  • Prototyping (virtual or physical) is so helpful to guide design choices.
  • Great collaboration & clear communication leads to better design ideas.

Thanks to my teammates Alexandre, Braden and Carson for their great help, collaboration and design ideas on this project!