Подключение материалов через Bluetooth / Android / Arduino
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 |
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
Bluetooth (BT), несомненно, является очень хорошей беспроводной локальной (и личной) сетью. Сегодня в нашей повседневной жизни часто можно встретить нас, использующих сотовые телефоны, стереосистемы, камеры и т. Д., Соединенные между собой с помощью знаменитого «голубого огонька».
В мире Интернета вещей и автоматизации в целом очень часто можно найти удаленное управление через мобильные телефоны с использованием технологии BT. Это связано с двумя основными, но очень важными компонентами:
- Простые платформы разработки для приложений ANDROID (например, MIT AppInventor2) и
- Доступные модули BT (например, HC-06)
В этом руководстве я разработаю некоторые идеи по управлению выходами Arduino с помощью мобильного устройства, чтобы перемещать робота, включать лампы в доме и т. Д.
Шаг 1. Модуль Bluetooth и Arduino
На рынке очень часто встречаются модули BT 3.0 "Master-Slave" как HC-05 и "Slave" как HC-06. Совсем недавно появились HC-08 и HC-10, работающие по технологии BT 4.0 или BLE («Bluetooth Low Energy»). Модули BLE - единственные, которые можно подключить к iPhone, потому что, к сожалению, Apple не поддерживает BT 3.0.
Для проектов, обсуждаемых здесь, я буду использовать очень популярный и дешевый HC-06 (пока, пока, iPhone! Андроиды здесь короли!). Модуль BT питается от 5 В, что позволяет легко подключить его, например, к Arduino UNO. Его контакты передачи (Tx) и приема (Rx) могут быть подключены напрямую к UNO, без необходимости использования делителей напряжения, как мы видим в случае ESP8266. Обычно HC-06 должен быть подключен напрямую к контактам 0 и 1 Arduino («Serial 0»):
- HC06-Tx к контакту 0 Arduino (Rx)
- HC06-Rx к контакту 1 Arduino (Tx)
При использовании входов «Serial 0» (единственный последовательный порт HW на UNO) очень важно помнить, что HC-06 не может быть физически подключен к контактам 0 и 1 во время загрузки программы, потому что порт USB также использует тот же серийник. Простой способ обойти эту небольшую проблему (если ваш проект не использует много GPIO UNO) - использовать «последовательный порт SW» через библиотеку SoftwareSerial. В нашем случае мы будем использовать контакты 10 и 11 разъема UNO (Tx, Rx соответственно).
Шаг 2. Тестирование и настройка HC-06
Следующим шагом будет написание простого кода для тестирования, программирования и инициализации HC-O6:для начала включите серийный номер программного обеспечения библиотеки, установив переменную «BT» на новый последовательный порт.
#include SoftwareSerial BT (10, 11); // RX, TXString command =""; // Сохраняет ответ устройства bluetoothvoid setup () {Serial.begin (9600); Serial.println («Введите AT-команды»); BT.begin (9600); // HC-06 Обычно скорость передачи по умолчанию}
Затем идет основная часть кода, которая просто ожидает данных, поступающих от BT. По прибытии данные записываются в Serial Monitor. Аналогичным образом, AT-команды могут быть отправлены с монитора последовательного порта на модуль HC-06.
void loop () {if (BT.available ()) // получение данных, если они доступны. {while (BT.available ()) // "продолжаем получать". {задержка (10); // Добавлена задержка для стабилизации работы char c =BT.read (); // Выполнение команды последовательного чтения + =c; // Строим строку. } Serial.println (команда); команда =""; // Без повторов} if (Serial.available ()) {delay (10); BT.write (Serial.read ()); }}
После загрузки программы с помощью монитора последовательного порта выполните несколько основных тестов, например:
- Отправьте «AT», модуль должен ответить «ОК».
- Спросите версию прошивки:«T + VERSION», модуль должен ответить, например:«linvorV1.8».
- С помощью HC-06 вы можете определить имя для модуля, например:«The T + NAMEMJRoBot_BT_HC06». Но в отличие от других модулей, вы не можете знать, какое имя установлено для модуля. При отправке предыдущей команды HC-06 просто отвечает:«OKsetname».
Обычно HC-O6 поставляется с паролем (или PIN-кодом):1234. Вы можете установить новый с помощью AT-команды:
- AT + PIN xxxx, где xxxx - 4 цифры.
Ниже приведен код Arduino для теста HC-06:
F08H931IL8LGG7U.ino
Шаг 3. Устройство Android
В ПОРЯДКЕ! Модуль подключен к UNO и работает. Пора представить Android-устройство.
В магазине Google есть много приложений, которые можно использовать. Я буду использовать приложение, которое было разработано мной с помощью инструмента MIT Application2 и доступно бесплатно в магазине Google:MJRoBot BT Digital Analog Voice Control
Приложение отправляет цифровые команды (с помощью кнопок или голосом) и аналоговые команды для управления устройствами PWM, такими как сервоприводы (отправка данных в диапазоне от 0 до 255).
- Загрузить приложение
- Перейдите к настройке устройства Android, найдите модуль BT и установите соединение (введите PIN-код 1234 или любой другой, указанный вами). Это нужно сделать один раз, так как устройство сохранит данные подключения.
- Когда устройство и HC-06 установят связь, запустите приложение. Во второй раз при запуске приложения модуль BT должен подключиться автоматически.
- Выберите имя модуля (в моем случае это тот, у которого в конце есть HC-06).
Затем приложение покажет «ПОДКЛЮЧЕНО», сообщая, что оно «сравнивается» с HC-06. На этом этапе проверьте кнопки приложения и посмотрите на последовательном мониторе ПК, какие данные отправляет приложение. Например, последовательное нажатие кнопок «ВКЛ» и «ВЫКЛ» для 4-х устройств приведет к следующему:
dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off
Теперь, когда у нас есть приложение для Android, которое взаимодействует с модулем BT, давайте создадим что-нибудь полезное!
Шаг 4. Управление выходами Arduino.
Построим схему, как показано выше. Идея состоит в том, чтобы использовать приложение для включения и выключения светодиодов, а также для управления их яркостью.
Подключения:
- Устройство 1:"dev1on / dev1off" ==> Красный светодиод ==> Контакт 3 UNO
- Устройство 2:"dev2on / dev2off" ==> Желтый светодиод ==> Контакт 5 UNO
- Устройство 3:"dev3on / dev3off" ==> зеленый светодиод ==> контакт 6 UNO
- Устройство 4:"dev4on / dev4off" ==> Синий светодиод ==> Контакт 9 UNO
То есть, чтобы активировать «ON», относящееся к кнопке «Device 1», на Arduino будет отправлено текстовое сообщение «dev1on». При получении этого сообщения должен загореться красный светодиод и т. Д.
Обратите внимание, что 4 контакта - это контакты, способные генерировать ШИМ (не все цифровые контакты UNO могут это делать. Ищите те, которые продаются с « ~ ». Это важно для использования «ползунков» в приложении для отправки числовых данных для управления яркостью светодиодов через ШИМ:
- Dev A0:"r / 0-255" ==> Красный светодиод ==> Контакт 3 UNO
- Dev A1:"y / 0-255" ==> Желтый светодиод ==> Контакт 5 UNO
- Dev A2:"g / 0-255" ==> зеленый светодиод ==> контакт 6 UNO
- Dev A3:"b / 0-255" ==> Синий светодиод ==> Контакт 9 UNO
В случае ползунков перед значением данных ШИМ (от 0 до 255) в Arduino отправляется символ, чтобы сообщить ему, что приближается команда «ползунок».
В видео ниже, демонстрация части программы выше (кнопки и слайдер):
Ниже полный код Arduino:
FA44NBUIL8LGGAY.ino
Шаг 5. Управляйте устройствами Интернета вещей с помощью голосовых команд
В настоящее время для управления устройствами IoT голос является трендом. Получить этот тип управления с помощью Arduino / HC-06 / Android чрезвычайно просто. Устройства Android уже имеют эту функцию "на заводе". В разработанном мной приложении была добавлена кнопка, которая заставляет Android "прослушивать" команду и отправлять ее в текстовом формате . к Arduino. Код отвечает за "чтение" поступающей строки.
Я добавил несколько примеров в свой код. Когда Arduino получает команду «Подключить телевизор», например, загорается зеленый светодиод (соответствующий устройству 3) (вместо светодиода у вас может быть реле, которое будет подключать телевизор).
Вы должны изменить строки, которые находятся в части кода цикла, с помощью команд на вашем языке. Я использовал португальский, который является моим родным языком, и мне было легче управлять в Google из-за другого акцента в моем английском. Вы должны использовать здесь короткие предложения или только слова. Главное - это идеальное совпадение того, что вы написали, и того, что возвращает приложение для распознавания голоса Google.
Здесь вы можете найти ссылку на файл .aia, который можно запустить непосредственно в MIT AppInventor2. На видео ниже небольшая демонстрация голосового управления:
Шаг 6. Заключение
Что ж, я считаю, что с помощью этого руководства вы сможете реализовать огромный потенциал управления «вещами» с помощью BT / Android / Arduino. Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающем мире электроники. , робототехника и Интернет вещей! Чтобы узнать больше о проектах, посетите мой блог:MJRoBot.org
Салудо с юга мира!
Увидимся на моем следующем уроке!
Спасибо
Марсело
Код
- Фрагмент кода №1
- Фрагмент кода №2
- Фрагмент кода №3
Фрагмент кода №1 Обычный текст
#includeSoftwareSerial BT (10, 11); // RX, TXString command =""; // Сохраняет ответ устройства bluetoothvoid setup () {Serial.begin (9600); Serial.println («Введите AT-команды»); BT.begin (9600); // HC-06 Обычно скорость передачи по умолчанию}
Фрагмент кода 2 Обычный текст
void loop () {if (BT.available ()) // получение данных, если они доступны. {while (BT.available ()) // "продолжаем получать". {задержка (10); // Добавлена задержка для стабилизации работы char c =BT.read (); // Выполнение команды последовательного чтения + =c; // Строим строку. } Serial.println (команда); команда =""; // Без повторов} if (Serial.available ()) {delay (10); BT.write (Serial.read ()); }}
Фрагмент кода № 3 Обычный текст
dev1ondev1offdev2ondev2offdev3ondev3offdev4ondev4off
Производственный процесс
- Робот Raspberry Pi, управляемый через Bluetooth
- Программирование серии Atmel AT89 через Arduino
- Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
- Игрушка под управлением Android с использованием Raspberry Motor Shield
- Arduino с Bluetooth для управления светодиодом!
- Устройства с голосовым управлением Bluetooth с OK Google
- Arduino - отправка температуры в Интернет через последовательный
- Управление цепями с учетом движения через Intel Curie
- Мигающие светодиоды на Arduino из iOS и Android
- Arduino Uno + электрическое устройство (лампочка) + телефон Android