Rikomagic MK802 III mod

Posseggo questa android pen da diverso tempo ormai e, per fortuna, gli aggiornamenti firmware sono abbastanza frequenti.

Molto spesso, però, gli aggiornamenti prevedono di cortocircuitare due pin (6 & 7) per andare in modalità aggiornamento.

Questo, probabilmente, per una cattivo design della pcb. Non vi è nessun switch sulla scheda per agevolare l’aggiornamento.

Così ho deciso di inserire un piccolo switch smd sulla piastra in modo tale da rendere facile l’aggiornamento.

Utilizzando un pò di manualità, cavo AWG30 e un pò di flussante (ho esagerato), ho saldato i cavi ai loro relativi pin portandoli poi allo switch smd che ho saldato sulla piastra, su una piazzola libera (probabilmente a massa).

Tra lo switch e la pcb ho applicato un pò di nastro kapton.

Launchpad “Tiva” by Texas Instruments

Ho deciso di partecipare al corso “Embedded Systems – Shape The World” sulla piattaforma edx.org tenuto dai professori Jonathan Valvano e Ramesh Yerraballi dell’Università del Texas ad Austin.

Il corso è gratuito e prevede un costo di 50$ se si vuol ottenere una certificazione verificabile, l’intero corso gira attorno al controller TM4C123 acquistabile come come kit di sviluppo con il codice EK-TM4C123GXL sul sito della TI: http://www.ti.com/tool/ek-tm4c123gxl

Il controller è basato sull’architettura ARM Cortex M4 a 32bit, tutte le caratteristiche le trovate al sito: http://www.ti.com/ww/en/launchpad/launchpads-tivac.html#tabs

2014-01-18 12.46.20

Ancora non ho avuto modo di giocarci seriamente, attendo che il corso inizi così da poter raccontare passo passo la mia esperienza.

Per ora, ho installato i driver scaricabili da qui: http://www.ti.com/tool/stellaris_icdi_drivers

Il controller, appena collegato all’alimentazione, ha uno firmware pre-caricato che gira tutto attorno all’uso del led RGB.

Un pò come per lo sketch “blink” di arduino.

Inoltre, se si collega la scheda al pc e si lancia un terminale come putty, comparirà una piccola shell che permette di pilotare il led rgb:

Cattura Cattura1

 

Basta digitare “help” e avrete una lista di alcuni comandi veloci per testare il corretto funzionamento della scheda.

L’unica piccola mod che ho fatto è stata questa:

Il problema è che il cavetto usb in dotazione è vergine, i gancetti che permettono l’ancoraggio dello stesso alla scheda Tiva, sono leggermente ampi e non permettono un facile aggancio/sgancio del cavo dalla scheda.

Il rischio è che il socket usb in formato SMD possa staccarsi dalla scheda durante la fase si aggancio/sgancio.

La soluzione è quella di smussare con un piccolo trapano i due gancetti.

Qualche foto:

draw_0118-2 2014-01-18 17.33.33draw_0118_1

Come calibrare la stazione saldante

Una delle cose più importanti per un buon maker, è aver i ferri del mestiere sempre perfettamente tarati.

Avere una stazione saldante tarata è davvero importante, in particolare se si compra online e ci si affida a prodotto provenienti dalla Cina (che sicuramente non sono tarate).

Infatti, una delle mie stazioni saldanti provenienti da chissà dove, durante la prima taratura, ho potuto notare che era tutto sballato. Credo che il trimmer era stato saldato ma mai utilizzato… dunque avevo sulla punta un paio di decine di gradi centigradi in più!

Povere piste ed smd!

Dunque, andiamo dritti al sodo come di consueto.

Prepariamo le nostre stazioni saldanti, accendiamole e settiamo una temperatura a piacere: in questo caso 350°C.

dmFoEW

 

Procuriamoci una sonda K oppure un giocattolino come l’Hakko FG-100 (entrambi ad un prezzo ridicolo su ebay) e attendiamo che le stazioni raggiungano la temperatura desiderata.

Di consueto, i nostri saldatori dovrebbero avere un piccolo foro dove poter infilare un cacciavite e agire su un piccolo trimmer per la calibratura.

Sul mio clone 937d è tra la manopola e il connettore DIN-5, sulla Lafayette SDD-9 (ZD-931A) è sulla pcb all’interno della stazione.

A suo tempo feci una piccola modifica portando il potenziometro sul lato sinistro:

2013-12-24 13.31.20 2013-12-24 14.03.18

 

 

Fatto ciò, stagnamo leggermente la punta del nostro saldatore e facciamo leggermente pressione sul centro della termocoppia

2013-12-23 15.32.25

 

 

Non otterrete mai una temperatura stabile a 350°C, ma questa in foto (fatta al volo) potrebbe essere un ottima approssimazione.

Agite sul trimmer variando opportunamente l’angolo di pochi gradi, pulite la punta del saldatore e aspettate che il saldatore raggiunga la nuova temperatura in modo stabile (magari aspettando una decina di secondi).

Riposizionate la punta leggermente stagnata sulla sonda K e prendete nota della nuova temperatura.

Eseguire l’operazione più volte, tenendo sempre la punta del saldatore pulita e stagnata non troppo.

Fatto questo variate la temperatura sul display e ripetete la calibratura sulla nuova temperatura.

Dopo qualche mezz’oratte di sbattimenti avrete una stazione saldante tarata a puntino.

Buon Natale! :)

 

Conversione programmatore TL866CS a TL866A

Per chi non lo sapesse, il programmatore TL866 (MiniPro http://www.autoelectric.cn/minipro/) è uno dei programmatori più venduti negli ultimi tempi tra i migliori de-bricker/makers.

E’ un piccolo dispositivo che permette la programmazione di un gran numero di memorie (ROM/FLASH/NVRAM) e microcontrollori (MCU/MPU).

Ma non solo, programma SRAM/DRAM, PLD/GAL/CPLD ed esegue il check di molte porte logiche.

L’ultimo aggiornamento del client supporta circa 13137 ic.

Il costo è davvero irrisorio, con 50€ vi portate a casa un accessorio che vi tornerà spesso molto utile.

Sul mercato esistono due versioni: TL866CS e TL866A.

Il prezzo è praticamente identico e seppure la versione CS è stata prodotta dopo la versione A, non ha introdotto nessuna miglioria.

Anzi… una peggioria! Le due versioni si differenziano solo ed esclusivamente per la porta ICSP presente solo nella versione A.

La porta ICSP è molto comoda perchè molti controllori possono essere programmati solo attraverso ICSP, quindi la versione A permette di programmare molti più microcontrollori rispetto alla versione CS.

Come un pollo, io (ma come parecchie altre persone) ho acquistato la CS dando per scontato che fosse migliore.

Scendendo nel dettaglio, le piastre sono identiche, manca fisicamente il connettore e i firmware sono leggermente differenti.

Saldare un connettore non ci aiuterà a rendere la nostra CS in una A.

Bisogna moddare il firmware.

In aiuto ci viene incontro un utente del forum di eevblog, radioman , che programmatore alla mano ha: pubblicato un piccolo tutorial, schema elettrico e creato un piccolo software che permette di creare un firmware versione A.

Il tutto è pubblicato al post: link

Io non ho fatto altro che documentarmi e seguire il tutorial proponendovi la mia esperienza.

Fatta la dovuta premessa andiamo a bomba :)

Prima di tutto, il minipro monta un PIC18F87J50… i tizi hanno pensato bene di grattare la superficie ma grazie al PicKit2 e alla funzione di autorilevamento è stato abbastanza facile arrivare ad identificare il pic montato.

draw_1118-7

Sulla mia piastra mancava anche un condensatore che, però, non ne comprometteva l’uso.

Grazie allo schema elettrico ho potuto fixare il problema.

draw_1118-2

Menate a parte, saldiamo un connettore per l’icsp sulla piastra.

Questo sarà il connettore che servirà al minipro per programmare altre mcu via icsp… è ciò che manca alla versione CS.

Già troveremo i fori e tutto…

2013-11-18 20.46.33 2013-11-18 20.45.02

Fatto ciò bisogna installare un connettore icsp per la programmazione del PIC18F87J50 all’interno del minipro.

E’ un connettore standard icsp, io ho risolto in questo modo:

2013-11-18 20.47.49 2013-11-18 20.47.56

A questo punto non ci manca che collegare il PicKit2, dare alimentazione e procedere con la parte software.

2013-11-18 20.48.46 2013-11-18 20.49.18 2013-11-18 20.49.45

 

Scaricate il tool fatto ad-hock da radioman link

Nel file zip ci sono due file pdf: in uno lo schema elettrico, nell’altro la procedura di aggiornamento e qualche dettaglio in più (molto interessante) sul firmware e la procedura di codifica e decodifica nella fase di upload dello stesso… una menata pazzesca ma bella!

Ogni minipro ha un proprio DevCode ed un proprio SerialNumber univoco.

Lanciamo l’applicativo e cloniamo entrambi i codici.

Collegate il vostro minipro, andate sulla linguetta “firmware”, poi “clone”.

ciao

Magari salviamoci il codice su un file txt e conserviamolo.

Mettete la spunta su “full flash”, “generate TL866A firmware” e poi “save”

2013-11-18 21_03_11-TL866 firmware updater (1 device connected)

L’applicativo creerà un file .hex che sarà il nuovo firmware versione A, con DevCode e SerialNumber appena indicati, da caricare nel PIC18F87J50.

Potete sia creare nuovi seriali con la funzione random (Edit) oppure editarli a mano.

Pare che la cosa per ora sia ininfluente in quanto non è presente un meccanismo di blacklist o cose del genere…

Ora abbiamo un file .hex versione A con i nostri seriali originali…

Avrete bisogno di un programmatore esterno…. per programmare il tl866 (!!!).

Io ho usato un PicKit2, voi siete liberi di usare ciò che vi pare a patto che riesca a programmare PIC18F87J50.

Il  PIC18F87J50 del minipro ha il CodeProtect abilitato, quindi potete scrivere ma non leggere il contenuto di memoria.

2013-11-18 20_55_38-PICkit 2 Programmer

Da come si evince dall’immagine, dopo una lettura, non otteniamo un bel nulla… tanti 00000 e una bella scritta in rosso Code Protect.

Passiamo alla procedura di writing.

Importiamo il file hex appena generato dall’applicativo di prima.

Immagine

Immagine1

 

Immagine2

Clicchiamo su write! :)

Immagine3

Immagine4

Apriamo il client del del mini pro e….

Immagine5

 

BINGO!!! :)

Adesso c’è da capire se prima o poi dovremmo dare un nuovo seriale o tornare in CS… ma penso di no!

Mi terrò il mio minipro a vita così :)

 

[UPDATE:] 

Nelle ultime versioni del tool di conversione, non vi è più la necesità di usare un programmatore esterno come il PICKit.

Aggiornare firmware USBasp con Arduino

Mi è capitato alcune volte di aver problemi con il mio USBasp, mi è capitato di leggere questo errore nel monitor: “avrdude: warning: cannot set sck period. please check for usbasp firmware update”.

Sul sito di Fischl (http://www.fischl.de/usbasp/) ho potuto trovare tutti i file necessari per l’upgrade del dispositivo, tra cui il firmware più recente usbasp.2011-05-28.tar.gz

Ma come programmare un programmatore!?

Due sono le strade:

  1.  L’uso di un secondo programmatore (un altro USBasp ad esempio)
  2.  Un Arduino

Non avendo un secondo USBasp, il modo più semplice era quello di usare un arduino come programmatore.

Ebbene, Arduino può essere utilizzato come programmatore… lo sapevate? :)

Gli step da eseguire per aggiornare il firmware dell’USBasp tramite Arduino sono i seguenti:

1. Aprite la vostra ide Arduino, e flashate il vostro arduino con lo sketch ArduinoISP (File>Esempi>ArduinoISP).

2. Mettete in corto lo Jumper JP2 (in qualche versione meno recente è lo jumper R8) del vostro USBasp, in modo tale da abilitare la modalità di autoprogrammazione.usbaspver2

3. Collegate il vostro arduino al pettine dell’USBasp come segue:

Arduino – USBasp
5V ———– 2
GND ——– 10
13 ———— 7 (SCK)
12  ———-  9 (MISO)
11 ———-   1 (MOSI)
10 ———    5 (RESET)

ISP_pines_ArduinoISP_lusbasp_and_arduino

4. Scaricate ed installate AVRDUDESS (http://blog.zakkemble.co.uk/avrdudess-a-gui-for-avrdude/)

5. Cliccate sull’eseguibile e settate il tutto in questo modo:

  • Programmer > Arduino
  • MCU > Atmega8 (assumendo che il vostro USBasp abbia un atmega8)
  • Port > COM3 (dipende a quale porta del vostro pc è collegato arduino)
  • Baud Rate > 19200
  • Files > Flash > Selezionate il vostro firmware .hex da flashare

Dovrebbe essere più o meno così:

Cattura

6. Premete “START!” e incrociate le dita…

Due parole su quale firmware caricare sul vostro USBasp

Sul sito di Thomas Fischl (http://www.fischl.de/usbasp/) l’ultima versione disponibile del firmware è la usbasp.2011-05-28.tar.gz

Pare (praticamente certo), però, che l’ultima versione sia leggermente buggata e che le versioni più vecchiotte non supportano in pieno MCU con memoria flash >64k, dunque non avremo la possibilità di aggiornare i nostri Arduino con Atmega2560.

Ho trovato in giro per la rete questa versione corretta che pare funzioni a dovere: http://openrcforums.com/forum/viewtopic.php?f=10&t=1363#p29615

-Si ringrazia Romolo per la versione riveduta e corretta del firmware-