💾
EC
  • Introduction
  • EC Course
    • Syllabus
    • Preparation for EC
    • Tutorial
      • Tutorial: arduino-stm32
        • Tutorial: arduino-stm32 Installation
        • Tutorial: arduino-stm32 Part1
        • Tutorial: arduino-stm32 Part2
      • Tutorial: MDK uVision
        • Tutorial: Installing MDK uVision
        • Tutorial: Create a Project with uVision
        • Tutorial: Adding library header in uVision
        • Tutorial: Re-using Project Configuration
        • Debugging in uVision
      • Tutorial: PlatformIO in CLion
      • Tutorial: PlatformIO in VSCode
      • Tutorial: Repository Management
      • Tutorial: Managing library header files
      • Tutorial: PinName Configuration
      • Tutorial: Bitwise Macro
      • Tutorial: Custom initialization
      • Tutorial: Documentation
      • Tutorial: Creating Application API
      • Tutorial: 7-Segment Display
      • Tutorial: DC motor driver connection
      • Tutorial: USART with TeraTerm
      • Tutorial: Finite State Machine programming
      • Tutorial: Bluetooth
      • Tutorial: Zigbee with Nucleo board
    • LAB
      • LAB Report Template
      • LAB: Smart mini-fan with STM32-duino
      • LAB: Portable Fan with mbed
      • LAB: GPIO Digital InOut
      • LAB: GPIO Digital InOut 7-segment
      • LAB: EXTI & SysTick
      • LAB: Timer & PWM
      • LAB: Stepper Motor
      • LAB: Input Capture - Ultrasonic
      • LAB: USART - LED, Bluetooth
      • LAB: ADC - IR reflective sensor
      • LAB: Line Tracing RC Car
    • Sample code
      • Code Templates
    • Hardware
      • Nucleo-F411RE
      • LAB Hardware
        • Electronic Chips
        • HUINS Embedded Kit
    • Projects
      • Line Tracing Car Project
      • Design Project
        • Past Projects
      • Project Grading Criteria
    • Study Resource for MCU
      • Hexa-Decimal Table
      • Bitwise Op for Register
      • System Clock
      • Timer
      • USART
      • ADC
  • STM32 M4 Programming
    • Documentation
      • C++ API Docs
    • Firmware Library
      • PinName Configuration
      • GPIO Digital
      • RCC
      • EXTI_SysTick
      • TIMER
      • USART
    • Troubleshooting
    • mbed for STM32
      • Tutorial: mbed-Part 1
      • Tutorial: mbed - Part 2
      • Tutorial: mbed - Part 3
      • Using mbed API on uVision
    • mbed OS
  • Other Programming
    • Arduino
    • Socket Programming
      • Window Socket Programming
      • Arduino WiFi
    • Cube-MX
    • Github
    • Markdown
      • Example: API documentation
    • MATLAB
  • C Programming
    • C-Programming Lessons
      • Installing Visual Studio Community
        • Visual Studio Community 2022
      • Installing VS Code(Mac/Linux)
      • Creating Header Lib
      • Pointer
      • Array
      • 2D Array
      • Structure
      • Dynamic Alloc
      • Bitwise Operation
  • Numerical Programming
    • Syllabus
    • Preparation for NP
    • Math Review
    • Tutorial
      • TA Session Video
      • Tutorial: NP Library Header Files
      • Tutorial - Sine Taylor
      • Tutorial: Passing a Function, Function callback
      • Tutorial: Nonlinear solver
      • Tutorial: Differentiation
      • Tutorial: Integration
      • Tutorial: Matrix Structure
      • Tutorial: Eigenvalue problem
      • Tutorial: ODE-IVP
      • Tutorial: Curve Fitting
      • Tutorial: Create Github Repos of NP lib
      • Tutorial: Version Control in Github
      • Tutorial: Documentation with Markdown
      • Exercise: Version Control and Documentation
    • Example: MATLAB
    • Example: NP Library
    • Assignment
      • Assignment Factorial and Power
      • Assignment: Version Control and Documentation
    • Problem Bank
Powered by GitBook
On this page
  • What you need to submit
  • Introduction
  • Requirement
  • Preparation
  • Problem Definition
  • Procedure
  • Results
  • Reference
  • Troubleshooting
  • What to submit

Was this helpful?

  1. EC Course
  2. Projects

Line Tracing Car Project

PreviousProjectsNextDesign Project

Last updated 4 months ago

Was this helpful?

Date: 2024-09-26

Author/Partner:

Github: repository link

Demo Video: Youtube link

PDF version:


What you need to submit


Introduction

Design a simple line tracing RC car that tracks the racing lines that meets the following conditions:

  • The car should automatically start at the given signal

  • It must trace on the track line

  • When it sees an obstacle on the driving path, it should temporarily stop until the obstacle is out of the path

  • It has AUTO and MANUAL control mode

There can be more missions to complete.


Requirement

Hardware

  • MCU

    • NUCLEO-F411RE

  • Actuator/Sensor/Others: Minimum

    • Bluetooth Module(HC-06)

    • DC motor x2, DC motor driver(L9110s)

    • IR Reflective Sensor (TCRT 5000) x2

    • HC-SR04

    • additional sensor/actuators are acceptable

Software

  • Keil uVision, CMSIS, EC_HAL library

Preparation

Tutorials:

Use ecSTM32F411v2.h and void MCU_init(void) in your project code.

LABS:

You should review previous labs for help

  1. LAB: ADC IR Sensor

  2. LAB: USART Bluetooth

  3. LAB: Timer & PWM

Problem Definition

Design your RC car that has the following functions:

  1. Line tracing on the given racing track

  2. has 2 control modes: Manual Mode to AUTO Mode

  3. stops temporally when it detects an object nearby on the driving path

On the PC, connected to MCU via bluetooth

  • Print the car status every 1 sec such as “ ( “ MOD: A DIR: F STR: 00 VEL: 00 ”)

Manual Mode

  • Mode Change( MOD):

    • When 'M' or 'm' is pressed, it should enter Manual Mode

    • LD2 should be ON in the Manual Mode

  • Speed (VEL):

    • Increase or decrease speed each time you push the arrow key “UP” or “DOWN”, respectively.

    • You can choose the speed keys

    • Choose the speed level: V0 ~ V3

  • Steer (STR):

    • Steering control with keyboard keys

    • Increase or decrease the steering angles each time you press the arrow key “RIGHT” or “LEFT”, respectively.

    • Steer angles with 3 levels for both sides

      • example: Lelvel -3, -2, -1, 0, 1, 2, 3 // '-' angle is turning to left

  • Driving Direction (DIR)

    • Forward or backward by pressing the key “F” or “B”, respectively.

    • You can choose other DIR keyboard keys

  • Emergency Stop

    • RC car must stop running when key “S” is pressed.

    • This must be the highest priority

Automatic Mode

  • Mode Change:

    • When 'A' or 'a' is pressed, it should enter AUTO Mode

  • LD2 should blink at 2 second rate in AUTO Mode

  • It should drive on the racing track continuously

Automatic Mode (Temporarily Stop)

  • Stops temporally when it detects an object nearby on the driving path

  • LD2 should blink at 0.5 second rate at this situation

  • If the obstacle is removed, it should drive continuously

Procedure

  1. Discuss with the teammate how to design an algorithm for this problem

  2. In the report, you need to explain concisely how your system works with state tables/diagram or flow-chart.

    ● Listing all necessary states (states, input, output etc) to implement this design problem.

    ● Listing all necessary conditional FLAGS for programming.

    ● Showing the logic flow from the initialization

    and more

  3. Select appropriate configurations for the design problem. Fill in the table.

Functions

Register

PORT_PIN

Configuration

System Clock

RCC

PLL 84MHz

delay_ms

SysTick

Motor DIR

Digital Out

….

TIMER

TIMER1

TIMER2

Timer Interrupt

...

10msec

ADC

ADC

….

DC Motor Speed

PWM2

ADC sampling trigger

PWM3

RS-232 USB cable(ST-LINK)

USART2

No Parity, 8-bit Data, 1-bit Stop bit 38400 baud-rate

Bluetooth

USART1

TXD: PA9 RXD: PA10

No Parity, 8-bit Data, 1-bit Stop bit 9600 baud-rate

  1. Create a new project under the directory \repos\EC\PROJECT\PROJECT_RCcar

  • The project name is “PROJECT_RCcar”

  • You can share the same code with your teammate. But need to write the report individually

Circuit Diagram

You need to include the circuit diagram

Code

// YOUR MAIN CODE ONLY
// YOUR CODE with Comments

Results

Experiment images and results

Show experiment images /results

Add demo video link

Reference

Complete list of all references used (github, blog, paper, etc)

Troubleshooting

(Option) You can write Troubleshooting section


What to submit

EC_LineTracingCar_ID1_ID2.zip

  1. Report: \report\

  • \img folder

  • EC_LineTracingCar_ID1_ID2_Report.md

  • EC_LineTracingCar_ID1_ID2_Report.pdf

  1. Source code: \src\

  • \includefolder

  • EC_LineTracingCar_ID1_ID2_main.c

Example:

image

Complete the following tutorials:

image

Your code goes here:

TU: Custom initialization
ADD Code LINK such as github
Read the instruction carefully