Mahmoud-Abdelraouf / Module-03_Microcontroller-Architecture-and-Interfacing-with-ARM-Cortex

Explore microcontroller architecture and ARM Cortex interfacing in this comprehensive workshop. Sessions cover topics like C basics, ARM architecture, peripherals, interrupts, and more. Attendees gain hands-on experience with ARM Cortex-based microcontrollers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Table of Contents


IEEE Embedded Workshop: Microcontroller Architecture and Interfacing with ARM Cortex

Welcome to the IEEE Embedded Workshop on Microcontroller Architecture and Interfacing with ARM Cortex. In this workshop, you will explore the fundamental concepts of microcontroller architecture and learn how to interface with ARM Cortex-based microcontrollers. The workshop will cover a variety of topics to provide you with a comprehensive understanding of embedded systems.

Workshop Overview

Welcome to the IEEE Embedded Workshop on Microcontroller Architecture and Interfacing with ARM Cortex. In this workshop, you will explore the fundamental concepts of microcontroller architecture and learn how to interface with ARM Cortex-based microcontrollers. The workshop aims to provide participants with a comprehensive understanding of embedded systems and hands-on experience with ARM Cortex-based microcontrollers.

Workshop Content

Number Date Title Venue
01 17/8 Quick Recap about C-language Basics Faculty of Engineering, Ain Shams University
02 19/8 Discuss Important Advanced Topics in C Faculty of Engineering, Ain Shams University
03 22/8 ARM Architecture Basics Faculty of Engineering, Ain Shams University
04 26/8 RCC Peripheral Faculty of Engineering, Ain Shams University
05 29/8 GPIO Peripheral Faculty of Engineering, Ain Shams University
06 2/9 ARM Interrupts Faculty of Engineering, Ain Shams University
07 5/9 NVIC Driver Faculty of Engineering, Ain Shams University
08 9/9 EXTI Faculty of Engineering, Ain Shams University
09 12/9 SysTick Faculty of Engineering, Ain Shams University
10 16/9 RTOS - Session 01 Faculty of Engineering, Ain Shams University
11 19/9 RTOS - Session 02 Faculty of Engineering, Ain Shams University
12 21/9 RTOS - Session 03 Faculty of Engineering, Ain Shams University
13 23/9 UART Faculty of Engineering, Ain Shams University
14 26/9 SPI and TFT Faculty of Engineering, Ain Shams University

Requirements

  1. Prior experience with any programming language.
  2. Basic knowledge of number systems and logic design.

Sessions

Each session will cover essential topics and provide hands-on experience with ARM Cortex-based microcontrollers.

Session Structure

In this workshop, sessions will be conducted offline at the Faculty of Engineering, Ain Shams University. Each session will cover essential topics and provide hands-on experience with ARM Cortex-based microcontrollers.

Session 01

  • Date: 17/8 (Thu)
  • Topic: Quick Recap about C-language Basics
  • Description: Refresh your knowledge of C-language basics, including data types, loops, functions, arrays, and more. Learn about bits manipulation and files handling in C.

Session 02

  • Date: 19/8 (Sat)
  • Topic: Discuss Important Advanced Topics in C
  • Description: Dive deeper into advanced C topics, focusing on pointers, function-like macros, inline functions, processor architecture, and build processes.

Session 03

  • Date: 22/8 (Tue)
  • Topic: ARM Architecture Basics
  • Description: Explore the history and design of ARM processors. Learn about ARM core peripherals, AMBA bus, and register definitions. Understand the transition from Harvard to Von Neumann architecture.

Session 04

  • Date: 26/8 (Sat)
  • Topic: RCC Peripheral
  • Description: Learn about microcontroller clock types, PLL and FLL, and different reset types. Understand the Reset and Clock Control Peripheral Driver for STM32 microcontrollers.

Session 05

  • Date: 29/8 (Tue)
  • Topic: GPIO Peripheral
  • Description: Gain knowledge about digital input/output peripheral basics. Learn about different input and output modes. Build a Digital I/O driver for ST microcontrollers and practice interfacing with LEDs and tactile switches.

Session 06

  • Date: 2/9 (Sat)
  • Topic: ARM Interrupts
  • Description: Understand the basics of interrupts, handling techniques, and the Nested Vectored Interrupt Controller (NVIC). Explore interrupt priority grouping for efficient interrupt handling.

Session 07

  • Date: 5/9 (Tue)
  • Topic: NVIC Driver
  • Description: Dive into NVIC registers' definitions and build an NVIC driver. Simulate interrupt features to understand their behavior.

Session 08

  • Date: 9/9 (Sat)
  • Topic: EXTI
  • Description: Learn about external interrupts' basics and the AFIO peripheral. Build an EXTI driver to handle external interrupts effectively.

Session 09

  • Date: 12/9 (Tue)
  • Topic: SysTick
  • Description: Explore timer basics and SysTick core peripheral. Compare interval vs. busy-wait delay. Understand synchronous vs. asynchronous design. Build a SysTick driver and work with callback functions.

Session 10

  • Date: 16/9 (Sat)
  • Topic: RTOS - SESSION 01
  • Description: Get introduced to operating systems basics. Build a real-time scheduler, learn about time-triggered and dynamic design aspects.

Session 11

  • Date: 19/9 (Tue)
  • Topic: RTOS - SESSION 02
  • Description:

Session 12

  • Date: 21/9 (Thu)
  • Topic: RTOS - SESSION 03
  • Description:

Session 13

  • Date: 23/9 (Sat)
  • Topic: UART
  • Description: Explore serial communication characteristics and UART basics. Build a UART driver and practice interfacing with USB TTL modules.

Session 14

  • Date: 26/9 (Tue)
  • Topic: SPI and TFT
  • Description: Learn about SPI basics, build an SPI driver, and understand pixel color modes. Explore different display types, including interfacing TFT displays and working with bit map images.

Each session will provide you with valuable insights into microcontroller architecture and interfacing with ARM Cortex-based microcontrollers.

Getting Started

To get started, make sure you have a basic understanding of C-language programming and are comfortable with number systems. Review the provided content and attend the sessions to enhance your skills in embedded systems and microcontroller architecture.

Workshop Playlist

You can find the recorded sessions of the workshop on our YouTube playlist: Workshop YouTube Playlist

Workshop Drive

Access additional workshop materials, slides, and resources on our Google Drive: Workshop Google Drive


Mini Project Proposal: Simulated Traffic Management System

Mini Project Overview

We propose the development of a Simulated Traffic Management System that efficiently controls traffic lights based on pedestrian crosswalk requests. This system will utilize an STM32F103C8 microcontroller and various components, simulated within the Proteus environment, to manage traffic lights for both vehicles and pedestrians. Additionally, we will implement this system using FreeRTOS to ensure real-time operation and efficient multitasking.

Mini Project Objectives

Mini Project Primary Objectives

  1. Control traffic lights for cars and pedestrians within the Proteus simulation environment.
  2. Efficiently respond to pedestrian crosswalk requests.
  3. Implement error handling and reporting.
  4. Utilize FreeRTOS for real-time operation and multitasking.

Hardware and Software Requirements

Hardware Requirements (Simulated within Proteus)

  • STM32F103C8 microcontroller simulation.
  • Virtual push button for pedestrian requests.
  • Virtual LEDs for traffic lights - Red, Yellow, and Green for cars and pedestrians.

Software Requirements

  • In normal mode (simulation):
    • Traffic lights for cars will cycle every five seconds: Green, Yellow, Red, Yellow, Green.
    • The Yellow LED will blink for five seconds before transitioning to Green or Red.
  • In pedestrian mode (simulation):
    • Transition to pedestrian mode when the virtual pedestrian button is pressed.
    • Pedestrians can cross the street when the pedestrian's Green LED is on.
    • Pedestrians must wait when cars have the right of way.
    • Specific sequences for pedestrian crosswalk requests.

System Design

  • Define system layers.
  • Define system drivers.
  • Place each driver into the appropriate layer following SOLID principles.
  • Define APIs for each driver with documentation.
  • Define new data types for drivers.
  • Define error handling and reporting mechanisms.

Development Environment

  • Configure Proteus simulation environment.
  • Implement layered architecture in the Proteus project structure.
  • Prepare all files for development with header file guards.
  • Write typedefs and function prototypes.
  • Include lower layer drivers in upper layer/calling drivers' header files.

Implementation

  • Write skeleton code for each function with comments.
  • Convert comments into appropriate code.
  • Ensure functions return error states.

Testing

  • Develop test modules for each driver.
  • Implement and validate driver output within the Proteus simulation.

System Flow

  • Define the system flow based on requirements.
  • Implement the system flow in the “APP_start” function.

User Stories and Testing

  1. User Story 1: As a pedestrian, when I make a short press on the crosswalk button while the cars' green light is on and the pedestrian red light is on, I will wait for the yellow lights to blink for five seconds, then the cars' red light is on, and the pedestrian green light is on for five seconds, so that I can cross the street.

  2. User Story 2: As a pedestrian, when I make a short press on the crosswalk button while the cars' yellow light is blinking and the pedestrian red light is on, I will wait for all yellow lights to blink for five seconds, then the cars' red light is on, and the pedestrian green light is on for five seconds, so that I can cross the street.

  3. User Story 3: As a pedestrian, when I make a short press on the crosswalk button while the cars' red light is on and the pedestrian green light is on, I expect nothing to be done.

  4. User Story 4: As a pedestrian, when I make a long press on the crosswalk button, I expect nothing to be done.

  5. User Story 5: As a pedestrian, when I make a double press on the crosswalk button, I expect that the first press will do the action, and nothing will be done after the second press.

Deliverables

  1. PDF document containing:
    • System description.
    • System design.
    • System flow chart or state machine.
    • System constraints (if any).
  2. Video presentation discussing the project.

Mini Project Timeline

  • Day 1-2: System design and Proteus environment setup.
  • Day 3-4: Software design and architecture.
  • Day 5-6: Development within the Proteus simulation.
  • Day 7: Testing and documentation.

Mini Project Budget

The estimated budget for this project includes any licensing costs associated with Proteus simulation software.

Mini Project Conclusion

This mini project aims to create an efficient Simulated Traffic Management System that handles both vehicle traffic and pedestrian crosswalk requests within the Proteus simulation environment. By implementing this system with FreeRTOS, we ensure real-time operation and responsiveness. The final product will contribute to safer and more organized traffic management, even in a virtual setting.


Final Project Proposal: Autonomous Obstacle-Avoidance and Line Tracking Car with FreeRTOS

Final Project Overview

We propose the development of an autonomous car capable of detecting obstacles and tracking lines using ultrasonic sensors and infrared sensors and managing tasks efficiently with FreeRTOS. The car will use a combination of components, including ultrasonic sensors, L293D motor driver, LCD display, infrared sensors, and servo motor, to create a functional and efficient obstacle-avoidance and line-tracking system.

Final Project Objectives

Final Project Primary Objectives

  1. Detect obstacles using ultrasonic sensors.
  2. Analyze sensor data and make real-time decisions to change direction.
  3. Implement motor control using the L293D motor driver.
  4. Display the car's current direction on an LCD screen.
  5. Utilize a servo motor for ultrasonic scanning within a 180° range.
  6. Implement line tracking using infrared sensors.
  7. Manage tasks efficiently with FreeRTOS for multitasking and real-time operation.

Components and Materials

  • Ultrasonic HC-SR04 sensor: To detect obstacles in the car's path.
  • Servo motor: For scanning the environment using the ultrasonic sensor.
  • L293D motor driver: To control the speed and direction of the car's motors.
  • Motors: To drive the car's wheels.
  • Caster wheel: To provide stability to the car's chassis.
  • Chassis: The framework to hold all components securely.
  • Infrared sensors: For line tracking.
  • Microcontroller compatible with FreeRTOS.

Project Implementation

  • Hardware Assembly: Assemble the chassis, attach the motors, and mount the caster wheel.
  • Ultrasonic Sensor Integration: Connect the ultrasonic sensor to the servo motor axis for scanning.
  • Motor Control: Integrate the L293D motor driver to control the car's movement.
  • LCD Integration: Connect the LCD display to show the car's current direction.
  • Software Development: Develop software to read ultrasonic sensor data, analyze it, control the motors, and implement line tracking.
  • Scanning Algorithm: Design an algorithm for the servo motor to scan the environment using the ultrasonic sensor.
  • Line Tracking Algorithm: Implement a line tracking algorithm using infrared sensors.
  • FreeRTOS Integration: Configure and integrate FreeRTOS for efficient multitasking and real-time control.
  • Testing and Calibration: Test the car's obstacle detection, avoidance, and line tracking capabilities. Calibrate the system for optimal performance.
  • Fine-tuning: Adjust parameters and algorithms to enhance the car's responsiveness and accuracy.

Final Project Expected Outcomes

Upon successful completion of the project, we anticipate achieving the following outcomes:

  1. A functional autonomous car capable of detecting obstacles, changing direction to avoid them, and tracking lines.
  2. Real-time display of the car's direction on the LCD screen.
  3. Smooth and accurate scanning of the environment using the servo motor and ultrasonic sensor.
  4. Effective line tracking capabilities using infrared sensors.
  5. Efficient multitasking and real-time operation with FreeRTOS.

Final Project Timeline

  • Day 1-2: Hardware assembly and initial component integration.
  • Day 3-4: Sensor integration, motor control, LCD connection, and software development.
  • Day 5-6: Scanning and line tracking algorithm implementation.
  • Day 7: FreeRTOS integration, testing, debugging, and calibration.
  • Day 8: Final adjustments, documentation, and project presentation.

Final Project Budget

The estimated budget for this project includes the cost of components such as the ultrasonic sensor, servo motor, L293D motor driver, LCD display, motors, caster wheel, chassis, infrared sensors, and a microcontroller compatible with FreeRTOS. The total budget is expected to be [insert estimated budget].

Final Project Conclusion

This final project aims to create an autonomous obstacle-avoidance and line-tracking car with the added capability of efficient multitasking and real-time operation using FreeRTOS. The final product will demonstrate advanced functionalities, making it suitable for various applications, including robotics and automation.


About IEEE

The Institute of Electrical and Electronics Engineers (IEEE) is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity. IEEE and its members inspire a global community to innovate for a better tomorrow through its highly-cited publications, conferences, technology standards, and professional and educational activities.

For more information about IEEE, visit IEEE Official Website.

Contact

For any inquiries about the workshop, please contact the workshop organizers:

About

Explore microcontroller architecture and ARM Cortex interfacing in this comprehensive workshop. Sessions cover topics like C basics, ARM architecture, peripherals, interrupts, and more. Attendees gain hands-on experience with ARM Cortex-based microcontrollers.

License:MIT License


Languages

Language:C 73.6%Language:Roff 17.7%Language:HTML 6.3%Language:Assembly 1.9%Language:Makefile 0.4%Language:C++ 0.0%