IoT and Embedded Systems Learning Guide

IoT and Embedded Systems Learning Guide

Introduction

This folder contains systematic learning materials for IoT (Internet of Things) and Embedded Systems. It covers Python-based IoT development centered around the Raspberry Pi, encompassing network connectivity, Edge AI, and cloud integration.

Target Audience

  • Developers with knowledge of basic Python syntax
  • Engineers interested in building IoT systems
  • Beginners starting projects with Raspberry Pi
  • Developers interested in edge computing and AI integration

Differences from C_Programming

Category C_Programming IoT_Embedded
Language C (low-level) Python (high-level)
Platform Arduino, STM32 Raspberry Pi
Focus Hardware control, registers Network, cloud integration
Communication UART, I2C, SPI (low-level) MQTT, HTTP, BLE (protocols)
AI Not included Edge AI (TFLite, ONNX)
Projects Firmware development IoT system construction

C_Programming covers low-level hardware control of microcontrollers, while IoT_Embedded teaches how to build network-connected smart systems on Raspberry Pi using Python.


Learning Roadmap

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚          IoT Learning Roadmap        β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                            β”‚                            β”‚
        β–Ό                            β–Ό                            β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ 01. IoT  β”‚               β”‚ 02. Raspberryβ”‚             β”‚              β”‚
  β”‚ Overview │──────────────▢│  Pi Setup    β”‚             β”‚              β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚              β”‚
                                     β”‚                    β”‚              β”‚
                                     β–Ό                    β”‚              β”‚
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚              β”‚
                            β”‚ 03. GPIO     β”‚              β”‚              β”‚
                            β”‚   Control    β”‚              β”‚              β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚              β”‚
                                     β”‚                    β”‚              β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€              β”‚
        β”‚                            β”‚                    β”‚              β”‚
        β–Ό                            β–Ό                    β–Ό              β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
  β”‚ 04. WiFi β”‚               β”‚ 05. BLE      β”‚      β”‚ 06. MQTT     β”‚     β”‚
  β”‚Networkingβ”‚               β”‚Connectivity  β”‚      β”‚  Protocol    β”‚     β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚
        β”‚                            β”‚                    β”‚              β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
                                     β”‚                                   β”‚
                                     β–Ό                                   β”‚
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                            β”‚
                            β”‚ 07. HTTP/    β”‚                            β”‚
                            β”‚   REST API   β”‚                            β”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                            β”‚
                                     β”‚                                   β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”              β”‚
        β”‚                                                 β”‚              β”‚
        β–Ό                                                 β–Ό              β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
  β”‚ 08. Edge AI  β”‚                               β”‚ 09. Edge AI  β”‚       β”‚
  β”‚   TFLite     β”‚                               β”‚    ONNX      β”‚       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
        β”‚                                                 β”‚              β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
                              β”‚                                          β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                   β”‚
        β”‚                     β”‚                     β”‚                   β”‚
        β–Ό                     β–Ό                     β–Ό                   β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
  β”‚ 10. Home     β”‚    β”‚ 11. Image    β”‚     β”‚ 12. Cloud    β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  β”‚  Automation  β”‚    β”‚   Analysis   β”‚     β”‚  IoT Integra β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

File List

Filename Difficulty Topic Key Content
01_IoT_Overview.md ⭐ IoT Overview IoT definition, architecture, protocols
02_Raspberry_Pi_Setup.md ⭐ Raspberry Pi Setup OS installation, SSH, GPIO pinout
03_Python_GPIO_Control.md ⭐⭐ GPIO Control RPi.GPIO, gpiozero, sensors
04_WiFi_Networking.md ⭐⭐ WiFi Networking Sockets, HTTP client
05_BLE_Connectivity.md ⭐⭐⭐ BLE Connectivity GATT, bleak library
06_MQTT_Protocol.md ⭐⭐ MQTT Protocol Mosquitto, paho-mqtt
07_HTTP_REST_for_IoT.md ⭐⭐ HTTP/REST Flask server, API design
08_Edge_AI_TFLite.md ⭐⭐⭐ Edge AI (TFLite) Model conversion, inference
09_Edge_AI_ONNX.md ⭐⭐⭐ Edge AI (ONNX) ONNX Runtime, optimization
10_Home_Automation_Project.md ⭐⭐⭐ Home Automation Smart home, MQTT control
11_Image_Analysis_Project.md ⭐⭐⭐ Image Analysis Pi Camera, object detection
12_Cloud_IoT_Integration.md ⭐⭐⭐ Cloud IoT AWS IoT, GCP Pub/Sub

Difficulty Legend: ⭐ Beginner | ⭐⭐ Elementary | ⭐⭐⭐ Intermediate


Environment Setup

Hardware Requirements

  • Raspberry Pi 4 Model B (recommended, 2GB+ RAM)
  • microSD card (32GB or more, Class 10)
  • Power adapter (5V 3A USB-C)
  • (Optional) Sensor kit, Pi Camera, relay modules

Software Setup

1. Raspberry Pi OS Installation

# Use Raspberry Pi Imager (on PC)
# https://www.raspberrypi.com/software/

# Enable SSH: Create ssh file on boot partition
touch /Volumes/boot/ssh  # macOS
# or
touch /media/user/boot/ssh  # Linux

2. Python Environment Setup

# Check Python version
python3 --version  # 3.9+ recommended

# Create virtual environment
python3 -m venv ~/iot-env
source ~/iot-env/bin/activate

# Install base packages
pip install --upgrade pip
pip install RPi.GPIO gpiozero

3. IoT Package Installation

# MQTT
pip install paho-mqtt

# BLE
pip install bleak

# Web server
pip install flask flask-cors

# Edge AI
pip install tflite-runtime  # For Raspberry Pi
pip install onnxruntime

# Camera
pip install picamera2

# Other utilities
pip install requests numpy pillow

4. Development Environment (PC)

You can write code directly on the Raspberry Pi or develop on PC and transfer.

# After installing VS Code Remote SSH extension
# Ctrl+Shift+P > Remote-SSH: Connect to Host
# pi@raspberrypi.local

# Or transfer files with scp
scp script.py pi@raspberrypi.local:~/projects/

Official Documentation


Learning Tips

  1. Set up practice environment first: Complete Raspberry Pi setup before starting learning
  2. Step-by-step progress: Complete 01-03, then branch into networking (04-07) or AI (08-09)
  3. Project-oriented: Use projects 10-12 as goals and learn required technologies backwards
  4. Use simulation: If you don't have hardware, you can use GPIO simulators

Last updated: 2026-02-01

to navigate between lessons