Need Help? Contact us at:


Embedded Internet of Things (IoT) Learning Path

3 courses | 36+ hours | Complete Source Code Included

         Your free gift is on its way to your inbox, but before you go 
check out this very special offer, just for you!

1. Bluetooth Low Energy (BLE) From Ground Up

        Build BLE Firmware for Microcontrollers. Practices on STM32 boards.
         6+ hours of quality training | Complete source code included
Welcome to the Bluetooth Low Energy (BLE) From Ground Up™ course.

This practical Bluetooth Low Energy (BLE) course will provide you with a solid in-depth training to be able to build BLE embedded devices and use them to communicate with other smart devices and mobile phone apps. This course aims to provide a solid practical understanding of Bluetooth Low Energy: the protocol, how data is organized, and the key design trade-offs that were made in the creation of the protocol.
I personally guarantee that by the end of this  course you will be able to accomplish the following
  • ​Build Bluetooth Low Energy (BLE)  firmware for different use cases
  • Understand the Bluetooth Low Energy (BLE)  Stack
  • Create your own Services and Characteristics
  • Build Bluetooth Low Energy Embedded Devices
  •  Give a lecture on the Bluetooth Low Energy (BLE) Architecture
-  If you are thinking about developing a product that incorporates Bluetooth Low Energy then take this course.
-  If you are an embedded engineer who wants to create Bluetooth Low Energy (BLE) firmware then take this course.
- If you just want to learn how to code and build BLE devices then take this course.
  • Introduction
  • ​Modules Required for the Course
  • ​Downloading an Integrated Development Environment (IDE)
  • ​Installing the Integrated Development Environment (IDE)
  • ​Setting Up STM32CubeMX 5
  • ​Downloading the LightBlue Application
  • ​Getting the most out of this course
  • ​Introduction to Bluetooth Low Energy (BLE)
  • ​What is Bluetooth Low Energy (BLE) ?
  • ​The Bluetooth Low Energy Stack and Stack Splits
  • ​The Bluetooth Low Energy (BLE) Architecture
  • ​​Overview of the Physical Layer (PHY)
  • ​Overview of the Link Layer (LL)
  • ​Understanding the Link Layer Packets
  • ​Overview of the Host Controller Interface (HCI) Layer
  • ​Overview of the Logical Link Control and Adaptation Protocol(L2CAP) Layer
  • ​Key Features of Bluetooth Low Energy (BLE) 5
  • ​The Generic Access Profile (GAP)
  • ​Overview of the Generic Access Profile (GAP)
  • ​Advertising States, Scan Request and Response
  • ​Understanding Advertising Events
  • Understanding Advertising and Scanning Parameters
  • ​Connection and Broadcasting
  • ​Understanding Modes and Procedures
  • ​The Attribute Protocol (ATT)
  • ​Overview of the Attribute Protocol
  • ​Analyzing the parts of an Attribute
  • The Generic Attribute Profile (GATT)
  • ​ Overview of the Generic Attribute Profile (GATT)
  • ​The Mandatory GAP Service Implemented on all GATT Servers
  • ​ Developing Bluetooth Low Energy (BLE) Firmware with STM32 BlueNRG-MS
  • ​Overview  of the BlueNRG-MS Stack
  • ​Installing the X-CUBE-BLE2 Package
  • ​Coding  : Configuring the BLE Hardware
  • ​Coding  : Analyzing the BLE Hardware Configuration code
  • ​Coding  : Initialization the BLE Device
  • ​Coding  : Implementing the mandatory GAP Service
  • ​Coding :   Advertising and Testing the BLE Device
  • ​Coding : Creating Custom Services
  • ​Coding  : Creating Custom Characteristics
  • ​Coding : Sending Data to the Client
  • ​Coding : Coding : Creating UUIDs and Handles for multiple Services and Characteristics
  • ​Coding  : Implementing multiple Services and Characteristics
  • ​Coding : Updating Characteristic Values
  • ​Coding : Developing a BLE Chat Firmware-Pt.1 : Creating the Characteristics
  • ​Coding : Developing a BLE Chat Firmware-Pt.2 : Processing Rx and Tx Events
  • ​Coding : Developing a BLE Chat Firmware-Pt.3 : Testing the Firmware
  • ​Bluetooth Low Energy (BLE) Security
  • ​Some Bluetooth Low Energy Security concepts

2. Embedded Wifi Bare-Metal Development From Ground Up™

        14 hours of quality training | Complete source code included

I personally guarantee that by the end of this  course you will be able to accomplish the following
  • ​Develop a Complete WIFI Library for ESP8266 and STM32 Microcontrollers
  • Develop an Embedded WIFI Client for Accessing Web APIs
  • Develop an Embedded Web Server for Controlling Hardware Remotely
  • Develop Bare-Metal Firmware for Storing Sensor Data in the Cloud
  • Develop Bare-Metal Drivers for Connecting ESP8266 to STM32 Microcontrollers
  • Develop First-In-First-Out (FIFO) Data Structure for Managing Communication Data
  • Develop Circular Buffer Data Structure for Managing Communication Data
  • Understand the Fundamentals of the IEEE 802.11 (WIFI) Protocol

What you will need 

  • ​ESP8266
  • Getting Started
  • ​Downloading our Integrated Development Environment (IDE)
  • ​Installing our Integrated Development Environment (IDE)
  • ​Downloading the required documentation
  • ​Coding : Understanding the Context of Bare-Metal Development
  • ​Coding : Testing our Setup by Developing a GPIO Output Driver (Pt.1)
  • ​Coding : Testing our Setup by Developing a GPIO Output Driver (Pt.2)
  • ​ Introduction to Network Programming
  • ​Some Networking Concepts and Terms
  • ​Introduction to the WIFI Protocol
  • ​Some History of the WIFI Protocol
  • ​Operational Characteristics of the WIFI Protocol
  • ​Developing the Debug UART Driver
  • ​​ Coding : Listing the Steps
  • ​Coding : Configuring the UART GPIO Pins
  • ​Coding : Configuring the UART Parameters
  • ​Coding : Implementing the UART Write function
  • ​Coding : Testing the Debug UART Driver
  • ​Developing the ESP UART Driver
  • ​Coding : Implementing the ESP UART Driver
  • ​Developing a Timebase for the System
  • ​Coding : Writing a System Tick (SysTick) Timer Driver
  • Final Project 2 : Developing a Remote Hardware Control Server
  • ​Coding : Creating the Webpages
  • ​Coding : Implementing the Hardware Modules
  • ​Coding : Processing the Page Links
  • ​Coding : Implementing the Interactions
  • ​Coding : Testing the Remote Hardware Control Server
  • ​ Final Project 3 : Storing Sensor Data In the Cloud
  • ​Coding : Locating the ADC Bus and Pins
  • ​Coding : Implementing the ADC Initialization Function
  • ​Coding : Implementing the ADC Read Function
  • ​Coding : Testing the ADC Driver
  • ​Coding : Sending the Sensor Data to the Cloud
  • ​Coding : Testing the Cloud Storage
  • ​Coding : Using Multiple Sensors
  • Developing a First-In-First-Out (FIFO) Data Structure for Managing Data
  • ​Introduction to FIFOs
  • ​Coding : Implementing the Transmitter (TX) FIFO Put function
  • ​Coding : Implementing the Transmitter (TX) FIFO Get function
  • ​Coding : Implementing the Receiver (RX) FIFOs
  • ​Coding : Testing the FIFO functions
  • ​Developing a Circular Buffer Data Structure for Managing Data
  • Introduction to the Circular Buffer Data Structure
  • ​Coding : Implementing the Initialization function
  • ​Coding : Storing a Character in the Buffer
  • ​Coding : Finding a Substring within a String
  • ​Coding : Clearing the Buffer
  • ​Coding : Implementing the BufferRead function
  • ​Coding : Writing Data to the Buffer
  • ​Coding : Checking for Data in the Buffer
  • ​Coding : Getting the first Character of a String in the Buffer
  • ​Coding : Finding Response in the Data Stream
  • ​Coding : Getting the next String after a particular String
  • ​Coding : Copying Specific Strings in a Text
  • ​Coding : Integrating a Callback function for the Debug UART
  • ​Coding : Integrating a Callback function for the ESP UART
  • ​Coding : Testing the Circular Buffer Data Structure
  • ​Coding : Testing the Circular Buffer Implementation with the ESP UART Port
  • ​Developing an ESP8266 WiFi Connection Library using the Circular Buffer
  • ​Coding : Enabling Station (STA) mode
  • ​Coding : Connecting to a WIFI Access Point
  • ​Coding : Getting the Local IP Address of the Device
  • ​Coding : Enabling Multiple Connections
  • ​Coding : Creating a TCP Server
  • ​Coding : Sending Data to the Server
  • ​Coding : Hosting a Webpage on the Server
  • ​Coding : Configuring the RESET Pin of the ESP8266 Chip
  • ​Developing an ESP8266 WiFi Connection Library using the FIFO
  • Coding : Cleaning Up the Project
  • ​Coding : Listing the Required String Processing Helper Functions
  • ​Coding : Implementing the String Search Initialization functions
  • ​Coding : Implementing the String Search
  • ​Coding : Moving Data Between the Software FIFO and the UART Hardware
  • ​Coding : Implementing the WIFI UART Callback function
  • ​Coding : Sending Commands to the ESP8266 Chip
  • ​Coding : Resetting the ESP8266 Chip
  • ​Coding : Setting the WIFI Mode
  • ​Coding : Listing all WIFI Access Points
  • ​Coding : Joining a WIFI Access Point (Network)
  • ​Coding : Getting the Local IP Address of the Device
  • ​Coding : Creating a TCP Server
  • ​Coding : Sending TCP Packets to the Remote Server
  • ​Coding : Closing the TCP Connection
  • ​Coding : Getting the IP Address of a Website
  • ​Final Project 1 : Accessing Realtime Weather Information
  • ​Coding : Accessing Realtime Weather Information from OpenWeather.org

3. Embedded System IoT Systems Design

        16+ hours of quality training | Complete source code included

This course teaches you how build a complete Internet-of-Thing (IoT) system from scratch using just your development board without any specialized wireless radio. The course can be divided into 3 sections.

The first section deals with developing the embedded firmware for reading and receiving data, processing the data and transmitting the data.

The next section deals with developing a modern day GUI desktop dashboard application from scratch for receiving and displaying the data from the firmware as well as sending commands to the firmware to control output devices.

The last section deals with with networking. In this section we shall integrate user authentication and a realtime database to store the data from our firmware in cloud. We shall also see how to receive emails and then control the output devices in our firmware simply by sending an e-mail. 
  • Setting Up CubeMX5 and CubeIDE
  • ​Download CubeMX 5 and CubeIDE
  • ​Installing CubeMX 5 and CubeIDE
  • ​Installing CubeMX 5 Packages
  • ​Overview of Keil uVision 5
  • ​Overview of STM32CubeMX 5
  • ​Overview of the Clock Configuration Tab
  • ​Getting Started
  • ​Configuring the System Drivers and RTOS
  • ​Testing the RTOS
  • ​Testing the Data Transfer Module
  • ​Extending the UART Driver
  • ​Testing the GPIO Driver
  • ​Python Essentials
  • ​Downloading Python
  • ​Installing Python
  • ​Using IDLE
  • ​Installing Python packages
  • ​Printing statements
  • ​Variables
  • ​Lists
  • ​Operators
  • ​Conditions
  • ​For Loops
  • ​While Loops
  • ​Functions
  • ​Dictionaries
  • ​Classes and Objects
  • ​Firmware and Python Communications
  • ​Writing a script to find our Iot device
  • ​Sending data from firmware to python script
  • ​Sending data from python script to the firmware
  • ​Introduction to Python GUI
  • ​Setting up an Integrated Development Environment (IDE)
  • ​Setting Up the Kivy Framework
  • ​Working with FloatLayouts
  • ​Working with RelativeLayouts
  • ​Working with AnchorLayouts
  • ​Working with GridLayouts
  • ​Working with StackLayouts
  • ​Working with Text Markups
  • ​Developing the IoT System Dashboard
  • ​Setting Up the Project Window Properties
  • ​Implementing the Minimize and Close Buttons
  • ​Coding the SignUp Screen (Part I)
  • ​Coding the Sign Up Screen (Part II)
  • ​Coding the Log In Screen
  • ​Coding the Iot Dashboard (Part I)
  • ​Coding the Iot Dashboard (Part II)
  • ​Coding the Iot Dashboard (Part III)
  • ​Coding the Iot Dashboard (Part IV)
  • ​Firmware and Dashboard Communication
  • ​Testing the Firmware-Dashboard Interaction
  • ​Interfacing the Battery Sensor Data to the Dashboard
  • ​Integrating the Firmware Control Widgets
  • ​Integrating Cloud Communication
  • ​Setting Up Firebase Realtime Database
  • ​Reading Data from the Database
  • ​Authenticating New Users and Devices (Part I)
  • ​Authenticating New Users and Devices (Part II)
  • ​Working with Email Protocols
  • ​Overview of Email Protocols
  • ​Coding : Sending an Email
  • ​Coding : Constructing an Email
  • ​Coding : Sending a simple MIME message
  • ​Coding : Sending Emails with Attachments
  • ​Coding : Rendering HTML in an Email
  • ​Coding : Rendering HTML and TEXT in an Email
  • ​Coding : Sending PDF Attachments
  • ​Coding : Sending bulk Emails
  • ​Coding : Checking Email Statistics with POP3
  • ​Coding : Checking Email Information with POP3
  • ​Coding : Retrieving Emails with POP3
  • ​Coding : Checking IMAP Server Capabilities
  • ​Coding : Retrieving Emails with IMAP
  • ​Coding : Developing an IMAP Email Client
  • ​.... much more

Sometimes I could get my firmware to work but I couldn’t understand a large portion of the code.

I didn’t know what some of the registers were doing. "Why do we write this hexadecimal number into that particular register ?" I would often ask.

Other times I could understand every line of code in the firmware but couldn’t get the firmware to work.

Because I wasn’t good enough, I couldn’t build exactly what I wanted if there were no already made drivers and libraries out there that I could use. Worst of all I couldn’t even get another microcontroller to work apart from the microcontroller used in class.
Long story short, I overcame all of this....
I devised a plan to master the fundamentals...
Quickly read the sections of interest in the datasheet...
Created my own firmware development checklist...
Created my own study guide...

I started creating courses to help other people like yourself master embedded systems development in the most efficient way possible, no waste of time, no frustrations. There is no need for you to go through the same roadblocks and frustrations I went through  some years ago.
Our  courses have been reviewed by 1000+ students
Here are some of the reviews

Now it's time for you also to benefit from the...

Modern Embedded-C 
From Ground Up

Here's a recap of


When You Purchase This AMAZING Offer!

  • 1. Bluetooth Low Energy (BLE) From Ground Up ($49.99 Value)
  • ​2. Embedded Wifi Bare-Metal Development From Ground Up ($59.99 Value)
  • 3. Embedded System IoT Systems Design ($59.99 Value)
Total Value: $169.97
But today, you're getting all of this...
For Only $49.78

 30 Day Money Back Guarantee

Remember, I have no doubt you will love the training but should in case you are not completely satisfied you can request a refund within 30 days of purchase and you shall be fully refunded with no questions asked.

Sounds fair ? 
I know there are some websites out there that offer you something cool for a low price, but then stick you into some program that charges your card every month.
This isn't one of them. There's NO hidden cost.

Thanks for taking the time to read this letter and I hope you enjoy the training!

-Israel N Gbati