domenica 14 giugno 2020

Trasferimento file via Lora

Per trasferire via LoRa e' come trasferire dati tramite un normale collegamento seriale
Si puo' quindi usare minicom impostando Hardware e Software Flow Control ad Off

Su un endpoint si digita CTRL A Z S selezionando XModem (non sono riuscito ad usare ZModem)
Sull'altro endpoint si digita CTRL A Z R selezionando XModem


La velocita' di traferimento e' molto bassa.....nel mio caso 98 BPS su un file di 300 KB (di default la scheda e' impostata a 2.4 kbps).. modificando la velocita' a 19.2 kbps sono passato a 633 bps

Includendo errori e ritrasmissioni alla massima velocita' si riescono a trasferire 100 kb in circa 2.5 minuti e 1 Mb in circa 25 minuti

sabato 13 giugno 2020

Algoritmi di compressione file testo

Devo trasferire su una connessione seriale molto lenta un file testo e per cercare di minimizzare il tempo di trasferimento, visto che non posso modificare la velocita', devo provare a comprimere al massimo

Dimensioni originali : 4012005 bytes 

Di seguito i risultati (in ordine di percentuale di compressione, ovviamente non sono previsti algoritmi lossy) dal peggiore al migliore

ZIP (26%) 1052588 bytes
BZIP (19%) 777324 bytes 
KGB standard compression (17%)  704919 bytes
LRZIP (16.5%) 664153 bytes
BROTLI max compression (15%) 607908  bytes
XZ (14%) 590916 bytes
LZMA (14%) 586371 bytes
KGB (14%) best compression 573005 bytes

Per KGB massima compressione le richieste di memoria sono particolarmente onerose

mercoledì 10 giugno 2020

Porta seriale dirottata su Internet con ser2net

Se si ha un dispositivo con una uscita seriale (per esempio un GPS) ma che non ha la possibilita' di connettersi ad Internet un modo semplice di creare un gateway seriale e' quello di utilizzare un Raspberry, per esempio un 3 A+, ed il software ser2net



Una volta installato tramite apt si edita il file /etc/ser2net.conf inserendo per esempio una riga del tipo

6000:raw:600:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT banner

che espone sulla porta TCP 6000 del dispositivo i dati raw della porta seriale /dev/ttyACM0 a velocita' 115200 8N1


riavviato il servizio tramite /etc/init.d/ser2net reload ci si puo' spostare su un altro computer e chiamare, per esempio tramite netcat, la porta 6000 per vedere arrivare lo stream dei dati seriali

nc xxx.xxx.xxx.xxx 6000



Solar Edison

Premessa: il progetto Solar Edison e' stato sostituito dal progetto Solar Raspberry

Uno dei miei progetti di piu' lungo corso che non ho mai realizzato e' quello di realizzare un computer completamente svincolato dall'alimentazione di rete. Deve essere trasportabile (quindi con dimesioni e peso contenuto), possibilmente con uptime superiore al 95% e con una capacita' di calcolo discreta

E' arrivato il momento di provare a costruirselo

Per il computer ho tirato fuori una Intel Edison che giaceva nel cassetto 
Il sistema di alimentazione e' composto da un pannello solare da 10 W con una batteria da moto da 7.2 Ah 12V ed un regolatore di tensione la cui uscita a 12 V e' collegata al barrel jack della Edison dove si possono applicare tensioni da 9 a 19 V



Visto che il consumo della Edison e' abbondantemente sotto i 100 mA pensavo di avere vita facile a mantenere il sistema in vita .. sbagliavo. Per motivi non meglio chiariti il sistema scarica la batteria nel giro di poche ore tanto da non passare nemmeno la notte. 


Ho provato a collegare il cavo USB di alimentazione della Edison all'uscita USB del regolatore di tensione, in questo modo i consumi sono scesi drasticamente forse perche' l'energia della batteria era dissipata dal regolatore di tensione della Edison che deve portare 12 V ai 5,3.3 e 1.8 rispettivamente della Arduino Board e del processore Atom.

Sembrava vinta ma in questa configurazione ho perso la porta USB della Edison su cui dovevo montare un GPS

Per fare una prova ho preso un pannello solare da 50W con una batteria da auto da 42Ah ma con questa soluzione si perde la trasportabilita'. Il progetto e' quindi stato chiuso in favore di una Solar Raspberry



Autografo Gino Bartali

Ho avuto la fortuna di intervistare Gino Bartali negli anni 80 per un giornalino di ragazzi, lo ho sentito raccontare le sue storie dal vivo insieme a Martini...del resto abitavo a 500 metri da casa sua. Ero anche invidioso del barbiere che aveva un poster con la foto dello scambio di borraccia con Coppi sul Galibier autografato...ma non ho mai avuto occasione di chiederglielo. A distanza di tanti anni ho una cartolina con un autografo originale datata 1953






AX25 over LoRa

Quando ho iniziato ad usare Linux negli anni 90 sui Cd c'era quasi sempre una directory denominata Ham Radio con programmi di cui non conoscevo l'utilizzo. Dopo cosi' tanto tempo sono riuscito ad utilizzare AX25  e KISS , specifici per radio, per instradare pacchetti dati con TCP/IP utilizzando dei moduli Lora gia' visti un questo precedente post 



Nel dettaglio ho messo in comunicazione via una Raspberry 3 A+ Raspbian ed un portatile Lenovo T430 Debian  

I moduli LoRa sono visti come semplici seriali virtuali via USB. Non ho modificato i parametri LoRa lasciando quelli di default...cio' vuol dire che le radio non sono impostate alla massima velocita' di trasmissione

Per prima cosa si installano i pacchetti

#apt-get install libax25 ax25-apps ax25-tools ax25-node


si configura quindi il file /etc/ax25/axports

ABCDEF e' il callsign dei radioamatori, in pratica un UID. Sui due dispositivi deve essere differente..inventando una serie di 6 caratteri unici
====================================
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#

#1      OH2BNS-1        1200    255     2       144.675 MHz (1200  bps)
#2      OH2BNS-9        38400   255     7       TNOS/Linux  (38400 bps)
ax0 ABCDEF 9600 254 1 LoRa
====================================

per inizializzare le antenne si usano i comandi

/usr/sbin/kissattach -m 254 /dev/ttyUSB3 ax0 10.0.0.1
/usr/sbin/ax25d
/usr/sbin/mheardd

dove /dev/ttyUSBx e' la porta dove viene vista la radio. L'IP dovra' essere modificato sui vari dispositivi

a questo punto si puo' iniziare a pingare il dispositivo remoto

Come si vede i tempi di ping sono molto lenti ..tanto da dover usare lo switch -i del comando ping per avere il tempo di ricevere la risposta


Ho provato ad avere una amministrazione remota tramite SSH ma non sono riuscito a farla partire mentre con telnet, fatto salva la lentezza, le cose funziona. (Aggiornamento: impostando la velocita' a 19200 SSH funziona ed e' vagamente usabile)

Sono riuscito a creare uno stream dati tramite netcat via TCP che UDP ed a visualizzare il server web dei due dispositivi

Si puo' usare anche FTP ma il collegamento e' molto piu' lento ed inaffidabile rispetto ad usare un trasferimento seriale via YModem

martedì 9 giugno 2020

Raspbian Headless



Per configurare una Raspbian per modalita' senza schermo e tastiera (headless) la prima cosa e' creare il file wpa_supplicant.conf nella partizione di boot della SdCard 

----------------------------------------
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=IT

network={
 ssid="nome_hotspot_wifi"
 psk="password_hotspot_wifi"
}
----------------------------------------

Non sono riuscito a configurare un Ip Statico in modalita' headless. Ho dovuto modificare il file /etc/dhcpcd.conf al primo boot dove ho ripreso l'ip dinamico dalle tabelle del router

# Example static IP configuration:
interface wlan0
static ip_address=192.168.1.240/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.254
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1


per abilitare il server SSH e' sufficiente creare un file vuoto denominato ssh nella partizione di boot

lo username di default e' pi e la password raspberry 

non e' possibile disabilitare, nel caso si vogliano ridurre i consumi, l'output video  dal file config.txt. La cosa piu' semplice e' loggarsi in SSH e lanciare
/usr/bin/tvservice -o
ed inserire il comando in rc.local

altre configurazioni possono a questo punto essere effettuate con il comando raspi-config (per esempio per espandere il filesystem alla dimensione della SdCard)

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...