Posiadając dwa moduły HC-05 postanowiłem połączyć je w parę, by przekazywały między sobą informację. Wymyśliłem najprostszy z możliwych układów oparty na mikro-włączniku i diodzie LED. Naciśnięcie przycisku w jednym z układów powoduje zapalenie diody w drugim i odwrotnie.
Bardzo pomocny okazał się ten artykuł.
Aby wszystko odbyło się bez problemów należy najpierw przygotować oba moduły, gdyż jeden z nich musi pełnić rolę MASTER, drugi SLAVE. Przypisane role potrzebne są wyłącznie przy parowaniu obu modułów, potem nie ma znaczenia który moduł jest który. W każdym razie obecny stan mojej wiedzy na to wskazuje.
Pierwsze co należy zrobić by móc skonfigurować moduł, to wejść w tryb komend AT. Pisałem już o tym tu.
Jeśli mamy podłączone tak jak tam oba moduły, możemy wysłać komendy.
Dla modułu, który pełni funkcję SLAVE:
- AT : Sprawdza połączenie (powinno zwrócić “OK”)
- AT+ORGL : Przywraca fabryczne ustawienia
- AT+ROLE: Wyświetla tryb pracy modułu (1=master/0=slave). Powinien być tryb 0. (AT+ROLE=0).
- AT+UART : Wyświetla prędkość transmisji. Powinna wynosić 38400. (AT+UART=38400,0,0)
- AT+ADDR : Wyświetla adres modułu. Kopiujemy i zapisujemy. Adres mojego modułu wyświetlił się tak: 21:13:1FA96.
- AT+RESET : Resetuje moduł i wychodzi z trybu AT
Dla modułu, który pełni funkcję MASTER:
- AT : Sprawdza połączenie
- AT+ORGL : Przywraca fabryczne ustawienia
- AT+ROLE: Wyświetla tryb pracy modułu (1=master/0=slave). Ustawiamy tryb 1. (AT+ROLE=1).
- AT+UART : Wyświetla prędkość transmisji. Powinna wynosić 38400. (AT+UART=38400,0,0)
- AT+CMODE=0 – powoduje że moduł HC-05 będzie się podłączał do konkretnego modułu, którego adres podamy w następnym kroku.
- AT+BIND=“zapisany wcześniej adres”. Adres mojego modułu wpisuję tak: AT+BIND=21,13,1FA96. Dwukropki zamieniamy na przecinki.
- AT+RESET : Resetuje moduł i wychodzi z trybu AT
Teraz należy tylko podłączyć moduły do Arduino. Ja użyłem płytki Arduino Uno i Nano. Oto schemat połączeń:
Rezystor o wartości 1k.
Wgrywamy program. Ten sam do obu modułów.
KOD
#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11);
int state = 0;
const int ledPin = 8;
const int buttonPin = 2;
int buttonState = 0;
void setup() {
Serial.begin(9600);
BTserial.begin(38400);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
BTserial.write('1'); //sends a 1 through the bluetooth serial link delay (1);
} else {
BTserial.write('0');
delay(1);
}
if (BTserial.available() > 0) {
state = BTserial.read(); //czytanie danych z BT
} if (state == '1') {
digitalWrite(8, HIGH); // LED ON state = 0;
} else if (state == '0') {
digitalWrite(8, LOW); // LED OFF state = 0;
}
}
Po podłączeniu zasilania do obu płytek moduły powinny się sparować. Podwójne mignięcia diod na obu HC-05 oznaczają, że tak się stało.
Teraz, jeśli wszystko zostało podłączone prawidłowo, naciśnięcie przycisku na dowolnej płytce spowoduje wysłanie przez bluetooth informacji, odczytanie, czego efektem będzie zaświecenie diody na drugiej płytce.
I to wszystko.
LINK
- How To Configure and Pair Two HC-05 Bluetooth Modules as Master and Slave | AT Commands
- ESP8266 Bluetooth | NodeMCU Bluetooth | ESP8266 Android application, HC05 or HC06 Bluetooth
- ESP32 Bluetooth Classic with Arduino IDE – Getting Started