- Wymagane materiały
- Schemat obwodu
- Wstępna konfiguracja modułów HC05
- Testowanie komunikacji Arduino do Arduino Bluetooth
Moduły Bluetooth HC-05 to podstawowe moduły Bluetooth dla każdego projektu Arduino! Łatwo jest podłączyć i kodować w Arduino IDE. W większości projektów zwykle łączymy się z HC05 z Arduino i używamy go do bezprzewodowej komunikacji z innym inteligentnym urządzeniem, takim jak telefon komórkowy. Jest to dość proste i stworzyliśmy z nim wiele interesujących projektów, takich jak robot sterowany przez Bluetooth, sterowanie głosowe przez Bluetooth, automatyka domowa Bluetooth itp. Czy jednak kiedykolwiek potrzebowałeś połączyć ze sobą dwa HC-05? Podłączenie HC05 do smartfona nie jest tak proste, wymaga to kilku dodatkowych kroków. Ten samouczek poprowadzi Cię przez ten proces. Wskakujmy od razu!
Wymagane materiały
- 2x Arduino (każdy model się nada; używam Arduino Uno R3 i Arduino Nano)
- 2x moduły Bluetooth HC05
- Płytka prototypowa
- Przewody połączeniowe
- Rezystor 2x 1kΩ
- Rezystor 2x 2,2kΩ
Schemat obwodu
To jest podstawowy schemat obwodu. Podłącz 2 z tych obwodów, jeden dla nadrzędnego i jeden dla podrzędnego. W przypadku połączeń wszystko, co tutaj robimy, to podłączenie HC05 do Arduino. Pin odbiornika (Rx) HC05 działa w zakresie od 0 V do 3,3 V, a Arduino w zakresie od 0 V do 5 V. Więc użyjemy rezystorów (R1 i R2), aby utworzyć dzielnik napięcia, aby zmniejszyć wyjście 5 V Arduino do 3,3 V, aby nie uszkodzić modułu HC05.
Używam 1kΩ dla R1 i 2,2KΩ dla R2, ale możesz użyć dowolnej wartości rezystora, o ile R2 jest w przybliżeniu dwukrotnością wartości R1 (R2 ≈ 2R1). Podobnie, powtórz obwodu zarówno dla pana i niewolnika, Arduino Mistrz Bluetooth obwodu i Arduino slave Bluetooth obwodu przedstawiono poniżej.
Wstępna konfiguracja modułów HC05
Jest to dodatkowy krok wymagany do połączenia ze sobą dwóch modułów HC05. Musimy zmienić niektóre ustawienia w module HC05 Bluetooth, aby to zrobić, musimy przejść do trybu poleceń AT modułu HC05 i wysłać do niego polecenia przez szeregowy monitor Arduino IDE. Aby to zrobić, musimy napisać kod Arduino, aby wysyłać polecenia przez monitor szeregowy do HC05.
Kod konfigurowania modułu HC05 można znaleźć na dole tej strony, wyjaśnienie kodu jest następujący
Dodaj bibliotekę SoftwareSerial do tego kodu.
#include < SoftwareSerial.h>
Zdefiniuj numery pinów transmisji (Tx) i odbioru (Rx). Używam pinu 2 dla Tx i pinu 3 dla Rx.
#define tx 2 #define rx 3
Podaj nazwę połączenia Bluetooth (tutaj używam configBt), a następnie powiedz bibliotece SoftwareSerial, który pin to Tx, a który to Rx. Składnia to bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Aby skonfigurować moduł Bluetooth, Arduino musi wysyłać do niego polecenia z szybkością 38400 bodów. Podobnie ustawiliśmy prędkość transmisji połączenia Bluetooth na 38400 bodów. Ustaw Transmit (Tx) na pin wyjściowy i Receive (Rx) na pin wejściowy
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Wewnątrz pętli forever znajduje się główny fragment kodu. Chodzi o to, aby wysłać wszystko, co jest wpisane w polu tekstowym na monitorze szeregowym, do HC05 przez pin Tx Arduino. Następnie wyświetl na monitorze szeregowym wszystko, co wysyła HC05.
void loop () {if (configBt.available ()) // jeśli HC05 wysyła coś… { Serial.print (configBt.readString ()); // drukuj na monitorze szeregowym} if (Serial.available ()) // jeśli monitor szeregowy wyświetla coś… {configBt.write (Serial.read ()); // napisz na pin Tx Arduino}}
Najpierw prześlij ten kod do Arduino podłączonego do modułu głównego HC05. Po wgraniu kodu odłącz kabel zasilający Arduino. Naciśnij i przytrzymaj przycisk na HC05. Teraz podłącz kabel zasilający Arduino, wciąż trzymając przycisk na HC05. W porządku, teraz możesz zwolnić przycisk na HC05. W ten sposób przechodzisz do trybu AT HC05. Aby sprawdzić, czy zrobiłeś to dobrze, upewnij się, że czerwona lampka na HC05 miga mniej więcej co jedną sekundę (miga powoli!). Zwykle przed podłączeniem HC05 do dowolnego urządzenia Bluetooth jego czerwone światło miga z bardzo wysoką częstotliwością (szybko miga!).
Następnie otwórz monitor szeregowy (przycisk monitora szeregowego znajduje się w prawym górnym rogu Arduino IDE). W prawym dolnym rogu okna Serial monitor, jeśli jeszcze tego nie zrobiłeś, upewnij się, że ustawiłeś koniec linii na „Zarówno NL, jak i CL”, a szybkość transmisji na 38400. Teraz wpisz AT w monitorze szeregowym, jeśli wszystko pójdzie dobrze, otrzymasz komunikat „OK” z HC05 wyświetlanego w oknie monitora szeregowego. Gratulacje! Zalogowałeś się pomyślnie w trybie poleceń AT modułu HC05.
Teraz wprowadź następujące polecenia w poniższej tabeli, aby skonfigurować główny moduł HC05:
COMMAND (wprowadź to w monitorze szeregowym i naciśnij enter) |
ODPOWIEDŹ (odpowiedź od HC05, wyświetlana na monitorze szeregowym) |
Funkcja (co robi to polecenie?) |
W |
dobrze |
Test |
W + CMODE? |
dobrze |
Sprawdź CMODE lub tryb połączenia ----------------------------- CMODE: 0 to slave 1 jest mistrzem |
AT + CMODE = 1 |
dobrze |
Ustaw CMODE na 1, gdy konfigurujemy master HC05 |
AT + ADDR? |
+ ADRES: FCA8: 9A: 58D5 dobrze * To jest adres mojego mistrza HC05. Twój adres będzie inny! |
Zwraca adres HC05, zanotuj to, ponieważ będziemy go później potrzebować! |
Następnie podłącz komputer do drugiego HC05, slave'a:
COMMAND (wprowadź to w monitorze szeregowym i naciśnij enter) |
ODPOWIEDŹ (odpowiedź od HC05, wyświetlana na monitorze szeregowym) |
Funkcja (co robi to polecenie?) |
W |
dobrze |
Test |
W + CMODE? |
dobrze |
Sprawdź CMODE lub tryb połączenia ----------------------------- CMODE: 0 to slave 1 jest mistrzem |
AT + CMODE = 0 |
dobrze |
Ustaw CMODE na 0, gdy konfigurujemy slave HC05 |
AT + BIND = FCA8,9A, 58D5 * Zastąp „:” w adresie nadrzędnym HC05 na „,” * Tutaj używam adresu mastera HC05 zanotowanego z poprzedniej tabeli. Powinieneś użyć adresu swojego mistrza HC05! |
dobrze |
Ustawienie adresu nadrzędnego HC05, z którym ten slave HC05 będzie się automatycznie łączył podczas uruchamiania |
W + BIND? |
+ BIND: FCA8: 9A: 58D5 dobrze * To jest adres mojego mistrza HC05. Twój adres będzie inny! |
Sprawdź wiążący adres swojego niewolnika. Jeśli pasuje do adresu twojego mistrza HC05, możesz iść! |
Testowanie komunikacji Arduino do Arduino Bluetooth
Po pierwsze, zasil zarówno moduł główny, jak i podrzędny HC05. Po włączeniu zasilania i po kilku sekundach spójrz na czerwone światło na modułach HC05.
Miga prędkość czerwonego światła |
Co to znaczy |
Miga z bardzo wysoką częstotliwością (szybko miga!) |
Niedobrze! Oznacza to, że moduły HC05 nie łączą się ze sobą! Czas na rozwiązywanie problemów! |
Miga z niską częstotliwością (wolno miga!) |
Miły! Zrobiłeś to! Ale nadal musimy zrobić jeszcze jedną kontrolę, aby mieć pewność, że ta konfiguracja działa! Pójść dalej! |
Gdy czerwone światła migają z niską częstotliwością (powoli migają!), Możesz być pewien, że oba HC05 są ze sobą połączone, ale nie testowaliśmy, czy dane mogą być przesyłane tam iz powrotem między urządzeniem nadrzędnym i podrzędnym. W końcu to jest główny cel tutaj.
Prześlij poniższy kod do jednego z Arduino, to jest kod do testowania nadajnika (Tx), ponownie pełny kod zarówno dla nadajnika, jak i odbiornika można znaleźć na dole tej strony.
Zgodnie z poprzednim kodem dodajemy bibliotekę SoftwareSerial do tego kodu i definiujemy numery pinów nadawania (Tx) i odbioru (Rx). Następnie nadajemy nazwę połączeniu Bluetooth i przekazujemy do biblioteki numery pinów Tx i Rx.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
W funkcji konfiguracji ponownie ustawiamy prędkość transmisji dla monitora szeregowego Arduino i Bluetooth. Czy widzisz różnicę w porównaniu z poprzednim kodem? Używamy szybkości transmisji 9600 bodów. Jest to domyślna, wstępnie ustawiona szybkość transmisji modułu HC05 Bluetooth podczas komunikacji z innymi urządzeniami Bluetooth. Należy więc zauważyć, że 38400 bodów służy do konfiguracji HC05 za pomocą poleceń AT, a 9600 bodów jest domyślną szybkością transmisji modułu HC05. Na koniec, tak jak wcześniej, konfigurujemy pin Tx jako wyjście i pin Rx jako wejście.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Wewnątrz pętli wiecznej wszystko, co robimy, to przesyłanie losowej wartości „123” przez HC05.
void loop () {bt.write (123); }
Prześlij ten kod do drugiego Arduino, to jest kod do przetestowania odbioru (Rx):
Dokładnie tak samo jak poprzednie kody konfigurujemy bibliotekę SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Kod w funkcji konfiguracji jest dokładnie taki sam, jak kod do testowania transmisji (Tx).
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
W pętli wiecznej wystarczy odebrać to, co wysyłamy z nadającego Arduino. Jeśli bufor odbioru otrzymał jakieś dane z HC05, wyświetl wszystko, co zostało odebrane na monitorze szeregowym.
void loop () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
Po przesłaniu odpowiednich kodów do każdego Arduino, otwórz monitor szeregowy na odbierającym Arduino. Upewnij się, że w monitorze szeregowym wybrano prędkość transmisji na 9600, a linię kończącą się na Newline. Jeśli wszystko działa poprawnie, powinieneś zobaczyć 123.
Uwaga: Jeśli podłączyłeś zarówno transmitujące, jak i odbierające Arduino do tego samego laptopa, upewnij się, że wybrałeś właściwy port COM w NARZĘDZIA> PORT. Powinieneś być podłączony do odbierającego portu COM Arduino.
WcześniejszeJeśli wszystko pójdzie dobrze, zamień moduły HC05, aby upewnić się, że komunikacja może się odbywać w obu kierunkach i ZROBILIŚMY!