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/
Related Resources¶
Official Documentation¶
- Raspberry Pi Documentation
- gpiozero Documentation
- paho-mqtt Documentation
- TensorFlow Lite Guide
- ONNX Runtime
Recommended Learning Resources¶
Related Folders¶
- C_Programming: Low-level embedded programming (Arduino, C)
- Python: Advanced Python syntax
- Networking: Network theory
- Machine_Learning: Machine learning basics
- Computer_Vision: OpenCV and computer vision
Learning Tips¶
- Set up practice environment first: Complete Raspberry Pi setup before starting learning
- Step-by-step progress: Complete 01-03, then branch into networking (04-07) or AI (08-09)
- Project-oriented: Use projects 10-12 as goals and learn required technologies backwards
- Use simulation: If you don't have hardware, you can use GPIO simulators
Last updated: 2026-02-01