Serie di Connettori JST

Tabella comparativa con sigle delle serie JST

Sigla (serie)PassoCorrente tipicaBloccaggio/meccanicaUso tipico
PH2,0 mm~2 ASenza latch, wire-to-board, basso profiloPCB compatti, sensori, strip LED leggere
XH2,5 mm~3 ASenza latch, wire-to-board, robustoPCB consumer, pacchi batteria, stampanti 3D
VH3,96 mm~10 ASenza latch, wire-to-board, pin più massicciAlimentazioni, motori, carichi pesanti
SH1,0 mm~1 ASenza latch, ultra low‑profileWearable, moduli wireless, PCB densissimi
SM2,5 mm~3 ACon latch, wire‑to‑wire (plug/socket)LED addressable, cablaggi esterni, RC

Nota: “JST‑SM” è un nome usato comunemente ma non è una serie ufficiale del catalogo JST; è un connettore wire‑to‑wire con clip di blocco, spesso fornito da terze parti e non compatibile con gli housing PH/XH/VH/SH.


Dettagli pratici e consigli sintetici

  • Compatibilità passo: PH 2,0 mm vs XH/SM 2,5 mm; non sono intercambiabili sul PCB.
  • Orientamento: le serie PH/XH/VH/SH sono wire‑to‑board; SM è wire‑to‑wire con latch, ideale per connessioni esterne rimovibili.
  • AWG tipico: PH/XH ~AWG 28–24; VH ~AWG 22–18; SH ~AWG 32–28; SM ~AWG 26–22.
  • Pin range comune: PH/XH 2–16; VH 2–10; SH 2–12; SM 2–5 (più diffusi 2–3 pin).
  • Crimpatura: usa pinze dedicate; contatti PH/XH/SH/VH hanno terminali specifici non compatibili tra serie.

Come resettare un modulo con ESP32

Alcune volte può capitare che i moduli ESP32 non si riescano più a programmare.
Questo può accadere a seguito dell’installazione di applicazioni che vanno a toccare il bootloader oppure a seguito di installazioni che trasformino ESP32 in tastiere bluetooth.

In questi casi è necessario procedere al reset del bootloader.

Per farlo è necessario scaricare il bootloader. Lo si può scaricare da https://github.com/itsbhupendrasingh/ESP32-Factory-Reset-S2-and-bootloader/raw/Master/Factory_Reset_And_Bootloader_Repair.bin&v=3oEvXhgHZHo

L’operazione di reset si esegue online con un’applicazione javascript di esptool:

https://espressif.github.io/esptool-js

Da qui si può fare Connect. Il sistema chiederà a quale porta ci si intende connettere. Scegliere quella dove è connesso ESP32.

Se il sistema risponde con “Unable to connect…”. E’ necessario tenere premuto “Boot” per qualche secondo nel mentre che si cliccca su connect.

Il sistema avviserà dell’avvenuta connessione.

A quel punto si può caricare il file bin scaricato in precedenza e poi cliccare su “Program”.

Il bootloader dovrebbe essere a posto.

Applicare una displace map in Blender

Quando si realizza un disegno 3d con Blender non sempre è facile disegnare il rilevo sulle superfici esterne.
Per farlo più semplicemente si può usare il modificatore “Displace“.

Immaginiamo di voler applicare una texture in rilievo di una corteccia d’albero sulla superficie laterale di un cilindro.

La prima cosa da fare è aggiungere il modificatore “Displace”, ricordandosi di sceglier nel menu a tendina delle coordinate il valore “UV”.

Poi si deve andare nell’area delle texture dove il sistema avrà già creato un nuova texture.

Qui si può caricare da disco l’immagine della texture della corteccia.

Una volta fatto questo si può andare in edit mode e aumentare la risoluzione verticale delle facce laterali del cilindro, premendo CTRL+R e selezionando come suddivisioni almeno 30.

Ora si possono selezionare i vertici della superficie laterale e crearne un gruppo, usando le funzionalità cui si accede con il triangolino verde, assegnando a questo gruppo un nome.

Questo gruppo può essere selezionato come “Vertex group” del modificatore “Displace”.
Per renderlo più efficace nel modificatore “Displace” è meglio inserire 0.1 al massimo nel campo “Strength” e lavorare con Middleval.

Per migliorare l’effetto si può aggiungere il modificatore “Subdivision surface” prima del “Displace” e inserire 4 nel “Levels vieport” e 3 nel Render.

Nel video seguente si vede una procedura funzionante del tutto:

Convertire file gerber in gcode

Da qualche tempo sto realizzando un progetto per disegnare il circuito stampato direttamente su basetta ramata.

A differenza di quello che si fa normalmente con una cnc questo consente di realizzare il pcb con il metodo classico, saltando però il complicato passaggio del bromografo e delle problematiche legate all’impressione con gli UV e l’incisione del photoresist.

In pratica si disegna direttamente sul rame e poi si passa all’incisione con il cloruro ferrico.

Per farlo si può utilizzare questo comodissimo tool che si trova su github che crea un file gcode a partire dal disegno gerber delle tracce dello stampato.

L’applicazione si trova al seguente link github:

GerberToGcode

Esiste anche una mia versione perfezionata al seguente indirizzo github:

GerberToGcode di Paride Zavoli

Visualizzazione percorsi gcode online

Esiste un ottimo sito online che consente la visualizzazione dei percorsi contenuti all’interno di un file gcode.
Il link è il seguente:

p.gcode – NCViewer

E’ sufficiente copiare e incollare un testo gcode oppure trasferire un file gcode e l’interfaccia farà immediatamente vedere il percorso della fresa (o della penna nel mio caso).

Tutto realizzato in Javascript sul browser.

Comodissimo e consigliatissimo.

Accedere come Admininistrator in windows 11 Home

Se si possiede Windows in versione Home alcune funzionalità sono limitate.
In particolare, si potrebbe trovare qualche difficoltà a rimuovere, per esempio l’antivirus installato di default con l’acquisto della macchina.

Nel mio caso specifico, avendo acquistato un ASUS Zenbook 14 con processore Intel Ultra 7 255H, ho trovato preinstallato la suite di antivirus McAfee.

Durante l’update di tutti gli aggiornamenti del sistema iniziali e di tutti i drivers della macchina, il sistema operativo è andato in tilt: non rispondeva più ai click del mouse, e tutto era estremamente lento.

Analizzando il registro attività sembrava che il problema fosse dovuto all’invasività dell’antivirus, pertanto ho tentato, inutilmente, la sua disinstallazione.

Disinstallazione non riuscita in quanto il bottone “Disinstalla” presente nella maschera “Installazione Applicazioni” non funzionava.

In questi casi è necessario operare come amministratore ma questa modalità è disabilitata di default nell’ambiente Home di Windows.

La si può attivare lanciando il prompt dei comandi (selezionando “Esegui come amministratore”) ed inserendo il seguente comando:

net user administrator /active:yes

A quel punto è sufficiente disconnettere l’utente corrente e magicamente comparirà il bottone per accedere con il ruolo da “Amministratore” nella maschera di logon di Windows. L’accesso iniziale sarà un po’ più lungo del normale.

Questa modalità non prevede l’inserimento di alcuna password e consente una rapida disinstallazione delle applicazioni più tenaci, come McAfee.

Al termine, se necessario si può disabilitare la modalità “Administrator” lanciando il prompt dei comandi:

net user administrator /active:no

C++ creare un array di oggetti usando std::vector

Creare array di oggetti in c++ crea sempre qualche problema nella gestione della memoria e nella chiamata ai costruttori.

Infatti una definizione del tipo

Oggetto array[100];

creerà un array di puntatori a 100 oggetti del tipo Oggetto richiamando per ciascuno di essi il costruttore senza parametri. Questo non è sempre corretto. Un’alternativa sarebbe definire l’array come array di puntatori, come di seguito:

Oggetto *array[100]

Questa istruzione creerà un array di puntatori a aree di memoria non inizializzate con nessun oggetto. Con un ciclo si dovranno poi costruire gli oggetti a uno a uno.

Questo schema prevede una gestione della memoria manuale, con il rischio di leak di memoria.

Le nuove specifiche richiedono di utilizzare i contenitori standard, in particolare std::vector. Questo contenitore richiede un po’ di gestione in più, con i relativi costruttori di copie e gli operatori move.

Ovviamente si potrà usare un’istruzione del tipo:

std::vector<Oggetto> array;

creando poi i vari oggetti a uno a uno. In alternativa si può usare un contenitore di puntatori, facendo attenzione che siano puntatori smart.

Suggerimenti per evitare in modo sicuro perdite di memoria

Piuttosto che utilizzare un std::vector di puntatori nudi, utilizzare una raccolta di oggetti std::unique_ptr:
//THIS CREATES VECTOR
std::vector<std::unique_ptr<combustion_car>> combustion_car_list;

  1. Creare l’oggetto temporaneo utilizzando una chiamata a std::make_unique e trasferirne la proprietà al contenitore utilizzando std::move:
    //THIS IS CREATING AND PUSHING THE OBJECT
    std::unique_ptr<combustion_car> temporary=std::make_unique<combustion_car>(); temporary->create();
    combustion_car_list.push_back(std::move(temporary));
    std::cout<<"Object added"<<std::endl;
  2. Rimuovere l’elemento in combustion_car_list[choice] (choice-1 non è corretto, ma anche pericoloso perché potrebbe produrre un valore dell’iteratore che è precedente )
    combustion_car_list.begin();
    //THIS DELETES OBJECT FROM VECTOR combustion_car_list.erase(combustion_car_list.begin() + choice);