martedì 11 Febbraio 2025
Home / Corsi / Corso Python / Creare un display scorrevole con Raspberry Pi Pico W e Telegram
Display scorrevole da Telegram

Creare un display scorrevole con Raspberry Pi Pico W e Telegram

Introduzione

Da anni, guardo poco la TV. Preferisco fruire di contenuti on demand, quel che voglio, quando voglio (o posso). Però, ogni tanto c’è quell’evento in diretta che vale la pena seguire, oppure.. che sei un po’ “costretto a seguire” per imposizione familiare..

Beh, in entrambi i casi ho scoperto da un po’ che è molto più divertente seguirli con gli amici, condividendo commenti e impressioni. Gioire insieme per un goal, lo sfottò, o anche ironizzare sul programma noioso che vogliono vedere le mogli..

In epoche recenti è stato anche difficile farlo di persona, e così, anche con “gruppo di ascolto” virtuale, sui social, è divertente, anche se è scomodo guardare TV e dispositivo mobile contemporaneamente.

Da qui, un’idea, nata anni fa, e realizzata solo un paio di notti fa, in un trance creativo: non sarebbe bello avere un display sotto o sopra la TV che mostri i messaggi del gruppo di amici mentre insieme si guarda lo stesso programma?

scrolltext

In questo articolo vedremo quindi come realizzare un sistema che permette di visualizzare i messaggi inviati a un gruppo Telegram su un display a matrice di punti MAX7219 collegato a un Raspberry Pi Pico W. Il tutto sarà gestito da uno script in MicroPython che recupera i messaggi tramite le API di Telegram e li mostra come testo scorrevole sul display.

 

Materiale necessario

Display MAX7219 con matrici 8x8 LED  Display MAX7219 con matrici 8×8 LED Raspberry Pi Pico W Raspberry Pi Pico W (o anche PICO W 2) Alimentazione USB (Opzionale)Alimentazione USB (Opzionale) Piedini da saldare (se non già presenti sul Pico)Piedini da saldare (se non già presenti sul Pico)

Se non sono già presenti nel display (quello qui su, li comprende), vi serviranno anche  cavetti jumper maschio-maschio per collegarlo. Cliccando i link qui sopra, potrete acquistare direttamente i materiali con lo sconto in affiliazione Aliexpress.

Collegamenti hardware

collegamento piedini

Io ho utilizzato due display max7219 da 4 moduli 8×8 ognuno. Con questo particolare tipo di display è molto comodo realizzare matrici di LED della forma e dimensione desiderata: basta infatti collegarli in casata (lavorano con una comunicazione seriale), e poi ci penserà il software a comandare correttamente i vari led, collegando al microcontrollore solo i primo.

I display da 4 moduli 8×8 che ho usato io, erano già forniti di 5 piedini a 90 gradi saldati a una estremità, e cavetti jumper di collegamento. Ho così infilato i piedini di ingresso di un display nei fori delle piazzole in uscita dell’altro, e facendo leva con i moduli stessi, ho piegato pian piano i piedini fino a che hanno assunta una forma di U, in modo da avere i due display appaiati, a creare una striscia continua da 8 moduli 8×8. La saldatura a stagno dei piedini alle piazzole ha dato continuità elettrica e discreta solidità meccanica alla struttura. Bene, ho ottenuto una striscia a LED da 8 moduli, per un totale di 512 LED!

Non ci resta che collegarla, con i cavetti jumper.

Ecco i collegamenti tra il Raspberry Pi Pico W e il display MAX7219:

  • VCC (MAX7219) → VBUS (5V) (Pico W)
  • GND (MAX7219) → GND (Pico W)
  • DIN (MAX7219) → GPIO11 (SPI TX) (Pico W)
  • CS (MAX7219) → GPIO13 (SPI CS) (Pico W)
  • CLK (MAX7219) → GPIO10 (SPI SCK) (Pico W)

Collegamenti tra Pico W e display MAX219

Una volta collegati tra loro la striscia di LED e il PICO W, il nostro hardware è concluso! Una volta messo il software, occorrerà solo alimentare via USB il Raspberry Pico W, o dalla presa USB della TV, o da altro apparecchio o con alimentatore USB.

Configurazione del progetto

Per far funzionare il progetto, abbiamo bisogno di:

  1. Installare MicroPython sul Raspberry Pi Pico W.
  2. Scaricare la libreria MAX7219 per MicroPython.
  3. Creare un bot Telegram e ottenere il Token API.
  4. Scrivere lo script in MicroPython per gestire il tutto.

1. Installare MicroPython

Per usare MicroPython, Pico deve avere caricato il firmware con l’interprete MicroPython. Installarlo è davvero semplice: basta collegare il Pico a un computer tenendo premuto il tasto BOOTSEL a bordo della scheda, per farlo vedere al sistema come una memoria di massa USB.

Ora, al suo interno, vedremo un file index.htm che, se aperto, rimanderà alla pagina web del Pico, dove seguendo le istruzioni per MicroPython, ci farà scaricare un file con estensione .uf2, da copiare poi nella “chiavetta” RPI-RP2 che è poi il nostro Pico. Ma non fatelo ora: c’è un sistema ancora più semplice, lo vediamo!

Thonny

Uno script Python o MicroPython altro non è che un file di testo. potete scriverlo con gli strumenti che volete (anche il blocco note di Windows), salvare il testo con estensione .py e poi trascinare il file dentro la memoria di massa RPI-RP2. Se si chiama main.py, verrà eseguito automaticamente non appena viene alimentato il Pico.

Tuttavia, un IDE (ambiente di sviluppo integrato), cioè un programma pensato appositamente per farvi scrivere gli script, risulta comodo in molte cose. La Fondazione Raspberry Pi, ha da qualche anno adottato Thonny come IDE Python da inserire nel sistema operativo ufficiale Raspberry Pi OS. Esiste anche in versione Windows e Mac, ed è gratuito.

Indirizzato ai principianti, era molto semplice nelle prime versioni, anche se con una interessante opzione di debug passo-passo. Nel tempo è cresciuto, arricchendosi di funzioni. Con l’uscita del Pico è stato aggiornato alla vers. 3.3.xx dalla quale supporta direttamente il Pico collegato alla macchina su cui gira Thonny.

Il Firmware .uf2

Come scritto poco più su, le indicazioni ufficiali dicono di scaricare il firmware .uf2 per MicroPython e copiarlo nel dispositivo. Se si usa Thonny, il tutto è ancora più semplice: una volta collegato il Pico via USB al computer (sia esso un Raspberry Pi, un PC Windows o Linux, o un Mac), quando lanciamo Thonny, possiamo scegliere, in basso a destra, l’interpreter dedicato al Raspberry pi Pico. Cercherà quindi il Pico connesso, e se il firmware MicroPython non è già presente, ce lo notificherà e ci chiederà se vogliamo installarlo sul Pico.Con il tasto destro sempre lì, potremo forzare l’installazione o l’aggiornamento del firmware, in base al modello di Pico posseduto. Tutto in automatico, e in pochi secondi. Molto bene!

2. Scaricare la libreria MAX7219

max7219
Il controller MAX7219 nascosto sotto i display

Dobbiamo scaricare la libreria max7219.py, che puoi trovare su GitHub. Ci sono diverse versioni, ma consiglio di usare questa, semplice e veloce da utilizzare . Andate all’URL https://github.com/mcauser/micropython-max7219/blob/master/max7219.py. Potete scaricare il file con il tasto “Download Raw File” in alto a destra, e poi lo si può spostare all’interno del Pico con il metodo della “chiavetta” USB. Altro metodo, potete semplicemente copiare tutto il testo, incollarlo in una nuova scheda di Thonny, e salvarlo direttamente sul Pico W (“Salva con nome” fa scegliere la destinazione), dandogli il nome max7219.

3. Creare un bot Telegram

Ora passiamo alla parte Telegram

  1. Aprite Telegram e cercate BotFather.
  2. Digitate /newbot e seguite le istruzioni per creare un bot.
  3. Annotare il Token API che verrà fornito.
  4. Aggiungere ora il bot al gruppo da cui volete ricevere i messaggi.
  5. Recuperare l’ID del gruppo (Se il link del tuo gruppo termina con un numero, l’ID Chat è quel che segue “/#” nell’URL del tuo gruppo, oppure puoi cercare in rete come trovarlo, ci sono molti metodi).

4. Lo script MicroPython

Ecco lo script in Micropython da mettere in Thonny. Salvandolo sul Raspberry pi Pico con il nome di mani.py, questo verrà eseguito automaticamente all’accensione. Permette al Pico W di connettersi al Wi-Fi, recuperare i messaggi da Telegram e visualizzarli sul display a matrice di LED.

 

5- Spiegazione del codice

Dopo aver importato le librerie necessarie, c’è una sezione di configurazione, dove impostare i dati della vostra rete WiFi e del vostro bot e gruppo Telegram. Segue un dizionario in cui si dà la corrispondenza per caratteri speciali, emoji ecc a caratteri visualizzabili dal nostro display. Volendo in questa sezione si può inserire un filtro per le parolacce, trasformandole in qualcosa di più “gentile”.

Si parte poi a definire le funzioni che serviranno al programma:

  • replace_emojis(text)  – serve a effettuare la sostituzione dei caratteri e emoji presenti nel dizionario
  • connect_wifi() – cosa farà mai?
  • scroll_text(text, delay=0.01) – crea lo scorrimento del testo
  • ignore_old_messages() – ignora i messaggi del gruppo Telegram scritti prima dell’accensione
  • get_latest_messages() – recupera l’ultimo messaggio postato sul gruppo 

Impostiamo poi la porta SPI con i parametri per gestire il display. Creiamo una lista per realizzare una coda in cui accodare i messaggi, nel caso venissero postati più velocemente di quanto impieghiamo a farli scorrere sul display. Questo permette di visualizzare i messaggi postati in sequenza, senza saltarne nessuno.

E poi c’è il loop principale, il cuore del programma, che controlla se ci sono messaggi nuovi, e in caso affermativo, li accoda per visualizzarli sul display.

Conclusione e altri usi

In questo articolo abbiamo visto come collegare un Raspberry Pi Pico W a un display MAX7219 e mostrare i messaggi di un gruppo Telegram in tempo reale. Per guardare con gli amici un programma TV o per le partite online. O magari per rimanere aggiornati sulla partita mentre la moglie ti costringe a guardare il Festival di Sanremo…

Sulla stessa base, si può fare qualcosa di simile che visualizzi i commenti di X (ex Telegram) per un determinato hashtag (ma le API di X sono a pagamento), o che prenda dal gruppo di lavoro sui teams e visualizzi i post su un grande display (oltre a quelli che ho usato io, vi sono una gran varietà di display che usano lo stesso chip di controllo).

Oppure può essere un comodissimo display remoto: basta una alimentazione USB, un telefono con Telegram, e si può decidere di far apparire una qualsiasi scritta su un display distante anche centinaia o migliaia di chilometri (magari, in quel caso, si può modificare lo script in modo che visualizzi l’ultimo messaggio in rotazione continua)

E tu, come hai intenzione di usarlo?.

Hai dubbi su qualche passaggio? Usa la discussione del forum dedicata a questo progetto per chiarimenti e approfondimenti!

Se vuoi restare aggiornato, seguici anche sui nostri social: Facebook, XYoutube

Trova prodotti di elettronica, making e accessori Raspberry Pi in offerta, supportaci e risparmia seguendo il nostro canale delle offerte su Telegram!!

Galleria di foto del progetto:



A proposito di Zzed

Appassionato di informatica alternativa, ma perenne novellino di Linux..

Vedi Anche

MagPi 149 doppia pagina

MagPi in Italiano! Raspberry Pi 500 + Monitor

Estratto, tradotto in italiano, di The MagPi N°149 la rivista ufficiale della Fondazione Raspberry Pi.

Powered by themekiller.com