Project

# Title Team Members TA Documents Sponsor
6 Interactive Desktop Companion Robot for Stress Relief
Jiajun Gao
Yu-Chen Shih
Zichao Wang
Haocheng Bill Yang
# Team
- Jiajun Gao (jiajung3)
- Yuchen Shih (ycshih2)
- Zichao Wang (zichao3)
# Problem
Students and office workers often spend extended periods working at desks, leading to mental fatigue, stress, and reduced focus. While mobile applications, videos, or music can provide temporary relief, they often require users to shift attention away from their primary tasks and lack a sense of physical presence. Static desk toys also fail to maintain long-term engagement because they do not adapt to user behavior or provide meaningful interaction.
There is a need for an interactive, physically present system that can provide short, low-effort interactions to help users relax without becoming a major distraction. Such a system should be compact, safe for desk use, and capable of responding naturally to user input.

# Solution
We propose an interactive desktop companion robot designed to reduce stress and boredom through voice interaction, expressive feedback, and simple physical motion. The robot has a compact, box-shaped form factor suitable for desk environments and can move using a tracked or differential-drive base. An ESP32-based controller coordinates audio processing, networking, control logic, and hardware interfaces.
The robot supports voice wake-up, natural language conversation using a cloud-based language model, and speech synthesis for verbal responses. Visual expressions are displayed using a small screen or LED indicators to reflect internal states such as listening, thinking, or speaking. Spoken commands can also trigger physical actions, such as rotating, moving closer, or changing expressions. By combining audio, visual, and physical interaction, the system creates an engaging yet lightweight companion that fits naturally into a desk workflow.
# Solution Components
## Subsystem 1: Voice Interaction and Audio Processing
This subsystem enables natural voice-based interaction between the user and the robot. It performs wake-word detection locally and streams audio data to a remote server for speech recognition and response generation. The subsystem also handles audio playback and interruption control.
Audio data is captured using a digital microphone, encoded, and transmitted over a network connection. Responses from the server are received as audio streams and played through an onboard speaker. Local wake-word detection ensures responsiveness and reduces unnecessary network usage.
Components:

• ESP32-S3 microcontroller with PSRAM
• ESP32-S3 integrated Wi-Fi module
• I2S digital microphone (INMP441 or equivalent)
• I2S audio amplifier (MAX98357A)
• 4Ω or 8Ω speaker
## Subsystem 2: Visual Expression and User Feedback
This subsystem provides visual feedback that represents the robot’s internal state and interaction context. Visual cues improve usability and convey personality.
Different states such as idle, listening, processing, speaking, and error are represented using animations or color patterns.
Components:

• SPI LCD display (ST7789 or equivalent) or
• RGB LEDs (WS2812B or equivalent)

## Subsystem 3: Motion and Actuation
This subsystem enables controlled movement on a desk surface. The robot performs simple motions such as forward movement, rotation, and stopping based on voice commands and sensor feedback.
Motor control runs in a dedicated task to prevent interference with audio and networking functions.
Components:

• Two DC gear motors
• Dual H-bridge motor driver (TB6612FNG or equivalent)
• Optional wheel encoders


## Subsystem 4: Power Management and Safety
This subsystem manages power distribution and ensures safe operation. The robot is battery-powered to allow untethered use on a desk. Hardware and software protections limit speed, current, and movement range.
Components:

• Lithium battery with protection circuit
• Battery charging module
• Voltage regulators (5V and 3.3V)
• Physical power switch

## Subsystem 5: Subsystem 5: Safety Sensing (Desk-Edge Detection + Obstacle Avoidance)

This subsystem prevents the robot from falling off the desk and reduces collisions with nearby objects. It continuously monitors both the surface below the robot and the space in front of the robot. When a desk edge (cliff) or obstacle is detected, this subsystem overrides motion commands and triggers an immediate safe response.

Desk-edge detection (cliff detection):
Two downward-facing distance sensors are mounted near the front-left and front-right corners. They measure the distance from the robot to the desk surface. If either sensor detects a sudden increase in distance beyond a calibrated baseline, the robot immediately stops and performs a short reverse maneuver to move away from the edge.

Obstacle avoidance:
A forward-facing distance sensor detects objects in front of the robot. If an obstacle is within a predefined safety distance, the robot stops. If the obstacle remains, the robot can optionally rotate in place to search for a clear direction before continuing motion.

Control priority:
Safety sensing has the highest priority in the motion stack:

Desk-edge detection (highest priority)

Obstacle avoidance

User/voice motion commands (lowest priority)

Components:

2 × Time-of-Flight distance sensors for downward cliff detection (VL53L0X or equivalent, I2C)

1 × Time-of-Flight distance sensor for forward obstacle detection (VL53L0X or equivalent, I2C)

# Criterion For Success
The success of this project will be evaluated using the following high-level criteria:
1. The robot connects to a Wi-Fi network and establishes a server connection within 10 seconds of power-on.
2. The system detects a wake word and enters interaction mode within 2 second in a quiet environment.
3. The average end-to-end voice interaction latency is less than 5 seconds under normal network conditions.
4. At least five predefined voice commands trigger the correct robot actions with at least 90% accuracy during testing.
5. Visual feedback correctly reflects the system state in all operational modes.
6. The robot operates continuously for at least 30 minutes on battery power during active use.
7. When Wi-Fi is unavailable, the system enters a safe degraded mode without crashing or unsafe motion.
8. During a 10-minute continuous motion demonstration on a desk, the robot does not fall off the desk.
9. In an obstacle test, the robot is commanded to move forward toward a stationary obstacle (for example, a box or book) from multiple start distances for 20 trials. The robot must stop (or stop and turn) before making contact in at least 18/20 trials.

Phone Audio FM Transmitter

Madigan Carroll, Dan Piper, James Wozniak

Phone Audio FM Transmitter

Featured Project

# Phone Audio FM Transmitter

Team Members:

James Wozniak (jamesaw)

Madigan Carroll (mac18)

Dan Piper (depiper2)

# Problem

In cars with older stereo systems, there are no easy ways to play music from your phone as the car lacks Bluetooth or other audio connections. There exist small FM transmitters that circumvent this problem by broadcasting the phone audio on some given FM wavelength. The main issue with these is that they must be manually tuned to find an open wavelength, a process not easily or safely done while driving.

# Solution

Our solution is to build upon these preexisting devices, but add the functionality of automatically switching the transmitter’s frequency, creating a safer and more enjoyable experience. For this to work, several components are needed: a Bluetooth connection to send audio signals from the phone to the device, an FM receiver and processing unit to find the best wavelength to transmit on, and an FM transmitter to send the audio signals to be received by the car stereo.

# Solution Components

## Subsystem 1 - Bluetooth Interface

This system connects the user’s phone, or other bluetooth device to our project. It should be a standalone module that handles all the bluetooth functions, and outputs an audio signal that will be modulated and transmitted by the FM Transmitter. Note: this subsystem may be included in the microcontroller.

## Subsystem 2 - FM Transmitter

This module will transmit the audio signal output by our bluetooth module. It will modulate the signal to FM frequency chosen by the control system. Therefore, the transmitting frequency must be able to be tuned electronically.

## Subsystem 3 - FM Receiver

This module will receive an FM signal. It must be able to be adjusted electronically (not with a mechanical potentiometer) with a signal from the control system. It does not need to fully demodulate the signal, as we only need to measure the power in the signal. Note: if may choose to have a single transceiver, in which case the receiver subsystem and the transmitter subsystem will be combined into a single subsystem.

## Subsystem 4 - Control System

The control system will consist of a microcontroller and surrounding circuitry, capable of reading the power output of the FM receiver, and outputting a signal to adjust the receiving frequency, in order to scan the FM band. We will write and upload a program to determine the most suitable frequency. It will then output a signal to the FM transmitter to adjust the transmitting frequency to the band determined above. We are planning on using the ESP32-S3-WROOM-1 microcontroller given its built-in Bluetooth module and low power usage.

## Subsystem 5 - Power

Our device is designed to be used in a car, so It must be able to be powered by a standard automobile auxiliary power outlet which provides 12-13V DC and usually at least 100W. This should be more than sufficient. We plan to purchase a connector that can be plugged into this port, with leads that we can wire to our circuit.

# Criterion for Success

The device can pair with a phone via bluetooth and receive an audio signal from a phone.

The Device transmits an FM signal capable of being detected by a standard fm radio

The Device can receive FM signals and scan the FM bands.

The digital algorithm is able to compare the strength of different channels and determine the optimal channel.

The device is able to automatically switch the transmitting channel to the predetermined best channel when the user pushes a button.