Skip to content

Dipto9999/Self_Balancing_Robot

Repository files navigation

WALL-E (Self Balancing Robot)

Contents


Overview

We designed WALL-E, an autonomously balancing two-wheel robot driven wirelessly via Bluetooth.

Features

WALL-E prioritizes safe navigation and secure access.

  • Detects the nearby environment (i.e. obstacles, color recognition)
  • Prevents unauthorized control with RFID authentication and BLE pairing code.
  • Generates live camera feed and uploads to AWS S3 cloud storage.

Components

  • Microcontrollers:

    • Arduino Nano 33 BLE Sense Rev2 (Balancing & BLE)
    • STM32L051K8T6 (Environmental Sensors, Auth)
    • Raspberry Pi Zero 2 W (Camera Feed)
  • Sensors and Modules:

    • BMM150 IMU
    • HC-SR04 Ultrasonic Distance Sensor
    • TCS34725 Color Sensor
    • RC522 RFID Module
    • CEM-1302 Buzzer
    • Freenove 5MP Camera
  • Actuation:

    • DRV8833 Motor Drivers
    • Pololu 37D DC Motors

System Design

Functional Diagram

Architecture Diagram


Robot Firmware

Arduino

  • Autonomously balances robot with closed-loop control system (i.e. PID controller).
  • Uses complementary filter to measure angular input from accelerometer and gyroscope sensors.
  • Drives motors by generating PWM (slow decay) output to DRV8833 chip.
  • Uses statemachine to prioritize balancing / movement functionality.
    • Injects noise (i.e. angular offset, PWM signals) to induce movement along axis / turning.

Source Code in Arduino_Firmware directory.

STM32

  • Handles auxiliary features to reduce computational load on Arduino.
    • Distance Sensing: Toggles GPIO signal-low when object detected within 30cm.
    • Color Detection: Toggles GPIO signal-low when red is detected. WALL-E avoids red-lights at all costs.
    • RFID Authentication: Verifies UID and signals Arduino on success.
    • Buzzer: Alerts user on successful auth, errors, or warnings via PWM tone generation.

Source Code in STM32_Firmware directory.

User Software

Robot Driver App

  • Flask web application hosted via ngrok for mobile access
  • Uses GET/POST requests to update server with UI updates and perform Bluetooth operations.
  • Handles BLE pairing authentication in backend (i.e. without affecting user experience).

Source Code in Driver_App directory.

Dashboard App

  • Python application with live camera stream on Tkinter GUI.
    • Camera runs at ~20 FPS with reduced resolution for performance on Pi Zero 2 W.
  • Snapshot and recording functionality with automatic upload to AWS S3 bucket.

Source Code in Dashboard_App directory.


Demonstration

Watch our final robot demonstration here: 📽️ YouTube Demo

Report

Read our final project report here: 📝 Project Report

Credit

This was completed as part of the ELEC 391 - Design Studio project course in The University of British Columbia Electrical and Computer Engineering undergraduate program.

Team B-17

  • Muntakim Rahman
  • Tomaz Zlindra
  • Xianyao Li

Special thanks to Dr. Joseph Yan for tremendous support and guidance.

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •