Kia Skretteberg

UX Focused Software Engineer

Arven - Medication Delivery Robot

Project site | Full project specs

Arven logo

Premise

Arven was my capstone project for NAIT's Computer Engineering Technology program, built by a team of 3 between January and April 2023. Arven is an autonomous robot that carries a small payload of medication to its user on a schedule, and a web app lets the user manage their medications and request deliveries.

Problem

Some people who would benefit from a support animal that brings them medication cannot have one, for financial, health, or other reasons. Arven was designed as a non-living replacement: a robot that delivers medication to a user on a single floor of a building.

My Role

I designed all of the hardware: the circuit, component selection, PCB layout, and assembly, including reflow soldering the surface-mount components and hand soldering the through-hole parts.

On the software side, I designed the robot's state logic and the web API that lets the robot talk to the web app, and I designed and wrote the communication layer between the ATmega328P and the Raspberry Pi Pico W. I wrote much of the sensor code on the ATmega, including the ultrasonic and IR sensors. I wrote most of the code on the Pico: the motor control, the UWB positioning, the Wi-Fi link to the web API, the weight sensor for the medication holder, and the state machine that runs the robot on a schedule.

I came up with the overall UI/UX design for the web app, with accessibility and mobile, tablet, and desktop use in mind. I also built a good chunk of the web app, with a strong focus on the styling, and contributed heavily to the project website.

Solution

The robot is driven by independent DC motors, uses ultrasonic, IR, and bump sensors to detect obstacles, and uses UWB modules to navigate between two points. A Raspberry Pi Pico W acts as the logic controller, and an ATmega328P acts as the interface between the sensors and the Pico. The robot reports to the cloud-hosted web app through a custom web API, and the web app is where the user manages medications and schedules or requests a delivery.

The full hardware breakdown, circuit, and PCB design are on the project specs page.

Challenges

One mistake in my circuit design cost us the finish. I had misunderstood the motor requirements and believed one motor controller could run two motors, but at our motors' size each controller could only handle one, and we slowly damaged the controller by drawing too much power through it. Near the end of the project we also wired a motor in backwards, which fried about half of the modules on the board, and replacing them would have taken more time than we had. It was a reminder that having someone double and triple check your work can save time. The full story is on the project specs page.

Where It's At Now

I'm continuing this project on my own. I'm testing the original components one by one, and so far I've found two dead pins, one dead component, and a wiring mistake on the IR sensors that we missed during the capstone. Next I'll replace the broken parts and rebuild the robot on the six-wheeled chassis I originally wanted, with a 3D-printed top I'll design myself. Once the hardware works, I'll go back through the code to find what's still broken, with the goal of a robot that navigates on a schedule. I also plan to revisit some design decisions I wasn't happy with during the capstone, starting with the colour scheme, which I want to make more accessible.