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.

La mia guida riguarda una delle prime tecniche per la conversione, in cui bisognava riprogrammare il controller con un pickit.

Attualmente,  il software di radioman permette di riprogrammare tutto via usb senza usare il pickit: leggete i pdf all’interno del suo tool di conversione.

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

Mirror: Radioman TL866 ToolKit

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ì 🙂

 

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-

 

“Tuco” – Targhetta a porta – Versione Raspberry PI

tucoeyes

 

Tuco 2.0 è una targhetta elettronica a porta: “intelligente”, open source e open hardware.

E’ stata concepita per essere installata sulle porte degli studi della nostra università.

Lo scopo della targhetta è visualizzare in tempo reale informazioni del tipo: numero dello studio, docente/i, orari di ricevimento, contatti mail e/o telefonici etc etc… ma soprattutto avvisi presi in tempo reale da uno dei canali di comunicazione dell’università.

Tuco 2.0 è l’evoluzione del prototipo pubblicato precendemente; questa versione sfrutta Raspberry PI, minicomputer ideato in UK dalla «Raspberry PI Foundation».

Questa versione si distingue dalla precedente, in quanto il software di base è un sistema operativo basato su Linux.

Lo schema di funzionamento consiste:

  1. Alimentazione tramite rete elettrica
  2. Bootstrap del sistema
  3. Visualizzazione desktop
  4. Apertura automatica della pagina web (in fullscreen), memorizzata su server dell’ateneo

Lista dei componenti:

  1. raspberry pi modello b -> http://www.robot-italy.com/it/raspberry-pi-model-b-512mb.html
  2. monitor 7″ -> http://www.ebay.it/itm/221194928628
  3. penna wifi usb -> http://www.ebay.it/itm/360545397917
  4. 1x alimentatore 5v @ 1A -> http://www.ebay.it/itm/161035612727
  5. 1x alimentatore 12v @ 1A -> http://www.ebay.it/itm/121034125746
  6. scheda SD da 8GB (possibilmente classe 10) -> http://www.ebay.it/itm/110955861749

Totale ~130€

Dopo aver installato su sd la distribuzione Raspbian “wheezy” (http://elinux.org/RPi_Easy_SD_Card_Setup), collegarsi alla rete wifi “screens”.

Parametri di configurazione:

sudo apt-get upgrade && sudo apt-get update
sudo apt-get install unclutter
sudo nano /etc/xdg/lxsession/LXDE/autostart

#@lxpanel –profile LXDE
@pcmanfm –desktop –profile LXDE
#@xscreensaver -no-splash
@xset s off
@xset -dpms
@xset s noblank
@unclutter
@midori -e Navigationbar -e Fullscreen -a http://web.uniparthenope.it/screens/player.php?id=cdnXXX

sudo nano /boot/config.txt

disable_overscan=0
overscan_top=-16
overscan_bottom=-16
framebuffer_width=480
framebuffer_height=234
sdtv_aspect=3

sudo nano /etc/environment

http_proxy=http://192.167.9.178:3128/
https_proxy=http://192.167.9.178:3128/
ftp_proxy=http://192.167.9.178:3128/
no_proxy=”localhost,127.0.0.1,10,9.4.20,.uniparthenope.it”
HTTP_PROXY=http://192.167.9.178:3128/
HTTPS_PROXY=http://192.167.9.178:3128/
FTP_PROXY=http://192.167.9.178:3128/
NO_PROXY=”localhost,127.0.0.1,10.9.4.20,.uniparthenope.it”

sudo nano /etc/ntp.conf

server 192.167.9.3 iburst

sudo date -s “28 MAY 2013 14:52:00″ //data attuale da configurare

sudo reboot

enjoy!

 

CWM su Flytouch 8 / SuperPad VIII

Salve

Con questa guida vorrei spiegarvi come installare CWM (ClockWork Mod) sul nostro tablet Android FlyTouch 8 (BC1003).

Prerequisiti: ROOT

Scompattate questo file cwm6028-a10-9part-v2 e inserite i file recovery.img e install-recovery.sh nella memoria interna del vostro tablet (disabilitate il “debug usb” se siete sotto windows 7 64bit).

Ora scaricate un emulatore terminale sul vostro tablet e lanciatelo.

su    
cd sdcard
sh install-recovery.sh

Fatto!

Ora avete installato CWM sul vostro tablet.

Per entrare nella recovery, spegnere il tablet, e contemporaneamente tenere premuto POWER e il tasto HOME

enjoy!

GUIDA root tablet Android – Flytouch 8 / SuperPad VIII

Salve

Questa è la mia guida al volo per fare il rooting sul tablet Flytouch 8 (BC1003).

Cattura

Prima di cominciare bisogna dire che il rooting che ho effettuato è avvenuto con successo su Windows 7 32bit (sul 64bit non funziona causa driver mancanti).

Guida:

  1. Impostare la modalità “debug USB” dal menu “opzioni sviluppatore”
  2. Collegare il cavo alla USB superiore (vicino al jack audio) al proprio pc e aspettare l’installazione dei driver.
  3. Scaricare questo SOC, decomprimerlo e per comodità piazzarlo in C:
  4. Aprire un prompt dei comandi con start>cerca>cmd
  5. Digitare i seguenti comandi per entrare nella directory ADB:
cd C:\
cd SOC
cd ADB

Ora inizia il root vero e proprio:

Se il servizio ADB è già in esecuzione, killarlo dalla taskmanager.

ADB root
ADB shell mount -o remount,rw /system
ADB push su-3.0.3.2-efghi-signed /system/xbin/su
ADB shell chown 0.0 /system/xbin/su
ADB shell chmod 04755 /system/xbin/su
ADB shell mount -o remount,ro /system
ADB install -r Superuser-3.0.7-efghi-signed.apk
ADB shell mount -o remount,rw /system
ADB push su-3.0.3.2-efghi-signed /system/bin/su
ADB shell chown 0.0 /system/bin/su
ADB shell chmod 04755 /system/bin/su

Fatto!

Piccole aggiunte opzionali:

  1. aggiornate subito Superuser 
  2. modificate il build.prop in questo modo per sbloccare tutte le app dal playstore:
ro.product.model=GT-I9300
ro.product.name=GT-I9300
ro.product.device=GT-I9300
ro.build.product=GT-I9300

Seminario programmazione embedded #2

 

Il giorno 01/03/2013 si è tenuto, presso l’Università degli studi di Napoli “Parthenope”, il secondo seminario sulla programmazione embedded.

In particolare si è parlato di Arduino e di un paio di progetti fatti al volo.

Durante l’hangout ha partecipato il prof. Raffaele Montella da Chicago.

Allego codici sorgente utilizzati durante il seminario.

E ricordo, che il codice da utilizzare per cosm.com è possibile trovarlo registrandosi al sito.

Sensore temperatura LM35

void setup()
{
  //seriale aperta a 9600 baud
  Serial.begin(9600);
}

void loop()
{ 
  int analogPin=0; //pin analogico 0
  float sensor =0;  

  //leggiamo e convertiamo la temperatura dal pin 0 di arduino
  sensor = analogRead(analogPin);
  sensor = (5.0 * sensor * 100.0)/1024.0;
  //teoria: http://learn.adafruit.com/tmp36-temperature-sensor

  //stampa sulla seriale
  Serial.print("Temperatura: ");
  Serial.println(sensor);

  delay(1000);
}

LM35 + LCD

/*
 Demonstration sketch for Adafruit i2c/SPI LCD backpack
 using MCP23008 I2C expander
 ( http://www.ladyada.net/products/i2cspilcdbackpack/index.html )

 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * 5V to Arduino 5V pin
 * GND to Arduino GND pin
 * CLK to Analog #5
 * DAT to Analog #4
*/

// include the library code: http://learn.adafruit.com/i2c-spi-lcd-backpack/downloads
#include "Wire.h"
#include "LiquidCrystal.h"

// Connect via i2c, default address #0 (A0-A2 not jumpered)
LiquidCrystal lcd(0);

void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  //seriale aperta a 9600 baud
  Serial.begin(9600);
}

void loop() {
  int analogPin=0; //pin analogico 0
  float sensor =0;  

  //leggiamo e convertiamo la temperatura dal pin 0 di arduino
  sensor = analogRead(analogPin);
  sensor = (5.0 * sensor * 100.0)/1024.0;
  //teoria: http://learn.adafruit.com/tmp36-temperature-sensor

  //stampa sulla seriale
  Serial.print("Temperatura: ");
  Serial.println(sensor);

  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  lcd.print(sensor);

  delay(1000);
}