We may earn an affiliate commission when you visit our partners.
BHM Engineering Academy and Israel Gbati

Whether you are new to Python programming or not you need to take a look at this course as an embedded developer.

Do you want to know how to write clean and efficient embedded drivers for stm32 microcontrollers using the python programming language?

If so, then welcome to Embedded MicroPython from Ground Up™

MicroPython is an efficient implementation of Python3 optimised to run on microcontrollers.

Now, why should you ....

Learn MicroPython as an embedded systems developer?

Read more

Whether you are new to Python programming or not you need to take a look at this course as an embedded developer.

Do you want to know how to write clean and efficient embedded drivers for stm32 microcontrollers using the python programming language?

If so, then welcome to Embedded MicroPython from Ground Up™

MicroPython is an efficient implementation of Python3 optimised to run on microcontrollers.

Now, why should you ....

Learn MicroPython as an embedded systems developer?

  1. The simplicity of the python programming language makes micropython very easy to learn.

  2. It is very easy to use, and allows you to develop complex firmware and drivers in python with few lines of code

  3. It has an extensive software library which you can import into your project to build very complex solutions. E.g. network socket programming.

  4. It is extensible with C/C++ and assembly, so you can mix assembly and c with micropython to improve code efficiency or simply implement routines that you are more comfortable implementing in low-level code.

So with that understood, let me tell you…

                                                                      Exactly What You’re Getting

This course can be divided into 3 major sections.

                                                                                    First Section

The first section provides practical python essential training for embedded developers. This section is for developers who are not familiar with the python programming language and those who want to brush up on their python development skills. This is required because we need to know who to write python code before we can develop our firmware and drivers in python.

                                                                                 Second Section

The second section deals peripheral driver development. Over here we shall develop drivers for all the standard peripherals of our STM32 microconctoller.

We shall develop the following drivers:

  1. General Purpose Input/Output (GPIO)Drivers

  2. Power Management Drivers

  3. General Purpose Timer Drivers

  4. Timer Output Compare Driver

  5. Timer Input Capture Driver

  6. PWM Timer Driver

  7. RealTime Clock (RTC) Drivers

  8. A Watchdog Timer (WDG) Drivers

  9. Analog-to-Digital Converter(ADC) Drivers

  10. Analog-to-Digital Converter (ADC) Time Triggered Drivers

  11. Digital-to-Analog Converter (DAC) Drivers

  12. Universal Asynchronous Receiver/Transmitter (UART) Drivers

  13. Serial Peripheral Interface (SPI) Drivers

  14. Inter -Integrated Circuit (I2C) Drivers

                                                                    Last Section

In the final section we shall develop firmware for addressing advanced topics such as:

  • Adding Assembly Language Code to MicroPython

  • Adding C Language Code to MicroPython

Please take a look at the full course curriculum. I hope to see you in the course.

Enroll now

What's inside

Learning objectives

  • Develop embedded drivers and firmware using the python programming language
  • Mix python with c/c++
  • Develop general purpose input/output (gpio)drivers
  • Develop power management drivers
  • Develop general purpose timer drivers
  • Develop timer output compare drivers
  • Developer timer input capture drivers
  • Develop pwm timer drivers
  • Develop realtime clock (rtc) drivers
  • Develop watchdog timer (wdg) drivers
  • Develop analog-to-digital converter(adc) drivers
  • Develop analog-to-digital converter (adc) time triggered drivers
  • Develop digital-to-analog converter (dac) drivers
  • Develop universal asynchronous receiver/transmitter (uart) drivers
  • Develop serial peripheral interface (spi) drivers
  • Develop inter -integrated circuit (i2c) drivers​
  • Show more
  • Show less

Syllabus

Introduction
Getting the best out of this course
Python Essential Training
Setting Up Python
Read more
Printing a Statement
Working with Variables
Working with Lists
Experimenting with Arithmetic Operators
Working with Conditions
Working with Loops
Working with Functions
Dictionaries
Implementing Classes
Adding more Methods to the Class
Understanding the Class Init Method
Inheriting from a Class
More on Inheritance
Setting Up MicroPython
Getting the Required Tools
Installling the Required Tools
Getting Started with MicroPython
Accessing the Microcontroller using a Terminal
Accessing the Microcontroller using rshell
Setting an IDE for MicroPython Development
Getting the Required Documentation for STM32 Development
Bare-Metal Embedded MicroPython Development
Analyzing the Peripheral and Buses in the Documentation
Constructing the Memory Address (Part I)
Constructing the Memory Address (Part II)
Developing the Bare-Metal Driver
Source Code Download
General Purpose Input/Output(GPIO)
Overview of ARM Cortex-M General Purpose Input/Output Module
Developing the GPIO Output Driver using Direct Register Access
Developing the GPIO Input Driver using Direct Register Access
Exploring the MicroPython GPIO Class (Part I)
Exploring the MicroPython GPIO Class (Part II)
Developing the GPIO Output Driver
Developing the GPIO Input Driver
General Purpose Timers
Understanding STM32 Timers
Implementing Background Threads using Timers
Generating Precise PWM Signals using Timers
Generating Precise PWM Signals of changing Dutycycles
Developing the Timer Output Compare Driver
Developing the Timer Input Capture Driver
Watchdog Timers (WDG)
Developing the Watchdog Timer Driver
Realtime Clocks (RTC)
Developing the RealtimeClock Driver
Analog to Digital Conversion (ADC)
Introduction to Analog to Digital Conversion
Analyzing the ADC Documentation
Implementing the ADC Driver using Direct Register Access (Part I)
Implementing the ADC Driver using Direct Register Access (Part II)
Implementing the ADC Driver using Direct Register Access (Part III)
Developing the ADC Driver
Developing the ADC Periodic Sampling Driver
Reading Internal Channels : Temperature, VBAT, VREF
Universal Asynchronous-Synchronous Receiver-Transmitter (USART)
Overview of the UART Protocol
Developing the UART Transmit(TX) Driver
Developing the UART Receive(RX) Driver
External Interrupt (EXTI) Programming
Understanding Interrupts
Developing the External Interrupt (EXTI) Driver
Serial Peripheral Interface (SPI) Driver Development
Understanding the SPI Protocol
Developing the SPI Driver- Analyzing the Slave Device (ADXL345)
Implementing the SPI Read function
Implementing the SPI Write function
Implementing the slave intialization function
Testing the ADXL345 SPI Driver
Inter- Integrated Circuit (I2C) Driver Development
Understanding the I2C Protocol
Developing the I2C Driver - Scanning the Bus for connected Slaves
Implementing the I2C Read function
Implementingthe I2C Write and Initialization fucntions
Testin g the ADXL345 I2C Driver
Power Management Drivers
Developing the Sleep Mode Driver
Developing the Stop Mode Driver
Developing the Standby Mode Driver
Mixing Assembly Code with MicroPython
MicroPython Inline Assembly Basics
Working with Branching and Looping Instructions
Developing a GPIO Driver with Inline Assembly
Closing
Closing Remarks

Save this course

Save Embedded MicroPython from Ground Up™ to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Embedded MicroPython from Ground Up™ with these activities:
Review Python Fundamentals
Reinforce your understanding of Python syntax, data structures, and control flow. This will provide a solid foundation for understanding MicroPython code and developing embedded applications.
Browse courses on Python Programming
Show steps
  • Review basic Python syntax and data types.
  • Practice writing simple Python scripts.
  • Work through online Python tutorials or exercises.
Review 'Python Crash Course'
Solidify your Python knowledge with a comprehensive guide. This book offers practical exercises and projects to reinforce your understanding of Python concepts before applying them to MicroPython.
Show steps
  • Read the chapters covering basic Python syntax and data structures.
  • Complete the exercises at the end of each chapter.
  • Work through one of the project-based sections.
Blink an LED with MicroPython
Gain hands-on experience with MicroPython on a microcontroller. This simple project will familiarize you with the development environment and basic GPIO control.
Show steps
  • Set up your MicroPython development environment.
  • Connect an LED to a GPIO pin on your microcontroller.
  • Write MicroPython code to blink the LED.
  • Deploy and run the code on your microcontroller.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement common data structures
Practice implementing data structures in MicroPython. This will help you understand how to optimize memory usage and performance in embedded applications.
Show steps
  • Implement a linked list in MicroPython.
  • Implement a queue in MicroPython.
  • Implement a stack in MicroPython.
Document a MicroPython Driver
Deepen your understanding of a specific driver by creating comprehensive documentation. This will improve your ability to read and understand existing code, as well as write your own.
Show steps
  • Choose a MicroPython driver from the course materials.
  • Analyze the driver's code and functionality.
  • Write documentation explaining the driver's purpose, usage, and implementation.
  • Create examples of how to use the driver in different scenarios.
Contribute to a MicroPython Library
Enhance your skills by contributing to an open-source MicroPython project. This will expose you to real-world development practices and collaborative coding.
Show steps
  • Find an open-source MicroPython library on GitHub.
  • Identify a bug or feature request to work on.
  • Implement the fix or feature.
  • Submit a pull request with your changes.
Build a Sensor Data Logger
Apply your MicroPython skills to create a practical embedded system. This project will integrate sensor interfacing, data processing, and storage.
Show steps
  • Select a sensor (e.g., temperature, humidity, pressure).
  • Interface the sensor with your microcontroller using MicroPython.
  • Write code to read and process sensor data.
  • Store the data on an SD card or transmit it wirelessly.

Career center

Learners who complete Embedded MicroPython from Ground Up™ will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An Embedded Systems Engineer develops and maintains the software and hardware that controls electronic devices. This often involves working at a low level, directly manipulating hardware components. This course helps build a foundation in embedded systems development using MicroPython on STM32 microcontrollers, allowing engineers to create efficient drivers and firmware. A professional in this role will find this course's focus on developing drivers for peripherals, such as GPIO, timers, and communication interfaces, directly applicable to their work. This course also explores mixing C/C++ and assembly with MicroPython, a particularly useful skill for an Embedded Systems Engineer.
Firmware Engineer
A Firmware Engineer is responsible for writing the low-level software that allows hardware to function. This role frequently interacts with microcontroller peripherals and embedded operating systems. This course directly contributes to the skills needed for a firmware engineer, namely, the development of embedded drivers using MicroPython. The course's emphasis on creating drivers for STM32 peripherals and its exploration of how to integrate assembly and C code into MicroPython provides practical experience relevant to this role. The study of timers, analog-to-digital converters, and communication protocols prepares a professional in this role to engage with a wide variety of embedded systems.
Robotics Engineer
A Robotics Engineer designs, builds, and programs robots. This often involves both hardware and software components, which makes this course invaluable. Robotics projects are often microcontroller based, and the use of micropython on STM32 microcontrollers in the course is a perfect fit for the profession. This course shows how to create drivers for various peripherals, a ubiquitous need in most robotics applications. A good robotics engineer is capable of doing both, hardware, and low-level firmware, and the course shows how to mix assembly and C with MicroPython.
Mechatronics Engineer
A Mechatronics Engineer integrates mechanical and electronic engineering. This often involves using microcontrollers. This course is a particularly good fit for a Mechatronics Engineer because it focuses on embedded development using MicroPython. The course's coverage of creating drivers for peripherals such as GPIO, timers, ADC, and communication protocols is highly relevant to the kind of work a mechatronics engineer does. The exploration of mixing assembly and C with MicroPython will also prove useful.
Internet of Things Developer
An Internet of Things Developer creates the software and systems that allow devices to connect to the internet. This course may be useful because many IoT devices use microcontrollers. This course provides a foundation in developing embedded systems using MicroPython and STM32 microcontrollers. The course covers how to create drivers for communication protocols like UART, SPI, and I2C which are particularly important for IoT. This course also explores the use of timers and analog-to-digital converters which are important in sensor based IoT devices. Understanding low level hardware interaction and the use of C/C++ and assembly would be important to an Internet of Things Developer.
Control Systems Engineer
A Control Systems Engineer designs and implements systems that control processes. Control systems often use embedded microcontrollers to operate. This course may be useful to a control systems engineer because it offers practical experience in developing embedded systems using MicroPython. The course explores how to create drivers for the peripherals of an STM32 microcontroller, which are commonly used in control systems. The course also explores real time clocks, timer peripherals, and serial protocols. This course offers an important understanding of hardware and low level software interaction.
Product Developer
A Product Developer is involved in the process of bringing a new product to market. This may include the electronic and software design of a product. This course may be useful because many products contain embedded microcontrollers. This course covers microcontroller firmware development using MicroPython and the STM32 microcontroller. The ability to develop drivers for peripherals will serve a product developer well, as will learning the use of communication protocols, timers, and analog to digital conversion. The ability to mix C/C++ and assembly will also be important to a Product Developer.
Automation Engineer
An Automation Engineer designs, develops, and implements automated systems. This can range from industrial automation to smart homes. This course may be useful for an Automation Engineer as many automated systems rely on microcontrollers. The course's focus on developing embedded drivers and firmware using MicroPython on STM32 microcontrollers is directly relevant to those who work with microcontroller based systems. This course provides grounding in creating drivers for peripherals and using various communication protocols. Professionals in this role may also find the ability to integrate assembly and C to be useful.
Automotive Engineer
An Automotive Engineer works with the design, development, and manufacturing of vehicles. Modern vehicles contain a large number of microcontrollers. This course may be useful to an automotive engineer. Automotive engineers who work on embedded systems would be particularly interested in this course that explores development for the STM32 family of microcontrollers. An Automotive Engineer may also find this course valuable for its teaching how to create drivers, use communication protocols, and how to mix C/C++ and assembly.
Aerospace Engineer
An Aerospace Engineer designs and develops aircraft and spacecraft. Many modern aerospace systems use sophisticated embedded systems as part of their control and monitoring apparatus: this course may be useful to an Aerospace Engineer. The course provides training in developing drivers for microcontrollers using MicroPython. Because of the real-time nature of aerospace applications, the use of timers, real time clocks, and other peripherals will be of great interest. An Aerospace Engineer will find that this course's lessons on how to mix C/C++ and assembly with MicroPython applicable to their work.
Biomedical Engineer
A Biomedical Engineer applies engineering principles to healthcare. Many medical devices use embedded microcontrollers, and this course may be useful for a Biomedical Engineer. The course provides training in developing embedded drivers using MicroPython on STM32 microcontrollers, a popular microcontroller for medical devices. Topics such as the use of analog-to-digital converters, digital-to-analog converters and communication protocols covered in this course would be helpful to a Biomedical Engineer. The mixing of C/C++ and assembly languages is an important skill for this field. This course will help one who wishes to enter this field.
Hardware Engineer
A Hardware Engineer designs, develops, and tests physical hardware components. While this role is primarily focused on physical, electromechanical design, some aspects interface with firmware. This course may be useful for a Hardware Engineer to understand how software interacts with hardware. The course delves into microcontroller peripherals, such as GPIO, timers, and communication interfaces. As a Hardware Engineer interfaces with design, they will find it useful to understand how drivers are written for the devices they design. Being able to write firmware can assist Hardware Engineers with testing their creations. Learning to mix assembly, C, and Python will serve a Hardware Engineer well.
Technical Consultant
A technical consultant provides expert advice and guidance on technical matters. In some cases, this may involve giving advice on embedded systems. This course may be useful in this situation because it provides a foundation in embedded systems development using MicroPython and the STM32 microcontroller. Consulting clients about the use of timers, real time clocks, communication protocols like UART, SPI, and I2C, and analog to digital conversion may be part of a technical consultant's role. They may also be interested in the practical lessons of the course that demonstrate how to mix C/C++ and assembly with MicroPython.
Research Scientist
A Research Scientist conducts research and experiments and may gather data via instruments incorporating embedded systems. While a Research Scientist performs research rather than engineering, they may still encounter microcontrollers in their work. This course might be useful in this situation because it provides training in developing embedded drivers using MicroPython. The course's curriculum on creating drivers for peripherals is relevant. Scientists might also find the course useful because it explores the use of real time clocks, timers, and data acquisition with analog to digital converters. The ability to combine assembly and C with MicroPython may assist with scientific research.
Systems Analyst
A Systems Analyst studies computer systems and develops solutions. This work can include working with embedded systems. This course may be useful in this situation because it provides a foundation for working with embedded systems. A systems analyst might find the course useful because it covers topics such as working with timers, real time clocks, communication protocols like UART, SPI, and I2C, and analog to digital converters. This course teaches professionals how to mix assembly and C with MicroPython, an important and useful skill.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Embedded MicroPython from Ground Up™.
Provides a fast-paced introduction to Python programming. It covers fundamental concepts and includes hands-on projects. It is particularly useful for those new to Python or who want a refresher before diving into MicroPython for embedded systems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser