Прошивка arduino через bluetooth
annakin Сообщения: 130 Зарегистрирован: Пн окт 28, 2013 5:06 pm Откуда: Молдова Благодарил (а): 11 раз Поблагодарили: 10 раз
Загрузка Sketch по Bluetooth
Сообщение annakin » Ср июл 15, 2015 2:13 pm
Вчера решил прикрутить Bluetooth модуль HC-05 к Arduino что бы можно было заливать Скетчи по БТ без подключения USB шнурка к Arduino.
Покопался в интернете и нашёл кучу мануалов но не один толком не смог заставить работать, и тут начались танцы с бубном вокруг Arduino и HC-05.
В конце концов мне понадобилось 2 дня что бы чегото добиться, в итоге у меня получилось скетчи заливаются в Ардуинку по БТ.
Шас я попытаюсь объяснить как вам это сделать дабы не наступать на теже грабли что и я.
Что нам нужно:
1) Пины на 6 контактов.
3) Силиконовый пистолет (фоткать его не стал, думаю каждый знает что это такое)
4) Любой Bluetooth USB (у меня был в наличии УСБ Нано от Гембирта, но подойдёт и ноут с УСБ)
5) Само собой Arduino ) без разници какой и использовал Mega 2560 но тестировал на Uno дабы не спалить мегу)
6) Прямые руки (ну хоть чучуть)
7) Паяльник ( я использовал паяльную станцию BAKU)
Итак сам процес:
Подключаем Ардуину УСБ шнурком к компу заливаем скетч:
/* Serial Loop */ #include #define rxPin 8 #define txPin 9 SoftwareSerial mySerial(rxPin, txPin); // RX, TX char myChar ; void setup() < Serial.begin(9600); Serial.println("AT"); mySerial.begin(38400); mySerial.println("AT"); >void loop() < while (mySerial.available()) < myChar = mySerial.read(); Serial.print(myChar); >while (Serial.available()) < myChar = Serial.read(); Serial.print(myChar); //echo mySerial.print(myChar); >>
Вот даташит на модуль HC-05:
http://cdn.makezine.com/uploads/2014/03 . etooth.pdf
Скажу сразу Key это 34 контакт на плате HC-05, так вот коротим его с +3,3В на время пока мы будем прошивать HC-05 на нужные нам параметры.
Так подключили все это дело к Ардуинке и индикатор на БТ модуле HC-05 должен медленно моргать, если он моргает быстро значит он не стоит в режиме програмирования, проверьте перемычку +3,3В.
После того как у нас модуль уже запущен в режиме програмирования открываете Сериал Порт в IDE и вводим следующие команды:
AT+ORGL AT+ROLE=0 AT+POLAR=1,0 AT+UART=115200,0,0 AT+INIT
Всё как только вы закончили програмить Модуль отключаем Ардуинку от УСБ и отпаиваем перемычку 34 пин и +3,3В.
Подключаем обратно Ардуинку к УСБ и на компе начинаем поиск нашего модуля по БТ, как только вы его нашли нужно их спарить ( думаю тут вы сами разберётесь)
И дальше начинается самое интересное собираем вот такую схему:
Допустим вы всё подключили и приэтом умудрились не спалить к чертям Ардуинку и сам модуль БТ, запускаем IDE и в портах выбираем Порт исходящий БТ у меня это 8 порт.
Обычно УСБ БТ задействует два порта, на исходящие соединения и на Входящие, так вот нам нужен именно исходящий порт, это вы можете посмотреть в настройках БТ на компе там пишет.
Но по своему опыту скажу что это порт с низким значением, то есть у меня исходящий 8 а входящий 9.
Ну а дальше заливаите скетчи как обычно.
Но во всей этой прекрасной сказке есть одно НООО. После заливки скетчей надо делать ресет ардунке ((
Пока это я не вылечил, если кто сможет устранить этот нюанс пишите.
Всем спасибо за внимание.
с Ув. Николай.
UPD: Оказалось что Ресет Ардуинке не надо делать она сама ресетитса после заливки, при первом испытании проста наверно она у меня подвисла а при повторных двух всё прошло удачно, скетч залилса и Ардуинка ресетнулась. ))
UPD: Вот сделал видео как это работает.
http://youtu.be/kG6I-Js4B5s
За это сообщение автора annakin поблагодарили (всего 2): savenko_egor (Вс окт 09, 2016 1:06 am) • ErmolenkoM (Вс окт 09, 2016 9:25 pm)
Заливка скетчей через Bluetooth
В один прекрасный день я заинтересовался, можно ли зашивать новые скетчи в ардуину через имеющийся у меня Bluetooth модуль HC-06. Поиск информации в русскоязычном сегменте интернета успехов не дал. Поэтому хочу заполнить этот пробел.
*подразумевается, что вы уже подключили HC-06 к вашему компьютеру, и у вас в системе появились 2 com порта. Ком порт нужно выбрать меньший по номеру.
Что нам понадобится:
— Arduino
— HC-06
— любой NPN транзистор
— провод, флюс, припой, паяльник и т.д.
1. Узнаем, какая скорость используется для обмена с bootloader`ом:
Открываем WordPad`ом файл boards.txt, который лежит в Arduino\hardware\arduino
Ищем там свою плату, и смотрим для неё значение upload.speed. Например для Uno значение uno.upload.speed=115200.
2. Нужно настроить Bluetooth модуль на эту скорость.
Для этого подсоединим его к ардуине со следующей распиновкой:
VCC -> 5V
TX -> TX(pin1)
RX -> RX(pin0)
GND -> GND
Соединим проводом пин RESET и GND, подключим ардуину к компьютеру.
Откроем Arduino IDE -> Serial monitor. Сейчас мы можем посылать модулю АТ команды(http://www.micro4you.com/files/ElecFreaks/Bluetooth%20HC-06.pdf). Для начала напишите «АТ», модуль должен ответить «ОК». Если ответил — значит всё подключено правильно. Затем вам нужно написать команду «AT+BAUDX», где Х — номер, в зависимости от нужной скорости. Для Uno нужна скорость 115200, значит я пошлю команду «AT+BAUD8». Модуль должен ответить «OK115200».
Есть другой вариант изменить скорость модуля — через SoftwareSerial. Идея в том, чтобы подключить модуль, например, к пинам 2 и 3; используя пример SoftwareSerialExample (стандартная скорость HC-06 9600 бит/с). При этом замыкать пины RESET и GND не требуется.
3. Добавить reset. Для этого нам потребуется любой NPN транзистор(у меня завалялся S9014, http://www.stabilizatornapryjeniy.ru/article-s9014_tranzistor.html).
Коллектор нужно соединить с пином reset. Эмиттер — с gnd. Базу — с любым пином.
Дабы эта доделка не мешала комфортной работе с ардуиной, я reset взял с RESET EN, gnd со светодиода, а управляющим сделал аналоговый пин A5 (он может работать как цифровой.) Потом приклеить транзистор к плате термопистолетом.
В интернетах пишут, что вместо описанного выше достаточно соединить ваш управляющий пин и пин RESET проводом. (There is a reset pin in Arduino UNO. You don’t have to solder the transistor. Just connect it to reset pin via jump wire, it works fine.)
4. Самое главное: добавить функцию reset к вашей программе
int uploadpin=A5; void setup() < Serial.begin(115200); // скорость 115200 для Arduino UNO, // может быть разная для разных моделей pinMode(uploadpin,OUTPUT); >void loop() < // ваша программа тут. ///////////////////////////////////////// // проверка на загрузку нового скетча if( Serial.peek()=='0' ) < for( int i=0; idelay(10); // небольшая задержка > > ///////////////////////////////////////// >
Упрощенно говоря ардуина слушает Serial, и если найдет сигнал от компьютера, что тот хочет залить новый скетч то перезагрузит ардуину. Единственный минус этого решения — в обмене данными не должно быть нуля («0»), иначе ардуина перезагрузится(например от такой строки «0 «).
В качестве одного из решений было предложено ограничить время, на протяжении которого возможна загрузка скетчей 60 секундами:
То есть вам нужно сбросить ардуину или выключить/включить её для загрузки нового скетча.
Другое решение — перед загрузкой слать в Serial какую-то комбинацию, по которой будет возводиться внутренняя переменная serial_upload. Тогда условие будет выглядеть так:
if( Serial.peek()=='0' && serial_upload=1)
В общем полет вашей фантазии.
5. Готово. Прикрепите HC-06 к ардуине на тот-же термоклей, и заливайте скетчи по воздуху 🙂
Ссылки:
http://forum.arduino.cc/index.php?topic=128115.0
http://ame2.asu.edu/staff/kidane/ArdWilessBtProg.pdf
http://atroshin.ru/ru/content/avtomaticheskaya-perezagruzka-arduino-pri-podklyuchenii-terminala
Update:
для того, чтобы при открытии Arduino IDE сразу открывался скетч с прошивкой по воздуху замените файл BareMinimum.ino по пути Arduino\examples\01.Basics\BareMinimum на свой.
Беспроводное программирование платы Arduino Uno по Bluetooth
Плата Arduino Uno является чрезвычайно удобным инструментом для тех, кто хочет попробовать свои силы в изучении и программировании микроконтроллеров. Но одним из ее недостатков является то, что для ее программирования необходимо подключение платы к компьютеру по USB кабелю, а это не всегда представляется возможным, например, в случаях, когда плата уже «упакована» внутрь какого-нибудь устройства в закрытом корпусе. Единственно возможным решением в данном случае является беспроводное программирование или, как его еще называют – «программирование по воздуху» (OTA – Over the Air). Подобный вид программирования достаточно легко реализуется в таких микроконтроллерах как ESP8266 и ESP32 поскольку они имеют встроенный контроллер Wi-Fi. Но в Arduino для реализации беспроводного программирования нам необходимо будет задействовать Bluetooth модуль – рассмотрением данных вопросов мы и займемся в данной статье.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Bluetooth модуль HC05 (купить на AliExpress).
- Резисторы 1 кОм, 2,2 кОм (купить на AliExpress).
- Конденсатор 0,1 мкФ (купить на AliExpress).
- Адаптер питания.
- Макетная плата.
- Соединительные провода.
Bluetooth модуль HC05
Модуль HC05 представляет собой модуль Bluetooth связи, передающий принятую информацию по последовательному порту, специально спроектированный для осуществления беспроводной связи между микроконтроллерами. Bluetooth модуль HC05 позволяет работать как в режиме ведущего (master), так и в режиме ведомого устройства (slave), и переключаться между этими режимами. Его можно подключить с использованием последовательного порта, работающего со скоростью 9600 бод, что позволяет без проблем подключать его к большинству современных микроконтроллеров. Модуль HC05 работает от питающего напряжения 3.3V, но мы можем непосредственно подключать его к напряжению 5V, поскольку в его составе есть встроенный понижающий регулятор напряжения с 5V до 3.3V.
Технология Bluetooth является одним из самых простых способов организации беспроводной связи между электронными устройствами и на нашем сайте она использовалась во многих проектах, полный список которых можно посмотреть по следующей ссылке.
Программирование платы Arduino с помощью технологии Bluetooth
Для беспроводного программирования платы Arduino первым делом мы должны написать программу чтобы плата Arduino отвечала на AT команды. Для этого подключите плату Arduino к компьютеру с помощью USB кабеля и загрузите в нее следующий код программы: