
Vi ricordate la magia delle storie della buonanotte? Immaginate di costruire un dispositivo che crea storie uniche e sempre nuove per i vostri bambini con il semplice tocco di una carta. In questo progetto imparerete come creare il vostro AI Storyteller utilizzando un Raspberry Pi, un lettore RFID e un anello di LED NeoPixel.
Questo dispositivo permette ai bambini di scegliere gli eroi della loro prossima avventura posizionando carte RFID, ognuna rappresentante un animale, su un lettore. Un’intelligenza artificiale eseguita localmente scrive poi una storia unica e adatta ai bambini con gli animali selezionati, che appare su una semplice interfaccia web. È una meravigliosa combinazione di interazione tangibile e tecnologia creativa.
Come funziona lo Storyteller
Il concetto è semplice e intuitivo, perfetto per i bambini:
- Selezione dell’animale: Il bambino sceglie una o più carte, ciascuna con un adesivo di un animale
- Tocco del lettore: Posiziona le carte sul lettore RFID. Lo Storyteller riconosce gli animali
- Osservazione delle luci: Un anello di LED inizia a brillare, indicando che l’AI sta “pensando” e creando un nuovo racconto
- Lettura della storia: Pochi secondi dopo, una storia completamente nuova con gli animali scelti appare sullo schermo di un tablet, telefono o computer per essere letta ad alta voce
Componenti hardware utilizzati
Per realizzare questo progetto avrete bisogno dei seguenti componenti:
- Raspberry Pi 5 (×1) – Il cervello del sistema
- Anello NeoPixel: WS2812 5050 RGB LED (×1) – Per il feedback visivo
- Lettore RFID RC522 (×1) – Per leggere le carte animali
- Carte RFID (×1 set) – Le carte da programmare
- Adesivi di animali (×1 set) – Per decorare le carte
- Cavi jumper (×1 set) – Per i collegamenti
- Saldatore – Per collegamenti permanenti
Software e servizi online
- Microsoft VS Code – Per lo sviluppo del codice
- Ollama – Per l’esecuzione locale dell’AI
- Flask – Per l’interfaccia web
- Gemma3:1b – Il modello AI utilizzato
Caratteristiche del software
Il software è strutturato in diverse componenti principali:
Script principale (raspi-storyteller.py)
Lo script principale gestisce l’intera logica del sistema, dalla lettura delle carte RFID alla generazione delle storie. Include la classe LEDRing per il controllo delle animazioni luminose e le funzioni per la comunicazione con l’AI.
Interfaccia web (index.html)
L’interfaccia principale dove vengono visualizzate le storie generate. Include il supporto per il tema scuro e si aggiorna automaticamente per mostrare le nuove storie.
Gestione carte (manage.html)
Un’interfaccia separata per registrare nuove carte RFID e gestire quelle esistenti. Permette di associare ogni carta a un animale specifico.
Schema dei collegamenti
Il lettore RFID RC522 deve essere collegato al Raspberry Pi secondo lo schema seguente:
- 3.3V → Pin 1 (3.3V)
- RST → Pin 15 (GPIO 22)
- GND → Pin 6 (GND)
- MISO → Pin 21 (GPIO 9)
- MOSI → Pin 19 (GPIO 10)
- SCK → Pin 23 (GPIO 11)
- SDA → Pin 24 (GPIO 8)
L’anello NeoPixel va collegato a:
- 5V → Pin 2 (5V)
- GND → Pin 6 (GND)
- Data → Pin 19 (GPIO 10)

Download del codice HTML e Python
Per ottenere i file Python e HTML necessari alla realizzazione del progetto, si consiglia di scaricarli direttamente dalla fonte ufficiale. Tutti i file aggiornati, compresi gli script, sono disponibili su Hackster.io al seguente link:
Scarica il codice su Hackster.io
La tecnologia nel dettaglio
L’AI-Storyteller è un’interazione di diversi componenti.
- Raspberry Pi 5: Il cuore del progetto
Il Raspberry Pi 5 funge da cervello dell’intero sistema. Elabora gli input dal lettore RFID, controlla l’anello LED, fa generare le storie all’AI e ospita il server web attraverso cui vengono presentate le storie.
2) Lettore RFID RC522: Le carte magiche degli animali
Il lettore RFID è l’interfaccia tra la carta animale fisica e il mondo digitale del Raspberry Pi. Quando una carta RFID, decorata con un adesivo di animale, viene avvicinata al lettore, questo legge un identificatore unico (UID). La comunicazione tra il lettore e il Raspberry Pi avviene tramite l’interfaccia SPI.
3) Ollama e Gemma: L’AI che scrive le storie
Una volta riconosciute una o più carte animali, inizia la parte più entusiasmante: l’intelligenza artificiale genera una storia. Utilizziamo Ollama, una piattaforma che consente ai modelli linguistici di grandi dimensioni di essere eseguiti localmente sul Raspberry Pi – sì, il vostro Pi 5 può farlo. Il modello utilizzato è gemma3:1b.
4) Anello LED: Feedback visivo
Un anello LED fornisce feedback visivo. Quando viene rilevata una carta, si illumina brevemente. Mentre l’AI genera la storia, un'”animazione di pensiero” indica che qualcosa è in corso. In caso di successo, l’anello si illumina di verde; in caso di errore, diventa rosso.
5) Server web Flask: L’interfaccia per lettura e gestione
Tutte le storie generate e la gestione delle carte vengono gestite tramite una semplice ma efficace interfaccia web costruita con Flask. Il file index.html visualizza la storia corrente, mentre manage.html consente di collegare nuove carte RFID con nomi di animali o di eliminare assegnazioni esistenti. Il sito web si aggiorna automaticamente per mostrare gli animali selezionati e la storia generata.
6) Assemblaggio dell’AI Storyteller
Osservate lo schema di cablaggio per imparare come collegare il lettore RFID e l’anello LED al Raspberry Pi. Potete naturalmente costruire tutto prima su una breadboard. Se volete utilizzare un contenitore permanente in seguito, raccomando di saldare tutto insieme. Parlando di contenitore: ho utilizzato una luce notturna per bambini che aveva smesso di funzionare. Offre spazio sufficiente ed è realizzata con materiale semitrasparente che valorizza bene l’anello LED.
7) Una libreria per il lettore RFID RC522
Per consentire all’RC522 di comunicare con il Raspberry Pi 5, avete bisogno di una libreria. Sfortunatamente, la ben nota libreria MFRC522 non funziona con il modello Pi 5, motivo per cui utilizzerete una nuova. Potete trovarla per il download, insieme a ulteriori informazioni sulla libreria, in questo tutorial su Pollux Labs.
Configurazione del software
Abilitazione dell’interfaccia SPI
Potete collegare il vostro Raspberry Pi a un monitor ed eseguire i comandi in un terminale. Oppure, potete connettervi al vostro Raspberry Pi tramite SSH ed eseguirli da remoto.
Se non l’avete già fatto, abilitate l’interfaccia SPI sul vostro Raspberry Pi:
|
1 2 |
sudo raspi-config |
Navigate su 3 Interface Options -> I4 SPI e abilitate l’interfaccia.
Installazione delle dipendenze software
Aggiornamento del sistema e installazione delle librerie principali:
|
1 2 3 4 |
sudo apt update sudo apt upgrade -y sudo apt install python3-spidev python3-libgpiod python3-venv -y |
python3-spidev e python3-libgpiod sono utilizzati per la comunicazione SPI e il controllo GPIO sul Raspberry Pi 5. python3-venv è utilizzato per gli ambienti virtuali.
Configurazione di Ollama e download del modello
Il progetto utilizza Ollama per eseguire il modello AI Gemma.
Installazione di Ollama: Utilizzate questo singolo comando per installare Ollama sul vostro Raspberry Pi:
|
1 2 |
curl -fsSL https://ollama.com/install.sh | sh |
Download del modello Gemma: Dopo aver installato Ollama, scaricate il modello gemma3:1b che lo script storyteller utilizza:
|
1 2 |
ollama pull gemma3:1b |
Posizionamento dei file del progetto e configurazione dell’ambiente virtuale
Creazione di una directory del progetto:
|
1 2 3 4 |
mkdir raspi_storyteller cd raspi_storyteller mkdir templates |
Dovete poi scaricare i file del progetto più la libreria RC522 e metterli nella vostra directory. I file .html vanno nella cartella templates.
Creazione e attivazione di un ambiente virtuale Python: Un ambiente virtuale evita conflitti con i pacchetti di sistema.
|
1 2 3 |
python3 -m venv venv source venv/bin/activate |
Vedrete (venv) anteposto al prompt del terminale, indicando che l’ambiente virtuale è attivo.
Installazione delle dipendenze Python: Con il vostro ambiente virtuale attivato, installate le librerie Python richieste:
|
1 2 |
pip install flask pi5neo ollama spidev |
Questo installerà flask, pi5neo, ollama, gpiod e spidev nel vostro ambiente virtuale.
Esecuzione del Raspi Storyteller
Assicuratevi che il vostro ambiente virtuale sia ancora attivo (dovreste vedere (venv) nel prompt). Nella vostra directory raspi_storyteller, eseguite lo script Python principale:
|
1 2 |
python3 raspi-storyteller.py |
Questo avvierà il server web Flask sulla porta 5000 e il loop di lettura RFID.
Trovare l’indirizzo IP del vostro Raspberry Pi
Prima di accedere all’interfaccia web, avrete bisogno dell’indirizzo IP del vostro Raspberry Pi:
|
1 2 |
hostname -I |
Questo comando (eseguito in una nuova finestra terminale) produrrà l’indirizzo IP del vostro Pi.
Accesso all’interfaccia web
Aprite un browser web su un dispositivo connesso alla stessa rete del vostro Raspberry Pi.
Per gestire le carte: Andate su http://<INDIRIZZO_IP_RASPI>:5000/manage
Tenete una carta RFID sconosciuta vicino al lettore. Il suo UID apparirà nel campo “Card UID” sulla pagina web. Inserite un nome di animale e cliccate “Save Card” per collegare l’UID all’animale.
Per generare storie: Andate su http://<INDIRIZZO_IP_RASPI>:5000/
Tenete una o più delle vostre carte animali registrate vicino al lettore. Un momento dopo, la storia completa apparirà sulla pagina web, pronta per essere letta ad alta voce!
Funzionamento dell’AI locale
Una delle caratteristiche più impressionanti di questo progetto è l’utilizzo di un’AI che funziona completamente sul Raspberry Pi 5. Il modello Gemma3:1b è sufficientemente leggero da funzionare localmente, garantendo:
- Privacy: Le storie vengono generate localmente senza inviare dati a servizi esterni
- Velocità: Nessuna dipendenza da connessioni internet lente
- Affidabilità: Il sistema funziona anche offline
- Personalizzazione: Possibilità di adattare i prompt per storie specifiche
Personalizzazione e espansione
Il progetto può essere facilmente personalizzato e espanso in diversi modi:
- Basta registrare nuove carte RFID attraverso l’interfaccia di gestione e associarle a diversi animali. Il sistema supporta un numero illimitato di carte.
- È possibile modificare il prompt utilizzato per generare le storie nel codice Python, adattandolo a diversi stili narrativi o età dei bambini.
- L’interfaccia web può essere estesa per includere funzionalità come il salvataggio delle storie preferite, la selezione di diversi stili narrativi o la personalizzazione dei personaggi.
Considerazioni tecniche
Il Raspberry Pi 5 è sufficientemente potente per eseguire il modello Gemma3:1b in modo fluido. La generazione di una storia richiede tipicamente 7-10 secondi, tempo durante il quale l’anello LED fornisce feedback visivo.
Il modello AI utilizza una quantità significativa di memoria RAM. Si consiglia di chiudere altre applicazioni non necessarie per garantire prestazioni ottimali.
Anche se l’AI funziona localmente, è necessaria una connessione di rete per accedere all’interfaccia web dai dispositivi client. Il sistema crea un server web locale accessibile da qualsiasi dispositivo sulla stessa rete.
Possibili miglioramenti futuri
Il progetto può essere ulteriormente sviluppato con diverse migliorie:
- Aggiungere un sistema di text-to-speech per far leggere le storie direttamente dal dispositivo, rendendo l’esperienza completamente autonoma per i bambini.
- Utilizzare una fotocamera per riconoscere oggetti fisici invece delle carte RFID, permettendo ai bambini di utilizzare giocattoli esistenti.
- Implementare un sistema di scelte multiple che permetta ai bambini di influenzare lo sviluppo della storia attraverso decisioni interattive.
- Aggiungere la possibilità di salvare le storie preferite e creare una biblioteca personale di racconti.
Conclusioni
L’AI Storyteller rappresenta un perfetto esempio di come la tecnologia moderna possa essere utilizzata per creare esperienze educative e divertenti per i bambini. La combinazione di componenti hardware accessibili, software open-source e intelligenza artificiale locale crea un dispositivo che non solo intrattiene, ma stimola anche la creatività e l’immaginazione.
Il progetto dimostra come il Raspberry Pi 5 sia abbastanza potente per eseguire modelli di intelligenza artificiale complessi, aprendo nuove possibilità per progetti maker innovativi. La semplicità d’uso rende il dispositivo accessibile anche ai bambini più piccoli, mentre la flessibilità del sistema permette infinite possibilità di personalizzazione.
Costruire questo storyteller non è solo un progetto tecnico, ma un’opportunità per creare momenti magici di condivisione tra adulti e bambini, dove la tecnologia serve a rafforzare i legami familiari attraverso l’arte della narrazione.
Iscriviti ai nostri gruppi Telegram
Link utili