Je n'arrive pas à envoyer des infos sur mon HC 06

bonjour

je souhaite utiliser un hc 06 pour une voiture télécommandé mais je n'arrive pas à envoyer des informations de mon téléphone à mon hc 06 mais j'arrive à envoyer des infos de mon hc 06 sur mon téléphone

j'ai essayé les code sur internet et il ne fonctionnent pas chez moi

merci

Es-tu sûr qu'ils sont bien appairés ?
Quel soft utilises-tu sur ton smartphone ? Android ou iPhone ?
Sur Android, il y a Bluetooth Electronics qui propose des IHM toutes faites et les codes Arduino nécessaires à la communication. Ca peut te faire des exemples.

Bonsoir electronath_24

Publies ce code ou donnes le lien. Quel est ton câblage ?

Oui, tout à fait, mon préféré, dommage qu'il ne soit plus développé.

Cordialement
jpbbricole

http://les-electroniciens.com/videos/arduino-ep17-application-android-avec-le-module-bluetooth-hc-06

Je suus sur Android .

J'utilise déjà bluetooth électronique
La led du hc 06 reste allumé lors que le téléphone est connecté

Un incontournable du HC05 et HC06 : Martyn Currey : à lire

http://www.martyncurrey.com/tag/hc-06/

Sous Android, et vu ton besoin pour l'instant, BT Electronics est une Rolls. Je te conseille d'utiliser plutôt Serial Bluetooth Terminal, probablement mieux adapté et plus simple à utiliser.

Si tu fais un truc plus complexe ensuite, tu reviendras à BTE.

Non c'était un code pour apprendre a utiliser le bluetooth pour après l'utiliser sur la voiture et même avec le terminal ça ne marche pas

Bonsoir electronath_24

Publies ton code, je pense que tu as un problème de lecture du port serial du Bluetooth.
Par la même occasion, zip le scenario de BTE et mets le en ligne.

Cordialement
jpbbricole


#include <SoftwareSerial.h>

    SoftwareSerial HC06(11,10);
    const char DOUT_LED = 2;
    String messageRecu;

    void setup() {
      Serial.begin(9600);
      HC06.begin(9600);  
      pinMode(DOUT_LED, OUTPUT);
      digitalWrite(DOUT_LED, LOW);
    }
     
    void loop()
    {
        while(HC06.available())
        {
          delay(3);
          char c = HC06.read();
          messageRecu += c;
        }
        if (messageRecu.length() >0)
        {
          Serial.println(messageRecu);
          if (messageRecu == "LED:1")     
            {digitalWrite(DOUT_LED, HIGH);}
          if (messageRecu == "LED:0")
            {digitalWrite(DOUT_LED, LOW);}
          messageRecu="";
        }
    }

Je ne sais pas zip un scénario bte

Bonjour electronath_24

C'est vrai, que ce n'est pas si simple :woozy_face:

Mais, en fait ce n'est pas nécessaire, j'ai essayé ton programme et il fonctionne très bien dans les 2 sens.
Si tu ajoute une Text Box avec ce paramètere:


et ton programme légèrement modifié, j'ai ajouté:

			HC06.print("*RLED ON*");
			HC06.print("*RLED OFF*");

Ces textes sront visibles dans la Text Box à chaque commande de la LED, On ou Off

#include <SoftwareSerial.h>

SoftwareSerial HC06(11,10);    // Rx Tx
const char DOUT_LED = 2;
String messageRecu;

void setup() {
	Serial.begin(9600);
	HC06.begin(9600);
	pinMode(DOUT_LED, OUTPUT);
	digitalWrite(DOUT_LED, LOW);
	delay(500);
	HC06.println("depuis Arduino");
}

void loop()
{
	while(HC06.available())
	{
		delay(3);
		char c = HC06.read();
		messageRecu += c;
	}
	if (messageRecu.length() >0)
	{
		messageRecu.trim();
		Serial.println(messageRecu);
		if (messageRecu == "LED:1")
		{
			digitalWrite(DOUT_LED, HIGH);
			HC06.print("*RLED ON*");
		}
		if (messageRecu == "LED:0")
		{
			digitalWrite(DOUT_LED, LOW);
			HC06.print("*R2LED OFF*");
		}
		messageRecu="";
	}
}

Cordialement
jpbbricole

bonjour

je ne trouve pas votre paramètre et si le code fonctionne bien alors auriez-vous une solution pour qu il marche chez moi

merci

Si le code fonctionne bien chez @jpbbricole c'est que le problème vient d'ailleurs : connexion, module défectueux...

Bonjour electronath_24

J'ai fait mes essais avec BT Electronics et les essais on joué parce que BTE n'envoie pas de terminaison de données comme NL ou CR ce qui n'est pas, par défaut, le cas de Serial Bluetooth Terminal on peut corriger ça de 2 façons, en paramétrant différemment le terminal:


en sélectionnant None.
Ou plus simple et plus "universel", ajouter cette ligne au programme:

	if (messageRecu.length() >0)
	{
		messageRecu.trim();

Trim nettoie la chaîne reçue.
Le problème de ces caractères "invisibles" comme espace(s), CR (\r, NL, est qu'il sont inclus dans la comparaison comme if (messageRecu == "LED:1") ce qui fait que le test est toujours faux :woozy_face:

PS: Le programme du post #10 est modifié.
Cordialement
jpbbricole

merci mais ca ne marche toujours pas
en connexion
VCC 5v
GND GND
TXD 10
RXD 11
STATE DANS LE VIDE
KEY DANS LE VIDE

sinion j'ai un Shield disponible avec le kit eleego:

OSOYOO Robot Car Starter Kit for Arduino | STEM Remote Control App Educational Motorized Robotics for Building, Programming & Learning How to Code | IOT Mechanical DIY Coding for Kids Teens Adults : Amazon.fr: Jeux et Jouets

Bonjour electronath_24

Dans le programme il y a:
SoftwareSerial HC06(11,10); // Rx Tx

Ce qui veut dire;
Arduino 11 Rx sur HC-06 Tx
Arduino 10 Tx sur HC-06 Rx

Si c'est déjà ainsi, il reste les mesures ohmiques pour s'assurer des liaisons.

A+
Cordialement
jpbbricole

donc c'est bien branché le problème ne viens pas de là

Bonjour electronath_24

Pour essayer de cerner l'endroit du problème, en utilisant,
image
Recharges le programme du post #10, j'ai ajouté une ligne.
Ainsi, à chaque reset de l'Arduino, dane le terminal Bluetooth (TB) tu dois voir
image
le texte depuis Arduino , résultat de HC06.println("depuis Arduino"); ce qui valide le sens Arduino >>> TB.

Pour l'autre sens,
Dans TB tu paramètre un bouton ainsi (si c'est pas déjà fait :wink:)
image
Ensuite tu ouvres le
image
image
A chaque pression du bouton LED1 dans TB tu dois avoir, dans le moniteur,
image
et dans TB
image
*RLED ON*.

Essaies ça.

Cordialement
jpbbricole

le code quee vous m'avez donner ne marche pas dans les deux sens chez moi
le code qui marche dans le sens arduino>>telephoneé est le suivant:

void setup(){
  Serial.begin(9600); // configuration par défaut à 9600
}

void loop(){
  if (Serial.available()){
    char donnee=Serial.read();
    Serial.print("Donnée reçue: ");
    Serial.println(donnee);
  }

avec les branchements
rx 0
tx 1

Qu'est-ce qui fonctionne et dans quel sens ?

Le code que tu me donnes va forcément fonctionner. Essaies ton code complèt avec ces branchements (rx 0 tx 1).

Cordialement
jpbbricole

Le HC06 fonctionne en 3,3V