William-An / oTTo

Purdue University ECE 47700 senior design project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

oTTo

Purdue University ECE 47700 senior design project

Roadmap 2022

  1. Redesign PCBs to fix current issuues
    1. Through-hole USB port
    2. Type-C USB
    3. Fix auto-program issue on main controller board
    4. Fix Flash error on PC adapter
    5. Solder IMU on controller board
  2. Better software libraries and documentation support

Intro

oTTo is a two-wheel self-balancing robot designed as an experimental hardware platform for control theory students to gain hands-on experience on real-world control problems. In addition to the microcontroller part, a MATLAB/Simulink interface will be also provided to facilitate the implementation of various controllers with Simulink.

Main Components

  1. A4988 stepper motor driver
  2. Adafruit TDK InvenSense ICM-20948 9-DoF IMU
  3. ESP32 microcontroller
  4. Stepper Motor
  5. eInk Display

Concept Sketch

Concept sketch

Functional Diagrams

Hardware platform functional diagram Simulink interface functional diagram

Objectives

  1. Hardware & Embedded Software
    1. Read IMU sensors
    2. Control motor via driver chips
    3. Host a UDP server for data transmission
    4. Send/receive sensor readings/control signals to/from main PC over UDP
  2. MATLAB/Simulink
    1. Create Simulink block interface
    2. Use UDP client to send/receive information to/from hardware

Resources

Datasheet

  1. ESP32 chip datasheet
  2. ESP32 chip technical reference
  3. A4988 stepper motor driver chip datasheet
  4. Stepper Motor
  5. eInk Display Controller

SDKs & Libraries

  1. ESP32 RTOS SDK
  2. ESP32 IDF SDK, since the RTOS SDK is very close to it
  3. ICM-20948 driver
  4. Custom Simulink library
  5. Custom Simulink block
  6. MATLAB UDP functions
  7. eInk Display Driver
  8. Sensor AHRS Fusion

Debugging

  1. ESP32 IDF JTAG Debug Setup
  2. Openocd
  3. Openocd 8266 Port
    1. Not an official release from neither Espressif nor Openocd
    2. Though the Espressif mentions that they might support esp8266 with openocd in the future but it is not their first priority: GitHub Issue

Miscellaneous

  1. FreeRTOS
  2. ESP8266 UDP examples

About

Purdue University ECE 47700 senior design project


Languages

Language:C++ 89.4%Language:C 10.3%Language:CMake 0.3%