Войти
Android, Windows, Apple, Ликбез. Социальные сети. Драйверы
  • Японские телефоны Новый японский смартфон
  • Lenovo G500S: характеристики, основные особенности
  • Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
  • А конкуренты у смартфона есть
  • Что такое расширение файла TRZ?
  • Не работает динамик в "айфоне"
  • Уроки Arduino: управление устройствами со смартфона для чайников. Уроки Arduino: управление устройствами со смартфона для чайников Управление ардуино по блютуз с компа

    Уроки Arduino: управление устройствами со смартфона для чайников. Уроки Arduino: управление устройствами со смартфона для чайников Управление ардуино по блютуз с компа

    Хотели бы вы организовать беспроводное включение/выключение света в доме? Если да, то для подобного проекта можно использовать Arduino, bluetooth модуль HC-06, реле и знания основ схемотехники.

    В этой статье мы рассмотрим основы взаимодействия bluetooth модуля HC-06 с Arduino. Рассмотрим примеры передачи и приема данных через блютуз на примере включения/выключения светодиода.

    Для реализации более серьезных автоматизированных систем вроде "умного дома", эти основы будут как нельзя кстати.

    Начать работать с HC-06 достаточно просто. Все, что вам надо знать - расположение контактов для подключения. На HC-06 шесть контактов: wakeup, VCC, GND, TXD, RXD и State. На этапе, используем 4 контакта: VCC, GND, TXD и RXD.


    Ниже показано как именно подключается Bluetooth модуль к Arduino.


    HC-06 выступает в роли последовательного порта, через который вы передаете и принимаете данные. То есть, используя окно серийного монитора в Arduino IDE или Bluetooth приложение на вашем компьютере или телефоне, вы можете контролировать и управлять вашим проектом. Например, в качестве терминала можно использовать Teraterm. Перед загрузкой скетча на Arduino , отключите модуль HC-06. Так как модуль производит обмен данными с помощью контактов tx/rx, загрузить скетч не получится. После загрузки скетча можете подключать bluetooth модуль.

    Echo скетч для Arduino и HC-06

    Данный скетч дает вам возможность отсылать строку на Arduino через bluetooth и получать ответ, который отображается в серийном мониторе.

    Примечание . Если вы используете Arduino Mega, измените строку кода while(Serial.available()); на while(Serial.available()>0);. В противном случае, скетч не будет отрабатывать.

    LED скетч для Arduino и HC-06

    Эта программа дает возможность включать/выключать светодиод, отправляя команды на Arduino через Bluetooth.

    Взаимодействие HC-06 с компьютером

    На видео ниже показано как подключить HC-06 к персональному компьютеру иди другму устройству с поддержкой bluetooth.

    Примечание . На видео скачано, что программа, которую вы используете в качестве серийного монитора (Teraterm в данном конкретном случае), подключается к INCOMING (входящему) com порту. Это не правильно. Надо использовать OUTGOING (исходящий) com порт.

    После подключения HC-06, откройте Teraterm или другой подходящий терминал. Выберите серийный порт, который отвечает за обмен данными с HC-06 (более детальные пояснения по этому поводу есть на видео).

    После успешного подключения HC-06, можете отправлять данные на Arduino и обратно. Если вы загрузили второй скетч, вы сможете включать/выключать светодиод, отправляя символы “n” и “f” соответственно.

    Пример Echo

    Пример LED

    Сфера применения HC-06 по сути безгранична. Можно управлять любыми роботизированными системами и процессами. Надеемся, что приведенные основы работы с bluetooth модулем HC-06 будут вам полезны в проектах на Arduino.

    Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

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

    Непосредственно сам Bluetooth-модуль. В таком виде он может использоваться в различных устройствах, где впаивается непосредственно в плату. Модуль имеет 34 вывода, среди которых: выводы для соединения с компьютером по UART, передачи звука по методу PCM (импульсно кодовая модуляция), аналоговый вход и выход, контакты для подключения к USB разъёму, SPI интерфейс, а также порты общего назначения. На самом деле не все эти выводы доступны к использованию, заблокирован доступ к выводам передачи звука (5-8), аналоговым входу и выходу (9, 10), а так же к группе контактов для подключения к USB (15, 20).

    HC-06 построен на чипе BC417 (BlueCore4-External device), спецификация Bluetooth V2.0. На борту так же имеется кварц на 26 МГц и флеш-память на 8 Мб. Питание осуществляется от 3,3В.

    Для своих конструкций удобнее всего использовать модуль с макетной платой, на которой выведены необходимые контакты для подключений, а так же имеется стабилизатор напряжения, который позволяет питаться от 5 вольт.
    При покупки подобных модулей, можете столкнуться с различными их маркировками. По сути это одно и то же устройство, отличающееся прошивкой, которая определяет режим модуля (master / slave).

    Отличие HC-05 от HC-06 состоит в том, что HC-05 можно использовать в качестве ведомого (master) или ведущего (slave). Данные режимы задаются с помощью АТ-команд. Кнопка на плате модуля переключает его в режим ввода АТ-команд. Режим master даёт возможность модулю самому обнаруживать подобное устройство и организовывать связь с ним. Модуль HC-06 может работать только в одном фиксированном режиме slave.

    Так же существуют модели HC-03 и HC-04, но они выпускаются для промышленных целей.

    Обозначение контактов на плате HC-06.

    STATE - проверка состояние модуля. На этом контакте дублируется сигнал, который отображает встроенный на плате светодиод. Если он очень быстро мигает, значит модуль находится в активном состоянии. В режиме установления связи ток составляет 30-40 мА. Когда модуль устанавливает связь с другим устройством, светодиод просто горит. В режиме передачи данных ток составляет 8 мА.
    RX - получение данных.
    TX - передача данных.
    GND - подключается к земле.
    +5V - питание +5 Вольт
    EN - включение / выключение модуля. Если на этот контакт подать логическую 1 (5 вольт), модуль выключится, если подать логический 0 или не подключаться к этому контакту, модуль будет работать.

    По-умолчанию HC-06 имеет имя для обнаружения другими устройствами «HC-06 », с пин-кодом «1234 ».

    Для изменения этих данных нужно модуль подключить к компьютеру и с помощью программы-терминала ввести АТ-команды. Это можно сделать с помощью переходника USB to COM с TTL уровнями. Для этих целей подойдёт адаптер на PL2303HX , CH340G , либо другой подобный. На компьютере к этому моменту уже должен быть установлен драйвер для USB адаптера.

    Контакты соединяем следующим образом:

    HC-06 Переходник USB to COM
    +5V +5V
    GND GND
    RX TX
    TX RX

    При подключении этой сборки к компьютеру, красный светодиод на плате Bluetooth-модуля начнёт быстро мигать. Для ввода АТ-команд можно воспользоваться любой терминальной программой, я использую для этой цели Arduino IDE.

    В настройках выбираем номер виртуального COM-порта, на котором подключен USB адаптер, в моём случае это COM44. Откроем окно «Монитора последовательного порта ».

    Введём заглавными буквами команду «AT », если устройство удачно подключилось, в ответ должно возвратится «ОК ». По-умолчанию скорость обмена данными 9600 бод.

    Для проверки версии прошивки, введём команду «AT+VERSION », в моём случае ответ возвратился «OKlinvorV1.8 ».

    Командой «AT+NAMEyyy », где ууу - произвольный набор символов на латинице, можем сменить имя, по которому будут находить наш модуль bluetooth-устройства (по-умолчанию HC-06). В своём примере я ввёл «AT+NAMEfox », ответ возвращается OKsetname .

    Командой «AT+PINxxxx », где xxxx – произвольный набор цифр, можно сменить пин-код (по-умолчанию 1234). В ответ возвращается «OKsetPIN ».

    Командой «AT+BAUDx », где x – значение от 1 до 9, можно изменить скорость в бодах (по-умолчанию 9600).

    1 - 1200
    2 - 2400
    3 - 4800
    4 - 9600
    5 - 19200
    6 - 38400
    7 - 57600
    8 - 115200
    9 - 230400

    Допустим, если ведём команду «AT+BAUD8 », где 8 - скорость 115200 бод, в ответ возвратится «OK115200 ».

    Подключение HC-06 к Arduino.

    Пример 1. Зальём в Arduino скетч, с помощью которого будем включать и выключать светодиод, распаянный на 13 пине Arduino, через Bluetooth-модуль.

    int data;
    int LED = 13;
    void setup()
    {
    Serial.begin(9600);
    pinMode(LED, OUTPUT);
    digitalWrite(LED, HIGH);
    }
    void loop()
    {
    if (Serial.available())
    {
    data = Serial.read();
    if (data == "1")
    {
    digitalWrite(LED, HIGH);
    }
    if (data == "0")
    {
    digitalWrite(LED, LOW);
    }
    }
    }

    Если у вас нет на плате данного светодиода, подключите его к 13 пину по схеме, номиналы резисторов можно взять от 220 Ом до 1кОм.

    Обесточим Arduino и подключим HC-06. Контакт TX модуля подключаем к контакту RX Ардуино (пин 0 на плате UNO), а контакт RX , к контакту TX (пин 1). Контакты +5V и GND , подключаются к соответствующим пинам Ардуино.

    Конструкция в сборе. Подав питание на Ардуино, светодиод на HC-06 должен быстро мигать.

    Управление Arduino через HC-06, с помощью компьютера.

    Пример буду показывать на Windows XP. К компьютеру должен быть подключен любой USB Bluetooth-адаптер и установленны на него драйвера.

    В моём случае использовался вот такой адаптер.

    При его подключении к ПК, в трее (возле часов) появляется соответствующая иконка.

    Нажимаем правой кнопкой мыши на данной иконке и в контекстном меню выбираем «Добавить устройство Bluetooth ».

    Ставим переключатель «Устройство установлено и готово к обнаружению » и нажимаем «Далее ».

    В списке обнаруженных устройств отобразится наш Bluetooth-модуль, с новым именем, которое я поменял ранее. Выбираем его и нажимаем «Далее ».

    В следующем окне вводим пин-код для подключения к модулю, выбрав пункт «Использовать ключ доступа из документации: ». По-умолчанию это «1234», но я его сменил на «9999». Нажимаем «Далее ».

    Bluetooth-модуль успешно связался с компьютером, о чём можно узнать с соответствующего окна. Следует обратить внимание, при образовании связи между двумя Bluetooth-устройствами, на компьютере создастся два новых виртуальных COM-порта (будут отображаться в диспетчере устройств), один для исходящих данных, другой для входящих. Нам понадобится порт для исходящих данных, в моём случае это COM45.

    Вновь открываем какую-нибудь программу-терминал, я воспользуюсь Arduino IDE. В настройках выбираем исходящий порт (у меня COM45), открываем «Монитор последовательного порта », вводим переменно команды «1 » и «0 ». При команде «1» светодиод загорается, при «0» гаснет.

    Управление Arduino через HC-06 с помощью смартфона.

    Наверное уже все современные смартфоны имеют в своём составе встроенный Bluetooth. Остаётся только установить программу терминал. В моём случае использовалась Lumia 640 DS , с установленной Windows mobile 10 . В качестве программы терминала использую «». На Android-смартфонах всё аналогично, в качестве программы можно использовать «Bluetooth Terminal ».

    Для обладателей смартфонов компании Apple не получится работать с Bluetooth-модулями HC-05 и HC-06 (Bluetooth V2.0), для них придётся использовать адаптеры с технологией BLE (Bluetooth low energy), спецификация Bluetooth 4.0. Ярким представителем является модуль HM-10.

    Сопрягаем HC-06 с блютузом смартфона.

    1. В «Параметрах » смартфона выбираем пункт «Устройства ».
    2. Далее «Bluetooth и другие устройства ».
    3. Включаем ползунком блютуз смартфона и нажимаем на «плюс в квадрате » для поиска и добавления нового Bluetooth-устройства, в нашем случае HC-06.

    4. В разделе «Добавить устройство » выбираем «».
    5. Смартфон произведёт поиск Bluetooth-устройств находящихся в округе и отобразит их имена. В моём примере найден модуль HC-06, который я переименовал в «fox ».

    6. Вводим пин-код устройства, к которому подключаемся, нажимаем кнопку «Подключиться ».

    Устанавливаем и запускаем терминальную программу «». Подключенный к смартфону модуль HC-06, отображается в списке, выбираем его.

    Появится поле для ввода команд и кнопка для отправки. Вводим попеременно «1 » и «0 » и наблюдаем за светодиодом на 13 пине, который будет зажигаться или гаснуть.

    Пример 2 . Подключим к Arduino три светодиода и попробуем управлять ими через Bluetooth-модуль HC-06.

    Светодиоды подключил к 9, 11 и 13 пину, если будите использовать другие пины, их нужно указать в скетче.

    int data;
    int LED1 = 9;
    int LED2 = 11;
    int LED3 = 13;
    void setup()
    {
    Serial.begin(9600);
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    pinMode(LED3, OUTPUT);
    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
    }
    void loop()
    {
    if (Serial.available())
    {
    data = Serial.read();
    if (data == "1")
    {
    digitalWrite(LED1, HIGH);
    }
    if (data == "2")
    {
    digitalWrite(LED1, LOW);
    }
    if (data == "3")
    {
    digitalWrite(LED2, HIGH);
    }
    if (data == "4")
    {
    digitalWrite(LED2, LOW);
    }
    if (data == "5")
    {
    digitalWrite(LED3, HIGH);
    }
    if (data == "6")
    {
    digitalWrite(LED3, LOW);
    }
    }
    }

    При заливке скетча модуль HC-06 нужно отсоединить от Ардуино, потому что и компьютер, и блютуз работают по UART. Ардуина не может на одном UART работать с несколькими устройствами.

    Запускаем программу-терминал и пробуем скетч в действии. Смысл управления светодиодами следующий, имеется три светодиода, каждый из которых может быть либо включенный, либо выключенный. Получается 6 команд. Команды представляют из себя цифры от 1 до 6 (1, 3, 5 - зажечь 1, 2 и 3 светодиоды. 2, 4, 6 - погасить). Цифры можно вводить по одной, либо в виде комбинаций. Например: 145 - зажечь первый, погасить 2-й, зажечь 3-й.

    Пример 3 . Подключим к Arduino реле-модуль из статьи « » и попробуем управлять мощной нагрузкой через Bluetooth. По сути, у нас получится «умная розетка». К реле-модулям можно подключать различные нагрузки (лампочки, насосы, вентиляторы) и управлять ими на расстоянии.

    Скетч по этому примеру появится в ближайшее время.

    Сегодня мы познакомимся с недорогим модулем для беспроводной пердачи данных по Bluetooth .

    Bluetooth — производственная спецификация беспроводных персональных сетей, которая обеспечивает передачу данных без проводов между многими устройствами.

    Наш модуль именуется HC-05 . Это один из представителей линейки подобных модулей HC-03 — HC-09.

    Данные модули позволяют передавать данные без проводов, не задумываясь о том, как вообще устроен протокол Bluetooth, о его полях и прочих тонкостях. Эти модули при правильных настройках обеспечивают передачу данных таким образом, что программист, сочиняющий код, пишет алгоритм так, будто он работает с проводным интерфейсом UART. Поэтому писать код становится максимально удобно и поэтому данная линейка модулей снискала такую огромную популярность среди начинающих программистов и не только.

    Вот и мы с вами давайте тоже не будем от них отставать и немного отдохнём от сетевых протоколов и изучим такой модуль. Также было очень много просьб личного характера, а также и в публичных чатах, чтобы я не обошёл стороной такие модули и написал какие-либо уроки с их использованием.

    Модули имеют следующие основные характеристики:

    • чип Bluetooth – BC417143 производства CSR company ,
    • протокол передачи данных — Bluetooth 2.0 + EDR ,
    • класс 2, что соответствует передаче данных в радиусе до 10 м,
    • поддержка Serial Port Profile (SPP ), что обеспечивает совместимость со всеми устройствами, поддерживающими данный профиль,
    • энергонезависимая память flash объёмом 8 мб,
    • радиоканал частотой 2.4 — 2.4835 MHz,
    • интерфейс USB Host 1.1/2.0,
    • интерфейс UART с регулируемой скоростью передачи.

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

    Мы видим зедесь ножки GPIO, SPI, USB, PCM.

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

    Мы так поступим во-первых потому, что модули у нас будут одного типа (у меня их аж 4 штуки!), в которых модуль HC-05 напаян ещё на одну плату, на которой наружу разведены только 6 контактов. Вот такие вот они все у меня приблизительно (вид сверху и вид снизу)

    Снизу платы нанесено назначение ножек, с ними мы разберёмся, когда будем подключать модуль.

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

    Вообще, выбор пал именно на HC-05 ещё потому, что данный модуль прекрасно настраивается для работы как ведущего, так и ведомого устройства.

    Настраивается для дальнейшей работы с данными модуль с помощью AT-команд. Мы, я думаю, все в той или иной мере знакомы, что это за команды такие, мы с ними немного знакомились, когда работали с модулем Wi-Fi. Конечно, данные команды у всех устройств разные и поэтому я приложу внизу страницы документ с полным перечнем команд. Также в интернете немудрено найти ресурсы, где описание данных команд переведено на русский язык, и даже есть некоторые примеры их использования. Мы же не будем здесь заниматься полным переводом команд, мы будем изучать только те команды, которыми нам прийдётся воспользоваться. Пока их перечень будет не столь широк, но впоследствии мы к данным модулям ещё вернёмся, надеюсь, и не раз, и тогда мы уже расширим свой кругозор в знании данного модуля. А пока же мы проведём только краткий экскурс по модулю. Конечно, мы попробуем его и в работе, не без этого.

    А пока давайте подключим наш модуль к переходнику TTL-USB, который в свою очередь мы подключим к ПК.

    Соединим мы по следующей схеме

    Переходник TTL-USB Модуль HC-05

    VCC VCC

    GND GND

    TXD RXD

    RXD TXD

    На практике это будет выглядеть примерно вот так

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

    Зайдём в настройки программы и настроим сначала порт

    Данная скорость 38400 была выбрана потому, что модуль в режиме приёма AT-команд работает именно на такой скорости.

    Теперь слева выберем пункт Receive и переключим там одну кнопку, а другую включим

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

    Сохраним настройки и попробуем соединиться. Если всё удачно, то разъединяеся, так как сейчас у нас модуль находится в режиме передачи данных, и, если он ещё не настраивался, то скорей всего, мы даже не знаем его адреса, его настроек. О нахождении модуля в данном режиме свидетельствует быстрые мигания голубого светодиода Поэтому нам надо как-то перевести модуль в состояние передачи AT-команд.

    Для этого мы пока отсоединим переходник от USB-порта и подклюим провод на ножку модуля HC-05 KEY . У кого-то она может иметь другое название, но, думаю, не перепутаете. Провод подключим вот такой и вот таким образом

    Соединим данный провод с плюсом питания (с ножкой VCC)

    И, не отпуская контакта, соединим перходник с портом USB компьютера и через некоторое время (через секунду или две) разъединим наш контакт KEY с контактом VCC, убрав провод. Модуль должен будет перейти в режим приёма AT-команд, о чём будет свидетельствовать очень медленная скорость мигания светодиода.

    Перейдём в терминальную программу, соединимся с портом и попробуем послать команду AT , на которую нам модуль должен ответить «OK»

    Модуль ответил, значит всё правильно.

    Чтобы не путаться с настройками, которые были кем-то и когда-то внесены, давайте сборсим все настройки, введя команду «AT+ORGL «. Настройки должны будут сброситься к следующим параметрам:

    • Device type: 0
    • Inquire code: 0x009e8b33
    • Module work mode: Slave Mode
    • Connection mode: Connect to the Bluetooth device specified
    • Serial parameter: Baud rate: 38400 bits/s; Stop bit: 1 bit; Parity bit: None.
    • Passkey: “1234”
    • Device name: “H-C-2010-06-01”

    Только настройки сразу не применятся. Надо перезагрузить модуль. Удобно сделать это, введя команду «AT+RESET «, в ответ на которую модуль перезагрузится и перейдёт опять в режим передачи данных и не сможет пока принимать команды. Чтобы он их принимал, проделаем те же действия, что и выше, для того чтобы модуль опять перешёл в режим приёма команд AT. Есть ещё один способ, но пока мы им пользоваться не будем.

    Проверим теперь некоторые параметры нашего модуля.

    Чтобы узнать версию прошивки, введём команду «AT+VERSION? «, на которую модуль должен будет ответить приблизительно вот так

    Если прошивка не ниже данной версии, то мы можем быть уверены, что данный модуль с такой прошивкой способен работать в режиме ведущего устройства (Мастера).

    Узнаем адрес устройства с помощью команды «AT+ADDR? «

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

    Давайте запросим ещё и имя устройства с помощью команды «AT+NAME? «, на который многие модули, в том числе и мой реагируют только при наличии высокого уровня на ножке KEY, то есть при подключенном проводе. Так и сделаем

    Давайте попробуем ещё это имя изменить, так как оно не очень удобное, для этого введём команду «AT+NAME:Желаемое_имя». Данную команду можно вводить без высокого уровня на ножке KEY

    Проверим, что имя изменилось, только не забываем про высокий уровень на ножке KEY

    Имя прекрасно применено.

    Проверим пароль командой «AT+ PSWD? «

    Аналогичным образом, как и имя, можно поменять и пароль.

    Теперь узнаем тип устройства (ведомый или ведущий) с помощью команды «AT+ ROLE? «

    0 — это значит ведомый. Тип также можно изменить в любой момент. Но нам это пока не нужно, так как мы будем работать с устройством как с ведомым.

    Сбросим спаренные устройства командой «AT+RMAAD «

    Теперь давайте узнаем настройки интерфейса USART командой «AT+ UART? «

    Эти настройки означают: скорость 38400 кбпс, 1 стоповый бит и отсутствие контроля чётности.

    В данной таблице находятся возможные варианты настроек USART

    Давайте изменим, например, скорость передачи командой «AT+UART=115200,0,0 «

    Только данные настройки вступят в силу после перезагрузки модуля и будут актуальны только для режима передачи данных, для режима передачи AT-команд в модуль останутся настройки прежние со скоростью 38400.

    Давайте перезагрузим модуль командой «AT+RESET «, после чего модуль перейдёт в режим передачи данных.

    Настроим порт в терминальной программе на данную скорость и соединимся с ним

    Попробуем ввести команду, на что модуль наш не прореагирует, так как режим не тот

    Но не будем отчаиваться. Оказывается, чтобы отправлять команды модулю, необязательно переводить его в этот режим. Можно включить поддержку передачи AT-команд в режиме передачи данных. На короткое время (достаточно менее секунды) коснёмся проводом, который подключен к контакту KEY плюсовой шины модуля и модуль перейдёт в режим поддержки AT-команд. Правда, по характеру мигания светодиода мы это не определим, он будет мигать также быстро. Также в режиме поддержки команд мы с нами не сможет соединиться ведущее устройство. Но тем не менее, нам не потребуется для каких-то настроек постоянно вынимать провод из разъёма USB и перенастраивать порт в терминальной программе. Это уже хорошо. Сделаем данное действие и убедимся в том, что модуль также будет принимать команды, как и в режиме приёма команд

    Чтобы убрать данную поддержку и чтобы модуль смог соединяться, достаточно перезагрузить его командой «AT+RESET «. Так и сделаем

    Отлично! Мы уже кое-что умеем. В принципе, мы настроили модуль для передачи данных в режиме ведущего устройства.

    Теперь смартфон, который у нас сегодня выступит в роли ведущего устройства. Подойдёт любой с андроидом, лишь бы встала какая-нибудь терминальная программа под Bluetooth. Я установил вот такую. Мне она показалась удобной

    Во-первых, она бесплатная, не требует создания подключения заранее, а также имеет несколько кнопок с заранее сохранёнными нами строками.

    Скачаем и установим программу и запустим её. Нажмём кнопку SCAN и наш модуль должен будет отобразиться в списке найденных устройств

    Выберем данное устройство и попадём в диалог создания пары, в котором надо будет ввести пароль (у нас «1234») и согласиться, нажав кнопку «ОК»

    В статье рассмотрим подключение и управление Arduino по bluetooth.

    В качестве блютуз-модуля будет использоваться широко распространенный hc-06.

    В нашем проекте будем через bluetooth включать и выключать светодиод, подключенный к 13 порту.

    Начнем с написания приложения на android-смартфон. Приложение будет писаться в удобной и простой среде программирования App Inventor. Программы будут составляться онлайн.

    Пройдите по ссылке http://ai2.appinventor.mit.edu/ . Там вас попросят войти в Google-аккаунт, который вам придется завести, если его еще нет.

    После входа вы попадете в программу, где сможете создать проект нажав «start new project». Вам потребуется ввести имя проекта. Назовем его led_control.

    Откроется пустое окно приложения.

    Здесь будем располагать необходимые компоненты. Выберите ListPicker в окне слева и поместите его в проект.

    У компонента ListPicker в окне справа найдите свойство Text, и измените «Text for ListPicker1» на «Выберите BT-устройство».

    Откройте закладку Layout в окне слева, поместите в приложение компонент HorizontalArrangement, измените его свойство Width на «Fill parent». Добавьте в HorizontalArrangement 2 кнопки Button, у каждой из них установите свойство Width в «Fill parent». Должно получиться так:

    Изменим подписи на кнопках: на первой будет написано LED ON, на второй — LED OFF.

    Ниже добавим Label и очистим его Text.

    Осталось добавить компонент, организующий передачу данных по bluetooth. Откройте закладку Connectivity и поместите в проект BluetoothClient. Этот компонент окажется не на экране телефона, а под ним, т.к. он не является визуальным.

    Теперь можно приступать к написанию программы. В верхней правой части программы выберите режим Blocks.

    Здесь будет составляться программа из графических блоков. Слева кликните на компонент ListPicker1 и выберите ListPicker1.BeforePicking.

    Снова нажмите на ListPicker1 и выберите set ListPicker1.Elements to

    Поставьте его как на скриншоте.

    Этим мы получили список сопряженных bluetooth-устройств. Теперь подключимся к выбранному устройству. Напишите блок как на скриншоте ниже.

    Розовый блок с надписью Connected — это первый блок в закладке Text. Впишите Connected в пустое окошко.

    Теперь напишем обработчик кнопок. При нажатии на первую кнопку будет отсылаться текст «led_on», а при нажатии на вторую — «led_off». Так же будет изменяться и надпись в Label1.

    Осталось загрузить проект в ваш смартфон. Нажмите Build и выберите способ загрузки.

    Для первого варианта вам понадобятся интернет и считыватель QR-кодов. Нажмите и дождитесь окончания сборки проекта и формирования QR-кода, после чего откройте считыватель QR-кодов на смартфоне и считайте код. Останется только загрузить и установить файл.

    Во втором варианте проект в формате.apk сохранится на ваш компьютер и вы сможете скинуть его на смартфон любым удобным способом (например по USB).

    Теперь займемся программой на Arduino.

    Прием-передача данных осуществляется через COM-порт, поэтому будем использовать Serial. Будем посимвольно принимать сигналы, формировать строку и дальше сравнивать сформированную строку с командами led_on и led_off.

    Arduino

    String val = ""; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void loop() { while (Serial.available()) { //пока приходят данные char c = Serial.read(); //считываем их val += c; //и формируем строку delay(3); } if (val != "") { Serial.println(val); } if (val == "led_on") { digitalWrite(13, HIGH); } else if (val == "led_off") { digitalWrite(13, LOW); } val = ""; }

    String val = "" ;

    void setup () {

    Serial . begin (9600 ) ;

    pinMode (13 , OUTPUT ) ;

    void loop () {

    while (Serial . available () ) { //пока приходят данные

    char c = Serial . read () ; //считываем их

    val += c ; //и формируем строку

    delay (3 ) ;

    }

    Загрузите код в Arduino.

    Теперь можно подключить Bluetooth-модуль HC-06. Подключается он очень просто:

    Vcc 5v (можно 3,3 v)

    ЕСЛИ ПОПЫТАТЬСЯ ЗАГРУЗИТЬ ПРОГРАММУ В ARDUINO С ПОДКЛЮЧЕННЫМ МОДУЛЕМ, ТО ВЫЛЕЗЕТ ОШИБКА, Т.К. И МОДУЛЬ И ЗАГРУЗКА ПРОГРАММЫ ЗАДЕЙСТВУЮТ ПОРТЫ RX И TX!

    Подайте питание на Arduino. На bluetooth-модуле должен заморгать светодиод, это означает, что он ожидает подключения. Возьмите смартфон, найдите в настройках bluetooth, включите его и запустите поиск. Найдите устройство с именем hc-06 и подключитесь к нему. С первого раза может не получиться. После однократного успешного сопряжения можно запускать программу на смартфоне.

    Сначала нажмите на «Выберите BT-устройство» и выберите модуль среди сопряженных устройств. Далее нажимайте кнопки включения и выключения светодиода. Если все сделано правильно, то все будет работать.

    Мы сделали очень простое приложение с использованием Bluetooth, без дизайна и даже проверки, подключились мы к модулю или нет. В следующих уроках будем делать более сложные приложения и получше познакомимся с App Inventor.

    Пока готовится небольшой, но довольно сложный обзор, я решил немного отвлечься и написать про Bluetooth-UART модуль.
    Относительно недавно я делал серию обзоров, посвященную одному из основных приборов радиолюбителя, лабораторному блоку питания. Когда уже писался обзор USB-RS232 адаптера, то я уже собирался на этом и закончить. Но потом подумал, а зачем в 21 веке использовать провода для управления блоком питания. Продолжение об этом эксперименте читайте под катом.

    Как я выше написал, во время работы над последним обзором из серии посвященной лабораторному блоку питания



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

    Но будем последовательны.
    Платка была заказана 26 июня, 28 числа пришло уведомление, что продавец отправил мою посылку, а уже 29 она начала отслеживаться, на мой взгляд очень оперативно. 11 июля я получил свою посылку на почте, на мой взгляд довольно оперативно. Правда после этого она месяц лежала у меня нетронутой, не было времени ею заниматься, но вот недавно у меня наконец то дошли руки поэкспериментировать с ней.
    Пришла она в беленьком конвертике (уже так привык к желтым, что было даже непривычно).

    Внутри был только сам модуль и небольшой кабель, запакованные в антистатический пакетик.
    В принципе там ничего другого и не должно быть, что тоже не может не радовать.

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

    С лицевой стороны видно сам Bluetooth и плату-адаптер, на которую он установлен. На этой плате установлен стабилизатор питания (сам Bluetooth модуль питается от 3.3 Вольта) и светодиод индикации установки связи (при установленной связи светит непрерывно, при отсутствии моргает). В принципе ничего не мешает использовать Bluetooth модуль отдельно от платы-адаптера (есть в продаже и в таком исполнении), но мне так было удобнее.

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

    У устройства есть 2 режима, активный и спящий, с низким потреблением.
    В спящий режим устройство автоматически переходит через 5 секунд неактивности, просыпается при поступлении любой команды.
    В рабочем режиме потребление от 5 Вольт чуть больше, чем 20мА.

    В спящем режиме чуть больше чем 4мА. Думаю, что в этом режиме, больше половины это светодиод и стабилизатор 3.3, если их исключить, то ток будет еще меньше.

    После этого я соединил контакты RX и TX модуля между собой и проверил наличие эха в терминале (я использую Putty). Связь проходит без проблем, Проверил дальность, в пределах комнаты работает, если для кого то важно, то могу проверить на большей дистанции, но проверка не будет объективной, так как дальность зависит и от Bluetooth адаптера в компьютере.

    На этом мои познания закончились и я полез в инет за инструкциями по работе с этими модулями.
    Полазив по инету, я узнал, что есть много модификаций таких модулей, покупая, я просто прочел на Али, что модуль может работать только как клиент, существуют модули, которые могут работать как мастер, но мне такие не были нужны.
    я нашел часть информации по модулям, немного скопирую сюда.
    Какие бывают модули -

    Система команд модулей (не всех, так как система команд зависит от прошивки, есть HC-05 и Linor), У прошивки HC-05 (модули HC-03/HC-05) одни команды (их много), у прошивки Linvor (модули HC-04/HC-06) другие команды (всего три AT-команды). Также, различна методика работы с AT-командами.

    Кстати, при отправке команды модулю, надо ее отсылать целиком, т.е. сначала набрать всю команду, потом отослать, иначе модуль команду не воспримет. Я сначала попробовал это делать при помощи терминала от Bray, получилось без проблем, но было не очень удобно.

    Полазив по инету еще, вылез на с довольно удобной программой конфигурирования этих модулей.
    Подключил модуль через .
    Все завелось без проблем, кстати по умолчанию настройки модуля стандартные для многих устройств - 9600,n,8,1
    Из программы я узнал, что модуль мой с версией прошивки 1.8, хорошо это или плохо я не знаю, пишу просто для информирования, вдруг кому-то будет полезно.

    Сразу переименовал мой модуль, назвав его по имени , в который я собирался его устанавливать.
    В общем открыл блок питания, отключил уже установленный адаптер COM-USB, подключил четыре проводка, запустил программу работы с блоком питания, и тут ОБЛОМ. :((((
    Программа не видит мой блок питания, при том, что эхо проходит без проблем.
    Потыкавшись и так и эдак я выяснил, что команда от программы в блок питания приходит, мало того, даже блок питания отвечает, но родная программа в упор не видит ответа от БП.
    Расстроился я сильно, и решил использовать такой бонус как Звонок другу.
    Мой товарищ работает программистом, и мы иногда делаем некоторые проекты в паре, я аппаратную часть, он программную.
    И здесь он меня удивил, так как оказалось, что он, почитав мой обзор блока питания, решил сам написать программу для управления этим БП, но как полагается, с блэкджеком и «девушками», а точнее с графиками, большими индикаторами, возможностью добавления режимов заряда аккумуляторов с корректным окончанием заряда, ведением логов и т.п…
    А самое интересное было то, что дла того, что бы легче было писать программу для работы с БП, он написал Эмулятор этого БП.
    Т.е. он почитав систему команд БП, сделал виртуальный БП. Типичный подход программиста, напомнило - CPU not found! Press any key to emulation. :)))
    Но самым удивительным было то, что с этой программой Bluetooth заработал без проблем.
    Т.е. так случайно получилось, что программа, написанная в процессе работы с эмулятором БП, работает лучше, чем родная от производителя.
    Ниже скриншоты программы, это пока тестовые версии, еще без довесков, но уже подающие признаки жизни, а самое главное, корректно работающие с Bluetooth адаптером (с ЮСБ так же работает без проблем).
    По скриншотам видно, что программа еще сыровата. График автомасштабируется, потому при 12 Вольт он показывает максимум.



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

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

    Резюме.
    Адаптер работает без проблем, нареканий или замечаний нет, пробовал оставить на сутки, ничего не виснет, не греется. Не могу судить насчет потребляемого тока, меня более чем устроило, как и дальность работы. Цена вполне адекватная.
    Минусов пока не обнаружил.

    В дальнейших планах допиливание ПО (хотя это скорее в планах программиста), а я хочу доработать плату адаптера COM-USB так, что бы можно было использовать оба варианта подключения (естественно не одновременно) и что бы это переключение переходило автоматически. Теоретически, сигналы от модулей можно развязать банальными диодными развязками, но руки до этого еще не дошли.

    На всякий случай для конфигурирования этих модулей.

    P.S. Кто-то скажет, что лабораторный блок питания с управлением по Bluetooth это блажь, по своему он будет прав. Но блоком питания я пользуюсь не часто и он не всегда стоит на столе, а лишний провод только мешает, а так можно вообще поставить его в другом углу комнаты, включить например зарядку аккумулятора и периодически поглядывать на состояние процесса не вставая из-за рабочего стола. На мой взгляд довольно удобно.

    Надеюсь мой обзор будет кому нибудь полезен.

    Вместо котика.

    Планирую купить +56 Добавить в избранное Обзор понравился +78 +144