mercoledì 13 gennaio 2021

Collegare un display I2C alla Raspberry Pi

 Molto spesso nello sviluppo dei progettini con Raspberry si rende necessario visualizzare lo stato di esecuzione dei comandi o lo stato dei pin, insomma abbiamo bisogno di "vedere" a che punto ci stiamo trovando nell'esecuzione del nostro sistema. La maniera piu' veloce ed economica e' quella di utilizzare un display 1602 con integrata l'interfaccia I2c.


Il display in questione costa circa 2 euro su Aliexpress e consente di visualizzare 2 righe di 16 caratteri totalmente gestibili dal nostro programma. L'utilizzo della interfaccia I2C velocizza la comunicazione tra Raspberry e Display e fa risparmiare un po' di cavetteria che crea solo confusione e aumenta il rischio di malfunzionamenti.

Effettuati i collegamenti come da schema, non ci resta che utilizzare una libreria per cominciare a comunicare con il Display.

Ho trovato questa libreria  che aiuta nella gestione del Display e che e' molto facile installare ed utilizzare.

Cominciamo: (da Github)

Installation

  • Install git

    sudo apt install git
    
  • Clone the repo in your pi home directory

    cd /home/pi/
    git clone https://github.com/the-raspberry-pi-guy/lcd.git
    cd lcd/
    
  • Run the automatic installation script with sudo permission

    sudo ./install.sh
    
  • After rebooting, try one of the demos

    cd /home/pi/lcd/
    ./demo_clock.py


Ecco il risultato:



Questo e' il circuito completo che ho montato per farlo diventare una Radio Web.







Ascoltare Radio in Streaming con Raspberry Pi

 Tra le altre cose, durante le vacanze di Natale nell'anno della pandemia, mi sono divertito a costruire una radio web con raspberry ed mpc - mpd. Ho scoperto infatti il progetto Music Player Daemon (MPD) un'applicazione lato server flessibile e potente per la riproduzione di musica. Attraverso plugin e librerie può riprodurre una grande varietà di file audio e anche le trasmissioni delle radio in streaming web.


Il sistema e' testuale, cioe' lo si avvia attraverso comandi via shell. E' stato sviluppato un client per il sistema, che ne rende l'utilizzo  estremamente semplice e veloce, il Client si chiama MPC lo puoi trovare qui 

Come funziona?
Molto semplicemente, basta fornire il link allo streaming della radio che ci interessa, ad mpc che automaticamente parte la riproduzione. E' possibile aggiungere una playlist di radio (una sorta di cambio canale) che possono essere selezionate in modo da poter cambiare la programmazione ogni volta si voglia.

Con il comando :

$ mpc add "link_completo_di_http_allo_streaming_audio"

si aggiunge lo streaming alla coda della playlist

$ mpc play

si avvia la riproduzione dello streaming sul device audio di default del sistema.

Per l'utilizzo si Raspberry Pi possiamo creare il sistema pulito si microSD, operazione che oggi e' molto facile e veloce!, installare mpd e mpc direttamente dal repository ufficiale con

$ sudo apt-get install mpd

Possiamo provare subito se tutto funziona ( a me e' andata cosi!):

$ mpc add http://livex.radiopopolare.it/radiopop

$ mpc play

Con questi semplici comandi (sempre che la Raspberry Pi sia collegata ad internet via rete o via WiFi, ovviamente!) dal jack audio, collegando un paio di cuffiette o gli altoparlanti amplificati, si dovrebbe il flusso audio della radio web.

Nel caso che qualcosa non funzioni, possiamo fermare il servizio mpd che parte in automatico appena scaricato con:

$ sudo /etc/init.d/mpd stop

Ci possiamo creare una copia di backup del file di configurazione 

$ sudo cp /etc/mpd.conf /etc/mpd.conf.originale

E controllare che la configurazione sia simile a questa, aprendo iol file di configurazione attraverso un editor di testo (nano):

$ sudo nano /etc/mpd.conf

quindi cercare e controllare :

audio_output {
type               “alsa”
name            “Raspberry Onboard Audio” (verra’ visualizzato sul client)
device           “hw:0,0”
mixer-device “default”
mixer-control “PCM”
mixer-index   “0”
}

Nel caso modificare ed uscire dall'editor salvando.

Per far ripartire il servizio mpd:

$ sudo /etc/init.d/mpd start

Tutto dovrebbe funzionare correttamente.


Buon divertimento 

TecnoGeppetto

domenica 10 gennaio 2021

Ambiente virtuale in Python

 Creare un ambiente virtuale e' molto utile per evitare di continuare ad installare librerie direttamente nel sistema principale. infatti quando facciamo i nostri test e prove varie, abbiamo spesso bisogno di caricare nuove librerie e driver per tentare di far funzionare quelle che sono le nostre idee di progetto. Continuando a caricare tutto nel sistema princpale e' possibile che alcune delle librerie caricate possano andare in conflitto con altre, gia' presenti nel sistema. 


Per evitare tutto cio' allora, si puo' utilizzare  questa funzione interna di Python che consente di costruire un ambiente virtuale all'interno del quale poi potremo caricare qualsiasi libreria senza con questo fare delle modifiche permanenti al sistema. Cioe' tutto quello che caricheremo nel sistema virtuale, rimarra' valido li dentro, ma non avra' nessun effetto sul sitema principale.

Come si fa' ? 


$ python -m virtualenv .venv

$ source .venv/bin/activate

Fatto!

con activate lo attiviamo e siamo gia' pronti per poter caricare qualsiasi cosa vogliamo senza fare piu' nessun danno nel sistema principale.