2013 juin 7

Test Bluetooth, Arduino et Android

Je viens de recevoir mon Nexus 4 et je dis au revoir à mon Iphone 3g et surtout au système IOS très stable mais très fermé à moins de jailbreaker son téléphone.

Mon premier mini projet est de tester la connexion bluetooth entre le NEXUS 4 et une carte Arduino UNO. 

Pour le matériel : 

  • une carte arduino UNO
  • un téléphone NEXUS 4
  • une carte bluetooth JY-MCU V5
  • une LED

Pour le câblage il faut suivre le schéma suivant :

Dans un premier temps j'ai du configurer la carte bluetooth JY-MCU. Après diverses recherches, j'ai trouvé un programme (voir si dessous), qui entre autre, permet de modifier la vitesse de transmission de la carte, le code PIN, le nom du périphérique etc.
#include <SoftwareSerial.h> 
SoftwareSerial mySerial(10, 11); // RX, TX
 
 
void setup()
{
Serial.begin(9600);
Serial.println("Goodnight moon!");
//mySerial.begin(115200);
mySerial.begin(9600);
delay(1000);
mySerial.print("AT");
delay(1000);
mySerial.print("AT+VERSION");
delay(1000);
mySerial.print("AT+PIN1342"); // code pin 1342
delay(1000);
mySerial.print("AT+NAMEFresaBT"); // donne le nom FresaBT
delay(1000);
//mySerial.print("AT+BAUD8"); // met le baudrate à 115200
mySerial.print("AT+BAUD4"); // met le baudrate à 9600
delay(1000);
}
 
 
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}

Ensuite j'ai chargé ma carte avec le programme suivant qui va allumer la LED 13 quand on envoie "1" et éteint la LED 13 quand on envoie "0".

/* simple test LED */
char val;         // variable pour recevoir les données du port série
int ledpin = 13;  // DEL connecté à la broche 13
void setup()
{
pinMode(ledpin, OUTPUT);       // broche 13 en mode sortie
Serial.begin(9600);               // communication série en 9600bps
}
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);        // DEL 13 est éteint
delay(1000);                      // attend une seconde
Serial.println("DEL off");      // envoi "DEL off" sur le port série
}
if( val == '1' )                      // si '1' est reçue
{
digitalWrite(ledpin, HIGH);  // DEL 13 est allumé
delay(1000);                      // attend une seconde
Serial.println("DEL on");         // envoi "DEL on" sur le port série
}
}

Enfin j'utilise BlueTerm une apps pour la communication entre le telephone et l'arduino

Rien de mieux qu'une petite démonstration en vidéo :

Source :