\_(^U^)_/
\_(^u^)_/ is a robot capable of autonomous obstacle avoidance, remote control, and vision (with an onboard camera mounted to a controllable servo arm). It was created as the final project for my embedded systems course at Cornell.
Start – Completion | February 2019 – July 2019 |
Languages & Technologies Used | Altium, PCB Design, Keil uVision, ARM K64F Microcontroller, DRV8871 motor drivers, HC-SR04 ultrasonic sensors, 5V & 3v3 LDO, NRF24L01, bare metal device drivers, C programming |
Inspiration
I wanted to create something relatively complicated for the final project of my embedded systems class. Therefore, we built this robot. I envisioned this robot as being able to send video feedback to a computer, for the computer to use computer vision algorithms on the video feed, and then to issue commands back to the robot accordingly.
Development & Challenges
The final project for our class encouraged that we write most of the code for controlling peripherals and using on chip functions from scratch. Writing the bare metal device drivers for our robot’s peripherals was actually incredibly fun and made me learn a lot about reading technical/hardware reference manuals and how software works at its lowest levels (CSR reading and writing!).
Shortcomings
The battery connector was somewhat weak and after some uses it actually tore up the pads from the PCB and I had to rework it. In the future it will be good to pay more attention to the structural strength of frequently abused parts of the PCB.