Go Down

Topic: Vitesse Skateboard (Read 190 times) previous topic - next topic

Maxvi33

Bonsoir à tous,

je réalise un petit projet personnel dont le but est de connaitre la vitesse de mon skate. Pour cela j'utilise un capteur à effet hall couplé à un petit écran de Nokia.

D'une part voici le programme pour afficher la vitesse sur le petit écran LCD:

Code: [Select]


//Mesure du nombre de tours avec capteur à effet Hall + aimant.
//Interruptions pour mesurer le temps entre 2 valeurs HIGH du pin 2.
//Capteur sur pin 2 et pull up interne sur pin 2 activé.
// pin 7 - (SCLK)
// pin 6 - (DIN)
// pin 5 -  (D/C)
// pin 4 - (CS)
// pin 3 - (RST)


#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Adafruit_PCD8544.h>
#include <avr/sleep.h>
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
   
float tp_ms ;             
volatile long lastTime;
volatile long period = 0;

void setup()                     
{     
  attachInterrupt(0,highTime, RISING);     
  digitalWrite(2, HIGH);
  display.begin();
  display.setContrast(50); 
  tp_ms = 0;
  period = 0;



void loop()                           

  if (period >= 0)               
  {   
   tp_ms = ((2 * 3.14 * 0.045) / period) * 3600;
   period=0;
  display.clearDisplay();// efface le lcd
  display.setTextSize(2);
  display.setTextColor(BLACK);
  display.setCursor(20,4);
  display.println(tp_ms, DEC);
  display.display();// affiche lettres
  delay(500);  
  }
}


void highTime ()                         
{
  long time;
  time = millis();
  period = (time - lastTime);
  lastTime = time ;         
}




Mais voilà, j'aimerai pouvoir afficher la vitesse sur mon téléphone portable. J'utilise une petite carte Bluetooth JY-MCU qui marche à merveille pour allumer une petite led depuis mon téléphone avec le programme ci-dessous:

Code: [Select]


/* simple test LED */
char val;         // variable pour recevoir les données du port série
int ledpin = 13;  // LED connected to pin 2 (on-board LED)

void setup()
{
  pinMode(ledpin = 13, OUTPUT);       // broche 13 en mode sortie
  Serial.begin(115200);               // communication série en 115200bps
}
 
void loop() {
  if( Serial.available() )            // si des données sont reçu sur le port série
  {;}                                 // ...rien...
  val = Serial.read();                // lecture des données est stock dans 'val'
 
  if( val == '0' )                    // si '0' est reçue
  {
    digitalWrite(ledpin, LOW);        // LED 13 est éteint
    delay(1000);                      // attend une seconde
    Serial.println("13 off");         // envoi "13 off" sur le port sortie
  }

if( val == '1' )                      // si '1' est reçue
 {
    digitalWrite(ledpin = 13, HIGH);  // LED 13 est allumé on
    delay(1000);                      // attend une seconde
    Serial.println("13 on");          // envoi "13 on" sur le port sorti
  }
}



Et enfin voilà mon problème, je ne sais absolument pas comment dire a la carte bluetooth d'envoyer ma vitesse sur mon téléphone. (j'utilise l'application Blue tem sur mon téléphone mais dans l'avenir j'aimerais me faire une petite application Processing).

Si vous savez comment faire, je serais très intéressé par votre aide.
Merci d'avance

Maxvi33


Artouste

#2
Jul 23, 2015, 06:30 pm Last Edit: Jul 23, 2015, 06:30 pm by Artouste
bonjour
c'est les vacances , il n'y a pas enormement de monde dispo :smiley-mr-green:

Pour ton projet , le plus simple :
- du coté arduino  
un module BT HC05 ou HC06 (JY-MCU c'est le "nom" d'un fabricant de PCB asiatique)
quelle référence exacte ton module BT (ou photos)

- du coté smartphone si c'est sous android , une petite appli AppInventor

Maxvi33

Bonsoir Artouste,

Merci de ta réponse, j'utilise le module suivant http://www.dx.com/fr/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299#.VbEkf_ntlHw

Même avec la librairie softwareserial je n'arrive pas à envoyer la valeur "tp_ms" (la variable qui contient ma vitesse) de mon arduino sur mon téléphone.

Sinon je vais regarder appinventor de suite :)

Artouste

Bonsoir Artouste,

Merci de ta réponse, j'utilise le module suivant http://www.dx.com/fr/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299#.VbEkf_ntlHw

Même avec la librairie softwareserial je n'arrive pas à envoyer la valeur "tp_ms" (la variable qui contient ma vitesse) de mon arduino sur mon téléphone.

Sinon je vais regarder appinventor de suite :)
fais des photos recto/verso de TON module
je penche pour un HC06 , mais sans garantie
une fois le module bien determiné , les reste sera simple avec AppInventor :smiley-mr-green:

Maxvi33

C'est exactement celui-ci :)





Artouste

C'est exactement celui-ci :)
A priori , c'est bien un HC06
topic à suivre pour moi demain 8)

Artouste

#7
Jul 24, 2015, 02:59 pm Last Edit: Jul 24, 2015, 03:04 pm by Artouste
bonjour
petit test rapide avec un uno, un BT HC06 , un soft de simu de vitesse, une petite appli Mii2


code arduino de simu
Code: [Select]

#include <SoftwareSerial.h>
//
SoftwareSerial BTSerial(2, 3); // RX | TX
// RX arduino <--- TX cible BT HC06
// TX arduino ---> RX cible BT HC06
byte entkm=48; // km/h partie entiere
byte deckm=12; // km/h partie decimale

void setup()

{
  Serial.begin(57600); // vitesse serial monitor

  BTSerial.begin(9600);  // vitesse software serial NB ne pas depasser 57600
}

void loop()
{


  if (BTSerial.available()) Serial.write(BTSerial.read());


  if (Serial.available()) BTSerial.write(Serial.read());
  BTSerial.print(" ");
  BTSerial.print(entkm);
BTSerial.print(".");
BTSerial.print(deckm);

delay(1000);
entkm=random(0, 50); // rnd pour simulation
deckm=random(0, 99); // rnd pour simulation
}


fichiers android
fichier .apk
fichier .aia

Go Up