20 anni fa ero Flip....150.217.73.242
giovedì 30 novembre 2023
domenica 26 novembre 2023
venerdì 24 novembre 2023
DS0152 e geofono
Volevo provare l'oscilloscopio DS0152 e visto che ho in prestito un geofono ho guardato il segnale in uscita. Francamente pensavo che il sensore facesse uscire poche decine di millivolt ma come si vede dalla foto si passa da qualche decina di Volts fino a qualche Volt (ho letto anche fino a 9V ma con sollecitazioni meccaniche che non sono ragionevoli per un geofono)
Anche la lettura del periodo del geofono (15 Hz) risulta coerente con le caratteristiche di fabbrica
martedì 21 novembre 2023
MilkV camera
per mandare in auto esecuzione lo script di streaming si edita il file /mnt/system/auto.sh aggiungendo
/mnt/data/install/CviIspTool.sh 64M
Non riesco a vedere lo stream con VLC su Linux ma usando mpv non ci sono problemi
mpv --no-cache --untimed --no-demuxer-thread --video-sync=audio --vd-lavc-threads=1 rtsp://192.168.42.1:8554/stream0
venerdì 10 novembre 2023
mercoledì 8 novembre 2023
R 3.6 docker personalizzato
Un esempio di Dockerfile complesso per R 3.6
ROracle in R 4
Per usare ROracle in R v.4 si deve compilare il codice scaricando il pacchetto ROracle_1.3-1.1.tgz e istantclient base ed sdk da Oracle https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
export PATH="$PATH:/opt/oracle/instantclient_21_12"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/oracle/instantclient_21_12"
R CMD INSTALL --configure-args='--with-oci-lib=/opt/oracle/instantclient_21_12/ --with-oci-inc=/opt/oracle/instantclient_21_12/sdk/include' ROracle_1.3-1.1.tar.gz
sudo sh -c "echo /opt/oracle/instantclient_21_12 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
Per effettuare la connesione da R
port <- 1521
svc <- "dbaaaa.aaaaaa.it"
connect.string <- paste(
"(DESCRIPTION=",
"(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
"(CONNECT_DATA=(SERVICE_NAME=", svc, ")))", sep = "")
Gnome Tracker
All'avvio del portatile mi sono accorto che il comando top riportava un processo chiamato tracker che occupava praticamente gran parte dei cicli di CPU
Non lo sapevo ma cercando ho scoperto che questo e' un servizio di indicizzazione file di Gnome
Per disabilitarlo non e' banalissimo
systemctl --user mask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.serviceForaminiferi e Yolo 8
Qualche anno fa avevo provato ad addestrare una rete neurale per il riconoscimento di foraminiferi con risultati diciamo mediocri
Ho visto che i migliori risultati non si ottengono partendo da una rete ex-novo ma riaddestrando reti gia' elaborate. In questo caso ho provato ad addestrare Yolo 8 con il dataset dei foraminiferi
La prima prova la ho fatto, anche con ottimi risultati, utilizzando il cloud di Roboflow ma volevo una soluzione da fare girare on the edge
Per prima cosa ho creato un virtualenv in Python
I dati sono inclusi in un folder in cui ci sono le sottodir test,train e valid in cui sono in ciascuna ci sono inclusi i folder images e labels
Per creare le labels ho utilizzato labelImg. Avendo problemi con l'installazione ho utilizzato il docker a questo link
Si deve selezionare il folder dove sono contenute le immagini, il folder dove saranno salvati i file txt in cui sono salvate le annotations, il tipo di annotation (di default viene indicato PascalVOC ma deve andare a Yolo) ed in View conviene indicare autosave
Nel folder alla radice deve essere create un file data.yaml in cui sono indicati i percorsi dei folder delle immagini, il numero di classi (4) ed i nomi delle classi
val: ../valid/images
test: ../test/images
nc: 4
names: ['Candeina_Nitida', 'Globigerina_Bulloides', 'Globigerina_Falconensis', 'Globigerina_digitata']
yolo task=detect mode=train model=yolov8n.pt imgsz=640 data=data.yaml epochs=10 batch=8 name=yolov8n_foraminiferi
Nel folder run/detect/yolo8n_foraminiferi si trovano i grafici dei parametri del modello
Una volta finito l'addestramento si puo' usare la rete per riconoscere oggetti
yolo task=detect mode=predict model=runs/detect/yolov8n_foraminiferi/weights/best.pt source=test/immagine.jpg show=True imgsz=640 name=yolov8n_c1 hide_labels=True
Docker pull via http_proxy
la configurazione del proxy per effettuare un pull di un container docker si trova in
/etc/systemd/system/docker.service.d/http-proxy.conf
ed ha una sintassi del tipo
Environment="HTTP_PROXY=http://proxy.aaaaaaaaaa.it:8080"
Environment="HTTPS_PROXY=http://proxy.aaaaaaaaaa.it:8080"
per rendere effettive le modifiche
systemctl stop docker
systemctl stop docker.socket
systemctl daemon-reload
martedì 7 novembre 2023
lunedì 6 novembre 2023
Programmazione Milk-V Duo
Per programmare la Milk-V Duo tramite cross compiling su desktop si puo' usare l'SDK
https://github.com/milkv-duo/duo-examples
una volta decompilato il pacchetto si lancia envsetup.sh che automaticamente scarica il compilatore
Altrimenti si puo' cross compilare tramite Go
Come compilatori sulla scheda si possono usare python (e' presente 3.9.5) oppure tinyGcc
Per interagire con l'hardware si puo' usare
1) in Python la libreria pinpong Ci sono una tonnellata di esempi
2) in C la libreria WiringX https://wiringx.org/
3) in Go con la libreria gpiod https://github.com/pavelanni/milkv-duo-experiments
Per creare l'avvio automatico al boot di uno script si deve creare il file auto.sh in /mnt/data/ e si inseriscono i comandi che si vuole mandare in autoesecuzione
mkdir /mnt/data
domenica 5 novembre 2023
Rottura argine Fosso Reale Sentinel 2
Immagine RGB Sentinel 2 del 4 novembre 2023 che mostra l'esondazione delle acque del Fosso Reale a seguito rottura d'argine nell'area di Case Passerini
venerdì 3 novembre 2023
Golang Milk-V Duo RiscV64
Sto provando la scheda Milk-D Duo con processore RiscV64
La scheda un processore dual core. Sul core primario puo' girare un sistema operativo Linux multi task mentre sul secondo FreeRtos. I due sistema comunicano tramite una porta seriale un po' come funzionava la scheda Intel Galileo
Come immagine disco sto usando quella della ditta ma si pu' montare anche Arch (Debian non ha ancora il supporto di rete e si deve accedere tramite connessione seriale)
Su Linux e' piuttosto facile interagire con la scheda perche' se si collega la porta USB C viene montata in automatico un porta di rete tramite RNDIS all'indirizzo 192.168.42.1 (la scheda rilascia in DHCP un indirizzo della classe 192.168.42.x)
enxf611f7e3617d: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.42.18 netmask 255.255.255.0 broadcast 192.168.42.255
inet6 fe80::f411:f7ff:fee3:617d prefixlen 64 scopeid 0x20<link>
ether f6:11:f7:e3:61:7d txqueuelen 1000 (Ethernet)
RX packets 242 bytes 29688 (28.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 311 bytes 43373 (42.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisi
ssh root@192.168.42.1
La scheda ha 64 Mb di memoria ma con il disco immagine la RAM e' di soli 32 Mb perche' gli altri sono destinati alla connessione della video camera
CPU: 0% usr 1% sys 0% nic 98% idle 0% io 0% irq 0% sirq
Load average: 1.90 0.55 0.19 1/64 385
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
374 368 root R 1200 4% 0% top
155 1 root S 4740 16% 0% /usr/sbin/ntpd -g -p /var/run/ntpd.pid
193 1 root S 1200 4% 0% {S99user} /bin/sh /etc/init.d/S99user start
361 163 root S 1008 3% 0% /usr/sbin/dropbear -R
10 2 root IW 0 0% 0% [rcu_preempt]
204 1 root S 1204 4% 0% -sh
mkswap /dev/mmcblk0p3
swapon /dev/mmcblk0p3
p
d
3
n
p
3
+1G
w
EOF
fdisk -l /dev/mmcblk0
echo "----- resize /dev/mmcblk0p3 for swap completed -----"
scp -O ./main root@192.168.42.1:/root/
sysctl net.ipv4.ip_forward=1
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...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...