Блютуз подключение в Android (проект для Arduino). Часть 1.
Связываем Arduino и Android через Bluetooth
В данной статье будет подробно расписано создание небольшого приложения для мобильной операционной системы Android и скетча для Arduino. На Arduino Uno будет стоять Wireless Shield с Bluetooth-модулем. Приложение будет подключаться к Bluetooth-модулю и посылать некую команду. В свою очередь скетч по этой команде будет зажигать или гасить один из подключенных к Arduino светодиодов.
Нам понадобится
Создание приложения для Android
Заготовка
Разработка для ОС Android ведется в среде разработки ADT, Android Development Tools. Которую можно скачать с портала Google для разработчиков. После скачивания и установке ADT, смело его запускаем. Однако, еще рано приступать к разработке приложения. Надо еще скачать Android SDK нужной версии. Для этого необходимо открыть Android SDK Manager «Window → Android SDK Manager». В списке необходимо выбрать нужный нам SDK, в нашем случае Android 2.3.3 (API 10). Если телефона нет, то выбирайте 2.3.3 или выше; а если есть — версию, совпадающую с версией ОС телефона. Затем нажимаем на кнопку «Install Packages», чтобы запустить процесс установки.
После завершения скачивания и установки мы начинаем создавать приложение. Выбираем «File → New → Android Application Project». Заполним содержимое окна так, как показано на рисунке.
В выпадающих списках «Minimum Required SDK», «Target SDK», «Compile With» выбираем ту версию, которую мы скачали ранее. Более новые версии SDK поддерживают графические темы для приложений, а старые нет. Поэтому в поле «Theme» выбираем «None». Нажимаем «Next».
Снимаем галочку с «Create custom launcher icon»: в рамках данной статьи не будем заострять внимание на создании иконки приложения. Нажимаем «Next».
В появившемся окне можно выбрать вид «Activity»: вид того, что будет на экране, когда будет запущено приложение. Выбираем «Blank activity», что означает, что мы хотим начать всё с чистого листа. Нажимаем «Next».
В нашем приложении будет всего одно Activity, поэтому в появившемся окне можно ничего не менять. Поэтому просто жмем на «Finish».
Все, наше приложение создано.
Настройка эмулятора
Отладка приложений для Android производится на реальном устройстве или, если такового нет, то на эмуляторе. Сконфигурируем свой.
Для этого запустим «Window → Android Virtual Device Manager». В появившемся окне нажмем «New». Заполняем поля появившейся формы. От них зависит сколько и каких ресурсов будет предоставлять эмулятор «телефону». Выберите разумные значения и нажимайте «ОК».
В окне Android Virtual Device Manager нажимаем кнопку «Start». Это запустит эмулятор. Запуск занимает несколько минут. Так что наберитесь терпения.
В результате вы увидите окно эмулятора подобное этому:
Заполнение Activity
Activity — это то, что отображается на экране телефона после запуска приложения. На нем у нас будет две кнопки «Зажечь красный светодиод» и «Зажечь синий светодиод». Добавим их. В панели «Package Explorer» открываем res/layout/activity_main.xml . Его вид будет примерно таким же, как на скриншоте.
Перетаскиваем 2 кнопки «ToggleButton» на экранную форму. Переключаемся во вкладку «activity_main.xml» и видим следующий код:
Это ни что иное, как наша Activity, которая отображается не в виде графики, а описанная в формате XML.
Сделаем имена компонентов более понятными. Изменим поля android:id следующим образом.
А еще добавим им подписи, изменим их цвет и размер текста. Результирующий код разметки будет выглядеть следующим образом.
Эти же изменения можно сделать и в графическом режиме, воспользовавшись вкладкой «Outline/Properties».
Пробный запуск
Мы можем запустить только что созданное приложение на эмуляторе. Идем в настройки запуска «Run» → Run Configurations», в левой части нажимаем на «Android Application». Появляется новая конфигурация «New_configuration». В правой части окна выбираем вкладку «Target» и выбираем опцию «Launch on all compatible devices/AVD».
Нажимаем «Apply», а затем «Run». Приложение запустится в эмуляторе.
Можно понажимать кнопки. Но ничего происходить не будет, поскольку обработчики нажатий еще нами не написаны.
Чтобы запустить приложение на реальном устройстве, необходимо включить в его настройках опцию «Отладка USB» и подключить его к компьютеру.
На реальном устройстве приложение выглядит абсолютно аналогично.
Написание кода для Android
Правка манифеста
Каждое Android-приложение должно сообщить системе о том, какие права необходимо ему предоставить. Перечисление прав идет в так называемом файле манифеста AndroidManifest.xml . В нем мы должны указать тот факт, что хотим использовать Bluetooth в своем приложении. Для этого достаточно добавить буквально пару строк:
Добавляем основной код
Пришла пора вдохнуть жизнь в наше приложение. Открываем файл MainActivity.java (src → ru.amperka.arduinobtled). Изначально он содержит следующий код:
Дополним код в соответствии с тем, что нам нужно:
Передавать на Arduino мы будем один байт с двузначным числом. Первая цифра числа — номер пина, к которому подключен тот или иной светодиод, вторая — состояние светодиода: 1 — включен, 0 — выключен.
Число-команда, рассчитывается очень просто: Если нажата красная кнопка, то берется число 60 (для красного светодиода мы выбрали 6-й пин Arduino) и к нему прибавляется 1 или 0 в зависимости от того, должен ли сейчас гореть светодиод или нет. Для зеленой кнопки всё аналогично, только вместо 60 берется 70 (поскольку зеленый светодиод подключен к 7 пину). В итоге, в нашем случае, возможны 4 команды: 60, 61, 70, 71.
Напишем код, который реализует всё сказанное.
Написание скетча
Данные, которые принимает Bluetooth-модуль, приходят через UART (он же Serial-соединение) на скорости 9600 бит/с. Настраивать Bluetooth-модуль нет никакой необходимости: он сразу готов к работе. Поэтому скетч должен уметь следующее:
Особенности заливки скетча
Для связи Bluetooth-Bee с контроллером используются те же пины (0 и 1), что и для прошивки. Поэтому при программировании контроллера переключатель «SERIAL SELECT» на «Wireless Shield» должен быть установлен в положение «USB», а после прошивки его надо вернуть в положение «MICRO».
Результат
Заключение
В данной статье мы научились создавать приложения для операционной системы Android и передавать данные по Bluetooth. Теперь при нажатии на кнопку на экране телефона на базе операционной системы Android, произойдет изменение состояния светодиода на плате.
Вы можете развить мысль и сделать более дружественный интерфейс на Android, управлять с его помощью гораздо более сложными устройствами, публиковать классные приложения в Android Market и ещё много-много всего интересного!
Android + Bluetooth + Arduino
Android-приложение для обмена данными с ардуино при помощи bluetooth-модуля HC-05.
Приложение будет отправлять ардуине команды включения-отключения D10. D13, а та, в свою очередь, сообщать о выполненных действиях.
Прежде чем приступать к написанию приложения, необходимо проверить настройки bluetooth-модуля и подключить его к ардуине.
Настройка модуля подробно описана здесь, проделайте всё, что написано в разделе Bluetooth до фразы “Модуль настроен“.
После настройки заливаем в ардуину код…
Ардуина получает символы от андройд-приложения, выполняет действие и возвращает ответ. Обратите внимание на скорость Serial.begin(9600), она должна совпадать с настройками модуля.
… и соединяем её с модулем по этой схеме:
Выполните сопряжение телефона с модулем.
Android
Кто не хочет обременять себя написанием приложения, может скачать готовый apk-файл, а если есть желание попрограммировать тогда.
Скачиваем, устанавливаем и запускаем Android Studio.
В процессе работы нужно будет установить sdk.
Создаём новый проект под названием BlueArdu
Next.
Оставляем как есть…
Next.
Выбираем Empty Activity
Next.
Оставляем как есть…
Finish
Открываем файл AndroidManifest.xml
После строчки package=«com.example.dima.blueardu» > добавляем разрешение на использование bluetooth:
Строку делаем так:
В результате будет так:
Кликаем по вкладке activity_main.xml и внизу выбираем вкладку Text
Удаляем всё, что там написано и вставляем вот это:
Красным цветом подсвечиваются ошибки. В данном случае среда сообщает об отсутствии картинок offlamp и onlamp
Сохраните картинки себе на компьютер. После этого скопируйте offlamp.png в буфер (правой кнопкой «копировать»), выберите (правой кнопкой) в левой колонке папку drawable и нажмите вставить.
OK.
То же самое проделайте со второй картинкой. После этого надписи станут зелёными.
Далее откройте вкладку MainActivity.java, удалите всё кроме первой строчки и вставьте этот код:
Если всё сделано правильно, то никаких ошибок не должно быть.
Разрешите на телефоне отладку по USB:
Подключите телефон к компьютеру и запустите компиляцию нажав зелёную стрелку:
Через некоторое время появится окно с выбором устройства на котором будет запущено приложение:
Отсутствие в списке телефона, означает какие-то проблемы с драйверами.
Нажмите ОК, приложение установится и откроется окно со списком сопряжённых устройств:
Выберите ваш модуль и после соединения откроется главное окно программы:
На этом всё, далее можно приступать к изучению программирования под Android и добавлять свой функционал.
Здесь можно почитать о том, как сделать метеостанцию.
Передача данных по Bluetooth между Android и Arduino
В статье Arduino и Bluetooth был рассмотрен один из способов передачи информации между Android-устройством и ПК по Bluetooth-соединению. Там же, в двух словах было упомянуто и Android-устройство, но для принятия и передачи данных использовался Android Bluetooth терминал. Однако, для реальных устройств необходима полноценная программа (не будем же мы управлять тем же роботом из терминала. ), написанная для Android’а. В данной статье хотелось бы затронуть тему программного обеспечения для работы с Bluetooth, с применением языка Java и среды разработки Eclipse. Установка и настройка Eclipse хорошо описана в этой статье: Android и Arduino. Программное обеспечение.
Arduino
Я буду использовать Bluetooth модуль HC-06, однако для других модулей HC-04, HC-05 и т.п. схема подключения такая же (за исключением светодиода). Плата Arduino Nano V3.
Для наглядности, к плате Arduino я подключил красный светодиод, к 12-пину, но можно использовать и встроенный LED (обычно 13 пин).
Скетч для Arduino следующий:
Программа работает очень просто. После запуска или сброса устройства, в последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой (принятой) цифры светодиод будет загораться или гаснуть. В общем программа абсолютно такая же как и в статье: Arduino и Bluetooth.
Теперь, что касается Android. Мы рассмотрим два примера, в первом мы будем передавать данные от Android-устройства к arduino, а во втором примере мы рассмотрим двусторонний обмен данными между устройствами. Второй пример сложнее и в части понимания и по сложности кода, т.к. используются потоки (thread).
Мы будем использовать Java код, с явным указанием MAC-адреса устройства, к которому мы будем подключаться. Т.к. если делать интерфейс обнаружения Bluetooth-устройств, их выбора, подключения к ним и т.д., то код будет очень большой и для некоторых читателей труднопонимаем. Но для тех, кому интересно могут посмотреть стандартный пример Bluetooth Chat.
Узнать MAC-адрес можно к примеру в программе для Android’а: Bluetooth Terminal:
Нас интересует устройство BOLUTEK (наш модуль HC-06, подключенный к Arduino), его MAC адрес: 00:15:FF:F2:19:4C. Его и надо будет в дальнейшем прописать в программе.
Android – передаем данные в Arduino
Первая программа очень простая, главное окно активити будет содержать 2 кнопки: включить LED и выключить LED. При нажатии на кнопку включения LED, по Bluetooth будет передаваться “1”, при нажатии на выключение LED – “0”.
В файле манифеста необходимо прописать 2 строки разрешения работы с Bluetooth:
Сам код главного активити:
Данный код найден на одном из зарубежных блогов и слегка модернизирован. Как видно выше, на кнопки мы вешаем обработчики событий. При нажатии на кнопку передается строка 1 или 0 через sendData() в буфер Bluetooth адаптера. Полный проект с исходными кодами приведен ниже. Для работы программы, необходим Android не ниже версии API15, т.е. 4.0.3 и выше.
Android – прием и передача данных к Arduino
А вот здесь пришлось повозиться. Дело в том, что в Android’е для приема данных от какого-либо устройства необходимо создавать отдельный фоновый поток, чтобы у нас не зависало основное активити. Для этого мы задействуем thread и все данные будут приниматься в отдельном потоке.
На окно главного активити мы добавим новый элемент TextView, который будет служить для отображения принятых данных от Arduino. Сам java-код главного активити я постарался хорошо прокомментировать, чтобы сделать его удобочитаемым:
В данном примере для отправки данных мы используем отдельный поток Thread. Тоже самое и для приема данных – метод run(). Также обратите внимание на класс Handler, который служит для организации очереди сообщений и их вывода в главное активити. Дело в том, что в фоновом потоке нельзя напрямую выводить что-либо в главное активити, т.к. это приведет к “крашу” программы.
Класс StringBuilder используется для формирования строки из принятых данных. После, происходит поиск конца строки с символами rn, и если они найдены, то строка отображается на активити и обьект sb очищается, чтобы не произошло склейка с последующими принятыми данными.
К статье прилагаются скомпилированные файлы для Android: bluetooth1.apk и bluetooth2.apk, а также исходники проекта для Arduino IDE и Eclipse
Bluetooth HC-06 и ардуино. Приложение андроид для управления Реле с телефона.
Как подключить Bluetooth модель HC-06 или HC-05 рассказывал в Уроке 11 – Bluetooth модуль HC-06. Управление Arduino с телефона.
В уроке мы использовали стороннее приложения для Android телефона или планшета. Сегодня мы напишем свое приложение в mit app inventor. Подправим скетч из Arduino урока 11, для работы с низкоуровневым реле. С высоко уровненным рее работать будет без изменения скетча. Чем отличаются высоко уровневые реле от низко уровневых. Низко уровневые включается, когда на сигнальны Пин реле подается LOW. Высоко уровневый включается, когда подадим HIGH. Конструктивные особенности и более подробную информацию ищите в интернете.
Приступим к приложению для Андроида , для этого воспользуемся самым простым решением app inventor 2. Если у вас возникли сложности с данной средой разработки у меня на сайте есть боле простые примеры написания приложений в данной среде разработки : Wi-Fi реле на NodeMCU. Управление Android приложением
Интерфейс программы будет выглядеть вот так.
В приложение нужно добавить: BluetoothClient1 и Clock1 с интервалом обновления 100.
Кнопка «Bluetooth» осуществляет подключение к hc-06 модулю.
Копка «Disconnect» разрывает соединение.
Кнопки «On» и «Off» включают и выключают реле.
Блоки программы для подключения и отключения модулю HC-06 :
Блок управления и вывода информации на дисплей.
Копка включения отправляет по блютуз каналу значение равное 1. Кнопка отключения отправляет 0.
Cloc1 это часы, проверяют информацию которая пришла по Bluetooth и выводит ее в текстовое поле Info.
Приложение на Android устройстве выгладить вот так.
После нажатия на кнопку «Bluetooth». У вас откроется окно выбора устройства.
Выбираете ваше устройство. После чего можно управлять реле. При нажатии на кнопку «On».
В поле Info выведется информация «Rele On — Portal-Pk.ru». При выключении реле на экран телефона будет строка «Rele Off — Portal-Pk.ru»
Подключаем к Arduino UNO реле и модуль по схеме.
Если у вас Arduino NANO, то реле и bluetooth модуль hc 06 подключить по схеме.
Скетч bluetooth реле ардуино будет вот таким.
Если вы сделали все правильно, то у вас получиться вот такой результат.
Подключенная нагрузка будет включаться и выключаться . Если у вас работает наоборот возьмите код для Arduino из урока: Bluetooth модуль HC-06. Управление Arduino с телефона.
Сегодня мы разобрали связку ардуино андроид bluetooth . Планирую сделать машину с управлением по bluetooth . И много другое.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока. И до встречи в следующем проекте.
Понравилась статья? Поделитесь ею с друзьями:
Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.
Очень часто в ваших проектах возникает необходимость в дистанционном управлении или передачи данных с ваших телефонных гаджетов.
Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.
Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.
Нам понадобится:
Схема подключения Bluetooth к Arduino:
Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА.
Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD.
Теперь необходимо записать пробный код программы:
Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.
Скачать скетч можно по ссылке.
После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.
Подключение Bluetooth к телефону
Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.
- Включаем Bluetooth на телефоне и ищем новые устройства
- Находим в списке расстройств “HC-06″ и подключаемся к нему.
- Телефон спросит пин-код. необходимо ввести “1234” или “0000“
- Ура. Устройство подключено.
Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.
Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.
После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.
Пришло время попробовать проект в деле. Пишем в терминале цифру “0” и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру “1” и светодиод L должен зажечься.
Демонстрация работы:
Домашняя работа:
- Изменить скетч так, что бы светодиод зажигался и потухал с помощью одной и той же команды например “G”.
- Дописать скетч и научить его преобразовывать текстовые данные приходящие через блютус в цифровые и реализовать димер, зажигать светодиод с помощью ШИМ, на заданную яркость от 0 до 254 приходящую через bluetooth.
Загрузка эскиза Arduino через Bluetooth с помощью Android
Сегодня мы научимся программировать Arduino и загружать в него эскизы с помощью устройства на Android через Bluetooth HC05.
О проекте
В данном проекте мы хотим показать вам, как запрограммировать ваш Arduino Uno через ваше устройство на Android через Bluetooth. Это очень просто и довольно дешево. Также проект даст понимание того, как программировать Arduino, где бы мы не находились по беспроводному Bluetooth.
Комплектующие
Оборудование:
- Arduino Uno;
- Модуль Bluetooth HC-05;
- Мини-макетка;
- Конденсатор 1 микрофарад / 16В;
- Резистор 100 Ом;
- Перемычки — 5 шт.;
- USB-кабель;
- Android-устройство с Android 4.0.0+ (доступно Bluetooth);
- Ноутбук / PC.
Программное обеспечение:
Программируем Ардуино используя Ноутбук или PC
Начните с того, что скопируйте код, который приведен ниже. Затем, вставьте его в Arduino IDE. Скомпилируйте. Загрузите.
Этот код содержит несколько функций для изменения параметров модуля Bluetooth HC-05:
AT+NAME=Bluino#00 : Измените имя модуля bluetooth, имя по умолчанию — «HC-05».
AT+BAUD=115200,0,0 : Измените скорость передачи, бод, на 115200 (Arduino Uno, Bluino и Mega2560)
AT+BAUD=57600,0,0 : Измените скорость передачи, бод, на 57600 (Arduino Nano, Leonardo, Micro, Pro Mini 3V3/5V и Duemilanove)
AT+POLAR=1,0 : Изменить состояние пина.
Дополнительно вы можете сменить пароль, чтобы использовать не стандартный пароль при спаривании, AT+PSWD=xxxx.
Имя bluetooth должно быть «Bluino#00-9999», если вы хотите использовать собственное имя, вы должны использовать платную версию Bluino Loader App.
Схема соединения
Для соединения всех комплектующих следуйте приведенному выше изображению. Макет относительно прост.
Если вы хотите, вы можете заменить макет PCB-прототипом печатной платы с некоторыми пайками, тогда вы получите небольшой размер, похожий на шилд для Arduino.
Собираем детали вместе
В реальности это должно выглядеть примерно так, как на картинках ниже. Конденсатор и резистор используются для автоматической перезагрузки Arduino при загрузке скетча через Bluetooth.
Настраиваем Bluetooth HC-05
В основном на этом шаге говорим о том как настроить HC-05 через команду AT, после этого шага вы установите для HC-05 некоторые параметры.
Далее вы загружаете эскиз в Arduino, в этом коде есть последовательная функция для связи через pin RX / TX (D0 / D1), который при подключении к выходу HC-05 RX / TX заставит настроить HC-05 на AT командный режим. Просто выполните шаг, как на фотографиях.
• Нажмите и удерживайте кнопку KEY.
• Подключите USB-кабель для питания Arduino.
• Подождите около 5 секунд (удерживайте кнопку KEY).
• Отключите и снова подключите USB для сброса из режима AT-команды.
Установка приложения Bluino Loader
Далее нам нужно установить приложение Bluino Loader из Google Play Store.
Первое приложение, которое вам нужно знать — это «Bluino Loader» для Andorid 4.0 или выше с доступным соединением Bluetooth. Вы можете скачать или установить его из магазина Google Play:
Bluino Loader — версия для Arduino IDE
Pro-версия для поддержки разработчика Bluino Loader Pro для Arduino IDE
Это приложение предназначено для работы с Arduino Uno, вы можете писать, редактировать и загружать эскизы в Arduino uno по bluetooth HC-05. Приложение легкое для понимания, как Arduino IDE, есть много примеров эскиза, а также вы можете добавить некоторые библиотеки, просто скопируйте папку библиотеки в папку BluinoLoader / libraries.
Вы можете изменить тему цвета редактора, размера текста и многих функций. Если вы хотите получить функцию Serial Monitor, удалить рекламу и иметь возможность сканировать любое имя bluetooth (не только Bluino # …), вы можете купить PRO-версию.
Загрузка эскиза работает очень хорошо по Bluetooth. Так что можно поставить этому приложению оценку 4 из 5.
Загружаем простейший скетч
После завершения установки вы можете открыть пример простого скетча:
BluinoLoader/examples/02.Basic/Blink/Blink.ino
- Подождите, пока не будут извлечены инструменты;
- Нажмите на кнопку «загрузить» (стрелка в круге);
- После завершения компиляции, если нет ошибки, нажмите кнопку «Сканировать оборудование Bluino» (англ. — Scan Bluino Hardware) для поиска активного Bluetooth;
- Выберите Bluetooth с именем «Bluino # 00»;
- Если первая связь выводит код «1234», то ОК;
- Подождите, пока процесс загрузки не будет выполнен.
После всех шагов ваш Arduino будет мигать светодиодом led 13, а вы дальше можете повторить все шаги, чтобы загрузить другой эскиз.