Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
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

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Starts with Python essentials, which is helpful for embedded developers transitioning from C/C++ to Python for firmware development
Focuses on STM32 microcontrollers, which are widely used in embedded systems, making the course highly relevant for practical applications
Covers a wide range of peripheral drivers, including GPIO, timers, ADC, DAC, UART, SPI, and I2C, which are essential for embedded systems development
Explores advanced topics like mixing assembly and C code with MicroPython, which allows for optimization and integration with existing codebases
Includes hands-on labs for developing drivers, which provides practical experience and reinforces theoretical concepts
Requires specific STM32 microcontroller hardware, which may be an additional cost for some learners

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Embedded micropython stm32 driver development

According to learners, this course offers a solid foundation for embedded development using MicroPython on STM32. Many highlight the practical approach, covering various peripheral drivers like GPIO, Timers, UART, SPI, and I2C. Students particularly appreciate the hands-on labs and driver development focus. While titled 'From Ground Up', some reviewers note it assumes a basic understanding of Python and embedded concepts, making it perhaps best suited for those with some prior programming or hardware experience. The instructor is generally seen as knowledgeable and provides clear explanations, although a few mention the pace can be quick at times. The coverage of mixing MicroPython with C/Assembly is a valuable addition.
Valuable section on integrating C/Assembly.
"The advanced section on mixing MicroPython with C and Assembly was a unique and valuable addition."
"Learning how to call C functions from MicroPython opens up a lot of possibilities for optimization."
"The part about integrating low-level code like C was a definite highlight."
"I was specifically looking for how to mix languages, and this course delivered on that."
Instructor demonstrates strong knowledge of the subject.
"The instructor clearly knows his stuff when it comes to embedded systems and MicroPython."
"Explanations are generally clear and the instructor provides good insights."
"I found the instructor to be highly knowledgeable, which made the technical topics understandable."
"His expertise in both Python and embedded programming is evident throughout the course."
Good coverage of common communication protocols.
"The sections on UART, SPI, and I2C driver development were particularly useful and well-explained."
"Learning how to implement standard protocols like SPI and I2C from scratch in MicroPython was great."
"I appreciate the detailed breakdown of protocols and how to interact with external devices."
"The course covers the essential communication peripherals needed for real-world projects."
Develop hands-on drivers for key STM32 peripherals.
"This course is very practical and covers a wide range of peripheral drivers. The hands-on approach is excellent for learning."
"I really enjoyed developing drivers for different peripherals like GPIO, SPI, and I2C. It makes the learning very concrete."
"Learning to build actual drivers was the most valuable part for me. It’s not just theory, you build functional code."
"The focus on developing drivers is a major strength. It goes beyond basic blinking LEDs."
"I appreciate how we dove deep into developing drivers for the microcontroller's peripherals."
Initial setup might require troubleshooting.
"Getting the development environment set up correctly took some effort. It wasn't entirely seamless."
"I had a bit of trouble with the initial tool installations and accessing the microcontroller."
"The setup section could be a bit more detailed or cover more potential issues."
"Be prepared to spend some time on the setup steps to get everything working right."
May require some prior Python or embedded background.
"While it says 'From Ground Up', having a bit of Python knowledge definitely helps. It moves quickly over Python basics."
"If you're completely new to embedded systems or Python, you might find some sections challenging or fast-paced."
"I found that some familiarity with microcontrollers and common embedded concepts made the course much easier to follow."
"It's not strictly 'ground up' for embedded beginners, some concepts are assumed."
"A basic understanding of C or Python programming before starting is beneficial."

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