Skip to content

jamesyoung-15/Mini-Robot-Cleaner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini Robot Cleaner

Final course project for ELEC3300 (Introduction to Embedded Systems) in HKUST where we created a Mini-Robot Cleaner with STM32 as the MCU. The robot has 2 modes which are manual mode where the user can control the robot wirelessly through UDP transmissions (via Python script) and also a automatic mode where the robot card will move freely and avoid obstacles using the "bubble rebound algorithm" described by this paper. Robot car can also send temperature sensor data to a UDP server.

Here is a demo video: Youtube Link

Project Presentation: Link

Features:

  • LCD Display with GUI. GUI menu shows robot information, allows user to choose between manual and automatic mode through touch screen, and also has section to print debugging information such as sensor readings.
  • STM32 connected with LCD Display through FSMC, uses LVGL library for GUI, driver function uses DMA to improve performance of display
  • STM32 communicates with ESP8266 through UART to connect to Wi-fi, create UDP server, and send UDP transmissions with AT commands
  • GUI for sending robot controls through UDP tranmission. Written in Python and used PyQt5 for creating a GUI on PC
  • Uses three ultrasonic sensor (HR-S04) data covering 90 degrees FOV to make decision to avoid obstacle when in automatic mode
  • Reads temperature sensor from LM35 with ADC conversion, user remotely request and view the sensor data with Python GUI where data is sent through UDP to a UDP server

Hardware Parts:

Software/Other Resources:

Other Info:

  • Main Board: 野火 STM32F103VET6 Mini V3 Development Board

  • Development Platform for STM32: CubeIDE

  • Connections:

  • STM32 connects to LCD through FSMC for display and touch screen, communicates to ESP8266 through UART, connects to motor driver and ultrasonic sensors through GPIO, LM35 with ADC.

  • Also used compiler optimization and removed certain parts of library (otherwise LVGL library is too large)

Repo Folder Structure

  • Project contains the main project code that was used in CubeIDE
  • udp_server contains the Python scripts for creating UDP server to receive robot data and also the GUI for controlling the robot
  • cubemx_workspace is my CubeIDE workspace folder, not needed
  • website_files contains some html files that we tested when hosting a TCP server instead

Full List Documentation/Schematics Used:

About

A STM32 robot project with wireless control through UDP and automatic obstacle avoidance mode through 3 ultra-sonic sensors.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors