Jumping Jack Flash weblog

Appunti su programmazione ATTINY85 su piattaforma Digistump Digispark

Posted in arduino, hardware by jumpjack on 25 ottobre 2019

L’attiny85 è un minuscolo microcontrollore con soli 6 pin con una minuscola memoria di 8 KB e una frequenza di lavoro di 16MHz, ma per alcuni progetti può benissimo sostituire una ben più costosa e ingombrante Arduino o Raspberry; per esempio per leggere semplicemente i valori di un dispositivo con interfaccia I2C.

L’unico problema è superare alcuni “scogli” per riuscire a programmarla tramite il normale IDE di Arduino; in giro c’è una moltpelicità di guide che spiegano trucchi e schemi elettrici vari per riuscire a programmare il modulo Digispark con l’arduino IDE usando una Arduino Uno come “ponte”…. ma sono obsoleti, non ce n’è più bisogno, ora si può semplicemente collegare il dispositivo al PC e caricarci direttamente lo sketch. Però bisogna seguire alcuni accorgimenti:

  1. Il problema dei driver
  2. Il problema del LED
  3. Il problema del mancato riconoscimento USB (suono continuo di connessione/disconnessione)
  4. Il problema della porta seriale

I driver

Servono dei driver specifici, che potrebbero non venire installati automaticamente quando si installa Arduino IDE, quindi ecco il link per scaricarli

Il LED

Esistono diverse varianti della board (rev2, rev3, rev4,…); sono identiche tranne per il pin a cui è collegato il LED: a volte 0, a volte 1; se è collegato al pin 0, non è possibile comunicare con dispositivi I2C, quindi va scollegato.

Mancato riconoscimento USB (suono continuo di connessione/disconnessione)

Connettendo il dispositivo a una porta USB, si sente inizialmente il classico suono di disconnessione, ma dopo 5 secondi si sente quello di disconnessione, poi di nuovo quello di connessione, e così via all’infinito.

Il problema è che… va bene così, è così che deve funzionare, non è rotto. E’ solo che va programmato in modo diverso da Arduino: prima di connettere il Digispark, bisogna avviare l’upload dello sketch, e solo dopo, quando è l’IDE stesso a chiederlo, bisogna collegare il dispositivo, e lo sketch verrà caricato. E una volta caricato il primo sketch, non ci sarà più il problema di connessione/disconnessione continua.

Dal manuale ufficiale:

You do not need to plug in your Digispark before invoking upload. Hit the upload button. The bottom status box will now ask you to plug in your Digispark – at this point you need to plug it in – or unplug and replug it. You’ll see the upload progress and then it will immediately run your code on the Digispark. If you unplug the Digispark and plug it back in or attach it to another power source there will be a delay of 5 seconds before the code you programmed will run. This 5 second delay is the Digispark Pro checking to see if you are trying to program it.

La porta seriale

Il problema della porta seriale… è che non c’è porta seriale, quindi il comando Serial.print() non è implementato e il Serial Monitor dell’IDE non si può usare.

Si può ovviare al problema installando una libreria a parte:

Altri metodi di debugging: link


Sensori I2C

Il digispark può leggere dati da sensori digitali tramite protocollo I2C (pin SDA e SLK):

  • SDA: pin 0
  • SCL: pin 2

Installando la scheda nell’IDE Arduino si rende disponibile uno sketch per la scansione di tutti i dispositivi I2C collegati (i2cscanner.ino)

Emulazione tastiera

Fortunatamente il Digispark non ha solo problemi, ma anche vantaggi; per esempio, nonostante le minuscole dimensioni, poichè gira a 16MHz e va a 5V, a differenza di altre board è in grado di emulare dispositivi HID (joystick, tastiere, mouse,…)

Connessione Android USB

Essendo in grado di emulare una tastiera, il Digispark può essere anche connesso via USB a uno smartphone che supporti l’OTG; il che significa che in sostanza si può usare per collegare a un dispositivo Android un qualunque sensore dotato di interfaccia I2C. Sorgenti di esempio.

 

Manuale d’uso per timer KKMoon 12V con display e 3 tasti

Posted in hardware by jumpjack on 10 ottobre 2019

timer KKMoon - pulsanti

K1: tenere premuto per 2 secondi per entrare in modalità programmazione (programmi da P-1 a P-4).

K2: seleziona cifre partendo da sinistra

K3:
A cifra lampeggiante: incrementa di 1.
A cifre già prograsmmate: spostamento punto decimale.

P-1:
Accensione: relè 0, attesa segnale
Segnale: relè 1, timer T1, relè 0, fine.

P-2:
Accensione: niente
Segnale = Timer T1, relè 1, timer T2, relè 0, fine.

P-3 – Lampeggiatore
Accensione: Relè A, timer T1, relè B, timer T2, ripete all’infinito
Se A e B sono 0 o 1 lo si decide a timer avviato col tasto K1.
Nota: un giorno dura 1440 minuti e il timer può contare solo fino a 999 minuti, quindi può ripetere il ciclo ogni 12 ore, o al massimo ogni 16,65 ore.

P-4:
Accensione: Relè 0, attesa segnale
Segnale: Relè 1, timer T1, Relè 0, fine.

Specifiche:
Tensione di funzionamento: DC 12V / DC 24V (opzionale)
Intervallo di tempo (impostabile): 0,1 ~ 99,9 secondi; 1 ~ 999 secondi; 1 ~ 999 minuti
Segnale di tensione: DC 4 ~ 20V
Capacità di uscita: può controllare il carico entro DC 30V 10A o 10A 220V AC

Tagged with: , , , , , ,

Dimensionamento di fusibili

Posted in hardware by jumpjack on 10 settembre 2019

Qualche anno fa, quando ho rifatto da zero l’impianto elettrico dello scooter elettrico Ecojumbo 5000, ho avuto delle belle difficoltà a trovare normative e specifiche su come dimensionare correttamente fusibili per alte correnti continue.

Ecco ora un documento che fa un po’ di luce sulla questione:

https://www.littelfuse.com/~/media/electronics/product_catalogs/littelfuse_fuseology_selection_guide.pdf.pdf

 

  • Parametri del circuito
    • Corrente nominale (normal operating current)
    • Corrente massima di guasto (maximum fault current)
  • Parametri del fusibile
    • Tensione massima di lavoro (voltage rating)
    • Corrente nominale (“current rating”)
    • Corrente di corto circuito o Corrente di rottura o Corrente di sovraccarico (“short circuit rating” o “breaking capacity” o “interrupting rating”)

La corrente di corto circuito del fusibile deve essere maggiore o uguale della corrente massima di guasto del circuito, in modo che sia impossibile far scorrere nel circuito una corrente superiore alla sua corrente massima di guasto.

CCC >= CMG


Data la corrente nominale indicata nel datasheet, un fusibile non deve essere attraversato da più del 75% di questa corrente; o, detto al contrario, se devo permettere il passaggio di una corrente I in un circuito, il fusibile deve avere una corrente nominale di almeno I/0.75. Il valore 0.75 va poi moltiplicato per il fattore di derating dovuto alla differenza di temperatura rispetto alla temperatura ambiente, graficato nel datasheet.

Questo però è valido a 25°C in spazio aperto, condizioni standard utili solo per confrontare componenti diversi; bisogna però tenere conto del derating, ossia del cambio dei valori di specifica, al variare delle condizioni ambientali, essendo per definizione i fusibili componenti estremamente sensibili alle temperature.

Tensioni tipiche di specifica dei  fusibili sono: 32V, 63V, 125V, 250V e 600V. Il comportamento di un fusibile resta lo stesso al variare della tensione nel  range ammesso, mentre cambia molto al cambiare della corrente. Il documento non specifica come rapportare la tensione di lavoro in corrente continua con quella in corrente alternata, ma è presente un elenco di vari fusibili per i quali sono indicate le tensioni massime di lavoro sia in continua che in alternata, dai quali si evince che la tensione continua tollerata da un fusibile è 5 volte più grande di quella tollerata in regime di corrente alternata.

Il parametro principale per dimensionare un fusibile è quello che lo fa rompere: “overload current” o “corrente di sovraccarico“, che però non va mai da sola, ma è accompagnata dal tempo di apertura o tempo di rottura, cioè per quanto tempo può scorrere quella corrente nel fusibile prima che questo si fonda e apra il circuito. Questi due parametri del fusibile dipendono dalla “maximum fault current” (corrente massima di guasto) del circuito, cioè la corrente massima che si prevede possa scorrere nel circuito in caso di guasto.

 

 

 

Tagged with: ,

Sensori di piccole correnti per ESP32/ESP8266 e Arduino

Posted in hardware by jumpjack on 3 settembre 2019

INA219 (digitale)

 

L’INA219 non misura solo la corrente ma anche la tensione, da cui è possibile calcolare la potenza in Watt e il consumo energetico in Wh.

Comunica digitalmente coi microcontrollori tramite protocollo I2C a 2 pin (SDA e SCL), il che rende possibile l’utilizzo in contemporanea con un display I2C anche in caso di scarsità di pin sul microcontrollore.


MAX471 (analogico)

Dimensionamento della resistenza esterna su cui leggere la tensione con una Arduino o simili:

  • Rout [kOhm] = Vcc / (ILOADmax [A] * 0.5mA/A) = 2 * Vcc / ILOADmax
  • Vout [V] = 0.5 mA/A * Rout [kOhm] * ILOAD [A]
  • ILOADmax è la portata del MAX471, che è 3A, quindi:
  • Rout = 2*Vcc/3
  • Vout = I*Vcc/3
    • ESP32/ESP8266:
      • Rout = 2*3/3 = 2 kOhm per avere una variazione di 1mV per ogni mA; (2 resistenze di valore standard 1 kOhm in serie)
      • Vout [V]= I [A]
      • L’ESP32 legge i valori da 0 a 3.3V in 4096 step, quindi ogni step corrisponde a 0.80 mV letti e a 0.80 mA misurati.
    • Arduino
      • Rout = 2*5/3 = 3.3 kOhm
      • Vout [V]= 1.7 * I
      • Arduino legge i valori da 0 a 5V in 1024 step, quindi 4.9 mV per ogni step, che corrisponde a 8.3 mA misurati per ogni step.

Misure di alta tensione

Per misurare invece i consumi di rete a 230V, come sensore di tensione conviene usare un dispositivo isolato galvanicamente, in modo da evitare che per errore sulla Arduino finiscano 230V, come il dispositivo ZMPT10B che regge fino a 250V alternati; come sensore di correntesi può usare un ACS712 (variante ACS712ELCTR-20A-T da +/- 20A o ACS712ELCTR-30A-T da +/- 30A), che però richiede il “taglio dei fili” perchè funziona tramite resistenza di shunt.

Sensore di corrente senza contatto: SCT-013-000

 

Hacking Icaro – Centralina GSM: Man in the Middle Attack – puntata 3

Posted in Diario elettrico GreenGo Icaro, hacking, hardware by jumpjack on 2 settembre 2019

Pinout

Terminata l’individuazione dei pin TX/RX da intercettare tramite apposito cavo:

Pinout centralina GSM Zhidou/Greengo Icaro

Pinout centralina GSM Zhidou/Greengo Icaro

 

Sul connettore nero sono i pin 33 e 34, ergo l’11mo e il 12mo partendo dal pin 23 (in basso nella figura qui sopra).

Il pin marchiato RX sul modulo va, da datasheet, collegato a RX sulla centralina, cioè qui viaggiano i dati provenienti dal modulo GSM, ergo le risposte del server. Il pin da “manomettere” e intercettare è quindi il TX, che corrisponde dal pin 33 sul connettore nero, l’undicesimo partendo dall’estremità del connettore contrassegnata dal n.23.

Il cavo

Un possibile cavo utilizzabile per questo hacking è il SAMTEC FFSD-25-D-03.00-01-N-R (datasheet):

  • FFSD = famiglia
    • FF passo 1.27 mm
    • S = socket (femmina); può andar bene anche la famiglia FFMD, con due spine maschio invece che due femmine, ma servirà un adattatore femmina-femmina; col connettore femmina-femmina (lettera S) serve invece un adattatore maschio-maschio, o semplicemente di inserire a mano 50 pin in uno dei due connettori femmina, in modo che diventi maschio.
    • D = doppia fila di pin
    • DA EVITARE le famiglie TCSD e TCMD, che hanno il passo sbagliato (2mm invece che 1.27mm)
  • 25 = 25 pin per fila
  • D = Doppio connettore
  • 03.00 = 3 pollici di lunghezza (7.5 cm)
  • 01 = valore fisso
  • N = presente tacca di polarizzazione
  • R = verso invertito del secondo connettore:

    L’ultima lettera va bene anche -O oppure -M (si tratta di cavi con 3 connettori invece che 2, uno dei quali invertito).

Il progetto

Questo è ciò che va realizzato per modificare il server a cui vengono inviate le telemetrie:

hacking icaro GSM – connessioni

Questa è l’unica connessione realmente necessaria, sia per modificare il server di invio dati, sia per loggare i dati stessi, ma chiaramente può essere utile collegarsi anche al pin 34(RX) per leggere e loggare la risposta del server.

 

Tagged with: , , , , ,

Diario elettrico Greengo/Zhidou Icaro: 2 agoto 2019 – problemi al motore

Ieri mattina, nuovo tipo di problema, questa volta riguardante il motore: all’improvviso, durante la marcia a bassa velocità, l’auto ha iniziato ad accelerare a singhiozzo, nonostante il pedale dell’acceleratore fosse fermo, e l’ago del tachimetro ha iniziato ad andare su e giù a vanvera; mi sono fermato, ho spento e riacceso, e tutto ok, ma la cosa è un po’ preoccupante, perchè sembra decisamente un problema di lettura dei sensori di hall, quei 3 sensori che permettono al motorcontroller di sapere in ogni istante a che velocità e in che direzione si sta muovendo il motore; il che vuol dire che se le letture sono a vanvera, la centralina potrebbe “ingranare la retromarcia” in qualunque momento…

Stamattina ho dato una controllata a fili, cavi e cavetti, ma non mi sembra ci sia nessun falso contatto; però il problema si è ripresentato un paio di volte, e una volta anche quando ero in velocità. Mettendo un momento in folle su “N” e poi di nuovo in drive su “D” il problema sembra risolversi, ma il differenziale non è molto contento di queste accelerazioni/decelerazioni improvvise, quindi questo sembrerebbe proprio essere un motivo in più per disattivare la famigerata rigenerazione in frenata, che secondo la Kelly, che fabbrica il motorcontroller, potrebbe essere la causa degli improvvisi, salturari depotenziamenti.

L’alernativa sarebbe forse cambiare il cavo che contiene i fili del sensore di hall, che magari si è deteriorato; ma il cavo costa 30 euro e la spedizione dalla Cina 35 euro….

Vedremo.

——————

A proposito del problema del depotenziamento, sono arrivato per ora a  questa conclusione:

il depotenziamento ha due possibili cause: il BMS, e il motorcontroller;

  1.  pare che il BMS sia tarato per tagliare la potenza se legge una differenza di tensione superiore a un tot tra cella più alta e cella più bassa; in origine sono 300 V, ma pare che nelle versioni successive di auto e/o BMS abbiano modificato o tolto questo limite, come è stato fatto sulla mia Icaro. Sulla quale però ogni tanto, anche se più raramente, il problema si ripresenta. E quindi entra in gioco una seconda possibile causa.
  2. anche il motorcontroller è tarato per tagliare la potenza in base alla tensione, ma di tutta la batteria: succede sia in accelerazione, se la tensione scende troppo, che in frenata rigenerativa, se la tensione sale troppo.

Abbassamenti eccessivi non ne ho mai rilevati in accelerazione, nonostante i 250A tirati fuori al posto dei 150A di origine (a seguito di una mia rimappatura della centralina), ma in compenso a volte mi è capitato di trovare la batteria a 81V la mattina, appena caricata, e a volte addirittura a 85V se si era appena spento il caricabatterie; trattandosi di 24 celle, significa 3.375V  e 3,54V per cella; se in questa situazione esco dal parcheggio, che ha una rampa in discesa, la tensione probabilmente sale ulteriormente (non ho un logger, devo vedere tutto a occhio), e la centralina va in protezione. Nella schermata 2 del SW di configurazione si possono impostare le soglie di intervento del regen (voce 5, nota 4)

La spiegazione dice:

  • Under voltage [3]: Controller will cut back current at battery voltage lower than 1.1x he value, cut out at the vale, and resume operation at 1.05x value
  • Over voltage [4]: Controller will cut back regen current at 0.95x the value, cut out regen if voltage reachd the setting, and resume regen at 0.95x value.

Traduzioni:

  • Sottotensione [3]: il controller ridurrà la corrente quando la tensione di batteria scenderà sotto 1.1 volte il valore impostato, la taglierà completamente quando raggiungerà esattamente il valore impostato, e la ripristinerà solo quando la tensione risalirà ad almeno 1.05 volte il valore impostato.
  • Sovratensione [4]: Il controller ridurrà la rigenerazione quando la tensione raggiungerà il 95% del valore impostato, lo azzererà al raggiungimento del valore esatto, e ripristinerà al ragiungimento  del 95%.

In questo caso ci interessa il punto 2 (sovratensione), l’altro riguarda la corrente esratta dalla batteria in accelerazione.

La Icaro monta 24 celle LiFePO4; in genere le LiFePO4 (ma ce ne sono tante varianti) hanno tensione massima di 3.33V e tensione di ricarica finale di 3.65V; a livello di batteria quste tensioni equivalgono a 80V e 87,6V. La tensione di ricarica finale permane però solo finchè resta collegato il caricabatteria; quando si stacca, la tensione decade spontaneamente a 3.33V/80V.

Il 95% di questi due valori massimi è:

  • 80.0 * 0.95 = 76 V
  • 87.6 * 0.95 = 83.2 V

Non ho invece modo di sapere quali sono i valori di intervento del BMS, quindi devo supporre che il BMS non effettui nessun intervento, ed agire quindi solo sul motorcontroller, assicurandomi che riduca la tensione di regen quando la tensione supera i 76V, e lo tagli completamente se supera gli 80V.

Purtroppo non ricordo a quanto impostai questa soglia l’anno scorso, però so che sia in ufficio che a casa l’uscita dal parcheggio (occasione in cui spesso si verifica il depoteniamento automatico) c’è una rampa in discesa; se a casa sicuramente parto con la batteria a 80V (a volte anche 81V), in ufficio, dopo 10 km di viaggio, mi pare difficile partire con questa tensione, ma la verità è che non ho mai controllato, mi sono sempre limitato a controllare che la tensione di cella non SCENDESSE sotto livelli critici, non ho mai pensato a verificare che non salisse troppo.

Dovrò quindi risistemare un po’ i parametri della centralina: o disattivo completamente il regen – cosa che renderebbe solo fastidioso, anzichè pericoloso, il problema dei sensori di hall –  oppure cambio la soglia di intervento in modo che la tensione di batteria non superi mai gli 80V a causa del regen.

 

 

Hacking Icaro – Centralina GSM: Man in the Middle Attack – puntata 2

Posted in auto elettriche, hacking, hardware by jumpjack on 11 luglio 2019

Una settimana di studi e teorie non sono valsi l’avere i pezzi tra le mani…

A quanto pare il passo dei due connettori non è di 2mm, ma di 1.27mm! Vale a dire 0.050″.

Quindi sia la striscia di cavi che le pin strip… sono completamente inutili, tocca ricominciare la ricerca da capo.

Per fortuna però ormai ho acquisito un po’ di esperienza nel decodificare i datasheet di questi cavi, e ci è voluto poco: quello che mi serve non è un cavo TCMD o TCSD (passo 2.0mm) , ma un cavo di una famiglia diversa: o FFMD o FFSD  (passo 1.27mm). Si tratta sempre di cavi IDC di tipo TigerEye, ma i pin hanno appunto passo 0.050″/1.27mm. “M” sta per “maschio” e “S” per socket, cioè femmina, poi per il resto la nomenclatura Samtec rimane la stessa, quindi un FFxD-25-D avrà due connettori uguali mentre un FFxD-25-T li avrà di sesso opposto; purtroppo da 2×22 pin non esistono, quindi devo prendere il numero subito superiore, 2×25. Altre famiglie sono FFTP e FMTP, che però hanno i cavi “twistati” a 2 a 2; non significa che i contatti siano “incrociati”, ma solo che i fili sono arrotolati l’uno sull’altro (credo per attenuare le interferenze elettomagnetiche), ma poi terminano da entrambi i lati nella stessa posizione.

Le sigle papabili sono quindi:

  • FFMD-25-T-xx.xx-01: maschio/femmina
  • FFMD-25-D-xx.xx-01: doppio maschio
  • FFSD-25-T-xx.xx-01: maschio/femmina
  • FFSD-25-D-xx.xx-01: doppia femmina

Twisted:

  • FFTP-25-T-xx.xx-01: twisted, maschio/femmina
  • FFTP-25-D-xx.xx-01: twisted,  doppia femmina
  • FMTP-25-T-xx.xx-01: twisted, maschio/femmina
  • FMTP-25-D-xx.xx-01: twisted, doppio maschio

Può darsi che alcune delle combinazioni maschio/femmina non esistano perchè coincidenti con altre sigle.

Purtroppo su https://www.toby.co.uk  un FFMD-25-T-08.00-01-N costa circa 32,00 sterline fra tasse e spedizione.

Su RS-components non ci sono cavi maschio/femmina in magazzino, ma ho visto che la strip-pin con passo 2.0mm che ho ordinato per sbaglio entrano senza sforzo nè gioco nel connettore-femmina della scheda GSM, quindi basterà sfilarne 22 uno per uno e infilarli in uno dei due connettori-femmina per ottenere un connettore maschio; il femmina/femmina più economico è un FFSD-25-D-04.00-01-N, cioè 2×25 pin lungo 4 pollici (10 cm) del costo di 13,54 euro, che con IVA e spedizione diventano 22,62€; prenderò questo e speriamo che stavolta i conti tornino.

 

connettore GSM nero con righello e pin

Tagged with: , ,

Hacking Icaro – Centralina GSM: Man in the Middle Attack

Posted in Diario elettrico GreenGo Icaro, GPS, hacking, hardware by jumpjack on 10 luglio 2019

Vedi nuovo articolo: Hacking Icaro – Centralina GSM: Man in the Middle Attack – puntata 3

Un attacco “Man in the middle” è quello che prevede che un hacker si inserisca nel canale di trasmissione tra due dispositivi per intercettare i dati, senza interromperli ma modificandoli, in modo che a entrambi gli interlocutori originali la trasmissione sembri ancora genuina, mentre in realtà qualcosa è cambiato.

E’ quello che ho deciso di fare come nuovo tentativo di “entrare nella testa” della mia Icaro. 🙂

Nella centralina GSM/GPS è infatti presente, come già detto in precedenza, un modulo GSM G600; questo modulo è saldato su un PCB che chiameremo “A”; il PCB è connesso tramite un connettore bianco a un secondo PCB che chiameremo “B”; il PCB “B” è infine connesso alla scheda madre tramite un connettore nero; ed è qui che cercherò di insinuarmi. Se infatti il connettore bianco ha pin talmente microscopici e vicini da non poter essere maneggiati con strumenti manuali, il connettore nero ha invece pin più grossi e distanziati (passo di 2mm); si tratta di un connettore a 44 pin, due dei quali sono sicuramente i TX e RX del modulo GSM, il quale ho già verificato  che comunica con l’MCU tramite semplici comandi AT testuali: è così infatti che sono riuscito a leggere quale IP la centralina cerca di contattare, che purtroppo corrisponde al sito abbandonato etheria.it; quindi, anche se la centralina funziona e tenta di inviare dati, non ricevendo risposta probabilmente non passa mai dalla modalità “handshaking” al vero e prorio invio dati. Però in compenso i server eteria.biz (senza H e con dominio .biz) pare funzionino ancora (così mi hanno detto…).

Il mio tentativo sarà quindi di interrompere fisicamente le due connessioni TX e RX, dirottarle a una mia scheda ESP32, e sostituire ogni chiamata del modem al server sbagliato con una chiamata al server giusto… e vedere cosa succede.

Per farlo, mi serviranno due connettori aggiuntivi: un maschio e una femmina che facciano da interruzione tra GSM e MCU, e al tempo stesso da “dirottatore” verso l’ESP32.

Sfortunatamente questi connettori non hanno il classico passo da 1/10 di pollice (2.54mm), ma da 2.00 mm  1.27mm, quindi non ho niente in “magazzino” che vada bene, dovrò comprare dei connettori specifici.

Dopo una settimana di ricerche sui siti più disparati (www.distrelec.it, www.farnell.it, www.mouser.it, www.tme.eu, https://it.rs-online.com), mi sono fatto una discreta cultura sui possibili modi di realizzare una connessione a 44 fili tra i due PCB; ho individuato varie possibilità:

  1. Cavo preassemblato
  2. Cavo autocostruito
  3. Connettori saldati su piastra millefori, connessi tramite fili singoli
  4. Ponticelli dupont

Ognuno ha i suoi pro e i suoi contro:

  1. il cavo preassemblato sarebbe ovviamente la scelta migliore, ma fra costi netti, tasse e spedizioni, un cavo a 40 poli finisce per costare fra i 40 e i 50 euro!
  2. il cavo autocostruito, comprando una piattina e due connettori IDC, finirebbe per costare solo 5-10 euro in meno di un cavo preassemblato.
  3. inizialmente avevo pensato di costruirmi un  “cavo” saldando due connettori maschio e femmina a due pezzi di piastra millefori, e poi collegarli tra loro tramite fili volanti, ma sarebbe un lavoro troppo approssimativo e disordinato

 

Ecco uno schema di massima di come dovrebbe avvenire il collegamento “clandestino” tra modulo GSM e motherboard: IMMAGINE ERRATA! Vedere nuovo articolo

cavo intercettazione centralina GSM/GPS icaro

Cavo intercettazione centralina GSM/GPS icaro

Il cavo ideale sarebbe il TCSD-22-T-03.00-01,o l’omologo  TCMD-22-T-03.00-01 FFSD-25-D-03.00-01-N-R, ma è possibile arrangiarsi con varie altre possibilità, come descritto in figura; l’importante è che il codice finisca con -R o con -O, che significa che il connettore finale  è capovolto (-R se sono 2 connettori, -O se sono 3 in daisy-chain, nel qual caso prima della “O” ci sarebbe anche una “Dxx”, con xx distanza tra connettore 2 e connettore 3); in caso contrario, quando si va a piegare a “U” il cavo, vanno a invertirsi le due file di pin! Il cavo deve invece restare disteso, quindi i due connettori alle due estremità devono avere versi opposti:

TCMD3

Il sito https://www.toby.co.uk forse non è “fintamente inglese” comei vari mouser, farnell ecc. che in realtà spediscono dalla Cina o dall’America, quindi è possibile che ordinando qui il materiale arrivi nel giro di una settimana invece che di 3-4 mesi.

Anche il sito https://www.enrgtech.co.uk/ sembra inglese autentico.

Ecco alcuni possibili codici di cavi validi:

  • TCSD-22-01
  • TCSD-22-01-F
  • TCSD-22-01-L-N
  • TCSD-22-01-N-P01

Nota:  essendo lo strip-pin sulla motherboard non protetto da un case, qualunque connettore femmina con più di 22 pin si può adattare, quindi per esempio anche TCSD-25-01 e successivi. Il limite ovviamente è la larghezza massima disponibile all’interno dello scatolotto della centralina. Foto del connettore maschio sulla motherboard:

connettore GSM nero con righello e pin

 

Sul sito Samtec c’è anche un configuratore 3d che permette di vedere in tempo reale come cambia il cavo al cambiare delle opzioni del suo part number, sia per la famiglia FFSD che FFMD:

Samtec TCSD IDC 3d configurator

Samtec TCSD IDC 3d configurator

 

Qui di seguito riporto invece gli esiti delle mie ricerche precedenti alla decisione finale di comprare ponticell dupont.

Cavi preassemblati

Ho trovato due soli produttori per cavi piatti con connettori con passo (“pitch”) da 2.0mm e a 44 pin: Samtec e 3M; questi sono due esempi di datasheet dei loro prodotti:

La Samtec usa questa nomenclatura

xxxD-22-T-LL.LL-01-N-R

  • xxx: famiglia del cavo (v. sotto) – FFMD = maschio, FFSD = femmina
  • D: doppia fila di pin
  • 22: numero di pin per fila
  • T:  connettore di sesso opposto  all’altra estremità del cavo (invece di fili liberi); S = fili liberi, D = connettore identico all’altro
  • LL.LL: lunghezza in pollici del cavo
  • 01: numero fisso
  • N: presente solo se è presente prima la “T”, e significa “notch polarization”)
  • R: verso invertito del connettore; O = verso invertito del connettore finale se i connettori sono 3 (daisy-chain)

 

Famiglia del cavo

  • TCSD 2.00 mm  – Tigereye Cable Socket Double – IDC Ribbon Cable Assembly, Socket
  • TCMD 2.00 mm – Tigereye Cable Male Double – IDC Ribbon Cable Assembly,
  • FFSD: passo 1.27 mm, femmina
  • FFMD: passo 1.27 mm, maschio
  • Terminal
  • EHT 2.00 mm Shrouded IDC Ejector Header
  • STMM 2.00 mm Shrouded Terminal Strip, Cable Mate
  • ZSTMM 2.00 mm Shrouded Variable Stack Height Terminal Strip, Cable Mate
  • ETMM 2.00 mm Shrouded Terminal Strip For Strain Relief for TCSD

(ho cancellato le famiglie non adatte al mio caso)

Qui la pagina Samtec per la ricerca visuale.

Alcune note:

  • il “passo” in inglese si chiama “pitch”
  • IDC significa “Insulation-Displacement Connector” (“connettore a spestamento di guaina”): significa che i fili non sono connessi ai pin tramite saldatura, ma grazie a delle affilate “microforcelle” presenti sul loro retro; l’apertura della forcella è poco più larga del diametro del conduttore di rame interno al filo, quindi quando si inserisce il filo nella forcella, questa taglia e sposta la guaina, andando a toccare il conduttore e garantendo un contatto elettrico stabile e addirittura a tenuta d’aria:

IDC connection, Torq-Tite patent

IDC connection, Torq-Tite patent

  • Nel datasheet c’è un’immagine un po’ fuorviante, che potrebbe far credere che in certi connettori i pin sono sfalsati; in realtà l’immagine di sinistra nella figura qui sotto mostra il connettore visto dal lato opposto dei pin, che invece sono disposti a griglia come mostrato a destra, in altra immagine tratta dallo stesso datahseet:

Connettore femmina da PCB

—-

Connettore maschio da PCB


 

Tutte le foto del modulo GSM:

connettore GSM nero con righello e pin

Connettore lato SIM con pinout marziale

connettore GSM nero con righello

Hacking Icaro: centralina GSM – puntata 2 (16/3/2019)

Posted in hardware by jumpjack on 16 marzo 2019

Puntata precedente: https://jumpjack.wordpress.com/2019/03/10/esame-della-centralina-gsm-gps-greengo-icaro/

Sostituendo la SIM originale della movistar con una generica SIM Wind, sono riuscito ad ottenere l’aggancio alla rete GPRS!

Purtroppo il comando di connessione non è molto chiaro:

AT+CGDCONT=1,”IP”,”%1?….4.?..b#”

Il terzo parametro dovrebbe essere l’indirizzo IP dell’APN dell’operatore…. ma sembra scritto in codice binario invece che come stringa, quindi non si capisce a chi tenti di collegarsi.

In binario: 25 31 3F 10 10 06 04 34 07 3F 01 02 62 23

La buona notizia è che però a questo comando della MCU, e al successivo ATD*99***1# ,  il modulo GSM risponde con CONNECT, quindi l’aggancio avviene di sicuro.

…dopodichè non si capisce più niente: tutta la comunicazione passa da testuale (comandi AT) a binaria!

Leggendo come testo quello che la MCU invia al modem… si vede questo:


~?}#?!

}!}!} }4}"}&} }

 } } }%}&eglj}'}

"}(}"?m~

~?

}#?!}"}!} }2}"}&

} } } } }#}$?#}

'}"}(}"??~

~?#GPRS~?}#?!}!}#

} }.}"}&} } } }

 }'}"}(}"*?~

~?#~

~?!~?!/~

~?!~?!~?!??~

~!E?

_n?-? (?a~

~!E

?

_n?x?ls~

~!E0? ??~

~!E

}]

?

_n?4Vx?Jg~

~!En?p ??~

~!E

{

?

_n?4Vx~!

E_n???~

~!E?4Vx~

!E

_n???~

~!E?q~!E?

_n??I:~

~!E~

~!Et

?

_n?x?o.~

~!E0? ?~

Espresso in esadecimale non è che sia molto più chiaro…:
7E3F7D233F21
7D217D217D207D347D227D267D207D
207D207D207D257D2665676C6A7D277D
227D287D223F6D7E
7E3F
7D233F217D227D217D207D327D227D26
7D207D207D207D207D237D243F237D
277D227D287D223F3F7E
7E3F230102475052537E3F7D233F217D217D23
7D207D2E7D227D267D207D207D207D
207D277D227D287D222A3F7E
7E3F2301047E
7E3F2101057E3F2101062F7E
7E3F21010703067E3F2102017E3F2101083F3F7E
7E21453F04
5F6E3F16042D073F0102080928083F617E
7E2145
3F04
5F6E3F160478053F010104026C737E
7E2145303F160402203F3F7E
7E2145
7D5D
3F04
5F6E3F1604123456780204053F010104024A677E
7E21456E3F16047002203F3F7E
7E214506
7B
3F04
5F6E3F1604123456787E21
455F6E3F160404023F3F7E
7E21450B3F123456787E
214504
5F6E3F16040104023F3F7E
7E21453F717E21453F04
5F6E3F16043F01010402493A7E
7E2145047E
7E214574
3F04
5F6E3F160478053F010104026F2E7E
7E2145303F160402203F7E
Tutta roba incomprensibile, però qui c’è qualche indizio su cui investigare:
https://www.embeddedrelated.com/showthread/comp.arch.embedded/40457-1.php
Potrebbe cioè trattarsi di una comunicazione su protocollo PPP; devo quindi o studiarmi il protocollo a basso livello, o trovare un decodificare automatico.

Questo è invece quello che risponde il modem subito dopo aver risposto CONNECT:
~ÿ}#À!}!}!} }2}"}&} } } } }#}$À#}'}"}(}"Ý”~~ÿ}#À!}$}!} }*}%}&eglj`…~~ÿ}#À!}"}#} }.}"}&} } } } }'}"}(}"}4¼~~À#
In hex:

7EFF7D23C0217D217D217D207D327D227D267D207D207D207D207D237D24C0237D277D227D287D22DD947E7EFF7D23C0217D247D217D207D2A7D257D2665676C6A60857E7EFF7D23C0217D227D237D207D2E7D227D267D207D207D207D207D277D227D287D227D34BC7E7EC0230204000500AA5E7E7E8021030500
030600000000C6A17E7E8021030600
030600000000C1777E7E802101010004BB997E7E8021030700
0306
B506E685837E7E8021020800
0306
B506E68A397E

Tutto questo avviene al banco, con la centralina scollegata dalla icaro.


Alcuni link utili:
Protocollo PPP:
http://www.powerfast.net/maxtnt/~ascend/MaxTNT/admin/ppprime.htm
http://www.netfor2.com/ppp.htm
Decoder:
https://hpd.gasmi.net/  – hex decoder generico – 1
http://packetor.com/ – hex decoder generico – 2

 

Tagged with: , , , ,

Hacking Icaro: centralina GSM/GPS – puntata 1 (3/3/2019)

Posted in hacking, hardware, minicar elettriche by jumpjack on 10 marzo 2019

L’anno scorso ho provato a smontare ed esaminare la centralina GPS/GSM che rende(va) la Icaro (o meglio i.car.0) una “interconnected car”, inviando a una centrale di monitoraggio remoto decine e decine di telemetrie, come descritto in questo thread:

https://www.forumelettrico.it/forum/centralina-gsm-gps-t2437.html

Alcune foto della centralina.

Qui si vede il contenitore dell SIM card e un connettore a pettine a 12 pin:

Questo è il modulo GPS, un “GA71 V4.0 SiRF star III” a 20 canali:

 

Alcune marcature utili per l’identificazione:

Visione d’insieme; in alto la batteria-tampone ricaricabile al NiMH da 3.6V:

Questi pin, apparentemente interessanti… si sono rivelati completamente muti e inutili:

 

 

Quelli che invece si sono rivelati molto interessanti sono quelli dello strip maschio a 12 pin: collegandolo a un adattatore TTL/seriale per il PC, sono riuscito a dare una sniffata, scoprendo questo:

Per il momento non sono riuscito ad agganciare la rete, nemmeno togliendo la SIM originale e mettendo la mia, ma farò ovviamente altre prove.

Probabilmente, infatti, solo una volta che la scheda riesce ad agganciare la rete fa un tentativo di agganciarsi ai server remoti che un tempo leggevano queste telemetrie; bisogna vedere poi:

  • se la scheda aspetta una risposta dal server prima di inviare dati, o se li invia “a fondo perduto”
  • se è possibile riprogrammare a mano l’indirizzo a cui la scheda tenta di collegarsi
  • varie ed eventuali

Comandi AT: