-
IEEE Embedded Workshop: Microcontroller Architecture and Interfacing with ARM Cortex
-
Final Project Proposal: Autonomous Obstacle-Avoidance and Line Tracking Car with FreeRTOS
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.
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.
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 |
- Prior experience with any programming language.
- Basic knowledge of number systems and logic design.
Each session will cover essential topics and provide hands-on experience with ARM Cortex-based microcontrollers.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Date: 19/9 (Tue)
- Topic: RTOS - SESSION 02
- Description:
- Date: 21/9 (Thu)
- Topic: RTOS - SESSION 03
- Description:
- 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.
- 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.
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.
You can find the recorded sessions of the workshop on our YouTube playlist: Workshop YouTube Playlist
Access additional workshop materials, slides, and resources on our Google Drive: Workshop Google Drive
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.
- Control traffic lights for cars and pedestrians within the Proteus simulation environment.
- Efficiently respond to pedestrian crosswalk requests.
- Implement error handling and reporting.
- Utilize FreeRTOS for real-time operation and multitasking.
- STM32F103C8 microcontroller simulation.
- Virtual push button for pedestrian requests.
- Virtual LEDs for traffic lights - Red, Yellow, and Green for cars and pedestrians.
- 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.
- 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.
- 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.
- Write skeleton code for each function with comments.
- Convert comments into appropriate code.
- Ensure functions return error states.
- Develop test modules for each driver.
- Implement and validate driver output within the Proteus simulation.
- Define the system flow based on requirements.
- Implement the system flow in the “APP_start” function.
-
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.
-
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.
-
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.
-
User Story 4: As a pedestrian, when I make a long press on the crosswalk button, I expect nothing to be done.
-
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.
- PDF document containing:
- System description.
- System design.
- System flow chart or state machine.
- System constraints (if any).
- Video presentation discussing the project.
- 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.
The estimated budget for this project includes any licensing costs associated with Proteus simulation software.
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.
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.
- Detect obstacles using ultrasonic sensors.
- Analyze sensor data and make real-time decisions to change direction.
- Implement motor control using the L293D motor driver.
- Display the car's current direction on an LCD screen.
- Utilize a servo motor for ultrasonic scanning within a 180° range.
- Implement line tracking using infrared sensors.
- Manage tasks efficiently with FreeRTOS for multitasking and real-time operation.
- 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.
- 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.
Upon successful completion of the project, we anticipate achieving the following outcomes:
- A functional autonomous car capable of detecting obstacles, changing direction to avoid them, and tracking lines.
- Real-time display of the car's direction on the LCD screen.
- Smooth and accurate scanning of the environment using the servo motor and ultrasonic sensor.
- Effective line tracking capabilities using infrared sensors.
- Efficient multitasking and real-time operation with FreeRTOS.
- 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.
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].
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.
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.
For any inquiries about the workshop, please contact the workshop organizers:
- Organizer Name: Mahmoud Abdelraouf Mahmoud
- Email: mahmoud126125@gmail.com