mercoledì 18 dicembre 2024

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 Espressif originale si trova in 303a:1001 mentre nel modulo cinese si trova in 303a:4001

Si deve quindi modificare la configurazione di OpenOCD nel file

/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240821/openocd-esp32/share/openocd/scripts/interface/esp_usb_jtag.cfg 

espusbjtag vid_pid 0x303a 0x4001
espusbjtag caps_descriptor 0x2000


modificando Pid da 1001 a 4001 ed aggiungendo la regola in udev 

ATTRS{idVendor}=="303a", ATTRS{idProduct}=="4001", MODE="664", GROUP="plugdev", TAG+="uaccess

--------------------------------------------------------------------------------------------------------

La Esp32S3 espone sui pin 19 e 20 una porta USB che puo' essere usata per fare debug....ma attenzione...questo e' valido per il DevKit ufficiale di Espressif ma non funziona con i moduli cinesi (ci sono impazzito dietro a questa cosa)

 

Si deve creare un cavo usb tagliandone uno, giuntando dei cavi Dupount femmina e connettendo

D+ (verde) a GPIO19

D- (bianco) a GPIO20

GND (nero) a GND (forse non necessario)




a questo punto connettendo la scheda con lsusb si legge Espressif USB Jtag Serial (che si e' andato su /dev/ttyACM0) come debugger e CP210x UART Bridge come /dev/ttyUSB0 per la normale connessione con Esp32

a questo punto si ha il seguente errore nell'avviare il server OpenOCD

libusb_open() failed with LIBUSB_ERROR_ACCESS

prima di tutto si deve inserire l'utente nel gruppo plugdev

sudo usermod -a -G plugdev luca

poi si crea un file 99-jtag.rules con contenuto 

ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="664", GROUP="plugdev", TAG+="uaccess"

e lo si copia in /etc/udev/rules.d. (i valori sono ripresi da comando lsusb). Si aggiorna plugdev

sudo udevadm control --reload-rules & sudo udevadm trigger

si avvia il server OpenOcd

openocd -f board/esp32s3-builtin.cfg

e poi da dentro Visual Code plugin ESP-IDF si clicca su Flash (se il progetto e' configurato bene inizia anche il debug) Select Flash Mode JTAG port /dev/ttyUSB0

ed ecco alla fine avviata la sessione di debug usando l'esempio Fibonacci




JRP7008

Schermo a risoluzione 1024x600 con connessione HDMI.

Lo ho comprato a 35 euro


per utilizzarlo con Raspberry si modifica il file confix.txt nella SdCard

max_usb_current=1
hdmi_force_hotplug=1
config_hdmi_boost=10
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0

 

Lo schermo si puo' usarea come display secondario su Debian senza nessuna ulteriore configurazione


 

 

Arducam IMX519 16 Mpx

Ho provato la Arducam 16 Mpx basata sul sensore Sony IMX519

 


 Per prima cosa c'e' da evindenziare che il supporto non e' nativo su Raspberry a differenza delle PiCam. Le istruzioni per montare il driver si trovano a questo link 

 https://docs.arducam.com/Raspberry-Pi-Camera/Native-camera/16MP-IMX519/


La camera si utilizza con libcamera e permette di salvare in DNG  e raw

domenica 15 dicembre 2024

Topotag

Aggiornamento

da esplicita richiesta su GitHub gli sviluppatori mi hanno indicato che la licenza d'uso e' solo per ricerca ed e' esplicitamente vietato l'uso commerciale

-------------------------------------------------------------------------------------------

Nella grande famiglia dei fiducial markers ho trovato i Topotag che promettono di surclassare Apriltag e Arucotag

Il codice della libreria si trova su Github https://github.com/herohuyongtao/topotag  ma si deve evidenziare che viene distribuita solo in formato binario per Windows .dll (niente Linux) senza specificare il tipo di licenza

I due file binari (generator e detector) funzionano a linea di comando passando i parametri tramite il file yaml

 


 


 

 


 


 

 

 

giovedì 12 dicembre 2024

Deep Tag

Ho provato un riconoscimento neurale di tag (di varia natura ma nel mio caso Aruco ed Apriltag) mediante il codice presente  https://github.com/herohuyongtao/deeptag-pytorch

L'articolo di riferimento si trova qui

La configurazione e' fatta tramite un file json (nel mio caso ho provato sia il video via webcam sia una foto  con l'esempio sottostante)

Un aspetto da non trascurare e' che il software richiede oltre al punto principale cx,cy alla lunghezza focale fx,fy ed i coefficienti di distorsione radiale k1-k6 anche i coefficienti di distorsione tangenziale p1 2 p2 che con gli esempi di opencv non vengono calcolati (ho impostato a zero in quanto non li avevo disponibili)

Anche senza l'uso di GPU il calcolo e' abbastanza spedito (non proprio realtime ma si avvicina)



{
"is_video":0,
"filepath":"q/novembre.jpg",
"family": "aruco",
"hamming_dist": 8,
"codebook": "",
"cameraMatrix": [2694.308, 0, 1793.8734, 0, 2704.6156, 1058.7691, 0, 0, 1],
"distCoeffs": [-0.41168919, 0.26635946, -0.0017025, 0.00744752, -0.16179997, 0, 0, 0],
"marker_size": 0.25
}
 

martedì 10 dicembre 2024

CH57x

Volevo costruirmi un controller fisico per VLC con almeno un comando rotativo (volevo utilizzare M5Dial) da usare mentre cerco di suonare per rallentare o ripetere la traccia quando ho visto su Aliexpress era gia' pronto e montato ad un prezzo ragionevole (meno di 15 euro)...cablato e non Bluetooth ma va bene lo stesso 



 

Il problema e' che quando e' arrivato era completamente senza istruzioni e non si riusciva a capirne il funzionamento

Frugando ho trovato il progetto  

https://github.com/YetiOSS/the-ch57x-keyboard-tool/ 

che permette di configurare tramite un file yaml il comportamento 

======================================

orientation: normal
rows: 1
columns: 3
knobs: 1

layers:
  - buttons:
      - ["3", "5", "6"]
    knobs:
      - ccw: 'wheeldown'
        press: "space"
        cw: "wheelup"

====================================== 

./ch57x-keyboard-tool upload < config.yaml

una volta programmato la configurazione e' permanente e non e' necessario ripetere l'operazione

Premendo il knob ho il play/stop, girando il knob va avanti ed indietro, su 5, 6 controllo la velocita' di riproduzione 

Non sono riuscito a configurare le combinazioni di tasti anche se dal manuale sembra possibile

 

 

giovedì 5 dicembre 2024

Pi Cam HQ e telescopio

Ho provato ad accoppiare la Pi Cam HQ module 12 MPx (vecchiotta ma e' sempre un sensore Sony) con un spotting scope della Celestron MK70 MiniMak (fortunatamente comprato di seconda mano). E' stato impiegato un adattatore da CS (lato PiCam) ad oculare 1.25 inch (standard telescopi) stampato 3D la filettatura non era perfetta ma il fatto di essere fatto di plastica permette un buon accoppiamento forzando un po' 





ho usato una flat lunga 







La zona inquadrata era l'insegna del negozio di elettronica ...la zona e' indicata dalla freccia blu


questo e' il risultato tramite il telescopio


direi un ottimo risultato 




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...