Archivi categoria: Elettronica

Maledetto ossido!

Situazione: sensore di temperatura collegato alla cubieboard attraverso un breve cavo e due connettori a passo 2.54mm. Tutto funziona regolarmente. All’improvviso ieri sera, noto che i dati del sensore meteo non si aggiornano più.

Faccio una scansione del bus I2C e, meraviglia delle meraviglie, non trovo nulla. Bizzarro, non ci sono stati sbalzi di tensione, fulmini, black-out. Sono giorni che non salgo di sopra a fare un giro.

Ipotizzo che sia un problema di ossidazione, dato dalla mostruosa combinazione di umidità e temperatura che regna sovrana in quel luogo. Per dare credito alla mia ipotesi non tocco nulla, mi reco al solito negozio di materiale elettronico (Electronic Fittings) e compero uno spray disossidante della DUE-CI: il R-11 contact cleaner.

Lo spruzzo direttamente nella femmina del connettore al quale è collegato il sensore e invio un timido comando “i2cdetect -y 1”. Meraviglia delle meraviglie, tutto torna a funzionare. Dalla prossima volta si salda tutto!

 

Preamplificatore a 1090MHz

Finalmente ho installato il preamplificatore che avevo acquistato su Aliexpress per i 1090MHz, da associare al mio sistema di ricezione ADS-B.

Il cambiamento di prestazioni è notevole: sono passato da una distanza massima ricevuta di 100 miglia nautiche ad oltre 180, con picchi superiori a 200.

Anche il numero di aeromobili “visti” dal sistema è notevolmente aumentato, passando da circa 700 a valori sopra il 1000. Considerando il cablaggio “creativo” sono davvero molto soddisfatto del miglioramento ottenuto!

Nella immagine che segue, la situazione del ricevitore “fotografata” il 14 giugno 2017.

L’angolo del ciambotto.

Se dovessimo giudicare la nostra civiltà da quello che si vede in rete, avremmo una visione un po’ distorta: pieno di fotografi ovunque, che si destreggiano impavidi negli spazi di colore più impensati. Sportivi ovunque che riprendono e pubblicano video in ogni dove. Soprattutto un tasso enorme di geni, visto che sui blog tutti i progetti funzionano, danno i risultati sperati, non si guastano mai.

Io invece faccio delle foto discutibili, posto anche i video di quando mi parte l’anteriore a motocross e voglio dedicare un post alla mia ultima cialtronata.

Devo monitorare lo stato di una finestra con la (infame) CubieBoard. Bene, prendo un sensore magnetico e lo collego al GPIO. Ottimo.

Fantastico vero? Un occhio meno “rincoglionito” del mio, noterà sicuramente che se il contatto sulla finestra è aperto, il piedino della GPIO è “floating”. E questo causa un comportamento molto bizzarro del sistema, del quale mi sono accorto in fase di test: apro la finestra, faccio girare il codice e vedo dei “rimbalzi” sullo stato di una variabile. Monitoro il GPIO e questo cambia allegramente stato per i fatti suoi. Controllo lo schema, mi percuoto e faccio ammenda.

Ho corretto lo schema. Adesso il GPIO è collegato ad un pull-up con un 10k e la finestra è collegata verso la massa: finestra chiusa piedino a livello logico basso, finestra aperta piedino a livello logico alto grazie al pull-up.

Ogni tanto l’angolo del ciambotto deve essere rispolverato!

Preamplificatore ADS-B

Ho acquistato un piccolo preamplificatore RF per la banda aerea dei 1090MHz. Lo ho comperato qui ed è arrivato con la solita flemma orientale (la chiave di ricerca è Aviation ADS-B special low noise amplifier).

preamplificatore ADS-B

Un bell’oggettino, interamente in metallo e corredato di connettori SMA di fattura dignitosa. Non ho resistito alla tentazione di fargli fare un giro con il Noise Figure Meter che ho in ufficio (Agilent N8972A e testina N4002A).

preamplificatore ADS-B misura

Sono molto soddisfatto, le caratteristiche esibite dall’oggetto sono davvero molto buone, come mostrano le figure qui sotto.

preamplificatore ADS-B GAIN  preamplificatore ADS-B NOISE

Non vedo l’ora di installarlo!!!

CubieBoard: Monitoraggio presenza tensione

Nella nuova dimora accade, ogni tanto, che la fornitura di energia elettrica risulti un po’ ballerina. Ci sono stati dei casi di black-out molto prolungato che hanno messo a dura prova i miei UPS, portando le battarie all’esaurimento e creando qualche attimo di panico con il NAS.

Per questo ho deciso di implementare un sistema di monitoraggio della tensione di rete, che fosse in grado di:

  • rilevare l’assenza della tensione di rete;
  • comunicare via mail l’evento;
  • inviare mail periodiche in caso di perdurare del balck-out;
  • spegnere in modo graceful NAS.

La cosa è stata più facile sulla carta che non da vero, come sempre. In effetti ho dovuto lottare con le I/O della Cubieboard (come ho descritto in questo articollo).

CubieBoard. GPIO e che fatica!

Il rilevatore di tensione lo ho realizzato implementando uno schema che ho trovato in rete. Si tratta di utilizzare un piccolo trasformatore di tensione 220V -> 5V e di connetterlo ad un GPIO della Cubieboard attraverso un regolatore di tensione a 3.3V. Il trasformatore sarà collegato ad una presa di energia elettrica non servita da UPS. Al momento del black-out, la tensione in uscita dal trasformatore passa a 0 e lo stato logico del piedino di I/O della Cubieboard è 0. Lo schema è semplice ed efficace, solo che occorre mettere in conto che il trasformatore, consuma (pochissimo ma….).

IMG_20160417_105230

A questo punto ho quindi un sistema hardware che è in grado di creare un evento su un PIN della Cubieboard in caso di Black-Out. Il software è stato scritto in “bash” (strano vero?) . Lo script viene eseguito ogni minuto dal crontab e verifica lo stato del piedino di monitor. In caso sia a livello logico alto non succede nulla, in caso sia a livello 0 inizia una complessa routine per la gestione degli alert e degli eventi. Il funzionamento dello script si basa su alcuni files che vengono creati in /tmp/ e che contengono flag o timestamp per tenere traccia di quello che sta succedendo. Forse non è il modo migliore di programmare, ma questo è ciò che riesco a fare.

Una volta approntato il software è necessario configurare alcuni aspetti del sistema operativo, per fare in modo che le mail vengano inviate utilizzando Gmail. Per questo mi sono avvalso di una guida reperibile a QUESTO indirizzo.

Visto che avevo le mani  sulla tastiera, mi sono anche divertito a configurare l’applicazione Telegram sulla piattaforma Cubieboard. In effetti lo step due dello sviluppo del sistema sarà quello di abilitare anche il controllo bidirezionale del sistema via Telegram (per adesso è solo una idea, il tempo per lo sviluppo del codice e delle idee è sempre pochissimo).

Per quanto riguarda la programmazione in bash, il web è pieno di tutorial base o avanzati, basta sapere cercare un po’ su Google.

Per lo spegnimento del QNAP l’unica strada percorribile è quella di effettuare login sul sistema utilizzando SSH e dare il comando “halt”. Il comando poweroff non è altrettanto efficace e rischia di lasciare alcune parti del sistema attive. Per effettuare il login con il protocollo ssh sul NAS occorre utilizzare i certificati, in modo che non siano richieste le credenziali di autenticazione. Una guida alla configurazione si trova QUI.

Il codice è scaricabile dalla sezione DOWNLOAD del sito, nella sezione “Software”.

 

CubieBoard. GPIO e che fatica!

Per realizzare un progettino di cui parlerò tra qualche tempo, mi sono imbattuto nella necessità di lavorare con il GPIO della Cubieboard2. Alcune considerazioni:

  • la documentazione è pessima, questo riguarda tutto il progetto. Quindi, nessuna nuova!
  • Le GPIO sono a passo 2mm davvero scomode.

La mia CB monta un sistema operativo Debian 8.3 MainLine, come descritto QUI. Pertanto

The Allwinner-specific script.bin isn’t needed anymore.

L’accesso alla GPIO si effettua direttametne da SYSFS, solo che occorre “pescare” il PIN giusto. Per fare questo innanzitutto si individua il PIN FISICO sul quale vogliamo operare: io ho scelto il pin 17 del connettore U15 (ponendo la scheda con la alimentazione in basso, è il connettore sulla destra). Il PIN17 si chiama CSI1-D6. Guardando su questo schematico (è per la CB con A10 ma non cambia molto a quanto pare), si scopre che questo PIN fa capo al segnale PG10 del System On Chip. Pertanto si può applicare la formuletta trovata qui, per capire come referenziare correttamente il PIN: G-> 7a lettera dell’alfabeto

(numero_lettera_alfabeto – 1) * 32+(numero_pin) —> (7-1)*32+10=202

Per abilitare il PIN occorre digitare:

/bin/echo 202 > /sys/class/gpio/export
/bin/echo in > /sys/class/gpio/gpio202/direction

In qeusto modo, con il comando cat si può ricavare il valore del PIN:

root@cubieboard:~# cat /sys/class/gpio/gpio202/value
1
root@cubieboard:~#

Semplice vero? No. Ho impiegato DUE ore a capire questa cosa.

Maledetti!

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!

Aggiornamento DFS

Visto l’interesse mostrato da alcuni OM (che ringrazio), mi sembra doveroso fare un aggiornamento sullo stato del progetto.

Ho ripreso lo sviluppo del sfotware. In particolare mi sto dedicando al debug del codice sulla scheda definitiva. Ci sono un po’ di registri che non ne vogliono sapere di collaborare, qualche problemino hardware e tanti test da condurre. Oggi sono riuscito a finire il test del primo sintetizzatore. Esito positivo, pertanto procedo con il secondo. La strada è ancora lunga ma dovrei andare abbastanza spedito.

Giusto per condividere le operazioni che sto compiendo: ogni sintetizzatore viene collegato alla PicBoard e ne vengono verificate tutte le frequenze. Se c’è qualche cosa che non va intervengo sul software o sull’hardware ed apporto in parallelo le correzioni sui manuali.

Abbiate fiducia&pazienza che il materiale tra poco arriva!

Tornato all’opera

Un mese e mezzo. E’ volato! Tante sono state le cose che ho fatto, visto e detto in questi 45 giorni. Sono stato impegnato in un progetto grande, anzi grandissimo.

Adesso mi rimetto all’opera con qualche idea in meno, persa tra scatoloni e stanchezza e la voglia di completare il progetto PicBoard quanto prima.

IMG_20151124_121818

A presto con nuovi aggiornamenti!

Eagle, creare una board da una jpg!

Qualche tempo addietro un amico mi ha riportato la esigenza di riprodurre dei vecchi stampati utilizzati per un progetto datato. Di questi è presento solo qualche fotocopia dei layout originali, nassuno schematico. Mi sono attivato per vedere se si riuscisse a creare qualche cosa con Eagle, partendo da una scansione del foglio con il layout.

Il primo step è quello di scansire l’immagine, sperando che sia stata stampata in scala 1:1. Nell’eseguire la scansione annotare da una parte il valore del DPI utilizzato e eseguire lo scan in bianco e nero, a due colori. L’immagine deve essere salvata come BMP e ritagliata in modo da includere solo la parte di interesse.

Fatto questo è possibile importare l’immagine in una board Eagle, utilizzando File->Import->Bitmap.

eagle_blog_01

Prima dell’importazione Eagle chiede quali siano, tra i tanti rilevati, i colori da prendere in considerazione. Selezionare il bianco ed il nero.

eagle_blog_02

Fatto questo si apre una finestra nella quale dobbiamo mettere il fattore di scala. Se l’immagine scansita era stata stampata 1:1 e sappiamo la risoluzione di scansione è meglio affidarsi al DPI.

eagle_blog_03

Se ci sono dubbi sulla effettiva scala usata nella stampa dell’originale occorre procedere per… tentativi. In un caso ho proceduto in questo modo:

  • identificare un componente dello stampato con un footprint noto (TO92, DIP16);
  • importare la scansione impostando il DPI pari a quello della acquisizione;
  • confrontare il footprint noto con quello della libreria;
  • se non coincidono alla perfezione, cambiare DPI e reimportare l’immagine.
  • procedere fino a che il match non è perfetto.

Una volta che abbiamo l’immagine è necessario creare i fori di montaggio e le piste. Come primo passo si posizionano i fori.

eagle_blog_04

Quindi si collegano tra loro con il “signal” e poi si effettua un manual-routing dei segnali.

eagle_blog_05

Le zone più ampie possono essere coperte da poligoni, avendo l’accortezza di deselezionare il thermal e impostare isolate al minimo (non a zero).

eagle_blog_06

Dopo qualche ora di lavoro (svariate), il risultato è dignitoso.

eagle_blog_07

Buon lavoro. Sono sicuro che quando farete un progetto, la prima cosa che salverete sarà lo schematico!