Problème HC05
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Problème HC05



  1. #1
    invite5c6fd540

    Problème HC05


    ------

    bonjour à tous
    je travaille actuellement sur un projet bluetooth. j'élabore deux système bluetooth.
    le premier système est équipé d'un bouton poussoir avec lequel je dois actionner pour envoyer un message d'allumage d'une lampe avec le premier HC05.
    le second système est équipé d'un second module hc05 qui recoit l'instruction, traite l'information a partir d'un pic et allume enfin la lampe.
    le code est bon, les deux configuration de module sont bon mais le problème est que dès le premier appairage entre les modules; je n'arrive pas a allumer la lampe.
    si ce n'est apres deux ou trois reconnexion entre les modules. j'aimerai savoir pourquoi un tel fonctionnement?
    merci

    -----

  2. #2
    invitead6c50a3

    Re : Problème HC05

    Bonjour,
    sans voir ton code difficile de savoir si ton code est bon.
    Si tu n'as pas prévu de bien gérer une perte inopinée de l'appairage tu auras ce type de résultat.
    Ou un problème de timing.
    A quelle distance des 2 modules fais-tu tes essais?

  3. #3
    invite5c6fd540

    Re : Problème HC05

    Merci de m'avoir répondu. mes deux modules ne sont pas distant de plus de 2 mètres (dans ma phase de test).
    cependant vous avez parlé de "perte inopinée de l'appairage"; j'aimerai en savoir plus

  4. #4
    invite5c6fd540

    Re : Problème HC05

    //code emetteur

    #include <SoftwareSerial.h>

    SoftwareSerial BTSerial(3,2);

    int etat = 0;
    const int buttonPin = 4;
    int buttonEtat = 1;

    void setup()
    {
    BTSerial.begin(9600);
    pinMode(buttonPin, INPUT);
    digitalWrite(buttonPin, HIGH);
    }

    void loop()
    {
    if(BTSerial.available() > 0) // Vérifie si les données proviennent du port série
    {

    etat = BTSerial.read(); // Lit les données du port série
    }

    // contrôle de la lampe
    buttonEtat = digitalRead(buttonPin); //Lit les données de boutton
    if (buttonEtat == LOW)
    {
    BTSerial.write('1'); // envois du message pour allumage
    }
    else
    {
    BTSerial.write('0');
    }

    }

  5. A voir en vidéo sur Futura
  6. #5
    invite5c6fd540

    Re : Problème HC05

    //code récepteur

    #include <SoftwareSerial.h>

    SoftwareSerial BTSerial(3,2);

    int etat = 0;
    const int led = 1;

    void setup()
    {
    BTSerial.begin(9600);
    pinMode(led, OUTPUT);
    digitalWrite(led, LOW);
    }

    void loop()
    {
    if(BTSerial.available() > 0) // Vérifie si les données proviennent du port série
    {

    etat = BTSerial.read(); // Lit les données du port série
    }

    if (etat == '1')
    {
    digitalWrite(led, HIGH); // LED ON
    delay(100);
    etat = 0;
    }
    if (etat == '0')
    {
    digitalWrite(led, LOW); // LED Off
    etat = 0;
    }
    }

  7. #6
    invitead6c50a3

    Re : Problème HC05

    Tu envoies bien les données sur ton port série mais je ne vois nul part l'initialisation du module bluetooth ni sa gestion...

  8. #7
    invite5c6fd540

    Re : Problème HC05

    en ce sens vous parlez de mon mode de configuration pour mes deux modules en E/R?

  9. #8
    invite5c6fd540

    Re : Problème HC05

    #include <SoftwareSerial.h>

    SoftwareSerial BTSerial(10, 11); // RX | TX

    void setup()
    {
    pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
    digitalWrite(9, HIGH);
    Serial.begin(9600);
    Serial.println("Enter AT commands:");
    BTSerial.begin(38400); // HC-05 default speed in AT command more
    }

    void loop()
    {
    // Keep reading from HC-05 and send to Arduino Serial Monitor
    if (BTSerial.available())
    Serial.write(BTSerial.read());

    // Keep reading from Arduino Serial Monitor and send to HC-05
    if (Serial.available())
    BTSerial.write(Serial.read());
    }

  10. #9
    invitead6c50a3

    Re : Problème HC05

    Non toujours pas.
    Le code que tu montres met le HC05 en mode de commande AT.
    Il y a forcément une procédure d'appairage à faire entre tes 2 modules pour qu'ils conversent et une procédure de rattrapage en cas de perte de la comm.

  11. #10
    invitead6c50a3

    Re : Problème HC05

    Si j'ai bien compris ce que tu me dis, tu as 2 µC ayant chacun un HC05.
    Il faut donc que le module maître (celui qui envoie l'ordre d'allumage) envoie la commande "AT" au second et que celui-ci réponde au premier par un "OK".
    A réception du "OK" les 2 modules sont initialisés.

    Il faut donc que de ton module émetteur tu envoies la commande "AT", puis tu te mets en écoute de la réponse du récepteur qui doit te réponde un "OK".
    Coté récepteur c'est l'inverse, tu dois être en attente de réception de la commande "AT", puis tu envoies le "OK" puis tu attends de recevoir les ordres (0 ou 1) de l'émetteur.

  12. #11
    invite5c6fd540

    Re : Problème HC05

    Oui c'est exactement cela, j'ai 2 µC ayant chacun un HC05.
    ainsi je dois modifier mes deux codes au niveau des "setup" de façon à recevoir les messages "AT" et "OK"?

  13. #12
    invitead6c50a3

    Re : Problème HC05

    Je ne connais pas le mode d'appairage du HC05, mais je suppose qu'il faut lui dire qui est "master" et qui est "slave".
    Peut être n'est-ce pas utile, il faut que tu regardes dans sa doc.
    Si on considère que ce n'est pas utile:

    Pour le master essaye avec ce code:

    Code:
    int state = 0;
    const int ledPin = 8; // au choix
    const int buttonPin = 2; // au choix
    int buttonState = 1;
    
    void loop()
    {
     //  si des datas arrivent sur le port série:
     if(BTSerial.available() > 0) state = BTSerial.read(); // lecture des datas
      
     // détection de l'état d'appui du bouton poussoir de commande led
     buttonState = digitalRead(buttonPin); // on lit l'état du BP
     if (buttonState == LOW) // si BP appuyé
     {
      BTSerial.write('1'); // on envoie l'ordre '1' sur le port série
     }
     else  // si BP pas appuyé
     {
      BTSerial.write('0'); // on envoie l'ordre '0' sur le port série
     }
     
     if (state == '1') // si le SLAVE retourne '1' (acquittement de bonne réception)
     {
      digitalWrite(ledPin, HIGH); // LED master "ON"
      state = 0;
     }
     else if (state == '0') // si le SLAVE retourne '0'
     {
      digitalWrite(ledPin, LOW); // LED MASTER "OFF"
      state = 0;
     }
    }
    Pour le slave:

    Code:
    void loop() 
    {
    // controle si des données sont disponibles
     if(BTSerial.available() > 0) state = BTSerial.read(); // lecture des datas du port série
     
    // traitement des ordres
      if (state == '1') 
     {
      digitalWrite(led, HIGH); // on allume la led du module slave
      state = 0;
     }
     else if (state == '0') 
     {
      digitalWrite(led, LOW); // on éteint la led du module slave
      state = 0;
     }
    }

  14. #13
    invite5c6fd540

    Re : Problème HC05

    ok pas de soucis je vais essayer le code pour voir.
    Mais dans ce cas, quelles instructions au niveau du code récepteur va assurer le retour pour allumer la led au niveau du maître?

  15. #14
    invitead6c50a3

    Re : Problème HC05

    Dans le module slave ou récepteur, dès que tu auras allumé ta led tu envoies l'acquittement au maitre sur le port série.
    Un truc dans ce style:

    Code:
    void loop() 
    {
    // controle si des données sont disponibles
     if(BTSerial.available() > 0) state = BTSerial.read(); // lecture des datas du port série
     
    // traitement des ordres
      if (state == '1') 
     {
      digitalWrite(led, HIGH); // on allume la led du module slave
      BTSerial.write('1'); // envoie de l'acquittement LED ON au maître
      state = 0;
     }
     else if (state == '0') 
     {
      digitalWrite(led, LOW); // on éteint la led du module slave
      BTSerial.write('0');  // envoie de l'acquittement LED OFF au maître
      state = 0;
     }
    }

Discussions similaires

  1. Remédier à un problème de chauffage quand les pros ne suffisent à résoudre le problème
    Par invite06702e3e dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 2
    Dernier message: 14/08/2020, 09h59
  2. [Energie] Alimentation sur batterie d'un arduino mini+lcd+hc05
    Par inviteb2c36586 dans le forum Électronique
    Réponses: 3
    Dernier message: 01/05/2017, 12h52
  3. compilateur pour hc05/11
    Par LABTOOL48 dans le forum Électronique
    Réponses: 1
    Dernier message: 05/12/2008, 17h17
  4. Réponses: 13
    Dernier message: 05/12/2008, 10h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...