Microcontrollers are small, low-power computers used to control hardware devices, sensors, and embedded systems. Python, through MicroPython and CircuitPython, allows easy programming of microcontrollers, making them useful for IoT, robotics, and automation.
1. What is a Microcontroller?
🔹 A compact integrated circuit (IC) that contains a processor, memory, and input/output peripherals.
🔹 Commonly used in embedded systems, robotics, smart devices, and automation.
🔹 Examples: ESP32, ESP8266, Arduino, Raspberry Pi Pico
2. Why Use Python for Microcontrollers?
✅ Easy to learn compared to C/C++
✅ Quick development for IoT and embedded systems
✅ Rich libraries for sensor integration
✅ Supports Wi-Fi, Bluetooth, and MQTT for IoT applications
Popular Python Variants for Microcontrollers
1️⃣ MicroPython – Lightweight Python for microcontrollers
2️⃣ CircuitPython – Adafruit’s beginner-friendly version of MicroPython
3. Choosing a Microcontroller for Python
Microcontroller | Features | Python Support |
---|---|---|
ESP32 | Wi-Fi, Bluetooth, Dual-core | MicroPython |
ESP8266 | Wi-Fi, Low cost | MicroPython |
Raspberry Pi Pico | Dual-core, Low power | MicroPython |
Arduino | Low-power, Simple | (Limited Python support) |
4. Setting Up MicroPython on ESP32/ESP8266
4.1 Installing MicroPython Firmware
1️⃣ Download MicroPython firmware from official site.
2️⃣ Connect the ESP32/ESP8266 to the computer via USB.
3️⃣ Install esptool:
pip install esptool
4️⃣ Erase flash memory:
esptool.py --port /dev/ttyUSB0 erase_flash
5️⃣ Flash MicroPython firmware:
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 firmware.bin
5. Writing Python Code for Microcontrollers
5.1 Connecting to the Microcontroller using REPL
Use rshell, ampy, or a serial terminal like minicom
:
screen /dev/ttyUSB0 115200
5.2 Blinking an LED with Python
from machine import Pin
import time
led = Pin(2, Pin.OUT) # GPIO 2
while True:
led.on()
time.sleep(1)
led.off()
time.sleep(1)
This script blinks an LED every second.
6. IoT with Microcontrollers and Python
6.1 Connecting to Wi-Fi (ESP32/ESP8266)
import network
ssid = "YourWiFi"
password = "YourPassword"
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(ssid, password)
while not sta_if.isconnected():
pass
print("Connected to Wi-Fi", sta_if.ifconfig())
This connects the microcontroller to Wi-Fi.
7. Using Sensors with Python on Microcontrollers
7.1 Reading Temperature and Humidity (DHT11 Sensor)
7.1.1 Install DHT Library
import dht
import machine
sensor = dht.DHT11(machine.Pin(4)) # GPIO 4
sensor.measure()
print(f"Temp: {sensor.temperature()}°C, Humidity: {sensor.humidity()}%")
This reads temperature and humidity from a DHT11 sensor.
8. Cloud Integration: Sending Data to Firebase
8.1 Install Firebase Library on MicroPython
pip install firebase-admin
8.2 Sending Sensor Data to Firebase
import firebase_admin
from firebase_admin import credentials, db
cred = credentials.Certificate("path/to/firebase.json")
firebase_admin.initialize_app(cred, {"databaseURL": "https://your-database.firebaseio.com/"})
ref = db.reference("/sensor_data")
ref.set({"temperature": 25, "humidity": 60})
print("Data sent to Firebase!")
This uploads sensor data to Firebase.