- Необходимые материалы
- Принципиальная электрическая схема
- Первоначальная настройка модулей HC05
- Тестирование связи между Arduino и Arduino Bluetooth
Модули Bluetooth HC-05 идеально подходят для любого проекта Arduino! В Arduino IDE легко подключиться и кодировать. В большинстве проектов мы обычно подключаемся к HC05 к Arduino и используем его для беспроводной связи с другим интеллектуальным устройством, например мобильным телефоном. Это довольно просто, и мы создали множество интересных проектов с ним, таких как робот, управляемый Bluetooth, голосовое управление Bluetooth, домашняя автоматизация Bluetooth и т. Д. Однако вам когда-нибудь приходилось соединять два HC-05 вместе? Подключить HC05 к смартфону не так просто, для этого необходимо выполнить некоторые дополнительные действия. Это руководство проведет вас через этот процесс. Давайте прямо сейчас!
Необходимые материалы
- 2x Arduino (подойдет любая модель; я использую Arduino Uno R3 и Arduino Nano)
- 2 модуля Bluetooth HC05
- Макетная плата
- Перемычки
- 2 резистора 1 кОм
- 2 резистора 2,2 кОм
Принципиальная электрическая схема
Это основная принципиальная схема. Подключите 2 из этих цепей, одну для ведущего и одну для ведомого. Что касается соединений, все, что мы здесь делаем, это подключаем HC05 к Arduino. Вывод приемника (Rx) HC05 работает в диапазоне от 0 В до 3,3 В, а Arduino работает в диапазоне от 0 до 5 В. Итак, мы будем использовать резисторы (R1 и R2) для создания делителя напряжения, чтобы уменьшить выходное напряжение 5 В на Arduino до 3,3 В, чтобы не повредить модуль HC05.
Я использую 1 кОм для R1 и 2,2 кОм для R2, но вы можете использовать любое сопротивление резистора, если сопротивление R2 примерно вдвое больше, чем R1 (R2 ≈ 2R1). Аналогичным образом, повторить схему как для ведущего и ведомого, то Ардуина Мастер Bluetooth - цепь и Ардуины ведомый Bluetooth - цепи показаны ниже.
Первоначальная настройка модулей HC05
Это дополнительный шаг, необходимый для соединения двух модулей HC05 вместе. Нам нужно изменить некоторые настройки внутри модуля Bluetooth HC05, для этого нам нужно войти в режим AT-команд модуля 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, а какой - Rx. Синтаксис: bluetoothName (Rx, Tx);
SoftwareSerial configBt (rx, tx); // RX, TX
Чтобы настроить модуль Bluetooth, Arduino необходимо отправлять ему команды со скоростью 38400 бод. Точно так же мы устанавливаем скорость передачи Bluetooth-соединения на 38400 бод. Установите Transmit (Tx) на выходной контакт и Receive (Rx) на входной контакт.
void setup () { Серийный.begin (38400); configBt.begin (38400); pinMode (tx, ВЫХОД); pinMode (rx, ВХОД); }
Внутри цикла forever у нас есть основная часть кода. Идея здесь состоит в том, чтобы отправить все, что введено в текстовое поле на последовательном мониторе, на HC05 через вывод Tx Arduino. Затем отобразите все, что выводит HC05 на последовательном мониторе.
void loop () {if (configBt.available ()) // если HC05 что-то отправляет… { Serial.print (configBt.readString ()); // печать в последовательном мониторе} if (Serial.available ()) // если последовательный монитор что-то выводит… {configBt.write (Serial.read ()); // записываем на вывод Tx Arduino}}
Сначала загрузите этот код в Arduino, подключенный к главному модулю HC05. После загрузки кода отключите кабель питания Arduino. Нажмите и удерживайте кнопку на HC05. Теперь подключите кабель питания Arduino, удерживая кнопку на HC05. Хорошо, теперь вы можете отпустить кнопку на HC05. Вот как вы переходите в режим AT HC05. Чтобы проверить, правильно ли вы сделали это, убедитесь, что красный индикатор на HC05 мигает примерно каждую секунду (медленно мигает!). Обычно перед подключением HC05 к любому устройству Bluetooth он мигает красным цветом с очень высокой частотой (быстро мигает!).
Затем откройте последовательный монитор (кнопка последовательного монитора находится в верхнем правом углу Arduino IDE). В правом нижнем углу окна Serial monitor, если вы еще этого не сделали, убедитесь, что вы установили параметр окончания строки на «Оба NL и CL» и скорость передачи на 38400. Теперь введите AT в последовательном мониторе, если все пойдет хорошо, вы получите «OK» от HC05, отображаемого в окне последовательного монитора. Поздравляю! Вы успешно вошли в командный режим модуля HC05.
Теперь введите следующие команды в таблицу ниже, чтобы настроить главный модуль HC05:
КОМАНДА (введите это в серийный монитор и нажмите ввод) |
ОТВЕТ (ответ от HC05, отображается на серийном мониторе) |
Функция (Что делает эта команда?) |
В |
Хорошо |
Контрольная работа |
AT + CMODE? |
Хорошо |
Проверьте CMODE или режим подключения ----------------------------- CMODE: 0 - раб 1 мастер |
AT + CMODE = 1 |
Хорошо |
Установите CMODE в 1, поскольку мы настраиваем мастер HC05 |
AT + ADDR? |
+ АДРЕС: FCA8: 9A: 58D5 Хорошо * Это адрес моего хозяина HC05. Ваш адрес будет другим! |
Возвращает адрес HC05, запишите это, так как он нам понадобится позже! |
Затем подключите ваш компьютер к другому HC05, ведомому:
КОМАНДА (введите это в серийный монитор и нажмите ввод) |
ОТВЕТ (ответ от HC05, отображается на серийном мониторе) |
Функция (Что делает эта команда?) |
В |
Хорошо |
Контрольная работа |
AT + CMODE? |
Хорошо |
Проверьте CMODE или режим подключения ----------------------------- CMODE: 0 - раб 1 мастер |
AT + CMODE = 0 |
Хорошо |
Установите CMODE в 0, так как мы настраиваем ведомый HC05 |
AT + BIND = FCA8,9A, 58D5 * Замените «:» в главном адресе HC05 на «,» * Здесь я использую адрес мастера HC05, который я записал из предыдущей таблицы. Вы должны использовать адрес своего мастера HC05! |
Хорошо |
Установка адреса ведущего HC05, к которому этот ведомый HC05 будет автоматически подключаться при загрузке |
AT + BIND? |
+ BIND: FCA8: 9A: 58D5 Хорошо * Это адрес моего хозяина HC05. Ваш адрес будет другим! |
Проверьте адрес привязки вашего ведомого устройства. Если он совпадает с адресом вашего главного HC05, все готово! |
Тестирование связи между Arduino и Arduino Bluetooth
Во-первых, запитайте как главный, так и подчиненный модули HC05. После включения питания и по прошествии нескольких секунд посмотрите на красный свет на модулях HC05.
Скорость мигания красного света |
Что это значит |
Мигает с очень высокой частотой (мигает быстро!) |
Не хорошо! Это означает, что ваши модули HC05 не соединяются друг с другом! Время устранять неполадки! |
Мигает с низкой частотой (медленно мигает!) |
Ницца! Вы сделали это! Но нам все равно нужно сделать еще одну проверку, чтобы убедиться, что эта установка работает! Двигаться дальше! |
Как только ваши красные индикаторы мигают с низкой частотой (медленно мигают!), Вы можете быть уверены, что оба ваших HC05 подключены друг к другу, но мы не проверяли, могут ли данные передаваться между ведущим и ведомым. В конце концов, это основная цель.
Загрузите приведенный ниже код в один из Arduinos, это код для проверки передатчика (Tx), снова полный код для передатчика и приемника можно найти внизу этой страницы.
Следуя предыдущему коду, мы добавляем в этот код библиотеку SoftwareSerial и определяем номера контактов передачи (Tx) и приема (Rx). Затем мы называем соединение Bluetooth и передаем в библиотеку номера контактов Tx и Rx.
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (rx, tx); // RX, TX
В функции настройки мы снова устанавливаем скорость передачи для последовательного монитора Arduino и Bluetooth. Вы видите разницу здесь по сравнению с предыдущим кодом? Мы используем скорость 9600 бод. Это предустановленная по умолчанию скорость передачи данных модуля Bluetooth HC05 при обмене данными с другими устройствами Bluetooth. Итак, обратите внимание, что 38400 бод предназначены для настройки HC05 с помощью AT-команд, а 9600 бод - это скорость передачи по умолчанию для модуля HC05. Наконец, как и раньше, мы настраиваем вывод Tx как выход, а вывод Rx как вход.
void setup () { Serial.begin (9600); bt.begin (9600); pinMode (tx, ВЫХОД); pinMode (rx, ВХОД); }
Внутри цикла forever все, что мы делаем, - это передаём случайное значение «123» через HC05.
недействительный цикл () {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, ВЫХОД); pinMode (rx, ВХОД); }
В цикле навсегда нам просто нужно получить то, что мы отправляем от передающего Arduino. Если буфер приема получил некоторые данные от HC05, то отобразите все полученные данные на последовательном мониторе.
void loop () {if (bt.available ()> 0) { серийный.println (bt.read ()); }}
После того, как вы загрузили соответствующие коды в каждый Arduino, откройте последовательный монитор для принимающей Arduino. Убедитесь, что вы выбрали скорость передачи 9600 бод и строку, заканчивающуюся новой строкой в последовательном мониторе. Если все работает нормально, вы должны увидеть 123.
Примечание. Если вы подключили передающий и принимающий Arduinos к одному ноутбуку, убедитесь, что вы выбрали правильный COM-порт в TOOLS> PORT. Вы должны быть подключены к принимающему COM-порту Arduino.
Взаимодействие с другими людьмиЕсли все идет хорошо, поменяйте местами модули HC05, чтобы убедиться, что связь может происходить в обоих направлениях, и МЫ ГОТОВЫ!