3 novembre 2011

4 - Arduino salva dati inviati da PROCESSING nella EEPROM

In questo programma ho utilizzato la EEPROM del mio Arduino per salvare le coordinate del mouse inviate da PROCESSING.


Componenti utilizzati: Arduino UNO, PROCESSING, led.


Descrizione:
ArduinoUNO è dotato di 1Kb (1024byte) di memoria EEPROM  per cui avremo spazio per 1024 dati da salvare.
Avendo a disposizione solamente 8 bit, ogni dato che salveremo nella EEPROM non dovrà superare il valore 255, in quanto con 8 bit possiamo esprimere al massimo 256 numeri.
Per facilitare le cose e, per il motivo sopra citato, ho deciso di creare una finestra di disegno con PROCESSING che non supera i 255 pixel d' altezza e di larghezza!
Per gestire la memoria EEPROM di Arduino ho usato la libreria "EEPROM.h" dove le tre funzioni principali sono:
-"EEPROM.clear()" per azzerare la memoria;
-"EEPROM.write(indirizzo,valore)" per scrivere i dati in memoria;
-"EEPROM.read(indirizzo)" per leggere i dati in memoria;

Con PROCESSING ho scritto un semplice programma che creare una finestra (255 x 255) e  trasmette i dati delle coordinate X e Y del mouse (solamente se premuto) ad Arduino tramite porta seriale.
Il primo dato inviato su seriale corrisponde alla coordinata X del mouse, mentre il secondo dato inviato corrisponde alla coordinata Y del mouse.

Avendo a disposizione solamente 1024 indirizzi di memoria EEPROM di Arduino ho deciso di salvare nei primi 512 indirizzi le coordinate di X e nei restanti 512 indirizzi le coordinate di Y, per cui dall'indirizzo 0 all'indirizzo 511 ci saranno le coordinate X e dall'indirizzo 512 all'indirizzo 1023 ci saranno le coordinate di Y.
La prima operazione che svolge lo Sketch di Arduino è quella di azzerare la memoria, dopo di che si mette in attesa di ricevere dati dalla porta seriale. Il primo dato che leggerà (coordinata X del mouse) verrà salvato all'indirizzo di memoria 0, mentre il secondo dato che riceverà (coordinata Y del mouse) verrà salvato all'indirizzo di memoria 512. IL dato successivo (coordinata X) verrà salvato all'indirizzo di memoria 1 e il dato dopo (coordinata Y) verrà salvato all'indirizzo 513, e così via.
Finiti gli indirizzi di memoria a disposizione, Arduino accenderà un led di avviso collegato al pin 13.
Così facendo abbiamo salvato le coordinate di dove siamo passati con il mouse nella nostra EEPROM.
Per fare una verifica basterà caricare su Arduino lo Sketch d'esempio "eeprom_read" per andare a leggere tutti i nostri dati salvati nella EEPROM.
Attenzione!!! bisogna  modificare lo Sketch nellla riga dove c'è:
(if == 512)
sostituendo il 512 con 1024. In questo modo il programma ci stamperà tutti i 1024 dati che abbiamo salvato.

Osservazioni:
Prima di effettuare la verifica dell'avvenuta memorizzazione delle coordinate X eY del mouse nella memoria EEPROM è necessario terminare l'esecuzione del programma scritto con PROCESSING altrimenti ci sarà la comunicazione seriale di Arduino occupata e non possiamo utilizzare il nostro monitor seriale.
Nello sketch di Arduino creato da me al termine della scrittura dei dati in memoria c'è una funzione chiamata "inizio()" che fa attendere ad Arduino 1 minuto prima di ricominciare il ciclo. Questa funzione potrà essere modificata in modo da utilizzare i dati salvati nella EEPROM  per svolgere determinate azioni:
per esempio si potrebbero collegare due attuatori lineari (formati da due motori passo a passo) che eseguono su un foglio di carta la scritta o il disegno fatti con il muose nella finestra di PROCESSING.


Programma con PROCESSING:
Puoi scaricare il file qui!

Sketch per Arduino:
Puoi scaricare il file qui!

Video:




2 novembre 2011

3 - Arduino Web Server per macchina WiFi




Descrizione:
Ispirato dalla tecnologia del "Ar drone" (quadricottero comandabile da iPhone tramite rete WiFi) ho pensato di applicarla ad una macchina telecomandata servendomi di pezzi trovati per casa!
L'obbiettivo sarà quello di creare una macchinina che trasmetta una rete WiFi in modo da poterla comandare da qualsiasi dispositivo in grado di connettersi ad essa: iPhone, Pc, Wii, PS3.....

Componenti utilizzati: ArduinoUNO, shield ethernet, macchina telecomandata, driver L298N, router WiFi, batteria per macchinina telecomandata, cavo ethernet.

Procedimento:
1- Smontare un macchinina telecomandata mantenendo solamente i motori;
2 - Procurarsi un router WiFi e smontarlo in modo da renderlo il più leggero possibile;
3 - Collegare Arduino all'apposito shield ethernet;
4 - Creare un web server e l'apposita pagina HTML dotata di 9 tasti per poter controllare la macchinina in ogni direzione;
5 - Caricare lo sketch creato su Arduino;
6 - Collegare i motori della macchinina ad Arduino servendosi del driver L298N;
7 - Montare il router sulla macchinina e collegarlo ad Arduino tramite un cavo ethernet;
8 - Alimentare il tutto con una batteria.

Abbiamo così creato una rete alla quale basterà agganciarsi tramite WiFi e digitando l'indirizzo del web server (192.168.1.177), caricato su Arduino, potremo comandare la nostra macchinina.
Il compito di Arduino sarà dunque quello di leggere la richiesta di movimento del client connesso al server ed eseguirla facendo muovere i motori della macchinina!



Sketch Arduino:
Scaricare sketch Arduino da qui!


Osservazioni e suggerimenti:
Volendo è possibile collegare un IP CAM al router della nostra macchinina per poter vedere dove andiamo direttamente dal pc:
Arduino - Macchinina WiFi Spia (post non ancora disponibile).

Video: