Skip to main content
Version: FILS English

Orion

An autonomous guide assistant featuring smartphone-linked vector navigation and real-time intelligent disobedience.

info

Description

Orion is a robotic guide designed to assist visually impaired users with navigation. The system uses a smartphone for high-level tasks like voice processing and environmental recognition (identifying crosswalks or stoplights), while an STM32 handles the real-time movement and safety logic. The phone provides navigation targets—defined by a distance and an angle—which the robot executes. Running an Async Rust stack, the microcontroller manages these instructions while continuously monitoring a triple-ultrasonic sensor array. This enables "Intelligent Disobedience": if a command would lead to a collision or hazard, the robot overrides the input to stop or navigate around the obstacle, prioritizing the user's safety in both indoor and outdoor settings.

Motivation

I chose this project because I wanted to make guidance more accessible to visually impaired people. While real guide dogs offer incredible emotional support, they aren't a realistic option for everyone due to the high costs involved. A trained guide dog can cost upwards of $50,000, and that’s before you factor in years of food, water, healthcare, and daily care, such as skill maintenance, grooming, and even playing with it. Plus, a dog’s lifespan is limited, so the process and expenses eventually have to start over. Orion is much more accessible. At a much cheaper total build cost, it provides a technical alternative that doesn't need food or vet visits. It has a virtually unlimited lifespan, as long as the hardware is powered and not faulty. While a robot might occasionally need a cheap spare part if something breaks, it’s nothing compared to the ongoing costs of a living animal.

Architecture

Orion Architecture

The system follows a decentralized command structure, where high-level strategy is handled by a mobile device and real-time safety is handled locally by the robot.

Main Components

  • Instruction Layer: A smartphone application that processes user commands and camera data to generate high-level navigation goals.

  • Communication Layer: A wireless relay (ESP32) that bridges the gap between the smartphone's high-level commands and the robot’s low-level hardware.

  • Control Core: This unit consists of the STM32 and the ultrasonic sensors array. It acts as the "source of truth", merging high-level instructions with real-time environmental data to manage the robot's physical behavior. It maintains a state history to recognize navigation deadlocks—where the robot is repeatedly blocked—allowing it to halt and alert the user independently.

  • Actuation Layer: The physical hardware that turns logic into action, including the 4WD drive system and haptic feedback.

Component Connection

The components are linked via a prioritized data chain:

  • Wireless Link (Wi-Fi/BLE): Connects the Instruction Layer to the Communication Layer. It uses Wi-Fi for vision data and Bluetooth for low-latency destination commands.

  • Data Bridge (UART): Connects the Communication Layer to the Control Core. It passes directional vectors (angle and distance) from the ESP32 to the STM32.

  • Safety Loop (GPIO/Timers): Connects the sensors directly to the Control Core. This link allows the STM32 to measure distance and override navigation commands if an obstacle is determined as unavoidable.

  • Execution Link (PWM/GPIO): Connects the Control Core to the motor drivers within the Actuation Layer for precise speed and direction control.

  • Haptic Feedback Link (Digital Out): Connects the Control Core to the coin vibrators. This provides physical alerts to the user, signaling system status or immediate danger.

This architecture establishes the Control Core as the ultimate safety authority. Because the Safety Loop is hard-wired directly to the STM32, the robot maintains a real-time 'safety shield' that operates independently of the smartphone. In any conflict between user instructions and environmental reality—such as a detected unavoidable obstacle or a connection lag—the Control Core is programmed to prioritize safety by overriding external commands. Furthermore, the core is capable of Tactical Halts: if the robot determines it is physically stuck or unable to find a safe path after multiple attempts, it will cease movement and trigger haptic feedback to notify the user of the navigation deadlock, regardless of the smartphone's continued output.

Log

Week 23 - 29 March

Thought about and planned the project.

Week 30 March - 5 April

Got my idea approved, started ordering materials needed.

Week 6 - 12 April

All ordered materials arrived. I started doing small functionality tests to make sure I understand how they work.

Week 13 - 19 April

Worked on the website for the project.

Week 20 - 26 April

Week 27 April - 3 May

Week 4 - 10 May

Week 11 - 17 May

Week 18 - 24 May

Hardware

Orion’s hardware is built around a multi-processor architecture to separate real-time control from high-bandwidth data handling. The STM32 acts as the primary core, executing Async Rust logic to process safety data and motor vectors. Connectivity is managed via a dedicated ESP32 module, while a separate ESP32-CAM is utilized specifically for environmental image capture.

For movement, the system uses a 4WD motor and wheel set adapted into a "walker-style" configuration for stable mobility. Obstacle detection is handled by a triple ultrasonic sensor array positioned for wide-angle coverage, ensuring the robot can detect hazards in its immediate path.

The power system is split into two distinct rails for stability: the 4WD motors are powered directly from the Li-ion batteries to handle high current spikes, while a buck converter steps the voltage down to a stable 5V for the breadboard-mounted logic circuits, protecting the microcontrollers from electrical interference.

Schematics

Orion Schematics

Bill of Materials

DeviceUsagePrice
ESP 32 DEVKIT V1, 1 PCSending instructions from phone through BLE53.08
10 FEMALE TO MALE DUPONT WIRE JUMPER CABLES, 20 CM, 2 PCSConnections12.22
STM32-NUCLEO-U545RE-Q, 1 PCMain control unit - Handles logic, safety, and real-time processing.106.59
5 MM LED, BLUE, 5 PCSDebugging1.50
5 MM LED, GREEN, 5 PCSDebugging1.50
5 MM LED, YELLOW, 10 PCSDebugging3.00
5 MM LED, WHITE, 5 PCSDebugging1.50
5 MM LED, RED, 5 PCSDebugging1.50
ELECTRET MICROPHONE CAPSULE, 1 PCMicrophone for hazard detection1.21
760 POINTS BREADBOARD, 1 PCConnections board between devices10.59
40 MALE TO MALE DUPONT WIRE JUMPER CABLES, 10 CM, 1 PCConnections7.73
40 MALE TO MALE DUPONT WIRE JUMPER CABLES, 20 CM, 1 PCConnections8.97
MICRO VIBRATION MOTORS, 3V, 5 PCSGuidance components31.44
USB TO TTL BOARD, COMPATIBLE WITH PL2303HX, 1 PCProgram ESP32 devkit and camera7.93
DOUBLE CHARGER FOR 3,7 LI-ION BATTERIES, 1 PCBatteries charger22.71
ADJUSTABLE VOLTAGE REDUCER MODULE LM2596, 1 PCLowering the voltage received by breadboard compared to the motors driver6.69
600 RESISTORS SET, 1 PCFine tuning current and voltage received by different components through the breadboard31.57
WOOD SAW 20 UNI, 1 PCCut wood9.90
INSULATING TAPE, 1 PCMaterial for cable joints and fixing3.50
MYF CABLE 1,5D, 25M, RED, 1 PCConnections25.57
100 PCS PLASTIC TIES, 2.5 X 100 MM,1 PCHolding cables in place4.11
HOFF CABLE STRIPPING PLIERS, 15 CM, 1 PCStripping tool for cable insulation removal26.67
HOFF DIGITAL MULTIMETER, 1 PCMeasurement tool for intensity, voltage, resistance, tester for diodes / transistors38.90
AS4 12-POLE STRING TERMINAL, 1 PCJoining cables electrically without soldering3.99
ELECTRICAL CONDUCTOR MYF / H07V-K 1.5 SMM BLUE, COPPER, 1 M, 5 PCSConnections6.00
AIR DUSTER, SPRAY, 1 PCDust removal from electronic boards12.50
SOLDERING ALLOY (TIN), 2.5 MM, 100 G CYNEL, 1 PCSoldering wires50.00
VOREL 79358 SOLDERING IRON, 40 W, 420 DEGREES C, 1 PCSoldering wires49.90
SOLDERING PASTE, HONEST 660069, 30 GRAMS, 1 PCCleaning paste for soldering7.19
HC-SR04 ULTRASONIC SENSOR SET 3, 1 PCObstacle detection44.41
MOTOR SET TT DC WITH WHEEL, 4 PCSMotors for movement36.30
SWITCHING DIODE 1N4148 THT 100V, 10 PCSProtect transistors2.00
3A 250V SWITCH MTS-102, 1 PCBattery switch2.19
1W 8 OHM MINI SPEAKER 15X10MM, 1 PCSpeaker for sound effects3.82
CERAMIC CAPACITOR, 1µF 50V, 10 PCSSignal coupling & noise decoupling2.00
CERAMIC CAPACITOR, 100nF 50V, THT, 10 PCSSignal coupling & noise decoupling2.00
ELECTROLYTIC CAPACITOR, 100µF, 35V – 135074, 1 PCPower rail stabilizer4.40
MINIATURE AMPLIFIER MODULE, PAM8403, 2.2-5V, 1 PCAmplifier for audio signal3.58
GEAR WHEELS SET 34, P134867239, 1 PCTorque-conversion17.62
40 MALE TO MALE DUPONT WIRE JUMPER CABLES, 30 CM, 1 PCConnections8.39
WHITE HDF WOOD BOARD, 1 PCParts making79.00
TRANSISTORS 2N2222 NPN BJT, 10PCProtect coin vibrators by changing received current1.40
METAL NUT, 10MM DIAMETER, 8 PCConstruction3.84
METAL SCREW, M10X20MM BLACK 8 PCConstruction10.03
MAGNUSSON PROFESSIONAL CUTTER, 1 PCConstruction37.00
UNIVERSAL GLUE, 1 PCConstruction28.46
COUNTERSUNK HEAD SCREW, PZ2, 1 SETConstruction9.00
SCISSOR LIMITER 125X125MM, 4PCConstruction56.00
HINGE 40X40MM, 4PCConstruction18.36
ESP32-CAM, 1PCVision of surroundings69.73
MOTOR DRIVER L298N, 1PCControl the motors11.99
BATTERIES 3.7V 2500mAh LI-ION CELLS 18650, 2PCPower57.98
Total1057.46

Software

LibraryDescriptionUsage
RustSystems programming languageCore implementation
cortex-mARM Cortex-M low-level accessRegister and interrupt control
cortex-m-rtRuntime supportStartup and interrupt handling
embedded-halHardware abstraction layerPeripheral interfaces
embassy-executorAsync executorRuns concurrent tasks
embassy-timeTime managementDelays and scheduling
embassy-stm32STM32 HALGPIO, UART, PWM control
embassy-syncSynchronization primitivesTask coordination
heaplessFixed-size data structuresMemory-safe buffers
defmtLogging frameworkDebugging output
defmt-rttRTT transportReal-time logs
panic-probePanic handler with loggingDebugging crashes
nbNon-blocking abstractionsPeripheral communication
esp-halESP32 hardware abstractionControl of ESP32 peripherals
esp-radioWireless communication stackWiFi/BLE communication
smoltcpEmbedded TCP/IP stackNetworking for ESP32
esp-allocHeap allocator for ESPDynamic memory on ESP32
  1. crates.io
  2. embedded-rust
  3. STM32-U545RE-Q datasheet
  4. embassy.dev