Управление по bluetooth. Управление по bluetooth Управление ардуино через блютуз со смартфона

Bluetooth — это пожалуй самый распространенный тип связи для коротких дистанций, которым пользуются большинство современных электронных устройств. Телефонные гарнитуры, наушники, клавиатуры и мышки, принтеры и бог знает какие еще гаджеты. Некоторое время назад bluetooth был распространен как средство передачи файлов между телефонами. Главными достоинствами BT можно назвать хорошую устойчивость к широкополосным помехам и простоту реализации. Первое значит, что куча устройств, находящихся в одном месте, могут одновременно общаться между собой, не мешая друг другу. Второе же помогло широкому распространению Bluetooth в среде DIY, и вообще во всех средах. Лично я использую BT для управления роботами со смартфона. В Google play уже есть несколько приложений с удобным интерфейсом именно для этих целей. Участники нашего хакспейса MakeItLab с помощью Bluetooth управляют удаленно светом и собирают телеметрию с борта квадрокоптеров. Самыми доступными на сегодня Bluetooth модулями можно назвать HC-05 и HC-06. Они в изобилии присутствуют в Китайских онлайн-магазинах и на ebay. Отличия между ними в том, что первый может работать как в режиме ведущего (slave), так и в режиме ведомого (master). Второй же является чисто ведомым устройством (но это поправимо!). Другими словами, HC-06 не может сам обнаружить парное устройство и наладить с ним связь, он может лишь подчиниться ведущему. Оба устройства базируются на чипе CSR BC417 , который поддерживает Bluetooth версии 2.0 со скоростью до 3 Мбит/сек. Именно об этих модулях далее и пойдет речь.

1. Варианты исполнения

Обычно модули продаются в виде двух спаянных вместе плат. Меньшая из них — заводской модуль, широко используемый в разных электронных устройствах. Большая — специальная макетная платка для DIY. Так выглядит меньшая плата с чипом BC417:
А так сами DIY модули HC-05 и HC-06:
Для своих коварных целей я обычно беру HC-05, так как они не сильно отличаются по цене от HC-06, и позволяют без лишних проблем связать вместе два устройства. Например, можно сделать робота и пульт к нему. Из Китая мне обычно приходят модули, точь в точь как на левой картинке, но иногда без кнопки. Очень распространен и другой вариант макетной платки. В отличие от показанных выше, в них нет ноги EN, но есть нога KEY, что немного удобнее.
Распиновка Итак, за что отвечают ноги у всех вариантов модулей.
  • EN — включение/выключение модуля;
  • VCC — питание +5В;
  • GND — земля;
  • TXD, RXD — UART интерфейс для общения с контроллером;
  • STATE — индикатор состояния;
  • KEY — нога для входа в режим AT-команд.
Настройка модуля осуществляется в режиме AT-команд, который включается с помощью ноги KEY. Отсюда, у многих счастливых обладателей модуля может возникнуть вопрос: что делать, если мне попался модуль без KEY? На самом деле, на малой плате эта нога конечно есть, просто она не разведена на большой плате. Черт знает зачем китайцы так сделали, но проблема решается легко. KEY-нога растет отсюда:

2. Подключение к Ардуино Уно

Ног не так много, так что запутаться не получится. Подключаем к bluetooth к Arduino Uno по следующей схеме:
Bluetooth GND VCC TXD RXD KEY
Ардуино Уно GND +5V 10 11
TX и RX подключаем к GPIO ногам 10 и 11, так как аппаратный UART на ногах 0 и 1 будет занят общением с компьютером. В рабочем режиме KEY никуда не подключается, так что в таблице я его не стал соединять с GPIO ногами Arduino.

3. Сопряжение уровней напряжения

Малая платка Bluetooth модуля имеет напряжение логики 3.3 Вольта. А это значит, что Ардуино Уно может либо сжечь у нее порты, либо просто неправильно передавать сигналы. К счастью, в большинстве случаев большая плата имеет на своем борту все необходимое, чтобы этого избежать. Указанные выше модули легко подключаются к Arduino, без лишних заморочек. Даже не смотря на то, что сами изготовители написали на платке предупреждение об уровне сигналов 3.3 Вольта. Однако, в некоторых ситуациях может потребоваться поставить на линию Ардуино TX — BT RX делитель напряжения для понижения логических уровней. На самом деле, даже если все работает и без делителя, лучше его все-таки поставить, для порядка. Схема делителя ниже:

4. Подготовка Arduino

Для того чтобы начать настройку, нам потребуется зашить в Ардуино вспомогательный скетч. По-сути — программу ретранслятор, которая будет осуществлять обмен данными между терминалом на компьютере и Bluetooth модулем. Программа крайне проста: #include #include int gLedPin = 13; int gRxPin = 10; int gTxPin = 11; SoftwareSerial BTSerial(gRxPin, gTxPin); void setup() { # 38400 - для метода №1, 9600 - для метода №2 BTSerial.begin(38400); Serial.begin(9600); delay(500); } void loop() { if (BTSerial.available()) { Serial.write(BTSerial.read()); } if (Serial.available()) { BTSerial.write(Serial.read()); } } Загружаем скетч на Ардуино и переходим к следующему шагу.

5. Подготовка терминала

В качестве терминала можно использовать встроенный в Arduino IDE монитор порта, а можно любой другой. Я использовал сторонний терминал TeraTerm. Перед соединением необходимо сделать две важные настройки:
  • скорость обмена: 9600;
  • символа перевода строки: CR+LF.
Вот как настройки выглядят в TeraTerm:
Когда все правильно настроено, подключаемся к COM-порту и проверяем соединение. Все дальнейшие манипуляции рационально поделить на две части: для ведомого модуля HC-06 и для ведущего HC-05.

6. Настройка HC-06

Проверка соединения

После подачи питания на модуль, светодиод начнет бодро мигать:
Теперь заходим в терминал и пишем команду: AT В ответ, модуль нам должен сказать: OK Следующая наша команда запросит у модуля его версию: AT+VERSION? Получаем что-то вроде такого: OKLinvor1.5 Получилось? Если нет, то проверяем:
  1. Скорость соединения с модулем, которая задается в программе-трансляторе: для связи с ведомым скорость должна быть 9600.
  2. Настройки символа перевода строки: не забываем про CR+LF!
  3. Нажимаем ли после каждой команды Enter? Мало ли…

Полезные команды

У ведомого Bluetooth модуля есть всего три параметра для настройки:
  • команда смены пароля на устройстве: AT+PIN<пароль>
  • смена скорости: AT+BAUD<скорость>
  • смена имени устройства: AT+NAME<имя>
Например, для смены пароля пишем: AT+PIN4321 В общем-то готово! Теперь можно соединиться с модулем, например, со смартфона. Об этом речь пойдет во второй части моего повествования.

7. Настройка HC-05

Переход в режим AT-команд

Чтобы получить доступ к настройка ведущего модуля, его необходимо перевести в режим AT-команд. Для входа в этот режим можно воспользоваться двумя методами (я всегда использую первый). Первый метод:
  1. Отключаем модуль от питания.
  2. Подаем на ногу KEY сигнал +3.3V.
  3. Включаем модуль.
В это варианте скорость обмена с модулем устанавливается в 38400. Второй метод
  1. Включаем модуль.
  2. Подаем на ногу KEY сигнал +3.3V;
В этом случае скорость обмена с модулем будет равна стандартной, установленной настройками. По-умолчанию 9600. После успешного перехода в режим AT-команд светодиод на модуле начнет мигать раз в две секунды.

Проверка соединения HC

Проверим командный режим HC-05 так же как и в случае ведомого модуля: >>: AT <<: OK >>: AT+VERSION? <<: +VERSION:2.0-20100601

Настройка HC-05 как ведомого (slave)

Для превращения модуля в ведомого потребуется выполнить несколько команд: Сброс предыдущих настроек: AT+ORGL Сброс спаренных устройств: AT+RMAAD Установка пароля: AT+PSWD=1234 Включение режима ведомого: AT+ROLE=0 Дополнительно можно узнать адрес устройства (понадобится для настройки спаренного модуля): AT+ADDR? В ответ получим сам адрес: ADDR=12:6:143117 После настройки, отключаем ногу KEY от +3.3В, и перезапускаем модуль. Готово!

Настройка HC-05 как ведущего (master)

С завода модуль идет ведомым, и чтобы сделать его ведущим потребуется выполнить следующие команды. Сброс предыдущих настроек: AT+ORGL Сброс спаренных устройств: AT+RMAAD Включение режима ведущего: AT+ROLE=1 Рестарт после смены роли: AT+RESET Если мы хотим связать ведомого и ведущего, пишем такие команды: Установка пароля ведомого: AT+PSWD=1234 Указываем парное устройство: AT+PAIR=<адрес>,<таймаут> (пример: AT+PAIR=12,6,143117, 5 ) Связываем с конкретным адресом: AT+BIND=<адрес> (пример: AT+BIND=12,6,143117 ) Запрещаем соединяться с другими адресами: AT+CMODE=0 Готово! Теперь модуль связан с ведомым, и при каждом включении будет пытаться с ним соединиться.

В данной статье будет подробно расписано создание небольшого приложения для мобильной операционной системы Android и скетча для Arduino. На Arduino Uno будет стоять Wireless Shield с Bluetooth-модулем. Приложение будет подключаться к Bluetooth-модулю и посылать некую команду. В свою очередь скетч по этой команде будет зажигать или гасить один из подключенных к Arduino светодиодов.

Нам понадобится

Создание приложения для Android

Заготовка

Разработка для ОС Android ведется в среде разработки ADT, Android Development Tools. Которую можно скачать с портала Google для разработчиков. После скачивания и установке ADT, смело его запускаем. Однако, еще рано приступать к разработке приложения. Надо еще скачать Android SDK нужной версии. Для этого необходимо открыть Android SDK Manager «Window → Android SDK Manager». В списке необходимо выбрать нужный нам SDK, в нашем случае Android 2.3.3 (API 10). Если телефона нет, то выбирайте 2.3.3 или выше; а если есть - версию, совпадающую с версией ОС телефона. Затем нажимаем на кнопку «Install Packages», чтобы запустить процесс установки.

После завершения скачивания и установки мы начинаем создавать приложение. Выбираем «File → New → Android Application Project». Заполним содержимое окна так, как показано на рисунке.

    Application Name - то имя приложения, которое будет показываться в Google Play Store. Но выкладывать приложение мы не собираемся, поэтому имя нам не особо важно.

    Project Name - имя проекта в ADT.

    Package Name - идентификатор приложения. Он должен быть составлен следующим образом: название Вашего сайта задом наперед, плюс какое-либо название приложения.

В выпадающих списках «Minimum Required SDK», «Target SDK», «Compile With» выбираем ту версию, которую мы скачали ранее. Более новые версии SDK поддерживают графические темы для приложений, а старые нет. Поэтому в поле «Theme» выбираем «None». Нажимаем «Next».

Снимаем галочку с «Create custom launcher icon»: в рамках данной статьи не будем заострять внимание на создании иконки приложения. Нажимаем «Next».

В появившемся окне можно выбрать вид «Activity»: вид того, что будет на экране, когда будет запущено приложение. Выбираем «Blank activity», что означает, что мы хотим начать всё с чистого листа. Нажимаем «Next».

В нашем приложении будет всего одно Activity, поэтому в появившемся окне можно ничего не менять. Поэтому просто жмем на «Finish».

Все, наше приложение создано.

Настройка эмулятора

Отладка приложений для Android производится на реальном устройстве или, если такового нет, то на эмуляторе. Сконфигурируем свой.

Для этого запустим «Window → Android Virtual Device Manager». В появившемся окне нажмем «New». Заполняем поля появившейся формы. От них зависит сколько и каких ресурсов будет предоставлять эмулятор «телефону». Выберите разумные значения и нажимайте «ОК».

В окне Android Virtual Device Manager нажимаем кнопку «Start». Это запустит эмулятор. Запуск занимает несколько минут. Так что наберитесь терпения.

В результате вы увидите окно эмулятора подобное этому:

Заполнение Activity

Activity - это то, что отображается на экране телефона после запуска приложения. На нем у нас будет две кнопки «Зажечь красный светодиод» и «Зажечь синий светодиод». Добавим их. В панели «Package Explorer» открываем res/layout/activity_main.xml . Его вид будет примерно таким же, как на скриншоте.

Перетаскиваем 2 кнопки «ToggleButton» на экранную форму. Переключаемся во вкладку «activity_main.xml» и видим следующий код:

activity_main_aiutogen.xml xmlns:tools = android:layout_width ="match_parent" android:layout_height ="match_parent" android:paddingBottom = android:paddingLeft = android:paddingRight ="@dimen/activity_horizontal_margin" android:paddingTop ="@dimen/activity_vertical_margin" tools:context =".MainActivity" > android:id ="@+id/toggleButton1" android:layout_alignParentLeft ="true" android:layout_alignParentTop ="true" android:text ="ToggleButton" /> android:id ="@+id/toggleButton2" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_above ="@+id/textView1" android:layout_alignParentRight ="true" android:text ="ToggleButton" /> >

Это ни что иное, как наша Activity, которая отображается не в виде графики, а описанная в формате XML.

Сделаем имена компонентов более понятными. Изменим поля android:id следующим образом.

android:id ="@+id/toggleRedLed" ... android:id ="@+id/toggleGreenLed" ...

А еще добавим им подписи, изменим их цвет и размер текста. Результирующий код разметки будет выглядеть следующим образом.

activity_main.xml "http://schemas.android.com/apk/res/android" xmlns:tools ="http://schemas.android.com/tools" android:layout_width ="fill_parent" android:paddingBottom ="@dimen/activity_vertical_margin" android:paddingLeft ="@dimen/activity_horizontal_margin" android:paddingRight ="@dimen/activity_horizontal_margin" android:paddingTop ="@dimen/activity_vertical_margin" tools:context =".MainActivity" android:weightSum ="2" android:orientation ="horizontal" > android:id ="@+id/toggleRedLed" android:layout_width ="wrap_content" android:layout_height ="fill_parent" android:layout_weight ="1" android:background ="#FF0000" android:textOff ="OFF" android:textOn ="ON" android:textSize ="30dp" /> android:id ="@+id/toggleGreenLed" android:layout_width ="wrap_content" android:layout_height ="fill_parent" android:layout_weight ="1" android:background ="#00FF00" android:textOff ="OFF" android:textSize ="30dp" android:textOn ="ON" /> >

Эти же изменения можно сделать и в графическом режиме, воспользовавшись вкладкой «Outline/Properties».

Пробный запуск

Мы можем запустить только что созданное приложение на эмуляторе. Идем в настройки запуска «Run» → Run Configurations», в левой части нажимаем на «Android Application». Появляется новая конфигурация «New_configuration». В правой части окна выбираем вкладку «Target» и выбираем опцию «Launch on all compatible devices/AVD».

Нажимаем «Apply», а затем «Run». Приложение запустится в эмуляторе.

Можно понажимать кнопки. Но ничего происходить не будет, поскольку обработчики нажатий еще нами не написаны.

Чтобы запустить приложение на реальном устройстве, необходимо включить в его настройках опцию «Отладка USB» и подключить его к компьютеру.

На реальном устройстве приложение выглядит абсолютно аналогично.

Написание кода для Android

Правка манифеста

Каждое Android-приложение должно сообщить системе о том, какие права необходимо ему предоставить. Перечисление прав идет в так называемом файле манифеста AndroidManifest.xml . В нем мы должны указать тот факт, что хотим использовать Bluetooth в своем приложении. Для этого достаточно добавить буквально пару строк:

AndroidManifest.xml "http://schemas.android.com/apk/res/android" package ="ru.amperka.arduinobtled" android:versionCode ="1" android:versionName ="1.0" > android:minSdkVersion ="10" android:targetSdkVersion ="10" /> "android.permission.BLUETOOTH" /> "android.permission.BLUETOOTH_ADMIN" />
android:allowBackup ="true" android:icon ="@drawable/ic_launcher" android:label ="@string/app_name" android:theme ="@style/AppTheme" > android:name ="ru.amperka.arduinobtled.MainActivity" android:label ="@string/app_name" > > "android.intent.category.LAUNCHER" /> > > > >

Добавляем основной код

Пришла пора вдохнуть жизнь в наше приложение. Открываем файл MainActivity.java (src → ru.amperka.arduinobtled). Изначально он содержит следующий код:

MainActivityAutogen.java package ru.amperka.arduinobtled ; import android.os.Bundle ; import android.app.Activity ; import android.view.Menu ; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater() .inflate (R.menu .main , menu) ; return true ; } }

Дополним код в соответствии с тем, что нам нужно:

    Будем включать Bluetooth, если он выключен.

    Будем обрабатывать нажатия на кнопки

    Будем посылать информацию о том, какая кнопка была нажата.

Передавать на Arduino мы будем один байт с двузначным числом. Первая цифра числа - номер пина, к которому подключен тот или иной светодиод, вторая - состояние светодиода: 1 - включен, 0 - выключен.

Число-команда, рассчитывается очень просто: Если нажата красная кнопка, то берется число 60 (для красного светодиода мы выбрали 6-й пин Arduino) и к нему прибавляется 1 или 0 в зависимости от того, должен ли сейчас гореть светодиод или нет. Для зеленой кнопки всё аналогично, только вместо 60 берется 70 (поскольку зеленый светодиод подключен к 7 пину). В итоге, в нашем случае, возможны 4 команды: 60, 61, 70, 71.

Напишем код, который реализует всё сказанное.

MainActivity.java package ru.amperka.arduinobtled ; import java.io.IOException ; import java.io.OutputStream ; import java.lang.reflect.InvocationTargetException ; import java.lang.reflect.Method ; import android.app.Activity ; import android.bluetooth.BluetoothAdapter ; import android.bluetooth.BluetoothDevice ; import android.bluetooth.BluetoothSocket ; import android.content.Intent ; import android.os.Bundle ; import android.util.Log ; import android.view.Menu ; import android.view.View ; import android.view.View.OnClickListener ; import android.widget.Toast ; import android.widget.ToggleButton ; public class MainActivity extends Activity implements View .OnClickListener { //Экземпляры классов наших кнопок ToggleButton redButton; ToggleButton greenButton; //Сокет, с помощью которого мы будем отправлять данные на Arduino BluetoothSocket clientSocket; //Эта функция запускается автоматически при запуске приложения @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; //"Соединям" вид кнопки в окне приложения с реализацией redButton = (ToggleButton) findViewById(R.id .toggleRedLed ) ; greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ) ; //Добавлем "слушатель нажатий" к кнопке redButton.setOnClickListener (this ) ; greenButton.setOnClickListener (this ) ; //Включаем bluetooth. Если он уже включен, то ничего не произойдет String enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE ; startActivityForResult(new Intent(enableBT) , 0 ) ; //Мы хотим использовать тот bluetooth-адаптер, который задается по умолчанию BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter () ; //Пытаемся проделать эти действия try { //Устройство с данным адресом - наш Bluetooth Bee //Адрес опредеяется следующим образом: установите соединение //между ПК и модулем (пин: 1234), а затем посмотрите в настройках //соединения адрес модуля. Скорее всего он будет аналогичным. BluetoothDevice device = bluetooth.getRemoteDevice ("00:13:02:01:00:09" ) ; //Инициируем соединение с устройством Method m = device.getClass () .getMethod ( "createRfcommSocket" , new Class { int .class } ) ; clientSocket = (BluetoothSocket) m.invoke (device, 1 ) ; clientSocket.connect () ; //В случае появления любых ошибок, выводим в лог сообщение } catch (IOException SecurityException e) { Log.d ("BLUETOOTH" , e.getMessage () ) ; } catch (NoSuchMethodException e) { Log.d ("BLUETOOTH" , e.getMessage () ) ; } catch (IllegalArgumentException e) { Log.d ("BLUETOOTH" , e.getMessage () ) ; } catch (IllegalAccessException e) { Log.d ("BLUETOOTH" , e.getMessage () ) ; } catch (InvocationTargetException e) { Log.d ("BLUETOOTH" , e.getMessage () ) ; } //Выводим сообщение об успешном подключении Toast.makeText (getApplicationContext() , "CONNECTED" , Toast.LENGTH_LONG ) .show () ; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater() .inflate (R.menu .main , menu) ; return true ; } //Как раз эта функция и будет вызываться @Override public void onClick(View v) { //Пытаемся послать данные try { //Получаем выходной поток для передачи данных OutputStream outStream = clientSocket.getOutputStream () ; int value = 0 ; //В зависимости от того, какая кнопка была нажата, //изменяем данные для посылки if (v == redButton) { value = (redButton.isChecked () ? 1 : 0 ) + 60 ; } else if (v == greenButton) { value = (greenButton.isChecked () ? 1 : 0 ) + 70 ; } //Пишем данные в выходной поток outStream.write (value) ; } catch (IOException e) { //Если есть ошибки, выводим их в лог Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7 , OUTPUT) ; } void loop() { //Если данные пришли if (Serial.available () > 0 ) { //Считываем пришедший байт byte incomingByte = Serial.read () ; //Получаем номер пина путем целочисленного деления значения принятого байта на 10 //и нужное нам действие за счет получения остатка от деления на 2: //(1 - зажечь, 0 - погасить) digitalWrite(incomingByte / 10 , incomingByte % 2 ) ; } }

Особенности заливки скетча

Для связи Bluetooth-Bee с контроллером используются те же пины (0 и 1), что и для прошивки. Поэтому при программировании контроллера переключатель «SERIAL SELECT» на «Wireless Shield» должен быть установлен в положение «USB», а после прошивки его надо вернуть в положение «MICRO».

Результат

Заключение

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

Вы можете развить мысль и сделать более дружественный интерфейс на Android, управлять с его помощью гораздо более сложными устройствами, публиковать классные приложения в Android Market и ещё много-много всего интересного!

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

Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.

Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.

Нам понадобится:

  • Набор проводов ПАПА-МАМА
  • HC-06 Bluetooth

Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА .

Arduino Bluetooth
Pin 1 (TX) RXD
Pin 0 (RX) TXD
GND GND
5V VCC

Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD .

Теперь необходимо записать пробный код программы:

Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.

Int val; int LED = 13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // При символе "1" включаем светодиод if (val == "1") { digitalWrite(LED, HIGH); } // При символе "0" выключаем светодиод if (val == "0") { digitalWrite(LED, LOW); } } }

После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.

Подключение Bluetooth к телефону

Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.

  1. Включаем Bluetooth на телефоне и ищем новые устройства
  2. Находим в списке расстройств "HC-06" и подключаемся к нему.
  3. Телефон спросит пин-код. необходимо ввести "1234 " или "0000 "
  4. Ура. Устройство подключено.

Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.



Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.

После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.

Пришло время попробовать проект в деле. Пишем в терминале цифру "0" и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру "1" и светодиод L должен зажечься.

Демонстрация работы:


Домашняя работа:

  • Изменить скетч так, что бы светодиод зажигался и потухал с помощью одной и той же команды например "G".
  • Дописать скетч и научить его преобразовывать текстовые данные приходящие через блютус в цифровые и реализовать димер, зажигать светодиод с помощью ШИМ, на заданную яркость от 0 до 254 приходящую через bluetooth.

Вам необходимо дистанционно управлять вашей Arduino платой, обмениваться данными с другими bluetooth устройствами? Блютуз модули HC-05, HC06 помогут справиться с этой задачей.

В первой части статьи мы расскажем о том, как установить беспроводное соединение между Arduino и компьютером, а во второй части как установить соединение между Arduino и телефоном на платформе Android. .

Данная статья будет составной частью в дальнейшей сборке дистанционно управляемой машинки.

Компоненты для повторения (купить в Китае):

Модули HC-05/06 представляют из себя голые блютузы с дополнительной обвязкой.

А именно: установлены на подложку, на которой расположен стабилизатор с 5 на 3.3Вольта, светодиод, указывающий на состояние модуля (образовано соединение или нет), и конденсаторы на линиях питания. Также на плате установлен mosfet транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его, но в нашем обзоре это задействовано не будет.

С лицевой стороны модуль выглядит вот так

Подключение к Arduino

Bluetooth HC-05/06 Arduino
VCC +5V
GND GND
TX RX
RX TX

При подаче питания на модуль встроенный светодиод начинает мигать.

1) C компьютером (операционка WIN7)

2) C телефоном (операционка ANDROID)

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

Часть 1. Соединение с компьютером (WIN7)

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

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

. Действие 1

Идем в панель управления, щелкаем на иконку блютуза и выбираем "Показать устройства Bluetooth"

Через некоторое время компьютер произведет поиск и вы увидите ваш модуль (У вашего модуля может быть другое имя).

Выбираем второй вариант - "Введите код образования пары устройства"

Для HC-06 этот код 1234

Завершается все такой картиной.

А за ним еще одно

Первый этап настройки завершен

В случае, если вы забудете каким COM портом у вас определился блютуз, это всегда можно посмотреть выполнив следующие действия:

Действия

P.S. Или посмотреть в диспетчере устройств

. Действие 2

Для передачи данных можно использовать любой терминал. Я использовал простой и бесплатный "Termite ".

В качестве примера мы будем изменять состояние встроенного на плату Arduino светодиода "LED 13". Включаться он будет при приеме символа "W", а отключаться при "S". Приведенный ниже скетч нужно залить в плату Arduino. При заливке в плату необходимо отсоединить питание от блютуз модуля , после заливки снова подсоединить.

пример программного кода:

int val; int LED = 13; void setup () { Serial .begin (9600); pinMode (LED, OUTPUT ); } void loop () { if (Serial .available ()) { val = Serial .read (); // При символе "W" включаем светодиод if (val == "W" ) { digitalWrite (LED, HIGH ); } // При символе "S" выключаем светодиод if (val == "S" ) { digitalWrite (LED, LOW ); } } } Открываем программу "Termite "

В настройках выбираем наш порт, скорость (9600).

Также модуль можно проверить и без Arduino просто замкнув выводы TX и RX. Termite отправляемые символы отмечает синим цветом, полученные зелеными. Т.е. если при закороченных выводах мы отправили и нам пришло тоже самое - значит что модуль работает исправно. На фото ниже это и продемонстрировано.

Часть 2. Соединение с телефоном (Android)

В качестве подопытного будет взят телефон Samsung Galaxy Ace 2 на операционке Android.

. Действие 1

Соединяем с телефоном

. Действие 2

В качестве терминала выберем опять-таки простой и бесплатный, но уже "Bluetooth Terminal "

P.S. В случае если не удается подключиться, отключайте питание от блютуза и подключайте заново.

Мы заняты разработкой приложения под Android для управления нагрузками на Arduino. Но, как вы все понимаете, просто там одно к другому не подключишь - нужен канал связи, а какой у нас самый доступный и дешманский канал? Конечно же bluetooth! О нём дальше и пойдёт речь.
Сегодня решаем производственные вопросы - подключаем Bluetooth модуль HC-06. Его главное отличие от HC-05 в том, что он урезан и предоставляет только необходимый минимум возможностей.

В целом, HC-06 можно рассматривать как беспроводной удлинитель UART. Поскольку мы подключаясь к нему с ПК через Bluetooth видим его как COM порт и подключаясь к контактам мы имеем чистый UART. Практически всё, что идёт с одной стороны - выходит с другой. За исключением AT команд со стороны контактов.

AT команды - это наследие старых модемов ещё из 1977 года. Представляют они из себя короткие строковые команды, например «AT», «AT-NAME», «AT-PIN». Обычно ввод команды завершается клавишей Enter. Но в этот раз всё немного иначе, и команда целиком должна быть получена, примерно, в течение одной секунды. По этой причине, для настройки нам не подойдут программы позволяющие писать напрямую с клавиатуры в порт (можно попробовать из буфера обмена, но есть шанс на облом). Нам нужна возможность послать по сигналу строку целиком.

Вооружившись COM Port Toolkit , мы выставляем скорость в 9600 и соответствующий номер порта. Далее готовим первую строку «AT». Отправляем и получаем на неё ответ «OK». Это уже хороший знак. Мы не перепутали RX и TX и не ошиблись со скоростью. Дальше вам наверняка захочется дать своё название модулю. Пишем: «AT-NAMEhome» и получаем в ответ что-то типа «OKhome». Меняем код доступа так: «AT-PIN010203», и получаем: «OKsetpin»
Ну что же. На этом начальная настройка закончена.

Не пропустите обновления! Подписывайтесь на нашу группу