- Необходими материали
- Електрическа схема
- Първоначална конфигурация на модулите HC05
- Тестване на Bluetooth комуникация от Arduino към Arduino
Bluetooth модулите HC-05 са модулите за преминаване към Bluetooth за всеки проект на Arduino! Лесно е да свържете и кодирате в IDE на Arduino. В повечето проекти обикновено се свързваме с HC05 към Arduino и го използваме за безжична комуникация с друго интелигентно устройство като мобилен телефон. Това е доста просто и с него сме изградили много интересни проекти като Bluetooth Controlled Robot, Bluetooth Voice Control, Bluetooth Home Automation и др. Имало ли е обаче необходимост да свържете два HC-05 заедно? Не е толкова просто свързването на HC05 със смартфон, има някои допълнителни стъпки. Този урок ще ви води през този процес. Да скочим направо!
Необходими материали
- 2x Arduino (всеки модел ще свърши работа; използвам Arduino Uno R3 и Arduino Nano)
- 2x HC05 Bluetooth модула
- Макет
- Джъмперни проводници
- 2x 1kΩ резистор
- 2x 2.2kΩ резистор
Електрическа схема
Това е основната електрическа схема. Свържете 2 от тези вериги, една за главна и друга за подчинена. За връзките всичко, което правим тук, е да свържем HC05 към Arduino. Пинът на приемника (Rx) на HC05 работи в диапазона от 0V до 3.3V, а Arduino работи в диапазона от 0V до 5V. Така че, ще използваме резистори (R1 и R2), за да създадем делител на напрежението, за да намалим изхода 5V на Arduino до 3.3V, за да не повредим модула HC05.
Използвам 1kΩ за R1 и 2.2KΩ за R2, но можете да използвате всяка стойност на резистора, стига R2 да е приблизително двойна стойност на R1 (R2 ≈ 2R1). По същия начин повторете веригата както за главен, така и за подчинен, Arduino Master Bluetooth Circuit и Arduino Slave Bluetooth Circuit са показани по-долу.
Първоначална конфигурация на модулите HC05
Това е допълнителната стъпка, необходима за свързване на два модула HC05 заедно. Трябва да променим някои настройки в модула HC05 Bluetooth, за да направим това, трябва да влезем в командния режим на модула HC05 и да му изпращаме команди чрез серийния монитор на Arduino IDE. За да направим това, трябва да напишем код на Arduino за изпращане на команди през серийния монитор до HC05.
В кода за конфигуриране на модула HC05 може да се намери в дъното на тази страница, обяснението на кодекса е както следва
Добавете библиотеката SoftwareSerial към този код.
#include < SoftwareSerial.h>
Определете номерата на изводите за предаване (Tx) и получаване (Rx). Използвам щифт 2 за Tx и щифт 3 за Rx.
#define tx 2 #define rx 3
Дайте на Bluetooth връзката някакво име (тук използвам configBt), след което кажете на библиотеката SoftwareSerial кой пин е Tx и кой pin Rx. Синтаксисът е bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
За да конфигурира Bluetooth модула, Arduino трябва да му изпраща команди със скорост на предаване от 38400 бода. По същия начин задаваме скорост на предаване на Bluetooth връзка, както и на 38400 бода. Настройте Transmit (Tx) към изходния щифт и Receive (Rx) към входния щифт
void setup () { Serial.begin (38400); configBt.begin (38400); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Вътре в цикъла forever имаме основната част от кода. Идеята тук е да изпратите всичко, което е въведено в текстовото поле на серийния монитор, до HC05 чрез Tx щифта на Arduino. След това покажете каквото се извежда от HC05 в серийния монитор.
void loop () {if (configBt.available ()) // ако HC05 изпраща нещо… { Serial.print (configBt.readString ()); // отпечатваме в сериен монитор} ако (Serial.available ()) // ако серийният монитор извежда нещо… {configBt.write (Serial.read ()); // пишем на Tx pin на Arduino}}
Качете първо този код в Arduino, свързан към главния модул HC05. След като качите кода, включете захранващия кабел Arduino. Натиснете и задръжте бутона на HC05. Сега включете захранващия кабел Arduino, докато все още държите бутона на HC05. Добре, сега можете да освободите бутона на HC05. Ето как влизате в режим AT на HC05. За да проверите дали сте направили това правилно, уверете се, че червената лампичка на HC05 мига приблизително всяка секунда (бавно мигане!). Обикновено, преди HC05 да се свърже с някое Bluetooth устройство, червената светлина мига с много висока честота (бързо мигане!).
След това отворете серийния монитор (бутонът за сериен монитор е горе вдясно на IDE на Arduino). В долния десен ъгъл на прозореца на серийния монитор, ако все още не сте го направили, уверете се, че сте задали настройката за завършване на реда на „И NL, и CL“ и скорост на предаване на 38400. Сега въведете AT в серийния монитор, ако всичко върви добре, ще получите „OK“ от HC05, показан в прозореца на серийния монитор. Честито! Успешно сте влезли в командния режим на модула HC05.
Сега въведете следните команди в таблицата по-долу, за да конфигурирате главния модул HC05:
COMMAND (въведете това в серийния монитор и натиснете enter) |
RESPONSE (отговор от HC05, показан на серийния монитор) |
Функция (Какво прави тази команда?) |
AT |
Добре |
Тест |
AT + CMODE? |
Добре |
Проверете CMODE или режим на свързване ----------------------------- CMODE: 0 е роб 1 е капитан |
AT + CMODE = 1 |
Добре |
Задайте CMODE на 1, докато конфигурираме главния HC05 |
AT + ADDR? |
+ ADDR: FCA8: 9A: 58D5 Добре * Това е адресът на моя майстор HC05. Вашият адрес ще бъде различен! |
Връща адреса на HC05, отбележете това, тъй като ще ни трябва по-късно! |
След това свържете компютъра си с другия HC05, роб:
COMMAND (въведете това в серийния монитор и натиснете enter) |
RESPONSE (отговор от HC05, показан на серийния монитор) |
Функция (Какво прави тази команда?) |
AT |
Добре |
Тест |
AT + CMODE? |
Добре |
Проверете CMODE или режим на свързване ----------------------------- CMODE: 0 е роб 1 е капитан |
AT + CMODE = 0 |
Добре |
Задайте CMODE на 0, докато конфигурираме подчинения HC05 |
AT + BIND = FCA8,9A, 58D5 * Заменете „:“ в главния адрес HC05 с „,“ * Тук използвам адреса на главния HC05, който отбелязах от предишната таблица. Трябва да използвате адреса на вашия главен HC05! |
Добре |
Задаване на адреса на главния HC05, към който този slave HC05 автоматично ще се свърже при зареждане |
НА + ВРЪЗКА? |
+ ВРЪЗКА: FCA8: 9A: 58D5 Добре * Това е адресът на моя майстор HC05. Вашият адрес ще бъде различен! |
Проверете адреса на обвързване на вашия роб. Ако съвпада с адреса на вашия главен HC05, можете да тръгнете! |
Тестване на Bluetooth комуникация от Arduino към Arduino
Първо, захранвайте както главния, така и подчинения модул HC05. След включването и изтичането на няколко секунди погледнете червената светлина на модулите HC05.
Мигаща скорост на червената светлина |
Какво означава |
Мига с много висока честота (бързо мигане!) |
Не е добре! Това означава, че вашите HC05 модули не се свързват помежду си! Време е за отстраняване на неизправности! |
Мига при ниска честота (бавно мигане!) |
Хубаво! Направихте го! Но все пак трябва да направим още една проверка, само за да сме супер сигурни, че тази настройка работи! Продължа напред! |
След като червените лампички мигат с ниска честота (бавно мигане!), Можете да сте сигурни, че и двата ви HC05 са свързани помежду си, но не сме проверили дали данните могат да се изпращат напред-назад между главния и подчинения. В крайна сметка това е основната цел тук.
Качете кода по-долу в един от Arduinos, това е кодът за тестване на предавателя (Tx), отново пълният код за предавателя и приемника може да бъде намерен в долната част на тази страница.
Следвайки предишния код, ние добавяме библиотеката SoftwareSerial към този код и дефинираме номерата на изводите за предаване (Tx) и получаване (Rx). След това назоваваме Bluetooth връзката и предаваме Tx и Rx pin номерата на библиотеката.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Във функцията за настройка отново настройваме скоростта на предаване за серийния монитор Arduino и Bluetooth. Виждате ли разликата тук в сравнение с предишния код? Използваме скорост на предаване от 9600 бода. Това е по подразбиране предварително зададената скорост на предаване на комуникация на HC05 Bluetooth модул, когато общувате с други Bluetooth устройства. И така, имайте предвид, че 38400 бода е за конфигуриране на HC05 с AT команди, а 9600 бода е скоростта на предаване по подразбиране на модула HC05. И накрая, точно както преди конфигурирахме Tx пина като изход и Rx пина като вход.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
Вътре в цикъл завинаги всичко, което правим, е да предаваме произволна стойност „123“ през HC05.
цикъл void () {bt.write (123); }
Качете този код в другия Arduino, това е кодът за тестово получаване (Rx):
Съвсем същите като предишните кодове, ние конфигурираме библиотеката SoftwareSerial.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
Кодът във функцията за настройка е абсолютно същият като кода за тестване на предаването (Tx).
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, OUTPUT); pinMode (rx, INPUT); }
В цикъла завинаги просто трябва да получим това, което изпращаме от предаващия Arduino. Ако буферът за получаване е получил някои данни от HC05, покажете каквото е получено в серийния монитор.
цикъл void () {if (bt.available ()> 0) { Serial.println (bt.read ()); }}
След като сте качили съответните кодове на всеки Arduino, отворете серийния монитор за приемащия Arduino. Уверете се, че сте избрали скоростта на предаване като 9600 и линията, завършваща като Нова линия в серийния монитор. Ако всичко работи добре, трябва да видите 123.
Забележка: Ако сте свързали както предаващия, така и приемащия Arduinos към един и същ лаптоп, уверете се, че сте избрали правилния COM порт под TOOLS> PORT. Трябва да сте свързани към COM порта на приемащия Arduino.
Ако всичко върви добре, разменете модулите HC05, за да сте сигурни, че комуникацията може да се осъществи и в двете посоки и ние сме готови!