Прошивка Arduino через Bluetooth

Обновлено: 30.06.2024

Bluetooth – самый популярный способ беспроводного подключения Arduino к смартфону. В этом уроке мы создадим интерфейс Arduino-Bluetooth и отправим сообщения с Arduino на смартфон и с Arduino на персональный компьютер.

Модуль Bluetooth HC-05

Bluetooth – это протокол радиосвязи, созданный в качестве беспроводной альтернативы последовательному протоколу RS-232. Сегодня эта технология популярна при подключении двух и более мобильных устройств, особенно смартфонов, планшетов и ноутбуков.

Мы будем использовать Bluetooth-модуль HC-05, широко доступное и дешевое Bluetooth-устройство, которое можно использовать в качестве главного (инициатора) или подчиненного (акцепторного) устройства. Есть еще один модуль bluetooth, HC-06, который выглядит точно так же, как HC-05. Основное различие между ними заключается в том, что HC-06 является ведомым устройством.

Вот как выглядит мой модуль HC-05:

На вашем устройстве может быть контакт KEY вместо контакта EN.

Модуль HC-05 имеет два режима: режим данных и режим команд. В режиме передачи данных модуль действует как беспроводной мост между двумя устройствами. По умолчанию модуль находится в режиме данных. Вывод KEY, когда на него подается высокий уровень (подключен к 3,3 В), используется для того, чтобы позволить HC-05 войти в режим AT-команды. AT-команды используются для настройки модуля. Мы обсудим эти команды позже.

На моем устройстве вход в режим AT-команды осуществляется путем удерживания кнопки нажатой, а затем включения модуля. В моей версии все еще есть КЛЮЧЕВАЯ булавка, но она недоступна:

Вывод EN, когда он находится в низком уровне (соединен с землей), отключает модуль. Штырь STATE используется для индикации состояния подключения: высокий уровень, когда модуль подключен к устройству, и низкий уровень, если нет.

Командный режим AT

Как уже упоминалось, мы входим в командный режим, либо подключая KEY к VCC, либо удерживая кнопку нажатой при включении питания. Светодиод состояния будет гореть в течение 1 секунды и не будет гореть еще одну секунду, если вы находитесь в режиме AT-команды.

Команды AT отправляются на модуль последовательно с помощью кабеля USB-to-TTL или Arduino. Выбрав последний вариант, я подключил tx-вывод HC-05 к tx-выводу Arduino UNO, а его rx-вывод к rx-выводу UNO, как в этом уроке.

Вот схема подключения:

Поскольку Arduino будет действовать как преобразователь USB в TTL и ничего больше, нам нужно загрузить в него пустой скетч. Пустой скетч требует пустых функций setup() и loop():

Откройте последовательный монитор и установите скорость передачи данных на 38400 и включите как NL, так и CR. Вот некоторые команды, которые вы можете использовать:

AT - проверить соединение. Модуль должен ответить «ОК»

AT+UART - посмотреть скорость передачи, стоповый бит и бит четности. Указывает скорость передачи данных, используемую в командном режиме. AT+UART= для установки новой скорости передачи данных. Скорость передачи может быть 1200, 2400, 4800, 9600, 19200, 38400, 57600 или 115200

AT+PSWD — просмотреть пин-код или AT+PSWD=

чтобы установить новый пин-код

AT+ADDR — просмотреть MAC-адрес устройства

AT+ROLE - просмотр роли (0 для ведомого, 1 для ведущего). AT+ROLE= для установки новой роли.

AT+ORGL - восстановить заводские настройки

AT+VERSION — просмотреть версию устройства

AT+STATE — просмотреть состояние устройства

AT+CMODE - установить/просмотреть режим подключения. 0, чтобы подключить устройство к определенному адресу с помощью AT+BIND. 1 для подключения устройства к любому адресу.

AT+BIND= - подключить устройство к определенному адресу bluetooth после AT+CMODE = 0.

Управление светодиодом через Bluetooth и Android

Нам не нужно использовать AT-команды для управления светодиодом через Bluetooth. Нам просто нужно перевести модуль HC-05 обратно в командный режим и начать передавать через него данные.

Если ваше устройство все еще находится в командном режиме, просто отключите питание и включите его обратно. Индикатор состояния устройства начнет быстро мигать, показывая, что оно не подключено.

Затем нам понадобится приложение для Android, которое может отправлять последовательные команды через Bluetooth.

К сожалению, для пользователей iPhone/iPad такой возможности нет, поскольку Apple требует, чтобы каждое устройство было сначала аккредитовано, прежде чем его можно будет использовать, а HC-05 не аккредитован. Вам понадобится модуль BLE для работы с устройствами iOS. В ближайшее время я напишу для этого отдельный туториал.

Существует несколько терминалов Bluetooth для Android. Я выбрал последовательный терминал Bluetooth .

Подключите приложение к модулю HC-05. Теперь светодиодный индикатор состояния модуля должен гореть постоянно.

Теперь мы напишем скетч, который принимает символ из последовательного порта (к которому подключен HC-05) и меняет состояние светодиода на основе этого символа. Для этого у нас будет другая схема подключения:

Я отказался от аппаратных выводов tx и rx, чтобы мы по-прежнему могли использовать последовательный монитор для отладки. Это означает, что HC-05 будет использовать библиотеку SoftwareSerial.

Вот как работает скетч: «1», полученная через последовательный порт программного обеспечения, включит встроенный светодиод. И наоборот, «0» выключает светодиод.Мы выводим сообщение на монитор последовательного порта для каждого происходящего события для упрощения отладки.

ESP32 – невероятно мощный микроконтроллер. С Wi-Fi, Bluetooth и двумя ядрами вы можете сделать массу вещей, включая обновление прошивки, даже не подключая его к компьютеру. Это то, что я давно хотел реализовать, чтобы позволить кому-то вроде моей бабушки устанавливать обновления программного обеспечения на гипотетический электронный подарок. Все примеры, которые я постоянно видел в Интернете, были основаны на примерах ArduinoOTA, включенных в среду разработки Arduino, и следовали одному и тому же основному методу.

  1. Жестко закодируйте SSID и пароль в ESP32 с помощью Arduino IDE
  2. Подключите ESP32 к WiFi и настройте локальный веб-сервер, способный получать двоичный файл.
  3. Получите IP-адрес по последовательному порту, если mDNS ESP32 не хочет работать в вашей сети.
  4. Сохраните скомпилированный двоичный файл локально на своем компьютере или телефоне.
  5. Перейти на страницу или IP-адрес ESP32
  6. Перейдите к файлу в раскрывающемся списке ESP32 и нажмите "Отправить".

Этот процесс работает хорошо и обновляет ESP32 за несколько секунд в зависимости от размера файла, но для некоторых приложений он не самый лучший. Например, я хотел красивое неуклюжее приложение в HTML, которое могло бы взаимодействовать с моим ESP32 через BLE, и включение его в скетч Arduino (в дополнение к тому, что с ним сложно иметь дело), ​​вероятно, в любом случае превысило бы бюджет памяти для обновлений OTA. . Итак, поскольку я уже использую BLE и веб-приложение, давайте добавим OTA-обновления в качестве вишенки на торте. BLE — не лучший способ сделать это, но, как я уже сказал, он уже используется в других местах. Это обновление BLE OTA использует следующий метод.

  1. ESP32 запускает сервер BLE.
  2. WebApp позволяет пользователю подключаться к нашему серверу ESP32 BLE с помощью веб-Bluetooth. (Извините, пользователи iPhone)
  3. При сопряжении веб-приложение считывает номера версий аппаратного и программного обеспечения, жестко закодированные в эскизе на ESP32.
  4. Этот номер версии сверяется с файлом JSON, содержащим версии программного обеспечения, а также версии их совместимого оборудования.
  5. Если доступно совместимое обновление, пользователю предлагается обновить его.
  6. Если пользователь нажимает «Да», веб-приложение извлекает прошивку и записывает ее в ESP32 буферизованными фрагментами.

SparkFun Thing Plus — ESP32 WROOM

SparkFun Thing Plus — ESP32 WROOM

SparkFun ESP32 Thing Plus — это следующий шаг к тому, чтобы приступить к работе с идеями Espressif IoT, сохраняя при этом все преимущества…

Веб-приложение

Это мое первое знакомство с Javascript и HTML, поэтому я начал с веб-приложения React (перейдите по этой ссылке, чтобы настроить ванильное приложение). Вы можете загрузить окончательный код, чтобы просмотреть его во время чтения, нажав кнопку ниже. Если вы правильно настроили все свои инструменты для React, вы сможете перейти к /ESP32_OTA_BLE и запустить npm start для локального запуска веб-приложения. Также было бы неплохо прочитать это руководство Google Developer Web Bluetooth и, самое главное, убедиться, что вы знаете, что такое промисы Javascript и как они работают.

Вы можете поковыряться в приложении, но давайте рассмотрим код в App.js, чтобы увидеть, что на самом деле делает приложение.

Это функция, которая на самом деле обрабатывается моделью DOM, поэтому основная структура нашей страницы может быть здесь. В этом простом приложении мы разместили здесь кнопку подключения и всплывающее окно с запросом пользователя. Наша кнопка при нажатии запускает нашу функцию BTConnect, которая начинает поиск устройств.

BTConnect()

Функция BTConnect вызывается для поиска и подключения к BLE-серверу ESP32. Обратите внимание, как мы фильтруем сервисы, соответствующие переменной myESP32, которая объявлена ​​в строке 13 с пользовательским UUID. Этот UUID совпадает с тем, который ESP32 использует для службы BLE, поэтому при поиске устройств мы увидим только тот ESP32, который мы уже запрограммировали с помощью нашего эскиза OTA. После подключения мы сохраняем службу BLE, к которой мы только что подключились, глобально и запускаем нашу функцию CheckVersion().

при отключении()

onDisconnect — это обработчик событий, который предложит пользователю повторно подключиться к устройству, если оно отключится. Если ESP32 отключается во время обновления, перезагрузите ESP32 перед повторной попыткой. Эта функция содержит ошибки и иногда зависает, поэтому ее нужно доработать.

ПроверитьВерсию()

CheckVersion() сначала получает номера версий аппаратного и программного обеспечения из ESP32 и сохраняет их глобально. Затем приложение получает файл JSON с GitHub, в котором есть список наших существующих версий программного обеспечения и версий их совместимого оборудования.Если версии программного обеспечения не совпадают, мы проверяем, совместима ли самая новая версия с нашим текущим оборудованием. Если это так, мы вызываем PrompUserForUpdate(), чтобы спросить, хочет ли пользователь выполнить обновление до совместимой версии. Если нет, мы проверяем следующую новейшую версию программного обеспечения, пока неизбежно не найдем какое-либо совместимое программное обеспечение.

ПодсказкаПользователюForUpdate()

Эта функция открывает простое всплывающее окно с вариантами ответа «да» или «нет». Всплывающее окно информирует пользователя об их текущей версии и о том, что она устарела, и спрашивает, не хотят ли они обновиться до новейшей версии, совместимой с их оборудованием. Если они нажимают «да», приложение получает соответствующий двоичный файл с GitHub, сохраняет его и вызывает SendFileOverBluetooth(), передавая только что загруженный двоичный файл в функцию.

ОтправитьФайлПо Bluetooth()

Первое, что делает эта функция, — подготавливает данные к отправке, используя их исходный размер. Эта функция устанавливает прослушиватель событий для той же характеристики GATT, в которую мы записываем наши двоичные данные, так что, когда ESP32 закончит обработку данных, ESP32 может записать в характеристику и активировать прослушиватель событий для отправки следующего пакета. После того, как мы настроили прослушиватель событий для вызова SendBufferedData() , мы сами вызываем SendBufferedData(), чтобы запустить цикл Write/Flag/Write.

SendBufferedData и RecursiveSend(характеристика, данные)

SendBufferedData() берет наш файл и разбивает его на соответствующие фрагменты размером 512 байт (размер характеристики GATT) и вызывает RecursiveSend(характеристика, данные) с соответствующим фрагментом. Эта функция возвращает обещание самой себе при отправке, чтобы гарантировать, что мы не попытаемся записать характеристику, пока операция GATT все еще выполняется.

Эскиз Arduino

На стороне Arduino все относительно просто. У нас есть функция begin, которая инициализирует наш BLE-сервер, сервисы и характеристики. pOtaCharacteristic инициализируется с помощью NOTIFY и WRITE, что позволяет ему записывать во флаг, а также получать данные от нашего Клиента. Для NOTIFY нам также нужно добавить в характеристику дескриптор BLE2902. Для WRITE должен быть подключен обратный вызов, чтобы ESP32 делал что-то с данными каждый раз, когда записывается характеристика. Посмотрите, как pOtaCharacteristic инициализируется в функции begin() ниже.

Во время обратного вызова происходит все волшебство. При загрузке ESP32 имеет значение updateFlag, которое является ложным. При первом вызове обратного вызова (т. е. приложение хочет начать запись новой версии) ESP32 настраивает свой обработчик OTA и начинает раздел. При каждом последующем обратном вызове проверяется размер полученных данных. Если это полные 512 байт, ESP32 записывает их в раздел OTA, а затем записывает несколько байтов в характеристику, которую он только что прочитал, чтобы уведомить WebApp о том, что он готов для другого пакета. Если у нас есть неполный пакет, мы знаем, что мы в конце пути, поэтому мы записываем эти байты в раздел, проверяем, в порядке ли раздел, и если это так, мы перезагружаемся с нашей новой прошивкой. Код для этого обратного вызова приведен ниже.

Компиляция для OTA

Если вы собираетесь выполнять обновления OTA, вам нужно убедиться, что размер вашей флэш-памяти и схема разделов правильно установлены в Arduino. Обычно мне нравится выбирать Minimal SPIFFS (1,9 МБ APP с OTA/190 КБ SPIFFS) в параметрах ESP32 Dev Modules для схемы разделов, потому что я редко использую SPIFFS.

 Настройки компиляции

Вы также можете настроить таблицу разделов вручную, если хотите, но мы не будем рассматривать это в этом руководстве. Вам также потребуется изменить номера версий аппаратного и программного обеспечения, чтобы они отражали реальность, их можно найти в начале BLE.cpp

Выбрав нужные параметры, перейдите в раздел Скетч -> Экспортировать скомпилированный двоичный файл, чтобы скомпилировать и сохранить двоичный файл в папке эскиза. Отсюда нам нужно переименовать и переместить этот BIN, чтобы настроить наш репозиторий GitHub, чтобы все работало вместе.

Гитхаб

Наше веб-приложение будет взаимодействовать с GitHub, поэтому нам, разработчикам, будет относительно легко продвигать новый код с помощью функции выпуска GitHub. Однако на самом деле мы получаем только JSON и BIN, поэтому вы также можете просто разместить их в самом приложении. Единственный шаг, который GitHub удаляет из этого, заключается в том, что, правильно назвав свой выпуск, вы можете избежать ручного изменения некоторой файловой структуры, чтобы WebApp мог найти правильный BIN. В любом случае, на GitHub нам нужны два компонента. Один представляет собой JSON наших существующих версий программного обеспечения и их совместимых аппаратных версий, а другой — все файлы BIN, совместимые с выпуском программного обеспечения. Посетите страницу выпусков на GitHub и проверьте содержимое каждого выпуска, если у вас все еще есть вопросы о том, как все должно быть структурировано.

версия.JSON

Наша версия.Файл JSON структурирован так, что новейшая версия программного обеспечения находится в позиции 0 в массиве. Доступ к новейшей версии программного обеспечения можно получить, вызвав data.firmware[0]['software'] . Затем вы можете просмотреть раздел «Оборудование» той же записи, чтобы увидеть все оборудование, совместимое с этим программным обеспечением. Новейшие версии оборудования также должны храниться вверху записи JSON. Пример файла JSON приведен ниже.

BIN-файлы

Репозиторий, который используется в этом руководстве, состоит из трех папок. Тот, который называется GithubRepo, должен иметь все, что необходимо для фактического общедоступного репозитория, к которому обращается приложение, которое на самом деле представляет собой всего несколько файлов BIN (несколько аппаратных версий, совместимых с одним и тем же программным обеспечением) и JSON. В заголовках ваших файлов BIN должны быть указаны их совместимые версии аппаратного обеспечения, а ваш файл JSON должен включать структуру для текущего выпуска, а также для всех предыдущих выпусков. Например, приведенный выше файл JSON будет находиться в папке только с одним BIN под названием v2.0.bin. После отправки этих файлов на GitHub сделайте релиз для репозитория в этом состоянии и назовите его версией программного обеспечения. Для приведенного выше JSON (и связанного с ним BIN ) этот заголовок и для тега, и для выпуска будет v2.0.0. Важно, чтобы у каждой версии программного обеспечения был свой соответствующий выпуск с скомпилированными двоичными файлами и JSON.

Использование OTA Updater

Хорошо, теперь, когда мы рассмотрели, как все работает, использование должно быть довольно простым. Первое, что нужно сделать, это загрузить скетч из папки ArduinoSketch на ESP32 (не забудьте выбрать правильные настройки раздела, как описано в разделе «Скетчи Arduino»). Этот скетч должен быть сконфигурирован как аппаратная версия v1.2 (фактический номер версии здесь произвольный, просто для демонстрации функциональности) и программная версия v0.1.0. Теперь откройте последовательный терминал на скорости 115 200 бит/с, чтобы убедиться в этом, а также в конечном итоге посмотреть, как ESP перезагружается с новой прошивкой.

Теперь, когда у ESP32 есть прошивка, мы можем продолжить и загрузить веб-приложение на локальном сервере, перейдя в папку, в которую оно было загружено (внутри репозитория в веб-приложении), и запустив npm start .

Начальная веб-страница< бр />

Отсюда нажмите кнопку «Подключиться к Bluetooth», которая отобразит доступные устройства с правильным UUID и позволит вам подключиться. Очевидно, продолжайте и подключитесь к устройству.

Экран подключения< бр />

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

Запрос веб-приложения для обновления пользователя

Нажав кнопку "Да", начнется процесс обновления. Появится процент, показывающий, как далеко продвинулось обновление. Этот процесс может занять довольно много времени. По завершении ESP32 перезагрузится.

Загрузка новой прошивки в ESP32

Когда ESP32 перезагрузится, он отключится от Bluetooth. В настоящее время веб-приложение не справляется с этим изящно и зависает, поэтому перезапустите его, как считаете нужным, и снова подключитесь к ESP32, чтобы увидеть появление новой версии! Вы также можете проверить это в Serial Monitor

Теперь вы можете свободно добавлять любые элементы в свой скетч ESP32 или в свое веб-приложение! Обязательно всегда проверяйте, что вы можете не только прошить скомпилированный двоичный файл, но и прошить ESP32, на котором запущен этот скомпилированный двоичный файл. Кроме того, обязательно следите за двоичными файлами и будьте вдвойне уверены, что в скомпилированном двоичном файле закодирован правильный номер версии аппаратного и программного обеспечения, иначе могут возникнуть проблемы в будущем.

При тщательном ведении хозяйства конечный пользователь может относительно легко работать с ним!

images/4-1.jpg

Опубликовано 4 октября 2014 г. Обновление: Если у вас есть модули с синим светодиодом в верхнем левом углу, значит, у вас более новая модель с немного другим программным обеспечением, хотя они должны работать одинаково.
Я недавно купил несколько модулей Bluetooth HC05 и HC-06. Это довольно стандартно, особенно при использовании с Arduino, и я был удивлен тем, насколько легко было заставить работать базовую последовательную связь. Доступно несколько немного отличающихся модулей. Те, что у меня есть, имеют маркировку zs-040. Платы zs-040 отличаются от некоторых других модулей тем, что они имеют контакт EN, а не контакт KEY.

В HC-05 zs-040 и HC-06 zs-040 используется одна и та же разделительная плата (даже одинаковая трафаретная печать), но есть некоторые заметные различия:
– HC-06 не имеет кнопочный переключатель
– у HC-06 только 4 контакта заголовка
– у HC-06 нет подключенных контактов 31-34
У них также разные прошивки. HC-05 может быть ведущим или ведомым. HC-06 — только ведомое устройство. Это означает, что HC-05 может инициировать соединение с другим устройством, а HC-06 может принимать соединение только с другого устройства.
Платы основаны на модулях Bluetooth EGBT-045MS/EGBT-046S, которые загружены прошивкой SPP для связи по UART.

Технические характеристики модулей Bluetooth EGBT-045MS/EGBT-046S

Радиочип: CSR BC417.
Память: внешняя флэш-память 8 Мбит.
Выходная мощность: от -4 до +6 дБм, класс 2. до 3 Мбит/с
Интерфейс: UART
Антенна: Встроенная
Размеры: 27 Ш x 13 В мм
Напряжение: от 3,1 до 4,2 В пост. Насколько я могу судить, модули EGBT-045MS и EGBT-046S имеют одинаковое аппаратное обеспечение, и единственная разница заключается в прошивке. Однако разные прошивки меняют распиновку.

Коммутационные платы zs-040 включают в себя регулятор напряжения 3,3 В, что позволяет платам принимать VCC от 3,6 до 6 В на основной контакт/разъем VCC. Тем не менее, на контакты RX и TX по-прежнему подается напряжение 3,3 В.
Arduino будет принимать 3,3 В в качестве ВЫСОКОГО сигнала, поэтому контакт TX HC-05/06 (выход) можно напрямую подключить к 5 В Arduino. Контакт HC-05/06 RX (in) не может принимать 5 В и не должен подключаться напрямую к Arduino. Прямое соединение будет работать в течение короткого времени, но оно повредит небольшой модуль синего зуба, и в конечном итоге вы убьете контакт RX. 5V от Arduino необходимо каким-то образом уменьшить, и простой способ сделать это — использовать делитель напряжения, сделанный из 2 резисторов. Обычно я использую резистор на 1 кОм и резистор на 2 кОм.

Подключения к разделительной доске

images/4-4.jpg

На изображении ниже показаны основные дорожки/соединения на коммутационной плате zs-040, и, как вы можете видеть, для совместимости с различными прошивками некоторые контакты были соединены вместе.

У HC-06 нет контактов EN и STATE.

След между контактами 31 и 24 на коммутационной плате связывает контакт светодиода состояния на EGBT-045MS с контактом светодиода состояния на EGBT-046S. Затем соединение идет к реальному светодиоду на коммутационной плате. Соединение между контактами 31 и 24 позволяет использовать одну и ту же коммутационную плату как для EGBT-045MS, так и для EGBT-046S

Кнопка переключения

Кнопочный переключатель подключает VCC (3,3 В) к контакту 34 и используется для перевода EGBT-045MS / HC-05 в режим AT. Есть 2 режима АТ, я называю их «мини-режим» и «полный режим». Кратковременное нажатие на кнопочный переключатель переводит модули в мини-режим, и не все команды работают. Удержание переключателя в замкнутом состоянии переводит модули в режим полного АТ, в котором работают все АТ-команды. Отпускание переключателя возвращает контакт 34 LOW.
Подробнее о AT-командах см. Arduino с модулем Bluetooth HC-05 (ZS-040) — AT MODE
Большинство модулей HC-06 не имеют кнопочного переключателя (место пусто) и вывода 34 HIGH на HC-06 ничего не делает.

Пин-код СОСТОЯНИЯ

На приведенной выше фотографии видно, что контакт STATE подключен к контакту 32 и контакту 25 маленьких модулей с синим зубом. Контакт 32 — это светодиод 2 на EGBT-045MS/HC-05. Контакт 32 имеет НИЗКИЙ уровень, когда модуль не подключен, и ВЫСОКИЙ уровень, когда модуль подключен. Это дает нам простой способ определить, действительно ли HC-05 подключен или нет. Подключите контакт STATE к цифровому контакту Arduino, и если digitalRead() возвращает HIGH, вы знаете, что модуль имеет активное соединение. Вы можете, конечно, подключить светодиод к выводу STATE в качестве визуального индикатора соединения.
Я еще не пробовал это на HC-06, но, поскольку это не упоминается в руководстве, я полагаю, что оно не активно.

Как прошить прошивку модуля Clone HM-10 BLE с помощью Arduino Uno

При использовании модуля BLE HM-10 вы должны столкнуться с некоторыми действительно неприятными проблемами, такими как невозможность отправки или получения AT-команд или невозможность сопряжения HM-10 со смартфоном. Если вы столкнулись с этими проблемами, ваш модуль BLE HM-10 наверняка является клонированным модулем HM-10. Да, вы не ослышались, клонированный модуль HM-10. Однако после прошивки оригинальной прошивкой он действует как настоящий модуль BLE HM10 и может использоваться как оригинальный модуль Bluetooth. Здесь мы подключили модуль BLE HM10 к Arduino Uno для управления светодиодом.

Что такое клонированный модуль HM-10?

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

HM10 Модуль BLE 4.0

Модуль BLE HM-10 – это модуль Bluetooth с низким энергопотреблением (BLE), построенный на базе CC2540 или CC2541 компании Texas Instruments. Китайский производитель Jinan Huamao Technology является разработчиком платы и прошивки. Производитель заявил в официальной документации, что на рынке доступно несколько клонов.

Как отличить подлинный модуль HM10 BLE от клона

Доступно два типа модулей BLE HM-10: оригинальные и китайские клоны. Чтобы определить разницу между оригинальным и китайским клонированным модулем HM-10, есть несколько моментов, которые необходимо сделать.

<р>1. Во-первых, посмотрите на модуль HM-10. Если кварцевый осциллятор 32 кГц доступен на плате HM-10, то он является подлинным, иначе это китайский клон HM10.

 Подлинные и клонированные модули HM10 BLE

<р>2. Второй способ найти — подключить HM10 к любому последовательному модулю и отправить AT-команды. Если HM-10 не отвечает на AT-команды, значит, это клонированный модуль HM-10.

Как изменить или прошить прошивку модуля Clone HM-10 BLE

Для того, чтобы поменять прошивку, нам очень нужны хорошие навыки пайки. После смены прошивки модуля HM10. Вы сможете получить доступ ко всем его функциям. Существует два способа прошивки клонированного модуля HM10:

<р>1. Первый метод включает программатор SmartRF Flash Programmer от Texas Instruments.

<р>2. И второй способ включает Arduino в качестве программатора для HM-10.

В этом уроке мы будем использовать второй метод прошивки модуля HM-10, то есть Arduino в качестве программатора для HM-10. Итак, давайте приступим к шагам по прошивке модуля HM-10 с использованием Arduino UNO в качестве программатора. Как было сказано ранее, для соединения HM-10 с Arduino потребуется пайка. Нам нужно припаять провода к контактам DEBUG_CLOCK, DEBUG_DATA, RESET_N HM-10. Затем вся процедура объясняется в следующих разделах.

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

Оборудование

  • Arduino (UNO, Pro Mini)
  • Конвертер USB в TTL для подключения Arduino к ПК (в случае arduino pro mini или аналогичного)
  • Плата CC2541: HM-10, CC41
  • Некоторые перемычки
  • Паяльник (для припайки провода к плате HM-10)

Распиновка HM-10

HM-10 Pin Out

Схема

Во-первых, припаяйте маленькие перемычки к контактам платы HM-10, а затем выполните соединения схем с помощью Arduino, чтобы прошить прошивку внутри модуля HM10 BLE.

Схема прошивки модуля BLE Clone HM-10 с использованием Arduino Uno

Аппаратная схема для прошивки модуля Clone HM-10 BLE с использованием Arduino Uno

Шаги по обновлению прошивки Bluetooth-модуля HM10 с помощью Arduino Uno

<р>1. Во-первых, загрузите и загрузите скетч CCloader на Arduino Uno с помощью Arduino IDE. Этот zip-файл содержит все файлы (файл .bin, CCloaderArduino.ino, CCLoader.exe), связанные с прошивкой прошивки.

  1. Откройте скетч в Arduino IDE
  2. Настройте скорость передачи данных, плату, COM-порт, программатор и т. д.
  3. Скомпилируйте и загрузите скетч на UNO Board.
<р>2. Теперь подключите плату HM-10/CC2541 к Arduino в соответствии с приведенной ниже таблицей после пайки проводов на плате HM-10:

Имя булавки

Значки CC2541

Контакты Arduino UNO

Припаянный BLE-модуль HM-10 для прошивки

<р>3. Теперь подключение схемы готово, следующим шагом будет запись прошивки HM-10 с помощью Windows CCloader.exe. Храните все файлы в одной папке, например CCloader.exe, CC2541hm10v540.bin (в моем случае я сохранил его в «Пользователи»> «Рабочий стол»> «HM10»). Файл CC2541hm10v540.bin необходимо извлечь, так как он будет загружен в формате Zip.

<р>4. Теперь откройте командную строку и перейдите в папку, где находится «CCloader.exe». В моем случае это C:\Users\Abhiemanyu Pandit\Desktop\HM10

Действия по обновлению встроенного ПО Bluetooth-модуля HM10

<р>5. Напишите и выполните команду в формате вроде:

Примечание. Замените COM-порт номером COM-порта (например, 2,3,4,5). Не пишите COM5 или COM4, ​​просто напишите номер порта. Также замените файл Firmware.bin, исключая знаки <>, на ваше имя файла. Обратите внимание, что если вы используете Arduino Uno, используйте «0», а если вы используете другой Arduino, например. Micro, затем измените 0 на 1

В моем случае команда выглядит так:

Вы также можете изменить имя прошивки и имя CCloader. если вы измените имя с CCloader.exe -> CCloader123.exe и CC2541hm10v540.bin -> CC2541.bin с COM-портом 5, то команда будет выглядеть следующим образом:

Вы должны поместить файл Firmware.bin в ту же папку, где находится CCloader.

<р>6. После выполнения вышеуказанной команды начнется загрузка прошивки, просто дождитесь ее завершения. По завершении командная строка будет выглядеть так, как показано ниже.

Обновление HM10 Прошивка с использованием Arduino
Загрузить новую прошивку в HM10 с помощью Arudino

Теперь все готово, новая прошивка успешно установлена, а CC2541 теперь имеет подлинную прошивку HM-10.

<р>7. Теперь, если вы хотите обновить или ухудшить прошивку, вам не нужно снова выполнять эти же шаги. Просто подключите модуль HM-10 с преобразователем USB в TTL с Rx, Tx, Vcc, GND и выполните обычные шаги для обновления прошивки.

На этом полное руководство по замене и прошивке модуля HM-10 с помощью подлинной прошивки завершено. Обратите внимание, что после прошивки встроенный светодиод HM-10 перестает светиться, это не означает, что ваш HM-10 не работает. Прошивка не имеет светодиодного кода или PIN-код может быть другим. Если у вас есть какие-либо сомнения или предложения, оставьте комментарий ниже или напишите на наш форум.

Читайте также: