Archivi categoria: Raspberry PI

Raspberry Pi5 – preparare le migrazione

Che abbia inizio la migrazione!
In soffitta, ormai da alcuni anni, ho un calcolatore (ex-banca) che funge da server. Fa il suo lavoro senza problemi, solo che lo sto utilizzando meno di quello che pensavo. Nell’ottica di contenere i consumi elettrici e preparare una macchina per quando il pupo chiederà “il computer”, vorrei migrare tutto a raspberry pi.

Per questo ho acquistato una RBP5 con 4GB di ram, sulla quale farò girare Home Assistant, collegando ad essa direttamente le board Numato che ancora devo configurare. Attualmente Hassos gira su una macchina virtuale nel server e mi sembra interessante fare la migrazione per imparare qualche cosa, in primis come usare in modo decente una HD esterno SSD sulla RBP.

Per questo ho creato una ennesima wooden board, sulla quale ho fissato la RBP, il disco SSD ed il regolatore di tensione da 13V a 5V con tanto di fusible. Per il collegamento della RBP al regolatore, ho acquistato su Amazon, dei connettori USB-C terminati con cavetti rosso-nero, che userò per connettermi al regolatore. Inoltre ho preso un ambizioso cavo USB-C, in grado di “sostenere” 100W di potenza passante.

Vale la pena di fare due prove va…
Tensioni a vuoto –
Tensione in ingresso al modulo regolatore: 13.5V;
Tensione di uscita dal regolatore: 5.19V;
Carico 4.5A (non voglio bruciare il fusibile)-
Tensione in ingresso al modulo regolatore: 13.5V
Tensione di uscita dal regolatore: 5.12V
Tensione di uscita dopo il fusibile: 4.96V
Tensione di uscita misurata dal sul carico:4.70

Uhm… ‘sto cavo mica mi convince tanto. Considerato che sono solo 21W di potenza. sono 0.6 ohm di resistenza, per un cavetto lungo appena 30cm. Mi sembra un po’ tanto considerato che promette 100W.

Ora, ragioniamo anche sugli standard di ricarica, dal 2013 è stato tutto un susseguirsi di rilasci, che hanno sempre innalzato la massima potenza trasferibile per la ricarica. Per evitare di andare in giro con cavi USB di diametro 3cm, gli standard hanno sempre previsto un aumento della tensione di ricarica, dai 5V ai 21V con corrente di ricarica massima di 5A. Fanno eccezione gli standard VOOC e SuperVOOC che prevedono correnti da 6A fino a 12A, con potenza massima di 240W. Tanta tanta roba!

Stazione meteo: 3.0

Da diversi mesi ho smontato la stazione meteo che avevo sul tetto. Finalmente mi sono deciso a farne una nuova. Le motivazioni sono semplici: voglio passare dalla connettività wireless a quella cablata e fare tesoro di quanto scritto in questo articolo.

La nuova piattaforma sarà inizialmente basata su una Raspberry Pi 2. Ormai questo hardware è molto vecchio e non si adatta a lavori molto intensi per carico di CPU. Meglio quindi relegarlo alla data acquisition, visto che a bordo c’è tutto quello che serve: SPI, I2C, Camera ed ethernet. Spero solo che la CPU “regga” il caldo, ma se non dovesse risultare stabile ho pronto un “piano B”. Le caratteristiche della nuova piattaforma:
– alimentazione singola a 12V con regolatori interni per 5V e 3.3V;
– Raspberry PI 2 con camera;
– sensore BME 280 interno per rilevare pressione e la temperatura interna del box;
– sensore DHT 22 esterno per umidità e temperatura;
– convertitore A/D MCP3424A per lettura della velocità del vento;
– rimozione del sensore di direzione del vento (almeno per ora);
– predisposizione per sensore di pioggia;

In questi giorni di sviluppo hardware e software ho anche riaperto la vecchia stazione meteo che era operativa dal 2018 ed ha preso notevoli “botte” di grandine e caldo. La situazione all’interno del box è molto molto buona. Non ci sono segni di ossidazione. Solo i cavi hanno sofferto notevolmente e si sono rovinati (devo rinforzarli). Spero di ripristinare le funzionalità entro fine marzo.

In fase di apertura.
La board
Cavo danneggiato dal pressacavi
Nessun segno di ossidazione

Raspberry Terminal Server

Recentemente ho acquistato un giocattolino che mi servirà per studiare: si tratta di router Huawei modello AR1220VW. Una bella macchinina, nulla da dire, che consente di implementare tantissime funzioni.

Il problema è sorto quando ho cercato di condividere l’accesso alla macchina, per consentire ad altre persone di potersi esercitare con quell’hardware. La soluzione dell’accesso via telnet o ssh non è praticabile, in quanto mi costringerebbe a lasciare una interfaccia sempre configurata. Pertanto è necessario accedere via CONSOLE, utilizzando un terminal server.

Come fare per esportare via web una interfaccia seriale in modo BIDIREZIONALE? Viene in aiuto RFC2217 che tuttavia non è supportato da tutti i terminali (in realtà è supportato solo dal buon vecchio KERMIT). Allora occorre inventarsi qualche cosa di diverso: la risposta è arrivata dal programma “shellinabox“. Si tratta di un piccolo applicativo linux che esporta su un socket tutto lo I/O di un programma in esecuzione. Qualche informazione si trova anche QUI.

Io lo ho configurato in questo modo: shellinaboxd -p 4200 -s ‘/:root:root:/:minicom ‘ &

Una volta eseguita questa operazione… fine del gioco. E’ possible collegarsi con il browser alla server ed interagire con il dispositivo seriale.

terminal_server_01

Fichissimo, soprattutto se si pensa che il tutto gira su una raspberry pi 2 e la connessione con il router è effettuata con un adattatore USB-Seriale. Mettendo un Hub USB e altri adattatori è possibile creare una stazione multi terminale in poche, semplici mosse!

Raspberry PI e i2c

Per acquisire dei dati meteo, ho realizzato una piccola schedina figlia che si basa sue due sensori: SHT21 della Sensirion e MPL3115 della Freescale.

Nell’interfacciamento del primo sensore non ci sono state particolari difficoltà, anche per il fatto che il codice è piuttosto diffuso e ben funzionante, sia in pyhton che in c.

Qualche grattacapo in più è arrivato dal dispositivo Freescale. In effetti il sisitema riconosce il dispositivo ma non riesce ad accedere ai dati. Pertanto anche se il comando i2cdetect -y 1 consente di visualizzare correttamente il dispositivo, una successiva lettura dei dati fallisce. Leggendo il datasheet è possibile notare come lo scambio dati richieda una condizione di “repeated start” per l’accesso al bus I2C. Peccato che questo non sia supportato dalla corrente implementazione del Kernel su Raspberry Pi:

As part of guaranteeing reliability, mostly in a multi-master setup, SMBus requires the use of I2C’s repeated starts for read operations. The I2C master driver for Linux on the Raspberry Pi does not support this

Fantastico. Fortunatamente Jovian Jackowski ha sviluppato un hack per questo problema. informazioni possono essere reperite qui e qui. Il codice per il dispositivo mpl3115 lo si può trovare qui e restituisce questo output:
root@raspbeacon:~/weather/mpl3115# ./mpl3115_comma
WhoAmI:c4
Status Register: 0
---- PRESSURE FUNCTION ----
Press RT: M:62 C:39 L:30
Press Integer Complete: 188e4 100580
Complete: 1005.00
Final Value 1005.75
---- END PRESSURE ----
---- TEMPERATURE FUNCTION ----
Temp RT: M:15 L:70
Temp Decimal Integer Part: 21
Tcomplete 21.4375
---- END TEMPERATURE ----
---- ALTITUDE FUNCTION ----
Alt RT: M:0 C:3f L:80
alt  Integer Complete: 3f 63
Complete: 63.00
Final Value 63.50
---- END ALTITUDE ----
1005.75,63.50,21.44

A presto!