Bluetooth HC-06

Immagino che chiunque abbia  provato ad utilizzare il modulo Bluetooth HC-06 con Arduino si sia scontrato con il setup del Baud, l’unità di misura del Baud Rate che è la quantità di dati trasmessi in un secondo.

Di default, il modulo ha un Baud pari a 9600.
Tuttavia, se volessimo usare il modulo con S4A (Scratch 4 Arduino) avremo bisogno di un baud diverso, in questo caso usando un comando AT+BAUD6. Qui sotto la mappatura completa:

AT+BAUD1——-1200
AT+BAUD2——-2400
AT+BAUD3——-4800
AT+BAUD4——-9600 – Default for hc-06
AT+BAUD5——19200
AT+BAUD6——38400 – Scratch 4 Arduino
AT+BAUD7——57600 – Johnny-five speed
AT+BAUD8—–115200
AT+BAUD9—–230400
AT+BAUDA—–460800
AT+BAUDB—–921600
AT+BAUDC—-1382400

Una volta configurato, il modulo manterrà la velocità impostata fino alla successiva modifica.

Ed ecco lo script completo:

#define ROBOT_NAME "PESCABOT"
#define ROBOT_PIN "AT+PIN0000"

// If you haven't configured your device before use this:
#define BLUETOOTH_SPEED 9600
// If you have already modified the module, use previous velocity configuration:
// #define BLUETOOTH_SPEED xxxxx

#include <SoftwareSerial.h>

// Swap RX/TX connections on bluetooth chip
// Pin 10 --> Bluetooth TX
// Pin 11 --> Bluetooth RX
SoftwareSerial mySerial(10, 11); // RX, TX

/*
The posible baudrates are:
AT+BAUD1-------1200
AT+BAUD2-------2400
AT+BAUD3-------4800
AT+BAUD4-------9600 - Default for hc-06
AT+BAUD5------19200
AT+BAUD6------38400 - Scratch 4 Arduino
AT+BAUD7------57600 - Johnny-five speed
AT+BAUD8-----115200
AT+BAUD9-----230400
AT+BAUDA-----460800
AT+BAUDB-----921600
AT+BAUDC----1382400
*/

void setup() {
  Serial.begin(57600);
  while (!Serial) {
    // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.println("Starting config");
  mySerial.begin(BLUETOOTH_SPEED);
  delay(1000);

  // Should respond with OK
  mySerial.print("AT");
  waitForResponse();

  // Should respond with its version
  mySerial.print("AT+VERSION");
  waitForResponse();

  // Set pin to 0000
  mySerial.print(ROBOT_PIN);
  waitForResponse();

  // Set the name to ROBOT_NAME
  mySerial.print("AT+NAME");
  mySerial.print(ROBOT_NAME);
  waitForResponse();

  // Set baudrate to 57600
  mySerial.print("AT+BAUD6");
  waitForResponse();

  Serial.println("Done!");
}

void waitForResponse() {
  delay(1000);
  while (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  Serial.write("\n");
}

void loop() {}

Lascia un commento