Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS






 





Pagina principale per Raspberry



Informazioni di base




La basetta sperimentale (BDS)


Applicazioni



Librerie e programmi

            DISPLAY

           ATTUATORI           TELECAMERA

          MULTIPLEXER

            CONTROLLI sul WEB





Link per Raspberry PI











 








 
















Raspberry PI 3/4/5:
i programmi dedicati


 


















 









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:
  • Sensori: i sensori permettono al Raspberry di ricevere dal mondo esterno, processarli, e in base al programma, effettuare delle scelte.
  • Attuatori: gli attuatori eseguono le operazioni che desideriamo vengano eseguite, in base alle informazioni dei sensori o di altri algoritmi.
  • Display: i display ci permettono di vedere immediatamente lo stato delle informazioni raccolte dai sensori o dalle scelte effettuate dai nostri programmi
  • Web: questa è una parte veramente interessante delle possibilità del Raspberry: possiamo vedere le informazioni dei sensori, delle azioni intraprese dai programmi o prendere decisioni via Web, magari a centinaia o migliai di chilomentri da casa! In queso si manifesta la potenza della domotica.
  • Telecamera: la telecamera ci può mostrare in tempo reale ciò che sta succedendo nell'area che desideriamo monitorare.
  • Multiplexer: il multiplexer permette di controllare 16 ingressi o uscite con soli 6 GPIO.

raspberry
Il Raspberry PI4


bre
Una breadboard piuttosto affollata...

... e quello che ci permette la nostra BDS, in modo del tutto razionale e ordinato.



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

1

Selezionare "3 - Interface Options              
  
2

Se si desidera attivare I2C, scegliere        
I5 - I2C.
La stessa procedura per attivare SPI
(I4 - SPI) e one-wire (I7 - I-Wire).
3

Scegliere "Yes"                       
4                      

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.
ros

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!


errore_lib



... e un possibile ripiego
bull

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...

progr

Esempio di un semplice programma
in Python



La lista dei programmi applicativi



bds

La bds con cui testare i programmi proposti.

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:
SENSORI
TELECAMERA

DISPLAY

ATTUATORI


CONTROLLI sul WEB

MULTIPLEXER


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.

Disclaimer (clausola di esclusione di responsabilità):
I programmi sono forniti "as it is" (così come sono), sia scritti personalmente che scaricati (ed eventualmente modificati) dal Web;  non offrono alcuna garanzia implicita o esplicita di funzionamento, idoneità o sicurezza.
Il fornitore (ethicaldiy) declina ogni responsabilità per eventuali bug o malfunzionamenti, o danni derivati dal loro uso. L'utente si assume  l'intero rischio legato all'utilizzo del software proposto.








Per contatti: etdiy@centroanahata.it