- Bluetooth HC-06 и ардуино. Приложение андроид для управления Реле с телефона.
- Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
- Всем Пока-Пока. И до встречи в следующем проекте.
- Управляем 5В реле через Bluetooth с помощью Arduino и Android Smartwatch
- Требования к оборудованию
- Аппаратная сборка
- Установка программного обеспечения Arduino
- Загрузка исходного кода
- Установка apk в Wear OS
- Как связать всё по Bluetooth
- Машинка на Arduino, управляемая Android-устройством по Bluetooth, — код приложения и мк (часть 2)
- О первый части
- Android-приложение
- Верстка
- Манифест
- Основная активность, сопряжение Arduino и Android
- Управление и отправка команд
- Подводим итоги Андроид-приложения
- Скетч Arduino
- Переменные
- Метод setup()
- Метод loop() и дополнительные функции
- Итоги скетча
- В конце концов
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.
Всем Пока-Пока. И до встречи в следующем проекте.
Понравилась статья? Поделитесь ею с друзьями:
Источник
Управляем 5В реле через Bluetooth с помощью Arduino и Android Smartwatch
Создадим проект по управлению 5В реле через Bluetooth с помощью Arduino и умных часов Android Smartwatch.
Вы хотите использовать свои умные часы для управления вещами вокруг вас? Это можно сделать очень легко в течение, буквально, нескольких часов.
В этом уроке мы покажем вам, как контролировать свою бытовую технику с помощью часов Android Wear. Мы будем использовать часы Moto360, но вы можете установить приложение в любой Wear OS (ранее Android Wear). В конце этого проекта вы сможете управлять любым электрическим устройством.
Требования к оборудованию
Нам потребуются несколько комплектующих:
- Arduino Uno
- Реле 5в
- HC-06 Bluetooth модуль
- Любые часы Wear OS
Аппаратная сборка
Подключите оборудование, как показано на приведенных ниже схемах.
Подключите плату Arduino UNO к модулю Bluetooth HC-06. Будьте осторожны с этим шагом! Сначала отключите электропитание. Это будет работать как переключатель, поэтому удалите физический переключатель и подключите к контакту реле NC и COM и затяните винт.
Подключите IN1 вывод к GPIO13.
Установка программного обеспечения Arduino
Вы можете скачать Arduino IDE с нашего сайта здесь или с официального сайта Arduino.
После установки откройте Arduino IDE и подключите Arduino UNO с помощью USB-кабеля.
Загрузка исходного кода
Этот код использует протокол последовательной связи Arduino с модулем Bluetooth. Выводы RX и TX Arduino подключаются к выводам TX и RX модуля HC-06 Bluetooth соответственно.
Модуль Bluetooth получает данные от сопряженного смартфона Android и запускает реле на основе полученных данных.
Код, стоящий за этим, довольно прост. Если принятые данные являются символом «1», то реле включается, а включается если принятыми данными является символ «0» (реле будет отключено).
Вы можете скачать или скопировать код ниже:
Установка apk в Wear OS
Загрузите файл apk для приложения smartwatch.
Используя ADB через Wi-Fi, выполните следующие действия, чтобы установить приложение на свои смартчасы:
- Перейдите в настройку dev на часах и включите ADB и Bluetooth ADB.
- Перейдите в настройку Bluetooth в приложении Android Wear на телефоне и включите ADB через Bluetooth.
- Скачайте базовый adb на ваш компьютер:
- Windows
- Mac
- Linux
- Подключите телефон к компьютеру и включите опцию ADB USB в приложении разработчика
- После этой настройки на вашем компьютере откройте консоль в папке, содержащей файлы ADB и apk.
- Выполните команду:
adb Devices, adb forward tcp:6666, localabstract:/adb-hub, adb connect localhost:6666 - После установления соединения с часами выберите:
adb -e install apkname.apk - Замените apkname на BluetoothWatch-debug.apk с правильным путем, если вы находитесь за пределами каталога, содержащего файл.
Так будут выглядеть команды после правильной установки приложения:
Как связать всё по Bluetooth
После установки подключите смартчасы к модулю HC-06.
Вам необходимо подключить модуль Bluetooth HC-06 с помощью смартфона Android, прежде чем вы сможете использовать его в приложении.
Вы должны увидеть устройство HC-06, доступное на ваших часах.
Теперь выполните следующие действия:
- Откройте настройки Bluetooth вашего устройства и найдите новые устройства, убедитесь, что светодиод на модуле HC-06 постоянно мигает (режим сопряжения).
- Выберите HC-06 (или вы увидите адрес, заканчивающийся на «C», как показано на рисунках).
- Введите PIN-код «1234» и нажмите OK.
- Откройте приложение «Wear OS» и нажмите кнопку Bluetooth в верхней части экрана.
- Выберите «HC-06» из списка.
- Используйте переключатель со значком лампочки или встряхните часы, чтобы включить / выключить реле. Убедитесь, что в ваш Arduino уже загружен приведенный выше код.
- Щелкните на значок настроек, если вы хотите настроить калибровку встряхивания.
Вот так проходил процесс создания проекта:
Вот и все! Теперь ваши умные часы подключены и вы можете управлять реле 5В через через Bluetooth.
Источник
Машинка на Arduino, управляемая Android-устройством по Bluetooth, — код приложения и мк (часть 2)
О первый части
В первой части я описал физическую часть конструкции и лишь небольшой кусок кода. Теперь рассмотрим программную составляющую — приложение для Android и скетч Arduino.
Вначале приведу подробное описание каждого момента, а в конце оставлю ссылки на проекты целиком + видео результата, которое должно вас разочаровать ободрить.
Android-приложение
Программа для андроида разбита на две части: первая — подключение устройства по Bluetooth, вторая — джойстик управления.
Предупреждаю — дизайн приложения совсем не прорабатывался и делался на тяп-ляп, лишь бы работало. Адаптивности и UX не ждите, но вылезать за пределы экрана не должно.
Верстка
Стартовая активность держится на верстке, элементы: кнопки и layout для списка устройств. Кнопка запускает процесс нахождения устройств с активным Bluetooth. В ListView отображаются найденные устройства.
Экран управления опирается на верстку, в которой есть только кнопка, которая в будущем станет джойстиком. К кнопки, через атрибут background, прикреплен стиль, делающий ее круглой.
TextView в финальной версии не используется, но изначально он был добавлен для отладки: выводились цифры, отправляемые по блютузу. На начальном этапе советую использовать. Но потом цифры начнут высчитываться в отдельном потоке, из которого сложно получить доступ к TextView.
Файл button_control_circle.xml (стиль), его нужно поместить в папку drawable:
Также нужно создать файл item_device.xml, он нужен для каждого элемента списка:
Манифест
На всякий случай приведу полный код манифеста. Нужно получить полный доступ к блютузу через uses-permission и не забыть обозначить вторую активность через тег activity.
Основная активность, сопряжение Arduino и Android
Наследуем класс от AppCompatActivity и объявляем переменные:
Метод onCreate() опишу построчно:
Нижеприведенные функции проверяют, получено ли разрешение на использование блютуза (без разрешение пользователя мы не сможем передавать данные) и включен ли блютуз:
Если все проверки пройдены, начинается поиск устройства. Если одно из условий не выполнено, то высветится уведомление, мол, «разрешите\включите?», и это будет повторяться, пока проверка не будет пройдена.
Поиск устройства делится на три части: подготовка списка, добавление в список найденных устройств, установка соединения с выбранным устройством.
Когда Bluetooth-модуль, повешенный на Arduino (подробнее об этом далее), будет найден, он появится в списке. Нажав на него, вы начнете создание socket (возможно, после клика придется подождать 3-5 секунд или нажать еще раз). Вы поймете, что соединение установлено, по светодиодам на Bluetooth-модуле: без соединения они мигают быстро, при наличии соединения заметно частота уменьшается.
Управление и отправка команд
После того как соединение установлено, можно переходить ко второй активности — ActivityControl. На экране будет только синий кружок — джойстик. Сделан он из обычной Button, разметка приведена выше.
В методе onCreate() происходит все основное действо:
Обратите внимание (!) — мы узнаем, сколько пикселей занимает кнопка. Благодаря этому получаем адаптивность: размер кнопки будет зависеть от разрешения экрана, но весь остальной код легко под это подстроится, потому что мы не фиксируем размеры заранее. Позже научим приложение узнавать, в каком месте было касание, а после переводить это в понятные для ардуинки значения от 0 до 255 (ведь касание может быть в 456 пикселях от центра, а МК с таким числом работать не будет).
Далее приведен код ControlDriveInputListener(), данный класс располагается в классе самой активности, после метода onCreate(). Находясь в файле ActivityControl, класс ControlDriveInputListener становится дочерним, а значит имеет доступ ко всем переменным основного класса.
Не обращайте пока что внимание на функции, вызываемые при нажатии. Сейчас нас интересует сам процесс отлавливания касаний: в какую точку человек поставил палец и какие данные мы об этом получим.
Обратите внимание, использую класс java.util.Timer: он позволяет создать новый поток, который может иметь задержку и повторятся бесконечное число раз через каждое энное число секунд. Его нужно использовать для следующей ситуации: человек поставил палец, сработал метод ACTION_DOWN, информация пошла на ардуинку, а после этого человек решил не сдвигать палец, потому что скорость его устраивает. Второй раз метод ACTION_DOWN не сработает, так как сначала нужно вызвать ACTION_UP (отодрать палец от экрана).
Чтож, мы запускаем цикл класса Timer() и начинаем каждые 10 миллисекунд отправлять те же самые данные. Когда же палец будет сдвинут (сработает ACTION_MOVE) или поднят (ACTION_UP), цикл Timer надо убить, чтобы данные от старого нажатия не начали отправляться снова.
Обратите еще раз внимание: отсчет x и y метод onTouch() ведет от верхнего левого угла View. В нашем случае точка (0; 0) находится у Button тут:
Теперь, когда мы узнали, как получить актуальное расположение пальца на кнопки, разберемся, как преобразовать пиксели (ведь x и y — именно расстояние в пикселях) в рабочие значения. Для этого использую метод calculateAndSendCommand(x, y), который нужно разместить в классе ControlDriveInputListener. Также понадобятся некоторые вспомогательные методы, их пишем в этот же класс после calculateAndSendCommand(x, y).
Когда данные посчитаны и переведены, в игру вступает второй поток. Он отвечает именно за отправку информации. Нельзя обойтись без него, иначе сокет, передающий данные, будет тормозить отлавливание касаний, создастся очередь и все конец всему короче.
Класс ConnectedThread также располагаем в классе ActivityControl.
Подводим итоги Андроид-приложения
Коротко обобщу все громоздкое вышеописанное.
- В ActivityMain настраиваем блютуз, устанавливаем соединение.
- В ActivityControl привязываем кнопку и получаем данные о ней.
- Вешаем на кнопку OnTouchListener, он отлавливает касание, передвижение и подъем пальца.
- Полученные данные (точку с координатами x и y) преобразуем в угол поворота и скорость
- Отправляем данные, разделяя их специальными знаками
А окончательное понимание к вам придет, когда вы посмотрите весь код целиком — github.com/IDolgopolov/BluetoothWorkAPP.git. Там код без комментариев, поэтому смотрится куда чище, меньше и проще.
Скетч Arduino
Переменные
Для начала рассмотрим константы и переменные, которые понадобятся.
Метод setup()
В методе setup() мы устанавливаем параметры пинов: будут работать они на вход или выход. Также установим скорость общения компьютера с ардуинкой, блютуза с ардуинкой.
Метод loop() и дополнительные функции
В постоянно повторяющемся методе loop() происходит считывание данных. Сначала рассмотрим основной алгоритм, а потом функции, задействованные в нем.
Получаем результат: с телефона отправляем байты в стиле «@скорость#угол#» (например, типичная команда «@200#60#». Данный цикл повторяется каждый 100 миллисекунд, так как на андроиде мы установили именно этот промежуток отправки команд. Короче делать нет смысла, так как они начнут становится в очередь, а если сделать длиннее, то колеса начнут двигаться рывками.
Все задержки через команду delay(), которые вы увидите далее, подобраны не через физико-математические вычисления, а опытным путем. Благодаря всем выставленным задрежам, машинка едет плавно, и у всех команд есть время на отработку (токи успевают пробежаться).
В цикле используются две побочные функции, они принимают полученные данные и заставляют машинку ехать и крутится.
Поворачивать, когда андроид отправляет данные о том, что пользователь зажал угол 60, 90, 120, не стоит, иначе не сможете ехать прямо. Да, возможно сразу не стоило отправлять с андроида команду на поворот, если угол слишком мал, но это как-то коряво на мой взгляд.
Итоги скетча
У скетча всего три важных этапа: считывание команды, обработка ограничений поворота и подача тока на двигатели. Все, звучит просто, да и в исполнении легче чем легко, хотя создавалось долго и с затупами. Полная версия скетча.
В конце концов
Полноценная опись нескольких месяцев работы окончена. Физическая часть разобрана, программная тем более. Принцип остается тот же — обращайтесь по непонятным явлениям, будем разбираться вместе.
А комментарии под первой частью интересны, насоветовали гору полезнейших советов, спасибо каждому.
Источник