Archivio per la categoria Arduino

ArduScooter 2.0 — Arduino + Bluetooth + Android = :-)

Il post è stato spostato qui

http://eco-mobilita.blogspot.it/2012/05/arduscooter-20-arduino-bluetooth.html

The link has been moved here

http://eco-mobilita.blogspot.it/2012/05/arduscooter-20-arduino-bluetooth.html

Annunci

, , ,

3 commenti

ArduScooter – il logging su PC

Con questo post direi che possiamo chiudere la descrizione della prima versione di ArduScooter.

Ho fatto un breve video che spiega piu’ chiaramente come funziona l’interfaccia tra Arduino ed il PC, perche’ va bene leggere i dati istantanei quando sei in giro, ma se vuoi capire come si comporta lo scooter nel tempo devi poter scrivere i dati da qualche parte per poi analizzarli. La soluzione che ho usato è quella di collegare il PC ad Arduino per poi leggere ogni secondo i valori dei sensori.

L’applicazione , attraverso la porta seriale, resta in ascolto ed appena Arduino invia dei dati li cattura per poi scriverli su disco. Questa soluzione ha l’handicap di doversi portare dietro un portatile e di mantenere attiva la connessione via USB su Arduino, ammetto che non è il massimo della comodità , ma per la prima versione messa in pista è andata piu’ che bene.

 

Ed ecco il video dimostrativo!!

 

, , ,

6 commenti

ArduScooter visto da vicino (e da fermo!)

Oggi voglio presentarvi piu’ in dettaglio il sistema di monitor che ho fatto allegando un video , ma questa volta da fermo, per dimostrare il funzionamento del sistema.

In sintesi nel video potrete vedere:

–         Dove ho messo il microprocessore ed i suoi collegamenti

–         L’accensione ed il messaggio di benvenuto “Ccris”!!!

–         Il funzionamento dei sensori e la corrispondente visualizzazione su LCD

–         L’utilizzo dei pulsanti per cambiare il layout su LCD

–         L’utilizzo del pulsante per azzerare i valori scritti su Eprom

Non avevo ancora mostrato in modo chiaro il funzionamento e con questo video spero di aver dato una idea piu’ chiara del suo funzionamento.

Poi tra un po’, non so dire ancora di preciso quando, installero’ una nuova versione che prevede molti miglioramento, quindi volevo chiudere con il video la versione 1.0 di ArduScooter, prossimamente vi presentero’ la prossima versione!

Cosa cambiera’?

– Si collegherà via bluetooth

– Potrà rilevare le informazioni con maggiore accuratezza (oggi a 10 bit con la nuova versione sarà a 12bit)

– Leggera’ anche il voltaggio di tutte le 20 celle del pacco batteria e lo farà con letture differenziate (positivo e massa separate) e senza partitori resistivi, quindi mi aspetto una precisione davvero buona

 

Ma adesso ecco  il nuovo video

, , ,

4 commenti

Tra poco lo scooter sarà wireless

E’ da un po’ che ci sto lavorando, cercavo un modulo bluetooth shield ben fatto che mi consentisse di collegare il mio PC al microprocessore senza fili e devo dire che senza troppe grane sono riuscito a compiere il primo passo. L’obiettivo è di fare in modo di inviare per il momento al mio PC ed in futuro ad un telefono cellulare (Android sarebbe il target) i dati raccolti da Arduino  (ampere , temperatura etc..) cosi da poterli scrivere e se necessario analizzarli in seguito.

Per dimostrare che non mento 😉 nella immagine allegata qui sotto trovate un esempio di funzionamento della connessione senza fili:

Mediante applicazione Java scrivo un testo che poi invio ad Arduino, una volta che il micro riceve il dato lo scrive sulla seriale, infatti la si vede apparire nel serial monitor dell’IDE di Arduino a verificare che il giro sia ok. Ho potuto provarlo in casa a circa 10m di distanza ed un paio di muri e la connessione rimane buona.

Image

A breve quindi conto di modificare il programma che rileva tutti i dati sul mio scooter e di spedirli via bluetooth a vari dispositivi.

Diciamo che adesso ho stabilito la comunicazione con il PC, ma tendere mi piacerebbe far funzionare il tutto su un cellulare Android, ammesso che mi decida a comprarne uno

In realtà l’utilizzo del bluetooth è solo parte del progetto che ho in mente e che riguarda un sistema di monitoring delle celle (per il momento solo 20) con lettura senza partitori di tensione e valori a 12bit, quindi vicini al millivolt come precisione max.

Questo è il sistema bluetooth che ho comprato, costa un po’, ma mi è arrivato in pochi giorni ed è ben documentato, per iniziare credo che sia tra i migliori, non si deve fare altro che inserirlo in Ardu!!

http://www.robot-italy.com/product_info.php?products_id=2426

, ,

4 commenti

ContaKM parziale su Arduino, usa la EEPROM

Ecco un esempio semplificato per scrivere i dati parziali su EEPROM. Io ho usato una libreria che è veramente semplice da usare e affidabile.

I campi memorizzati sono quelli che uso come parziale, quando spengo e riaccendo lo scooter ovviamente vengono recuperati, poi ho un pulsante il cui compito è quello di azzerarne i valori, come fareste con l’auto.

Fate attenzione che su questo tipo di memoria le scritture sono limitate, per intendersi oltre le 100.000 scritture puo’ fulminarsi. Io ho fatto in modo di memorizzare su EEPROM ogni 0,5Km percorsi.

N.B.: Prima di fare qualsiasi lettura, almeno una volta occorre fare una scrittura per assegnare ai byte utilizzati un valore, altrimenti la funzione di read va in crisi.

 

#include <avr/eeprom.h>

struct settings_t
{
double kmPerc; //km percorsi
double Ahconsum; // AH consumati totali
double parzkmPerc; // parziale km percorsi (trip)
double Ahparz; // AH consumati totali
};

#include <LiquidCrystal.h> // we need this library for the LCD commands // initialize the library with the numbers of the interface pins
LiquidCrystal lcd(4,5,6,7,8,9); // define our LCD and which pins to user
unsigned long i;
settings_t settings;

void setup()
{

Serial.begin(9600);
eeprom_read_block((void*)&settings, (void*)0, sizeof(settings));
settings.kmPerc=13734.0; //km percorsi
settings.Ahconsum=999.1; // AH consumati totali
settings.parzkmPerc=0.0; // parziale km percorsi (trip)
settings.Ahparz=0.0; // AH consumati totali
eeprom_write_block((const void*)&settings, (void*)0, sizeof(settings));
delay(100);
eeprom_read_block((void*)&settings, (void*)0, sizeof(settings));
// aggiungo +1 e scrivo su Eprom
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
// settings.kmPerc=settings.kmPerc+1.0;
lcd.print(settings.kmPerc);

}
void loop()
{
delay(1000);
lcd.setCursor(0,0);
lcd.print(settings.kmPerc);

}

 

, , , , ,

Lascia un commento

Funzione di calcolo velocità

Ecco la funzione che sviluppato per calcolare la velocità raggiunta dallo scooter.

Si parte dall’assunzione di non usare l’ingresso digitale, ma analogico, ho usato questo sistema perche’ i PIN digitali mi servono per fare altre cose in futuro..

 

Questo per dare una idea di come si implementano con facilità soluzioni su Arduino..

Ecco il codice:

/variabili x conta KM
int pincontgiri=5; // legge segnale x contagiri
int state; //the state of the input
int oldstate;
unsigned long t; //timer
unsigned long s; //samples
unsigned long c; //count
double f=0; //frequency
double cont=0;
double sensvalgiri=0;
double giricalc=0; // lettura del valore sensore di hall
// End variabili contaKM

double GetKmh()
{
// la funzione calcola il nr di giri al secondo in funzione di un ciclo di valutazione
c = 0;
t = millis(); // read time at start of sampling
for(s=0; s<1500; s++){ //take a number of samples dura circa 0,4 sec
sensvalgiri = analogRead(pincontgiri);
sensvalgiri=sensvalgiri/1023*5;
if (sensvalgiri > 3)
{
state = 1; // se il segnale analogico supera i 3V vuol dire che hall sensor è attivo
}
else
{
state = 0; // se il segnale analogico supera i 3V vuol dire che hall sensor è 0
}
if (state != oldstate){ //lo stato è cambiato:
c++; //conta il nr di cambiamenti
oldstate = state; //and reset current state
}

}
t = millis() – t; //read time at end of sampling

c = c/2; // need to divide by 2 because counter incremented on each change – two changes per cycle

f = 1000*c/t; //calcola il nr di volte che hall sensor è attivo per un secondo

// in km/h
// dove 23= nr di volte che hall sensor va a 5V
// 1.42 metri di circonferenza ruota
// il resto dei numeri serve a convertire i valori da sec a h e da metri a KM
f= (f/23*3600*1.42/1000);

return f;

}

, , , , ,

Lascia un commento

Schema dei collegamenti dei sensori tra Arduino e lo scooter elettrico

Il post è stato spostato qui

http://eco-mobilita.blogspot.it/2012/03/schema-dei-collegamenti-dei-sensori-tra.html

The link has been moved here

http://eco-mobilita.blogspot.it/2012/03/schema-dei-collegamenti-dei-sensori-tra.html

, , , , , ,

3 commenti