Progetto 1: LED lampeggiante con modelli personalizzati (adatto ai principianti)
Configurazione hardware
Per questo progetto, avrai bisogno di un Raspberry Pi Pico, una breadboard, un LED, una resistenza da 220 ohm e dei cavi jumper. Collega l’anodo del LED al pin GPIO 25 tramite la resistenza e il catodo al pin di massa sul Pico. Questa configurazione garantisce che il LED sia protetto da sovracorrente dalla resistenza e sia correttamente collegato al pin GPIO del Pico per il controllo.

Implementazione del codice
Utilizzando MicroPython, creeremo un programma per far lampeggiare il LED in diversi modelli. Innanzitutto, importa i moduli necessari:
from machine import Pin, Timer
Quindi, inizializza il pin del LED:
led = Pin(25, Pin.OUT)
tim = Timer()
def tick(timer):
led.toggle()
tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)
Test e personalizzazione
Progetto 2: Sistema di monitoraggio della temperatura (intermedio)
Requisiti hardware

Sviluppo del codice
import machine
import onewire
import ds18x20
import time
ds_pin = machine.Pin(18)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(ds_sensor.read_temp(rom))
time.sleep(2)
Registrazione e visualizzazione dei dati
from machine import I2C, Pin
import ssd1306
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 32, i2c)
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds_sensor.read_temp(rom)
print(temp)
oled.fill(0)
oled.text(f"Temp: {temp} C", 0, 0)
oled.show()
time.sleep(2)
file = open('temperatures.txt', 'w')
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds_sensor.read_temp(rom)
print(temp)
file.write(f"{time.time()},{temp}\n")
file.flush()
time.sleep(2)
Progetto 3: Uploader di dati IoT (Avanzato)
Configurazione hardware

Codice e integrazione IoT
import network
ssid = 'your_SSID'
password = 'your_PASSWORD'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
print('Connected to WiFi')
import bme280_i2c
i2c = machine.I2C(0, sda=machine.Pin(8), scl=machine.Pin(9))
bme = bme280_i2c.BME280_I2C(i2c)
import urequests
def upload_data(temperature, humidity, pressure):
url = 'https://industrial.api.ubidots.com/api/v1.6/devices/your_device_label'
headers = {'X-Auth-Token': 'your_token', 'Content-Type': 'application/json'}
data = '{"temperature": %s, "humidity": %s, "pressure": %s}' % (temperature, humidity, pressure)
response = urequests.post(url, headers=headers, data=data)
if response.status_code == 200:
print('Data uploaded successfully')
else:
print('Error uploading data')
response.close()
while True:
temperature, pressure, humidity = bme.values
temperature = float(temperature.strip(' C'))
humidity = float(humidity.strip(' %'))
pressure = float(pressure.strip(' hPa'))
upload_data(temperature, humidity, pressure)
time.sleep(60)
Test e scalabilità
Progetti Pico per PIO, USB, sensori e controllo
I progetti utili insegnano un concetto hardware alla volta e consentono di misurare il risultato. Scegliere prima la scheda esatta della famiglia Pico, poiché processore, radio, memoria, pin e supporto variano; progettare poi le interfacce secondo i limiti logici documentati di 3,3 V.
- Iniziare dall’acquisizione: registrare un sensore calibrato con orari e intervallo definito.
- Esplorare PIO: generare o catturare un’interfaccia temporizzata e verificarla sui punti di prova.
- Creare un dispositivo USB: realizzare una piccola funzione umana o seriale con riconnessione chiara.
- Aggiungere l’anello chiuso: regolare velocità, luce o temperatura su un sistema sicuro e limitato.
- Progettare il prototipo: includere disaccoppiamento, livelli, protezione, punti di prova e compilazione riproducibile.




