Bluetooth JY-MCU

Bonjour à tous!

J'ai commandé il y a quelques jours pas mal de petits composants à utiliser avec mon Arduino Duemilanove, et notamment un module bluetooth JY-MCU. J'essaye depuis quelques jours de le faire marcher, et j'ai un soucis. Bon déjà j'ai pas de bluetooth ni sur mon pc, et mon galaxy ACE ne voit pas le module mais ça, c'est juste galére; le module arrive bien à se pairer avec la tablette d'un couchsurfer qui est chez moi ces jours ci.

Donc en gros, j'aimerais bien pouvoir recevoir et envoyer des données à mon arduino via le bluetooth. En utilisant différentes app de terminal bluetooth sur la tablette android qu'on m'a prété, j'arrive à recevoir des infos de l'arduino (ça s'affiche sur le téléphone); par contre, quand j'envoie des infos à partir du téléphone, rien ne se passe. L'arduino ne réagit pas.

J'ai déjà paramétré le JY-MCU avec un cable FTDI via mon pc et tout, du coup le taux de bauds est bon (Baud rate, je sais pas comment on dit en français), le pin aussi. Je pense que le branchement est correct, puisque j'arrive à transmettre des données de l'arduino vers le smartphone. Voila voila. Est ce que vous avez déjà eu le même soucis? J'ai lu un peu partout qu'avec ce module, il y avait pas mal de gens qui galéraient avec le reset. Mais je me dis que si la tablette arrive à recevoir des infos, à priori c'est que le module et l'arduino arrivent un peu à communiquer, non?

Ah oui, et j'ai utilisé trois app différentes sur la tablette, ça ne change rien.

Mon code ci dessous (j'ai repris la quasi totalité de ce code http://dukextrem.blogspot.pt/2013/02/test-du-module-bluetooth-jy-mcu.html)
/* 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() {
Serial.println("Welcome. 1 to light on, 0 to ligth off.");
while(Serial.available() == 0)
{;}
val = Serial.read(); // lecture des données est stock dans 'val'
Serial.println("I received something!");
if( val == '0' ) // si '0' est reçue
{
digitalWrite(ledpin, LOW); // LED 13 est éteint
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
Serial.println("13 on"); // envoi "13 on" sur le port sorti
}
Serial.flush();
}

Merci d'avance pour vos avis éclairés!

Salut,

Aie déjà Serial.flush(); ça fait pas ce que ça dit ... Ensuite un petit delay() avant de lancer la lecture du buffer série c'est pas plus mal (le temps qu'il se remplisse).

Je te propose déjà ça :

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, OUTPUT);       // broche 13 en mode sortie 
  Serial.begin(115200);               // communication série en 115200bps 
}
 
void loop() {


  while(Serial.available() == 0);
delay(5);
while(Serial.available()) val=Serial.read(); // ça c'est un vrai flush ;)
digitalWrite(ledpin,HIGH);
delay(1000);
digitalWrite(ledpin,LOW);
}

Au moins tu sauras déjà si quelque chose arrive jusqu'à l'Atmega

Hey, merci pour ta réponse!

Malheureusement, ça ne marche pas. J'avais essayé en callant quelques delay un peu partout dans mon code, et ça n'avait pas marché. Je viens d'essayer avec ton code, ça ne marche pas non plus.

J'ai remarque autre chose. Tout à l'heure, j'ai connecté l'Android avec Blue term, l'Android a reçu quelques caractéres, mais l'arduino n'a rien pu recevoir. Puis j'ai ouvert le terminal serial Arduino, je lui ai dit deux trois trucs, l'arduino a réagit (il a reçu ce que j'avais envoyé via le terminal serial). Et les lignes que j'avais tapé avec mon pc sont apparues sur l'Android.

Merci pour ta réponse en tout cas, d'autres pistes?

De nouveau!

Quelqu'un sur le forum anglais m'a donné ce code
void setup()
{
Serial.begin(115200);
Serial.println("OK then, you first, say something.....");
Serial.println("Go on, type something in the space above and hit Send, or just hit the Enter key");
}

void loop()
{
while(Serial.available()==0)
{}
delay(500);
Serial.println("I heard you say: ");
while(Serial.available()>0)
{
Serial.write(Serial.read());// note it is Serial.WRITE
}
Serial.println("");
}

Qui fonctionne partiellement quand je débranche l'arduino du PC et que je met un source d'alimentation externe. C'est un début!

Merci pour votre aide, à bientot

as-tu fais attention à la différence de niveau de tension entre arduino 5V et module BT 3.3v ?
il faut adapter en mettant un pont diviseur pour rabaisser la tension à 3.3V
y a pas mal de tuto là dessus j'ai suivi et ça a marché....

+1

Surtout que le coup de "ça marche en alim externe et pas au PC" semble appuyer cette théorie

bonjour
si ça peut aider
une discussion ici
http://forum.arduino.cc//index.php?topic=187302.0

et perso avec un galaxy ace j'utilise pour les test amarino 2.0
blueterm il me semble que ça coinçait

http://www.amarino-toolkit.net/index.php/download.html

test simple (on/off de la led par 1 ou 0 envoyé par amarino)

void setup()
{
  pinMode(13, OUTPUT);    
  Serial.begin(9600); // modifier le taux de bauds si necessaire
  delay (500);
  }

void loop()
{
  while (Serial.available() == 0); // wait for character to arrive
  char c = Serial.read();
  if(c =='1') {
    digitalWrite(13, HIGH);   // set the LED on
  }
  if(c == '0'){
    digitalWrite(13, LOW);  // set the LED off
  }
  delay(500);
  
}

Bonjour,

Voici un lien vers une App qui crée un joystick virtuel sur l'écran d'une tablette ou d'un smartphone Android
Coté Arduino, la meme carte JY-MCU est utilisée

http://forum.arduino.cc//index.php?topic=173246.0

Je suis dispo pour toutes infos complémentaires

kas:
Bonjour,

Voici un lien vers une App qui crée un joystick virtuel sur l'écran d'une tablette Andoid
Coté Arduino, la meme carte JY-MCU est utilisée

Android Bluetooth joystick - Networking, Protocols, and Devices - Arduino Forum

Je suis dispo pour toutes infos complémentaires

bonjour
tu pouvais pas le dire avant ? :grin:
super appli, je viens de tester sans probleme sur un galaxy ace et module BT HC-06

petite suggestion sur l'appli android , ce serait difficile de mettre une gestion du mode de fonctionnement (un pti bouton) du joystick entre retour auto au centre ou garder la position apres "relachage" ?

edit : RTFM :grin: j'ai trouvé , c'est prevu dans les options

super appli, je viens de tester sans probleme sur un galaxy ace et module BT HC-06

Merci :blush:

ce serait difficile de mettre une gestion du mode de fonctionnement (un pti bouton) du joystick entre retour auto au centre ou garder la position apres "relachage" ?

Regarde Options/Joystick behavior (auto return to center),
ça doit pouvoir t'aider :wink:

kas:

super appli, je viens de tester sans probleme sur un galaxy ace et module BT HC-06

Merci :blush:

ce serait difficile de mettre une gestion du mode de fonctionnement (un pti bouton) du joystick entre retour auto au centre ou garder la position apres "relachage" ?

Regarde Options/Joystick behavior (auto return to center),
ça doit pouvoir t'aider :wink:

oui , merci j'avais trouvé 8)

OK
Si tu as des commentaires ou suggestions pour améliorer l'application, je suis preneur :stuck_out_tongue:

kas:
OK
Si tu as des commentaires ou suggestions pour améliorer l'application, je suis preneur :stuck_out_tongue:

Je vais jouer un peu avec et je n'hesiterais pas
déjà et sans avoir aucune idée des possibilités/difficultés, je verrais bien un bouton clickable au centre de la "boule" du joystick

déjà et sans avoir aucune idée des possibilités/difficultés, je verrais bien un bouton clickable au centre de la "boule" du joystick

J'ai essayé, ça ne donne rien d'intéressant, car le fait de presser le bouton central entraine souvent un déplacement indésirable du joystick. :disappointed_relieved:
J'ai donc ajouté des boutons, qui peuvent être configurés en ON/OFF ou en poussoir

kas:

déjà et sans avoir aucune idée des possibilités/difficultés, je verrais bien un bouton clickable au centre de la "boule" du joystick

J'ai essayé, ça ne donne rien d'intéressant, car le fait de presser le bouton central entraine souvent un déplacement indésirable du joystick. :disappointed_relieved:
J'ai donc ajouté des boutons, qui peuvent être configurés en ON/OFF ou en poussoir

c'est ce que je me suis dit apres avoir posté
c'est bien sympa comme appli
un truc qui pourrait etre sympa, mais je sais que la place est comptée
mettre 2 slider (un en X et un en Y) pouvant etre utilisé sur arduino comme trim ou autres usages.

un truc qui pourrait etre sympa, mais je sais que la place est comptée
mettre 2 slider (un en X et un en Y) pouvant etre utilisé sur arduino comme trim ou autres usages.

Je prepare une nouvelle application qui permettra également le pilotage avec les accelerometres, en inclinant le smartphone.
En raison de la place limitée, j'ai inclu un écran séparé pour le réglage du trim.
Voici une copie écran dans Eclipse:

kas:

un truc qui pourrait etre sympa, mais je sais que la place est comptée
mettre 2 slider (un en X et un en Y) pouvant etre utilisé sur arduino comme trim ou autres usages.

Je prepare une nouvelle application qui permettra également le pilotage avec les accelerometres, en inclinant le smartphone.
En raison de la place limitée, j'ai inclu un écran séparé pour le réglage du trim.
Voici une copie écran dans Eclipse:

ok , merci , c'est sympa

ce sera une valeur de trim independante (nouvelles "variables" vers arduino ) ou impactant les valeurs X/Y du joystick sous android ?

quand c'est dispo tu fais signe ici ? :grin:

ok , merci , c'est sympa
ce sera une valeur de trim independante (nouvelles "variables" vers arduino ) ou impactant les valeurs X/Y du joystick sous android ?

Il s'agit d'un décalage de zéro sur les valeurs X/Y du joystick (de -10 à +10)

quand c'est dispo tu fais signe ici ?

OK :wink:

@BobbyWomack
Nous avons détourné le sujet initial :roll_eyes: :roll_eyes: :roll_eyes:
As-tu résolu ton problème de transmission ??