Bluetooth communication arduino-android

Bonjour
Je souhaite établir une communication entre un Arduino Uno et un smartphone Android. La communication fonctionne dans un seul sens : je peux envoyer un caractère du smartphone vers l'Arduino mais pas l'inverse.

  • module bluetooth grove il est connecté aux pins D2 RX et D3 TX
  • sur le téléphone j'utilise Serial Bluetooth terminal
#include <SoftwareSerial.h>   
#define RxD         2
#define TxD         3
#define PINLED      4
#define LEDON()     digitalWrite(PINLED, HIGH)
#define LEDOFF()    digitalWrite(PINLED, LOW)
#define DEBUG_ENABLED  1
const int pbt1 = 8; // bouton test
int bs1 = 0;
char recvChar;
SoftwareSerial blueToothSerial(RxD,TxD);

void setup()
{
    Serial.begin(9600);
    blueToothSerial.begin(9600);
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    pinMode(PINLED, OUTPUT);
    pinMode(pbt1,INPUT);   // bouton test
}

void loop()
{    bs1 = digitalRead(pbt1); 
    if (bs1 == 1){ 
       Serial.println("string sent");
      delay(100); 
       blueToothSerial.print("1234");
       blueToothSerial.flush();
    }
     if(blueToothSerial.available())
      {
        recvChar = blueToothSerial.read();
        Serial.println(recvChar);
            
        if(recvChar == '1')
         {
            Serial.println("1 received");
            digitalWrite(PINLED, HIGH)
         }
        else if(recvChar == '0')
         {
            Serial.println("0 received");
            digitalWrite(PINLED, LOW)
         }
       }
       delay(100);
    
}

La chaîne "string sent" apparaît dans le moniteur série. Donc le bouton fonctionne.
Mais la chaîne "1234" n'apparaît pas sur l'écran du terminal
La pin D3 de l'Arduino est bien connectée à la pin RX du module.
Si je connecte le module aux pins D6 et D7 de l'Arduino même problème.
Si je connecte le buzzer, le bouton, et le module BT sur un Arduino Mega sur les mêmes pins, c'est l'inverse qui se passe : je peux envoyer à partir du Mega mais pas à partir du smartphone. Le texte 1234 est bien affiché sur le terminal.

Quelqu'un aurait une idée sur ce qui coince ? Le problème vient fort probablement de ce qui se trouve entre la chaise et le clavier mais je ne vois pas.

Merci pour votre aide.

Virez cela, c’est fait pour vous par software serial

essayez un println() pour envoyer du texte à Android (au cas où le terminal attendrait une ligne entière)

Avez vous besoin d’une adaptation de tension pour votre module BT ?

Bonsoir
Merci pour votre réponse.
J'ai trouvé un code qui fonctionne ... je connecte le module sur les pins 19 RX et 18TX

#define RxD         19 
#define TxD         18 

Je supprime cette ligne

SoftwareSerial blueToothSerial(RxD,TxD);

Et je remplace cette ligne :

blueToothSerial.begin(9600);

Par celle-ci

Serial1.begin(9600);

Et ensuite

Serial1.print("@USDV;USAR;LDAV;LDAR;ECLF;ECDRG#");
if(Serial1.available())

Et la communication fonctionne dans les 2 sens.
J'avais pourtant repris le code fourni avec la doc du module.
Merci pour vos commentaires

Oui, sur une MEGA c'est bien d'utiliser Serial1 (ou 2 ou 3). C'est un port matériel, c'est bcp plus robuste que l'émulation logicielle de Software Serial

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.