Pages: [1]   Go Down
Author Topic: [Non réglé] transmission de donnée PC => module bluetooth => arduino nano  (Read 735 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Mon but est de pouvoir à l'aide d'un terminal communiquer avec mon arduino par bluetooth. Pour commencer, j'ai voulu allumer une simple led connectée au pin D13 de mon arduino nano.

Ci-dessous vous pouvez voir la liste du matériel que j'ai utilisé.

- 1 led
- 1 résistance 1kohm
- 1 résistance 10kohm
- 1 résistance de 22 kohm
- 1 arduino nano
- 1 tiny breakout ft232rl foca v2.0
- 1 bluetooth bee - standalone

J'ai connecté mon module bluetooth à mon arduino comme sur le schéma suivant:

remarque:
1) n'ayant pas de reset comme sortie je ne l'ai pas connecté.
2) j'ai utilisé une résistance de 22 kohm au lieu de 15 car je suis assez limité en résistance.

Puis j'ai connecté ma led au pin d13.

Vous pouvez voir en annexe une image de mon montage ainsi que du branchement  du module.

Après avoir fait cela j'ai mis dans mon arduino le programme ci-dessous qui a pour but d'allumer lorsqu'un 1 est reçu sur le port série.

Quote
void setup()
{
  pinMode(13, OUTPUT);    
  Serial.begin(9800); //Initialize serial at 115200bps
}
 
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);
}


Maintenant c'est là que ca se complique si je suis les tutos que je trouve sur le ent je télécharge x-ctu mais ce programme détecte partiellement mon bluetooth il voit qu'il y a quelque chose mais n'arrive pas à détecter le firmware par exemple. De plus si je entre +++ dans le terminal ben ca fait rien. J'ai quand même un peu chercher et j'ai trouvé le bout de code ci-dessous  que je dois mettre dans mon module.

Quote
//********* start program *********
//#include <NewSoftSerial.h>   //Software Serial Port
#include <SoftwareSerial.h>   //Software Serial Port
#define RxD 2  // these '2' & '3' are fixed by the hardware
#define TxD 3

#define DEBUG_ENABLED  1

//NewSoftSerial blueToothSerial(RxD,TxD);
SoftwareSerial blueToothSerial(RxD,TxD);
int led = 5;
void setup()
{
    Serial.begin(9600);
    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    pinMode(led,OUTPUT);  // for 'XBee carrier' can be either '5' or '6'
    setupBlueToothConnection();
}

void loop()
{
  unsigned char control;
  unsigned char temp;
 
  while(temp!='4')  {
      temp=blueToothSerial.read();
     blueToothSerial.print("temp ="+temp);      
  }
 
  Serial.println("You are connected-1");
  blueToothSerial.print("You are connected-2");      
//You can write you BT communication logic here
 
 
  while(1){
  char bluetoothData = (char)blueToothSerial.read();
  blueToothSerial.print("bluetoothdata = "+ bluetoothData);

  if (blueToothSerial.available()) {
  
    Serial.write(bluetoothData);
  }
  if (bluetoothData == 'n') {
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)

    
  }
  if (bluetoothData == 'f') {
    digitalWrite(led, LOW);   // turn the LED off (LOW is the voltage level)
     blueToothSerial.print("led low ");
  }
  
  if (Serial.available())
    blueToothSerial.write(Serial.read());
  
  }  
 
}

void setupBlueToothConnection()
{
    blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
    delay(1000);
    sendBlueToothCommand("\r\n+STWMOD=0\r\n");    // 0 = slave
   sendBlueToothCommand("\r\n+STNA=SedBlutoth-st_XX\r\n");
    sendBlueToothCommand("\r\n+STAUTO=0\r\n");    // 0 = Auto-connect forbidden
    sendBlueToothCommand("\r\n+STOAUT=1\r\n");    // 1 = Permit Paired device to connect me
    sendBlueToothCommand("\r\n+STPIN=0000\r\n");
    delay(2000); // This delay is required.
    sendBlueToothCommand("\r\n+INQ=1\r\n");      // 1 = Enable been inquired (slave)
    delay(2000); // This delay is required.
}

//Checks if the response "OK" is received
void CheckOK()
{
  char a,b;
  while(1) {
    if(blueToothSerial.available())
    {
    a = blueToothSerial.read();
// ************************************* debug ********************************************
    Serial.write(a);    // show response from bluetooth module

    if('O' == a)
    {
      // Wait for next character K. available() is required in some cases, as K is not immediately available.
      while(blueToothSerial.available())
      {
         b = blueToothSerial.read();
        
// ************************************* debug ********************************************
    Serial.write(b);        
        
         break;
      }
      if('K' == b)
      {
        break;
      }
    }
   }
  }

  while( (a = blueToothSerial.read()) != -1)
  {
    //Wait until all other response chars are received
  }
}

void sendBlueToothCommand(char command[])
{
    blueToothSerial.print(command);
    CheckOK();  
}


//********* end program *********


Grâce à ce bout de code mon module est enfin détectable par mon ordinateur. Cependant, si je rentre 1 dans le terminal du port COM du bluetooth rien ne se passe. Par contre si je rentre des valeurs sur le port COM du breakout je vois apparaitre cette valeur dans le terminal du port COM du bluetooth. La led s'allume seulement lorsque je entre 1 dans le port COM de l'arduino.

Je vois qu'il y a transmission de donnée mais pas dans le sens que je veux. Arriveriez-vous à m'aider.

Etant en première année à l'école d'ingénieur en Suisse je connais les bases de la numérique et de l'analogique. Cependant il y a encore beaucoup de choses qui m'échappe comme le reset avec un condo et un transistor.






* 1.jpg (177.54 KB, 1280x720 - viewed 46 times.)

* 2.jpg (141.17 KB, 1280x720 - viewed 19 times.)
« Last Edit: December 24, 2012, 11:43:22 am by cyrillius » Logged

Pages: [1]   Go Up
Jump to: