Enkeltfag Engelsk 5 ECTS

Microcontroller development for advanced IoT using embedded C

Overordnede kursusmål

This course will focus on embedded hardware development for low-power Internet of Things (IoT) using embedded C / bare-metal firmware programming. The purpose of this course is to introduce the student to advanced methods of developing firmware on ARM-Cortex microcontrollers (MCUs) for IoT purposes. The student will be working with low-level MCU configuration and firmware development to enable communication with IoT relevant technologies such as Lora/LoraWAN, SigFox, BLE and NBIoT/LTE-M as well as digital and analog sensors. The Arduino IDE will not be used in this course.

See course description in English


  • Describe the essence and challenges of Internet of Things.
  • Evaluate networking protocols for different IoT applications.
  • Analyse and plan for implementation of optimal networking technology.
  • Implement embedded C code in an ARM based MCU.
  • Configure clock and peripherals in a STM32 evaluation board.
  • Set up the GPIOs of an ARM-Cortex based microcontroller for ADC/DAC.
  • Develop embedded programs to transmit/receive data.
  • Implement UART/SPI/I2C communication protocols in firmware.
  • Implement RTOS and multi-threading in an embedded system.
  • Deploy and showcase a developed IoT system and application.
  • Document project work in scientific paper format.


The purpose of this course is to introduce the student to advanced methods of developing firmware on ARM-Cortex MCUs for IoT purposes. In particular, focus will be on setting up the MCU, for example configuring the GPIOs, UART, interrupts and timers, SPI and I2C communication and analog-digital (ADC/DAC) functionality.
The, Arduino-free, bare-metal approach to microcontroller firmware development will provide the student with an understanding of the capabilities of an embedded system for Internet of Things. The student will be able to set up a Real-time operating system (RTOS) environment and run multiple threads in the ARM processor.
The course is structured around lectures and exercises where the student will gain hands-on experience within MCU firmware programming. During the exercises, the student will learn to configure UART/SPI or I2C peripherals to communicate with analog sensors or digital sensors / modules. The course will have a focus on IoT such that low-power communication, e.g. LPWAN communication technologies (Lora/LoraWAN, SigFox, BLE and NBIoT/LTE-M) and BLE will be utilized for wireless data transmission during the course.
During the course, the students will be planning and developing their own projects in groups and evaluated from a report.
The course will run the first time in the spring of 2022.
Course keywords: Embedded systems, Low-power embedded firmware development for IoT, bare-metal programming, STM32, Nucleo, Bluepill, CubeIDE, FreeRTOS, tasks and semaphores, no-Arduino.

Anbefalede forudsætninger

34315/34346/34365/34338, C programming experience / Embedded systems / Electronics / Arduino / IoT



Maksimum: 15.

Vær opmærksom på, at dette enkeltfagskursus har et begrænset antal studiepladser. Er der for mange tilmeldinger, vil der blive trukket lod om pladserne. Du får besked om, hvorvidt du har fået tildelt en studieplads senest 8 dage før kursusstart.

Se kurset i kursusbasen





13 uger



Kursus ID 34373
Kursustype Kandidat
Semesterstart Uge 5
Semester slut Uge 19
Dage tirs 8-12

7.500,00 kr.

Vær opmærksom på dette kursus har deltager begrænsninger. Læs mere

0 pladser tilbage