Подключение Bluetooth модуля HM-10 к Arduino и управление светодиодом из Android приложения


В настоящее время Bluetooth является одной из самых популярных беспроводных технологий. На протяжении последних лет регулярно выходили обновления этой технологии чтобы она “успевала” за все возрастающими требованиями пользователей. В этой статье мы рассмотрим подключение Bluetooth модуля HM10 к плате Arduino и управление с его помощью светодиодом из Android приложения.

Внешний вид подключения Bluetooth модуля HM-10 к плате Arduino

Принципы работы Bluetooth модуля HM-10 (at-09)

Работа Bluetooth модуля HM-10 (он также известен под названием at-09) основана на технологии Bluetooth 4.0. Также он поддерживает технологию BLE – Bluetooth-Low-Energy (Bluetooth с низким энергопотреблением), которая специально была разработана для обеспечения низкого потребления энергии, что дает возможность устройствам достаточно долго работать от обычной батарейки. В основе Bluetooth модуля HM-10 лежит чип CC2540 (или CC2541) BLE System SoC (System on Chip – система на кристалле (чипе)) от компании Texas Instruments. Программное обеспечение (прошивка) и дизайн модуля HM-10 разработаны компанией Jinan Huamao Technology. В составе модуля есть UART (Universal asynchronous receiver/transmitter – универсальный асинхронный приемопередатчик), что позволяет достаточно просто его подключать к различным микроконтроллерам.

Внешний вид Bluetooth модуля HM-10

HM-10 в настоящее время является одним из самых популярных модулей, поддерживающих технологию Bluetooth 4.0 BLE. Поскольку модуль поддерживает технологию Bluetooth 4.0, то он не сможет соединяться с устройствами, использующими технологию Bluetooth 2/2.1, например, Bluetooth модулями HC-05, HC-06. Модуль HM-10 управляется с помощью AT команд по последовательному порту связи (UART).

Различия между HM-10 и другими Bluetooth модулями

Основное отличие HM-10 от других Bluetooth модулей заключается в версии Bluetooth. HM-10 поддерживает Bluetooth версии 4.0, поэтому от модулей предыдущих поколений он будет отличаться (в выгодную сторону) скоростью работы, пропускной способностью и дальностью действия. HM10 поддерживает скорость передачи данных до 24 Мбит/с с низким потреблением энергии. А, к примеру, модуль HC-05, поддерживающий версию Bluetooth 2.0, может обеспечить скорость передачи данных только 3 Мбит/с. Вместе с этим модуль HM-10 обеспечивают дистанцию связи до 100 метров на открытой местности.

Однако более старые и менее производительные Bluetooth модули HC-05 и HC-06 до сих пор широко применяются радиолюбителями вследствие их низкой цены. На основе этих модулей на нашем сайте вы можете найти достаточно много проектов. Все проекты на нашем сайте, в которых используется технология Bluetooth, вы можете посмотреть по этой ссылке.

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Uno (купить на AliExpress).
  2. Bluetooth модуль HM-10 (купить на AliExpress).
  3. Резисторы 1 кОм, 470 Ом (купить на AliExpress).
  4. Соединительные провода.
  5. Смартфон на операционной системе Android.

Программное обеспечение

  1. Arduino IDE.
  2. Arduino Bluetooth Controller (HM-10 Module) - Android приложение.

Работа схемы

Схема подключения Bluetooth модуля HM-10 к плате Arduino представлена на следующем рисунке. Как видите, схема крайне проста.

Схема подключения Bluetooth модуля HM-10 к плате ArduinoНо прежде чем использовать модуль HM-10 в нашем проекте убедитесь в том, что это настоящий (genuine) модуль HM-10, а не его клон. Сейчас на рынке в большом количестве присутствуют китайские клоны модуля HM-10. Чтобы отличить настоящий модуль HM-10 от его клона убедитесь в наличии кварцевого генератора (Crystal Oscillator) на 32 кГц на его плате. Если кварцевого генератора на плате модуля нет, то перед вами клон модуля HM-10 и прежде чем его использовать вам необходимо сменить его прошивку (программное обеспечение). Как это сделать можно прочитать, к примеру, в этой англоязычной статье.

Без смены прошивки вы не сможете использовать для управления клоном модуля HM-10 AT команды, также вы не сможете подключить его к смартфону. В нашем проекте мы использовали клон модуля HM-10 (он более дешевый чем настоящий), но перед этим сменили его прошивку по указанной методике.

Внешний вид получившейся у нас конструкции

Arduino Bluetooth Controller (HM-10 Module) – приложение на Android

Arduino Bluetooth Controller (HM-10 Module) представляет собой приложение для операционной системы Android, которое можно бесплатно скачать из Google Play Store. Это приложение обеспечивает простой и интуитивно понятный интерфейс для взаимодействия с Bluetooth модулем HM-10. В этом приложении можно создавать собственные кнопки и кастомизировать вид этого приложения под свои нужды. Мы создали в нем две кнопки для управления светодиодом, подключенным к плате Arduino.

Вначале скачайте это приложение из Google Play Store по этой ссылке (или можете сразу скачать его с помощью своего смартфона).

Внешний вид приложения в Google Play Store

На главной странице этого приложения доступны такие функции как connect Device (подсоединить устройство), Search Icon (найти иконку), Delete Icon (удалить иконку), Device Status (состояние устройства), Send Text (передать текст), Add Template (добавить шаблон) и другие. Начните работу в этом приложении с поиска устройства – это можно сделать либо с помощью функции Search Icon, либо кликнув по трем точкам в верхнем правом углу приложения и выбрав connect Device.

Функции, доступные в приложении

После этого на экране приложения вы увидите все доступные для подключения устройства. Выберите среди них модуль HM-10.

Доступные для подключения устройства

После этого модуль HM-10 будет успешно подключен к вашему приложению и вы сможете видеть его состояние вверху экрана.

Вид подключения модуля HM-10 в приложении

После этого вы сможете передать текст (строку) в модуль либо непосредственно из поля передачи текста, либо при помощи создания собственного (пользовательского) шаблона.

Поле для передачи текста в приложении

Для создания нового пользовательского шаблона (custom template) нажмите на иконку “+” в правом верхнем углу и после этого заполните необходимые параметры шаблона. “Name” – это будет название кнопки, поле “Text” будет использоваться для передачи текста (строки) на модуль HM-10, а “Description” – это будет описание кнопки.

Создание нового шаблона в приложении

Мы в нашем проекте создадим кнопку зеленого цвета для включения светодиода (LED ON). При нажатии этой кнопки на модуль HM-10 будет передаваться символ “N”, что будет приводить к включению светодиода, подключенного к плате Arduino. Аналогичным образом создадим кнопку красного цвета для выключения светодиода (LED OFF) – при ее нажатии на модуль HM-10 будет передаваться символ “F”.

Создание двух кнопок для нашего проекта в приложении

После этого вы сможете увидеть в приложении две созданные вами кнопки – с их помощью вы сможете управлять светодиодом, подключенным к плате Arduino.

Внешний вид созданных кнопок в приложении

Объяснение программы Arduino для управления светодиодом с помощью Bluetooth модуля HM-10

Полный текст программы и видео, демонстрирующее работу проекта, приведены в конце данной статьи. Здесь же мы кратко рассмотрим работу основных фрагментов программы.

Написание программы Arduino для этого проекта не потребует использования каких либо дополнительных библиотек если вы подключите модуль HM-10 к стандартному аппаратному последовательному порту платы Arduino – то есть к ее контактам 0 и 1 как показано на выше приведенной схеме. Однако мы в данном проекте решили использовать библиотеку для последовательной связи (Software Serial Library), с помощью которой программным способом организуем последовательный порт на контактах 2 и 3 платы Arduino (соответственно, если вы тоже хотите использовать этот подход, то вам необходимо внести изменения в приведенную выше схему).

Далее объявим две переменные, которые будут использоваться для хранения данных, принимаемых от модуля HM-10.

Далее инициализируем последовательную связь со скоростью 9600 бод с компьютером и модулем HM-10. Зададим режим работы используемого контакта и выключим светодиод.

После этого мы начнем проверять поступают ли какие либо данные по последовательному порту, к которому подключен модуль HM-10. И пока этот порт будет доступен, мы будем считывать данные из него и сохранять их в переменной inData.

Для отладки работы модуля HM-10 с помощью AT команд допишите в программу следующие строчки кода, которые будут передавать строку в модуль HM-10.

Если мы принимаем строку “F”, то мы печатаем соответствующее сообщение в окне монитора последовательной связи и выключаем светодиод. Если мы принимаем строку “N”, то мы печатаем соответствующее сообщение в окне монитора последовательной связи и начинаем мигать светодиодом с задержкой 500 мс.

Тестирование работы проекта

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(1 голосов, оценка: 5,00 из 5)
Загрузка...
9 033 просмотров

Комментарии

Подключение Bluetooth модуля HM-10 к Arduino и управление светодиодом из Android приложения — 15 комментариев

  1. Автор, у вас по инструкции по подключению указаны порты как 0 и 1 RX и TX/ А в коде SoftwareSerial HM10(2, 3); // RX = 2, TX = 3.
    Исправьте пожалуйста)

    • Спасибо за внимательность, но в разделе статьи про объяснение программы эти моменты объяснены. Если вы не хотите использовать библиотеку SoftwareSerial, то необходимо использовать контакты 0 и 1, а с этой библиотекой для организации последовательной связи можно использовать любые цифровые контакты Ардуино - в нашем случае мы использовали контакты 2 и 3.

  2. Возможно ли таким же образом посылать данные обратно - чтобы модуль передавал на телефон данные по запросу? Или это ПО может только посылать, но не получать?

    • Олег, в описании этой программы на play.google.com указано что она может только передавать команды, возможности приема данных нет, поэтому для вашей задачи необходимо найти другую аналогичную программу, с возможностью приема данных. Теоретически в передаче данных от модуля к смартфону никаких проблем нет

      • Спасибо. А не подскажите такую программу? Видел такие в других статьях, но они заточены под узкий круг задач, например, конкретно под термометр, я же ищу что-то для более "сырых" данных.

    • Ну на представленном видео видно же, что ничего не сгорает. Не изучал даташит на данный модуль, но, может быть, допустимое напряжение для него составляет около 5 В при рабочем напряжении 3.3в? Такое достаточно часто бывает. К примеру, у нас на сайте есть статья где Ардуино напрямую подключается к Raspberry Pi, контакты которой тоже "заточены" под работу с 3.3в. Если так боитесь за модуль, можете подключить его к Ардуино с помощью резистивных делителей напряжения, понижающих напряжение с 5 до 3,3 В. Но логика работы, описанная в данной статье, от этого не поменяется

      • За то время сколько снималось видео, модуль не сгорит. Но что он сгорит обязательно это вопрос времени! Мне принесли другой китайский модуль, который был подключён без преобразователя к 5 вольтовой Ардуино, так от у него контроллер запускается после шаманских действий, но глючит и соответственно о нормальной работе нет речи. Так что используйте хотя бы резистор 1 килоом в цепи RXD модуля, а лучше копеечный китайский преобразователь логических уровней, он на на скорости до 115200 бит/сек работает нормально!!

        • Хорошо, будем надеяться что ваш совет поможет другим пользователям, которые будут читать данную статью

            • Да, вижу мнения по этому вопросу разошлись

  3. Добрый день,

    Можно ли с помощью этого приложения Arduino Bluetooth Controller (HM-10 Module) слать АТ-команды на модуль HM-10?

    Буду очень благодарен за ответ.

    • Добрый вечер. К сожалению я не знаю ответа на этот вопрос, лично пока не собирал эту схему, и студенты мои ее пока не собирали. Даже не думал что эта статья станет достаточно популярной на нашем сайте

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *