DISPLAY
MULTIPLEXER
| Quando
si vuole eseguire un programma, sia scritto personalmente
che scaricato da Internet, è necessario installare le
librerie necessarie. A questo proposito, se necessario,
consultare la pagina dedicata. |
| Raspberry
PI, a dfferenza di Arduino ed ESPxxx (che sono dei
microcontroller) è un mini-computer a tuuti gli effetti ed
è usato principalmente come server (server Web, MQTT,
Home Assistant, OpenHab)
e decine di altre applicazioni estremamente interessanti. Ma i progettisti dell'hardware hanno anche inserito un connettore da 40 pin che supporta ben 27 GPIO (porte in-out) che possono essere usato in modo analogo a quello dei microcontroller. E allora perché non usarli per sperimentare, apprendere e - perché no - divertirsi? Probabilmente a causa degli utilizzi più "seri" del Raspberry non si trova in Internet la stessa quantità di sketch applicativi per l'uso di periferiche di quelli reperiti per Arduino ed ESPxxx. Per questo motivo ne ho raccolti alcuni dal Web, mentre altri li ho scritti personalmente, in modo da poter li testare sulla nostra basetta sperimentale e didattica (BDS). Qual'è lo scopo della BDS? quello di poter realizzare dal punto di vista hardware progetti anche complessi, con l'uso di diversi sensori ed attuatori in sicurezza, senza usare una breadboard e cavetti (se non in casi molto limitati). Le tipologie dei programmi presentati:
|
![]() Il
Raspberry PI4
![]() Una
breadboard piuttosto affollata...
|
| La
configurazione del Raspberry |
| I
microcontroller che usano la IDE di Arduino rendono
disponibili immediatamente i protocolli particolari (come
I2C o Spi). Mentre in Raspberry, probabilmemte per motivi
di sicurezza, devono essere attivati, utilizzando il
programma di sistema "raspi-config". Nota: clicca qui per andare alla pagina relativa al sistema operativo. Vedremo
come attivare il protocollo I2C, ma vale allo stesso
modo per SPI e one-wire.
Per lanciare raspi-config: aprire un terminale sul Raspberry e digitare: sudo raspi-config |
![]() |
Selezionare
"3 - Interface Options
|
![]() |
Se
si desidera attivare I2C,
scegliere
I5 - I2C. La stessa procedura per attivare SPI (I4 - SPI) e one-wire (I7 - I-Wire). |
![]() |
Scegliere
"Yes"
|
|
Ed
ecco la conferma dell'attivazione. Spesso ci si scervella perché i programmi non funzionano. Nel caso di I2C, SPI e One-wire ricordardarsi di verificare se sono stati attivati. In "Interface options" ci sono altri aspetti importanti, per esempio se si vuole controllare il Raspberry dal proprio computer, attraverso SSH o VLC. In questo caso, leggere con attenzione l'articolo presente su randomnerdstutorials. L'articolo è per Windows, ma è adatto anche per Linux. |
![]() |
Sulle
nuove versioni del sistema operativo (che non si chiama
più Raspbian, ma Rasperry OS, si raggiunge questo
menù più moderno , cliccado sull'iconcina del raspberry
(in alto a sinistra, poi "preferences", "configure
Raspberry Pi system". Si apre questa finestra, selezionare "Interfaces". Consigli di abilitare contemporaneamente "SPI", "I2C" e "1-wire", perv poter gestire tutte le periferiche. Se si desidera inoltre controllare il proprio Raspberry da remoto, attivare anche "SSH" e "VNC". |
| La
gestione (problematica) delle librerie... |
| Slle
più recenti versioni di Raspbian, oppure Raspberry PO, per
motivi di sicurezza e stabilità, non è più possibile
installare direttamente delle librerie non-python, ma è
necessario installarle in un ambiente virtuale. Vedi la pagina relativa all'installazione delle librerie, per evitare ore di problemi e frustrazione, ricevendo messaggi di errore come quelli che appaiono nell'immagine qui di lato! |
|
| ...
e un possibile ripiego |
![]() |
La
gestione di più ambienti virtuali (virtual environment)
può creare disagio in alcuni di noi. Però esiste una
possibile soluzione che considero di ripiego,e poi
spiegherò il perchè. Qual'è questa soluzione? Usare una vecchia versione dei sistema operativo per Raspberry, che non richieda l'uso degli ambienti virtuali. Il più recente di essi è "raspio_bullseye",che puoi scaricare da qui (900 Mb circa). Questa è sicuramente una soluzione di ripiego, perchè un vecchio sistema operativo non ha gli aggiornamenti dei programmi e specialmente di sicurezza, ma è comunque un'opzione. |
| I
criteri di ordinamento dei programmi |
| L'ordimanento
logico dei programmi applicativi per Raspberry PI non è
stato del tutto semplice. Finora avevo trattato sempre dei
microcontroller che utilizzavano per la programmazione la
IDE di Arduino, per cui l'installazione delle librerie era
semplice: o la si selezionava dalla ricerca internna alla
IDE, oppure si scaricava dal web e si inseriva nella
cartella "libraries" nella cartella dedicata. Per cui era
facile organizzare la collocazione dei programmi in base
al connettore su cui si inseriva il modulo principale,
avendo una grande libertà di manovra. Con il Raspberry, specialmente con le versioni più recenti del sistema operativo, è necessario creare un'ambiente virtuale in cui installare le librerie non native di Python, per i validi motivi segnalati nel paragrafo precedente. Ma questo genera un problema: creare un unico ambiente virtuale, in cui installare tutte le librerie necessarie per i propri programmi, guadagnando in spazio e praticità, ma con il rischio che se qualcuna di esse si corrompa, renda più difficile la sistemazione dell'ambiente, oppure crearne multipli, aumentando lo spazio di disco occupato e la complessità? Controllando sui forum dedicati, sembra che l'orientamento corrente sia quello di creare un ambiente virtuale per ogni progetto, o almeno per gruppi di progetti omogenei. Personalmente userò questo criterio. Per esempio: creerò un unico ambiente per il sensore BME280, in cui installerò la libreria principale per la gestione della periferica, e le eventuali librerie aggiuntive per i progetti più complessi che usano però tutti BME280. Mi sembra un compromesso ragionevole. Quindi seguirò questo criterio per i vari programmi che presenterò. Alcuni verranno inseriti più volte in sezioni diverse: per esempio, se in un programma si usa un pulsante e un led, potrebbe essere presente sia nella sezione "sensori" che "led". Spero possa essere un criterio condivisibile... |
![]() Esempio
di un semplice programma
in Python |
| La
lista dei programmi applicativi |
![]() |
Compilando
questa lista, mi sono reso conto di quanto l'archivio di
programmi si sia arricchito (oltre 100 programmi
applicativi e di test), e spero che cresca ancora. Ecco la lista attuale: |
| Ho
cercato di radunare i programmi in modo logico, e quando
ci sono più moduli in uno stesso sketch,
selezionandoli in base al più rilevante, e che
caratterizza maggiormente il programma. |
| Nota
importante: i programmi che presento hanno
semplicemente lo scopo di testare e di apprendere l'uso
della BDS. Pertanto si dà per scontato che chi li usa
conosca i rudimenti di programmazione, o li apprenda da
tutorial e video che lo faranno sicuramente molto meglio
di quanto potrei fare io. Quando possibile inserirò nella pagina di descrizione, oppure nella prima riga del programma stesso il link da cui ho scaricato il programma.
|