- Прошивка Arduino по Bluetooth (HC-05)
- Загрузка скетчей в Arduino через Bluetooth
- Прошивка Bluetooth модуля HC-05/06 Ардуино
- Схема и распиновка Bluetooth модуля
- Настройка Bluetooth модуля HC-05/06
- Скетч для прошивки блютуз модуля Arduino
- Пояснения к коду:
- Прошивка модуля HC-05 AT-командами
- HC-06 AT-команды для настройки
- AT-команда
- Ответ модуля
- Примечание
Прошивка Arduino по Bluetooth (HC-05)
Имеется модуль HC-05.
Нужно реализовать с его помощью передачу данных и прошивку между arduino и ПК либо Смартфоном.
Пробовал по этому мануалу (добавил делитель напряжения для согласования уровней), но при прошивке выскакивает ошибка, каждый раз разная.
Подскажите решение.
Заранее благодарю!
P.S. Если использовать эту схему но заменить bluetooth модуль на usbuart то прошивка идет нормально.
P.P.S. прошивка на bluetooth модуле левая какая-то (+VERSION:hc01.comV2.1).
ПК с LPT портом у меня нет, так что прошить модуль наверное никак.
Добавлено через 9 минут
Пример ошибки:
avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is «C:\Program Files USER\Arduino\hardware\tools\avr/etc/avrdude.conf»
Using Port : COM4
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xa4
Добавлено через 5 минут
resp=0x каждый раз разный.
Добавлено через 10 минут
Если записать на чип заранее такой скетч то кое как по блютузу будет присылаться . TEST.
void setup() { Serial.begin(57600); } void loop() { Serial.println(". TEST. "); }
Кое как потому что очень медлено, хотя задержек в скетче нет.
Добавлено через 13 минут
Пробовал менять чипы (dip корпус), на всех одна проблема.
Добавлено через 3 минуты
Пробовал заменять конденсатор (reset) на перемычку.
Загрузка скетчей в Arduino через Bluetooth
Программируя Arduino, иногда желательно обойтись без физического соединения через USB к компьютеру, например:
- Силовые цепи — коммутирование 220В. Одна ошибка в соединении и прощай USB-контроллер любимого ситемного блока.
- Радиочастотные цепи — много наводок по питанию.
- Собранные и где-то закрепленные устройства, которые желательно перепрошивать, но неудобно к ним подлезать.
Я использовал наиболее дешёвые Bluetooth-модули с незамысловатым названием «Bluetooth-модуль HC-05(HC-06)». На ebay их можно найти от 200 руб. за штуку, в отечественных магазинах — от 500 руб. Советую брать модуль уже распаянный на переходнике «для Arduino», разница в деньгах минимальная, а экономит время на сборке схемы сопряжения.
Нам нужен именно HC-05, но так как визуально отличить их крайне сложно, велик шанс, что в руках окажется HC-06, даже если на упаковке написано «HC-05», как это произошло со мной:
Можно попробовать отличить по внешнему виду, если не все ножки Bluetooth-модуля запаяны или есть под рукой мультиметр. У HC-05 к светодиоду, распаянному на самом модуле, идет проводник от ноги 31, а у НС-06 от ноги 24.
На фото видно, что на всём ряду запаяна единственная 24-я нога, это стопроцентно модуль HC-06.
К счастью, HC-06 можно перепрошить в HC-05, но придётся найти компьютер с LPT-портом и потратить несколько часов. Инструкцию по перепрошивке можно прочесть здесь. От себя хочу добавить, что под Windows7 прошивка не состоялась, пришлось устанавливать Windows XP, а также в BIOS сменить режим порта LPT на EPP 1.7.
Особенно утомило переключение режимов LPT-порта и настроек в диспетчере утройств, поэтому сразу приведу правильные скриншоты. BIOS:
В диспетчере:
Прошивка HC-05, в отличие от HC-06, при установке соединения меняет сигнал на 32 выводе — это нужно чтобы хардварно сбросить программируемый Arduino и начать процесс заливки. Можно не перепрошивать, а нажимать кнопку RESET на плате каждый раз перед заливкой, причем нужно ловить нужный момент, что крайне неудобно. Выглядит это примерно так
Итак, имеем на руках модуль HC-05. Теперь нужно задать ему параметры работы. Для перевода в режим установки параметров нужно подпаять последнюю, 34-ю ногу к питанию 3.3в.
Затем подключаем к компьютеру через любой переходник USB-UART-TTL и в терминале даём следующую последовательность команд:
AT
AT+RESET
AT+ORGL
AT+ROLE=0
AT+POLAR=1,0
AT+UART=57600,0,0
AT+INIT
AT+INQ
Если есть желание поменять стандартный пароль на спаривание, то дополнительно:
AT+PSWD=5678
Если есть желание поменять название устройства, то дополнительно:
AT+NAME=RemoteArduino
После этого модуль отключаем, перемычку с 34 ноги убираем и приступаем финальной доработке модуля. Это можно сделать прямо на плате HC-05, мне же показалось удобнее сделать это в виде платы-переходника для прямого подключения к Mini Pro.
Для автоматического сброса Arduino при установке соединения необходимо вывести 32-ю ногу на разъём, для этого я отрезал ненужный мне вывод «WAKE-UP» и обозначил его как «RESET». Схема переходника получилась такой:
Зажигание светодиода будет показывать установленное соединение.
На этом с пайкой всё, но заливка всё равно пока не заработает. Дело в том, что Arduino IDE при каждой попытке заливки скетчка делает очистку буферов COM-порта, что приводит к закрытию BlueTooth соединения и отмене загрузки.
Чтобы избежать этого, нужно поправить конфигурацию Arduino IDE, который находится в файле C:\arduino\hardware\arduino\boards.txt. Отрываем этот файл в текстовом редакторе, ищем секцию, соответствующую плате, с которой работаем (у меня это Pro Mini 5V) и добавляем следующую строку:
pro5v328.upload.disable_flushing=true
Не забываем менять первое слово в строке, например, для Arduino Uno это будет:
uno.upload.disable_flushing=true
Теперь заливка должна заработать. Осталось маленькая досаждающая деталь — когда заходим в меню Arduino IDE и выбираем пункт «Tools», программа «морозится» на несколько секунд. Дело в том, что при каждом обращении к данному пункту меню, программа перебирает все доступные в системе, COM-порты, но, неоптимальным способом, что приводит к большим задержкам. Чтобы убрать эту задержку, нужно заменить библиотеку rxtxSerial.dll на доработанную версию, которую можно взять здесь. Кому интересны подробности проблемы, могут ознакомиться с веткой на форуме ардуино.
Вот другой вариант с кнопкой отключения питания и вывода TX от Arduino:
Схема второго варианта (Bluetooth-модуль другой, поэтому пины расположены по другому и Pro Mini не оригинальный, а «Deek-Robot», распиновка зеркальная):
Схема занимает минимум места, подключается быстро, настройки не требует. Также остаётся работоспособной возможность в Arduino IDE включить Serial Monitor и получать данные от устройства как при соединении через USB.
P.S.
Оказалось, что есть уже готовые такие переделанные модули, и возможно когда-нибудь мы увидим их в продаже в нашей стране.
Прошивка Bluetooth модуля HC-05/06 Ардуино
Рассмотрим, как сделать настройку Bluetooth модуля для Arduino с помощью AT-команд, отправляемых по последовательному порту. Данная информация будет полезна для тех, кто решил сделать проект на Ардуино в котором необходимо использовать беспроводную передачу данных между устройствами. При прошивке модуля, можно изменить многие параметры, установленные производителем.
Схема и распиновка Bluetooth модуля
Для настройки модуля необходимо подключить к нему питание от 3,3 Вольт, кроме того необходимо подать 3,3 Вольта на порт 34 (см. фото выше). Прошивка осуществляется по последовательному порту, так как аппаратный последовательный порт у Ардуино (порты TX и RX) будет занят для отправки AT-команд с компьютера, то мы используем программный последовательный порт с помощью библиотеки SoftwareSerial.h.
Данная библиотека позволяет реализовать программный последовательный порт на любых цифровых выходах Ардуино. Для настройки Bluetooth модуля его следует перевести в режим отладки — необходимо подключить вывод 34 к 3,3 Вольтам, питание модуля при прошивке тоже идет от 3,3 Вольт. В качестве контактов программного последовательного порта будем использовать цифровые выводы 2 и 3 на Arduino UNO.
Настройка Bluetooth модуля HC-05/06
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- Bluetooth модуль HC-05/06;
- провода «папа-папа» и «папа-мама».
После подключения модуля, загрузите скетч для настройки модуля HC-05/06. Скачать скетч и библиотеку SoftwareSerial можно с Google Диск по ссылке здесь. После загрузки скетча, открывайте монитор последовательного порта Arduino IDE и отправляйте AT-команды. Первым делом, следует отправить тестовую команду — AT, для проверки соединения модуля. Ответ модуля HC-05 / HC-06 должен быть — OK.
Скетч для прошивки блютуз модуля Arduino
#include "SoftwareSerial.h" // подключаем библиотеку SoftwareSerial mySerial(2,3); // указываем пины tx и rx void setup() < pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); // включаем hardware-порт mySerial.begin(38400); // включаем software-порт Serial.println("start setting"); > void loop() < if (mySerial.available()) < char c = mySerial.read(); // читаем из software-порта Serial.print(c); // пишем в hardware-порт > if (Serial.available()) < char c = Serial.read(); // читаем из hardware-порта mySerial.write(c); // пишем в software-порт > >
Пояснения к коду:
- В программе все предельно просто: при получении данных на аппаратном (встроенном) последовательном порту, данные отправляются в программный последовательный порт (на модуль). А при получении данных с модуля, они отправляются на аппаратный последовательный порт, то есть на монитор порта.
Прошивка модуля HC-05 AT-командами
Итак, чтобы изменить код доступа к Bluetooth-модулю, имя или другие характеристики, следует отправить следующие команды через монитор последовательного порта Arduino IDE (смотри скрин ниже). Также приведем пошаговую инструкцию, какие необходимо использовать AT команды для перепрошивки HC-05. А в конце статьи размещена более полная таблица at команд с небольшими пояснениями.
- узнаем имя Bluetooth-модуля: AT+NAME?
- задаем новое имя модуля: AT+NAME=ROBOT
- узнаем имя Bluetooth-модуля: AT+NAME?
- узнаем пин-код Bluetooth-модуля: AT+PSWD?
- задаем новый пин-код доступа: AT+PSWD=0000
- узнаем пин-код Bluetooth-модуля: AT+PSWD?
Обратите внимание, что при настройке модуля, в мониторе последовательного порта IDE Arduino следует выбрать пункт «NL & CR». После программирования модуля отсоедините вывод 34 от 3,3 Вольт и подключитесь к Bluetooth-модулю с телефона или планшета. Если при первом подключении блютуз модуля к Ардуино, у нас были стандартные настройки, то сейчас наш модуль имеет свое имя и новый пин-код.
Таким образом, мы можем использовать в одном месте сразу несколько bluetooth модулей, а чтобы не запутаться присвоить каждому свое уникальное имя. Также мы можем задать новый пин-код, чтобы защитить модуль от постороннего вмешательства. С помощью данной настройки модуля НС-05/06 мы можем получать данные с датчиков не только на мониторе порта, но и на любом Android — устройстве.
HC-06 AT-команды для настройки
AT-команда
Ответ модуля
Примечание
Если у вас еще остались вопросы, то можете их задать в комментариях к этой записи. Если информация на этой странице вам пригодилась и была полезной, то поделитесь ей в социальных сетях и поставьте свою оценку (пять звезд).