Одним из самых популярных интерфейсов для связи Arduino и ПК является UART (Serial). Что же делать, когда надо связать Arduino с каким-нибудь мобильным устройством, например, коммуникатором на Android? Самым простым решением будет использование Bluetooth-модулей, которые представляют собой мост UART UART через Bluetooth. Здорово, правда?
Самыми распространёнными модулями являются модули на основе чипа BC417 – серия называется HC. Так как все они построены на основе одного контроллера, все их различия заключаются в прошивке.
Модули HC-03 и HC-05 могут выступать как сервером соединения, так и клиентом, и имеют расширенный набор конфигурационных (AT-) команд. Остальные модули могут работать только в режиме клиента и имеют урезанный функционал AT-команд.
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
Пример подключения модуля к Arduino
Характеристики модулей
- Напряжение питания – 3.3В
- Потребление – до 50мА
- Скорость обмена по UART – от 2400 до 1382400 бод
- Спецификация Bluetooth – v2.0 и EDR
Схемотехнические отличия
Разные прошивки модулей подразумевают разные выводы для индикации.
У модулей HC-03/05 индикация построена следующим образом:
- индикатор рабочего режима – PIO8 (31 пин)
- индикатор статуса соединения – PIO9 (32 пин)
Также имеется специальный пин для ввода модуля в режим АТ-команд – PIO11, или пин 34.
У модулей HC-04/06/07 имеется только один выход статуса – PIO11, на который подаётся 1 в случае установления соединения.
Особенности подключения модулей
Модули «в чистом виде» (без платы-переходника) имеют шаг выводов 1.5мм, что не позволяет припаять к модулю стандартную 0.1” гребёнку контактов для макетной платы. Поэтому придётся либо приобретать плату-переходник, либо вывести нужные контакты проводами.
Для стандартного подключения нужно вывести и подключить:
- Контакт 12 модуля 3.3V Arduino
- Контакт 13 модуля GND Arduino
- Контакт 2 модуля TX Arduino
- Контакт 1 модуля RX Arduino
При покупке модуля нужно всегда уточнять, какое значение установлено для скорости обмена.
Передача данных между Arduino и ПК
Для передачи используется простая программа, которую надо загрузить в Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 |
int cnt = 0; // счетчик void setup() { Serial.begin(9600); // инициализация порта } void loop() { cnt++; Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись Serial.println(cnt); // выводим значение счетчика и переводим на новую строку delay(1000); // ждем 1 секунду } |
Соберите схему, залейте программу в Arduino, а дальше займёмся настройкой Bluetooth в Windows.
Настройка модуля с Windows 7
Подключите Bluetooth-адаптер к USB ПК, щёлкните по иконке Bluetooth и выберите пункт «Добавить устройство». Автоматический поиск найдёт ваше устройство и предложит провести процесс сопряжения.
Во время сопряжения у вас будет запрошен пароль модуля – если вы не меняли его, то он, скорее всего, будет либо 0000, либо 1234 – словом, стандартные BT-пароли.
Если сопряжение пройдёт успешно, то Windows автоматически определит принадлежность модуля к COM-устройствам и создаст соответственный COM-порт. А дальше нет никаких отличий от работы с модулем и работы с COM-портом! Я рекомендую использовать программу Termite как монитор последовательного порта.
Открыв монитор последовательного порта, мы увидим поток данных от Arduino, переданных по беспроводному соединению! Перейдём ко второй части – организуем управление Arduino’йс помощью ПК.
Для этого нам понадобится загрузить в Arduino следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() { Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); Serial.println("Press 1 to LED ON or 0 to LED OFF..."); } void loop() { if (Serial.available() > 0) { //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == '0') { digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение } if(incomingByte == '1') { digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); } } } |
Не забудьте подключить к 12 пину светодиод через резистор. В остальном схема подключения меняться не будет.
После выполнения вышеперечисленных действий откройте монитор порта и следуйте указаниям – в монитор будет выводиться текущее состояние светодиода и приглашение нажать 1 для зажигания или 0 для выключения светодиода.
Теперь вы можете управлять светодиодом через монитор порта! Прогресс налицо.
Подключение к Android
Хотя встретить COM-порт на Android-устройстве довольно тяжело, существуют программы- терминалы также и для этой платформы. Понадобится программа Bluetooth –терминал, которую можно скачать в Google Play по одноимённому запросу.
Если в устройстве Android отсутствует Bluetooth-модуль, проблему решит внешний USB Bluetooth-адаптер. Подключение адаптера осуществляется через USB-OTG переходник, затем, в меню Bluetooth, вводится пароль для модуля и запускается программа терминала.
После выбора “Connect a device – Secure” нужно выбрать свое устройство. Вы можете опробовать оба примера, они должны работать так же, как на ПК!
Итог
Работа с Bluetooth – очень интересная и перспективная для развития тема! Программы для ПК, в которых работа с COM-портами осуществляется через API, тоже очень легки в написании, поэтому вы можете разработать уникальный продукт с красивым конфигуратором на Windows. Дерзайте!
1 комментарий. Оставить новый
Здравствуйте! Подскажите пожалуйста! Существует ли возможность осуществить передачу данных Bluetooth uart или WiFi uart, с уникальным baud rate, скажем 2кбит/с? Есть ли подобные модули в природе? Спасибо!