Come appassionato di creazioni sempre alla ricerca di schede microcontroller potenti ma economiche, mi sono innamorato del Raspberry Pi Pico. Le sue dimensioni compatte, le prestazioni impressionanti e le versatili opzioni di programmazione lo rendono perfetto per un’ampia gamma di progetti. In questo post, condividerò alcuni dei miei progetti Pico preferiti che ne dimostrano le capacità, dalle semplici creazioni per principianti alle applicazioni più avanzate.
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)
Crea un oggetto timer per controllare gli intervalli di lampeggio. Il seguente snippet di codice imposta un timer che fa lampeggiare il LED ogni 500 millisecondi:
tim = Timer()
def tick(timer):
led.toggle()
tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)
Test e personalizzazione
Una volta caricato il codice sul Pico (salvandolo come main.py e collegando il Pico), il LED dovrebbe iniziare a lampeggiare. Puoi personalizzare i modelli di lampeggio modificando il periodo del timer o creando funzioni più complesse per controllare i tempi di accensione e spegnimento del LED. Ad esempio, potresti creare una funzione che fa lampeggiare il LED in un modello di codice Morse o un modello che cambia in base a un input esterno. Questo progetto è un ottimo modo per familiarizzare con il controllo dei pin GPIO e MicroPython sul Pico.
Progetto 2: Sistema di monitoraggio della temperatura (intermedio)
Requisiti hardware
Raccogli un Raspberry Pi Pico, un sensore di temperatura DS18B20, una resistenza da 4,7k ohm, una breadboard e dei cavi jumper. Il DS18B20 utilizza un’interfaccia 1-Wire, quindi collega il suo VCC a 3,3V, GND a massa e il pin DATA al pin GPIO 18 sul Pico. La resistenza va tra il pin DATA e VCC per tirare su il segnale. Questa configurazione garantisce una comunicazione stabile tra il Pico e il sensore di temperatura, poiché il protocollo 1-Wire richiede una corretta resistenza di pull-up per una trasmissione dati affidabile.

Sviluppo del codice
In MicroPython, utilizza le librerie onewire e ds18x20 per comunicare con il sensore. Innanzitutto, importa le librerie e inizializza il bus 1-Wire:
import machine
import onewire
import ds18x20
import time
Quindi, configura il bus sul pin GPIO scelto:
ds_pin = machine.Pin(18)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
Scansiona i dispositivi e crea un oggetto DS18B20:
roms = ds_sensor.scan()
print('Found DS devices: ', roms)
Il seguente codice legge la temperatura e la stampa sulla console:
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
Per rendere il sistema più utile, puoi aggiungere un piccolo display OLED (collegato tramite I2C) per mostrare la temperatura in tempo reale o registrare i dati in un file su un computer connesso. Per il display OLED, puoi utilizzare la libreria ssd1306. Innanzitutto, importa i moduli necessari e inizializza l’interfaccia I2C:
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)
Quindi, modifica il ciclo di lettura della temperatura per visualizzare la temperatura sull’OLED:
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)
Per la registrazione dei dati, puoi utilizzare il seguente codice per scrivere i dati di temperatura su un file nel file system interno del Pico:
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)
Questo progetto dimostra come interfacciarsi con sensori esterni utilizzando i pin GPIO del Pico e mostra la sua capacità di gestire l’acquisizione di dati dai sensori.
Progetto 3: Uploader di dati IoT (Avanzato)
Configurazione hardware
Avrai bisogno di un Raspberry Pi Pico W (con Wi-Fi integrato), un sensore ambientale BME280 (misura temperatura, umidità e pressione), una breadboard e cavi jumper. Collega il BME280 al Pico utilizzando I2C: SDA a GPIO 8, SCL a GPIO 9, VCC a 3,3V e GND a massa. Questa configurazione di connessione consente al Pico di comunicare con il sensore BME280 tramite il bus I2C, consentendo il recupero dei dati ambientali.

Codice e integrazione IoT
Utilizzando MicroPython sul Pico W, connettiti prima a una rete Wi-Fi. Imposta le credenziali Wi-Fi:
import network
ssid = 'your_SSID'
password = 'your_PASSWORD'
Connettiti utilizzando l’interfaccia di rete:
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
pass
print('Connected to WiFi')
Quindi, inizializza il sensore BME280 utilizzando la classe bme280. Potrebbe essere necessario installare la libreria bme280 se non è già installata. Ecco come puoi inizializzarla:
import bme280_i2c
i2c = machine.I2C(0, sda=machine.Pin(8), scl=machine.Pin(9))
bme = bme280_i2c.BME280_I2C(i2c)
Il codice legge i dati del sensore e li carica su una piattaforma IoT come Ubidots o Thingspeak utilizzando il metodo HTTP POST. Ecco una versione semplificata della funzione di caricamento dei dati:
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à
Una volta che il codice è in esecuzione, il Pico W si connetterà a Internet, leggerà i dati dal BME280 e li caricherà sulla piattaforma IoT scelta. Puoi visualizzare i dati in tempo reale sulla dashboard della piattaforma. Questo progetto evidenzia le capacità wireless del Pico W e mostra come costruire soluzioni IoT scalabili con il Pico, aprendo la porta ad applicazioni per la casa intelligente, il monitoraggio ambientale e altro ancora. Se prevedi di scalare questo progetto, puoi aggiungere altri sensori, regolare gli intervalli di raccolta dati o addirittura utilizzare una piattaforma IoT più robusta con funzionalità di analisi avanzate.
Conclusione
Il Raspberry Pi Pico è uno strumento fantastico per i creatori di tutti i livelli di abilità, offrendo possibilità infinite per progetti creativi. Che tu stia appena iniziando con un semplice lampeggio di un LED o costruendo un sistema IoT avanzato, l’accessibilità economica, le prestazioni e la facilità d’uso del Pico lo rendono una scelta principale. Spero che questi progetti ti ispirino a iniziare a sperimentare con le tue build Pico. Condividi i tuoi progetti nei commenti qui sotto – mi piacerebbe vedere cosa crei!




