venerdì 16 settembre 2011

TOMTOM ALLA RIBALTA........

Chi ha comprato recentemente un dispositivo tomtom (tipo il via 115) ha scoperto che non è più possibile collegare il tomtom normalmente al pc e vedere cosa c'è al suo interno come se fosse un disco usb. Fin ora tutti i dispositivi tomtom avevano un sistema operativo proprietario ed era possibile leggere il tomtom come un disco fisso usb. Da ora, invece la tomtom ha deciso di montare sui propri dispositivi un sistema operativo Linux e quindi di fatto ha abbandonato il filesystem fat32. Oggi ho avuto tra le mani un dispositivo del genere e non ho potuto fare a meno di incuriosirmi. La domanda che mi sono fatto è: "Come fa la tomtom ad aggiornare i dati sul dispositivo?". Così ho collegato il dispositivo al pc con il cavo usb in dotazione e sullo screen del tomtom mi è comparso un avviso che mi diceva di collegarmi al sito tomtom per aggiornare il dispositivo. Io ovviamente sono andato a leggere il log del mio sistema Linux ed ho visto che il dispositivo veniva letto come periferica di rete. Ho dato un lsusb -v ed ho notato che effettivamente il sistema operativo sul pc era proprio Linux. Così ho dato il comando:
ifconfig -a

ed ho notato che è comparso un nuovo dispositivo di rete denominato usb0. Allora mi sono chiesto forse il dispositivo funzionerà come server http. Così ho dato il comando:
dhcpcd usb0

ed ecco che mi è stato assegnato l'ip dal server 169.254.255.1 che appunto è il mio dispositivo tomtom. Il prossimo passo è stato quello di scoprire quale porte erano attive sul fantomatico server e quindi ho dato il comando:
nmap 169.254.255.1

E qui la scoperat di due porte aperte una http e un'altra ssh. Ovviamente ho provato la strada più facile ed ho aperto il browser facendolo puntare all'indirizzo 169.254.255.1 e da qui l'errore, in pratica il web server mi nega le pagine disponibili (me lo aspettavo, sarebbe stato troppo facile). Allora indago ancora e provo la connessione ssh da terminale dando il comando:
ssh root@169.254.255.1

e da qui l'amara sorpresa che blocca ogni altra strada:
Permission denied (publickey).

Quindi è chiaro che la tomtom aggiorna il proprio dispositivo attraverso il protocollo ssh. L'unica cosa che rimane da fare per ottenere qualcos'altro e sniffare il traffico di connessione ssh tra tomtom e il pc...ma questa è un'altra storia....a presto!

mercoledì 22 giugno 2011

T.A.R.: Tutorial Arduino Relè

Oggi vi presento un tutorial che vi permetterà di utilizzare attraverso un piccolo circuito un relè con arduino, visto che in giro non ho trovato nulla in lingua italiana che lo spiegasse davvero bene.

MATERIALE NECESSARIO:
- Arduino (in questo tutorial utilizzeremo Arduino UNO ma va bene uno qualsiasi);
- Un transistore (in questo tutorial utilizzeremo un BC547B npn ma va bene un qualsiasi transistore npn basta calcolare l'oppurtuna resistenza poi vedremo come);
- Un resistore (in questo tutorial ne utilizzo 3 per ottenere la resistenza desiderata);
- Un diodo (in questo tutorial utilizzo 1N4007 ma si può utilizzare un 1N4004 oppure un qualsiasi altro diodo a secondo della vostra necessità);
- Un relè (in questo tutorial utilizzo un relè a 5V dc in maniera da alimentarlo con arduino, la sigla del relè è HFD41);
- Un buzzer (opzionale l'utilizzo per far emettere un suono quando il relè si eccita)

DESCRIZIONE:
Utilizzando un uscita digitale di arduino andiamo ad alimentare attravjavascript:void(0)erso la base il transistore BC547B. Il BC547B (transistore, da ora in poi lo chiamo bjt) deve essere utilizzato come interruttore il che vuol dire che deve funzionare in regione di saturazione. Al collettore del bjt va collegato il relè e l'emettitore deve andare a massa. Infine all'altro capo del relè mettiamo l'alimentazione di 5V che preveleremo comunque da arduino. Infine per cortocircuitare la corrente derivante dalla tensione di induzione nel momento di spegnimento del relè usiamo un diodo in parallelo al relè. Lo schema che ho appena descritto è questo:



ANALISI FUNZIONAMENTO:
Il funzionamento di questo circuito è davvero semplice. Quando il bjt è in regione di interdizione e cioè il pin 13 di arduino è nello stato LOW allora un terminale del relè si troverà a VCC=5V e l'altro sarà appeso perché il bjt è off quindi il relè non varierà il suo stato (quindi non chiuderà il contatto e quindi il buzzer sarà aperto e non emetterà suoni). Appena il pin 13 di arduino viene impostato a HIGH allora il bjt andrà in regione di saturazione e quindi lo possiamo assumere come un circuito chiuso e quindi un terminale del relè sarà a VCC=5V (prelevabile da arduino) mentre un altro sarà a massa allora in questo caso il relè varierà il suo stato (cioè chiuderà il contatto facendo emettere un suono al buzzer);

CALCOLO DEI PARAMETRI:
Ora non ci resta che calcolare i parametri del circuito. Visto la semplicità del circuito dobbiamo calcolare semplicemente la resistenza sulla base del bjt. Per fare ciò applichiamo la legge di Kirchhoff per la tensione alla maglia perccorsa dal pin 13 dell'arduino verso massa passando dalla base-emettitore del bjt (e sapendo che il pin 13 di arduino quando si trova sullo stato di high emette una tensione di circa 5V), quindi guardando la figura possiamo scrivere:

PIN13-Vr-Vbe=0

dove:
- PIN13 è la tensione sul pin 13 dell'arduino quando è HIGH cioè 5 V
- Vr è la tensione sul resistore che possiamo anche scrivere come R*I e I la conosciamo perché è la corrente che scorre nella base e leggendo dal datasheet del BC547B ci accorgiamo che la corrente di base affinchè il bjt sia in saturazione deve essere 0,0005 Ampere e quindi I=0,0005 Ampere
- Vbe è la tensione base-emettitore del transistore, leggendo il datasheet del BC547B capiamo che il bjt in regione di saturazione ha una Vbe=0,7 Volt

quindi riscrivendo possiamo affermare che:
R*I=PIN13-Vbe

e quindi calcoliamo la resistenza come:
R=(PIN13-Vbe)/I=(5-0,7)/0,0005=8600 Ohm

Quindi ora siccome personalmente non ho una resistenza da 8600 Ohm combino tre resistenze una da 10KOhm in parallelo con quella da 4,7KOhm e tutto in serie con una da 4,7KOhm che mi da una resistenza finale di circa 7,8KOhm. Ora anche se è più bassa di 8,6KOhm di circa un MegaOhm comunque mi assicura una corrente nella base leggermente superiore a 0,5mAmpere e quindi sono sicuro che sarà in saturazione.

COLLEGAMENTO DEL RELÈ:
Non potevo non descrivere il funzionamento del relè. Il mio relè è un HFD41 a 5 V DC. Prendendo il datasheet possiamo osservare come è fatto internamente il nostro relè:



Questa è una vista da sotto come possiamo capire dalla scritta. Quindi vediamo che il relè presenta un contatto normalmente aperto e che va a chiudere quando è eccitato. Quindi i terminali centrali vanno collegati rispettivamente uno al collettore del bjt e uno all'alimentazione di 5V mentre uno qualsiasi dei terminali a sinistra guardando la foto va collegato al pin 12 dell'arduino e l'altro terminale in alto a destra guardando la foto va collegato al positivo del buzzer. Infine giusto per completezza il negativo del buzzer va collegato a massa (questo lo si può vedere dallo schema circuitale postato a inizio pagina).

CODICE ARDUINO:
Infine per concludere eccovi lo sketch che deve andare caricato su arduino:
void setup(){
pinMode(13,OUTPUT); // viene settato il pin 13 come uscita
pinMode(0,OUTPUT); // viene settato il pin 0 come uscita
digitalWrite(0,HIGH); // viene posto il pin 0 a livello alto perché deve far suonare il buzzer
}

void loop(){
digitalWrite(13,HIGH); // mette il pin 13 a livello alto facendo andare il bjt in saturazione
// ed eccitando il relè e facendo suonare il buzzer
delay(100); // attende 1 millisecondo
digitalWrite(13,LOW); // pone il pin 13 a livello basso spegnendo il bjt e spegnendo il relè
delay(5000); // attende 5 secondi e poi il ciclo si ripete
}


Eccovi alcune foto che riguardano il montaggio dei componenti sulla breadboard:





Ecco un video del funzionamento, purtroppo senza audio (accontentatevi...):


Infine ecco il link ai datasheet:
relè HFD41
BC547

Con questo è tutto, ci sentiamo alla prossima!
Se avete qualche domanda non esitate!