Как подключить блютуз модуль к ардуино

Оглавление

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

Ярким представителем является модуль HM Приложение для управление Ардуино через блютуз модуль В следующем примере мы добавим к светодиоду сервопривод. После того, как адаптер подключается к компьютеру, установите необходимые драйвера в Windows 7 x64 у меня все драйвера поставились автоматом. Но значительно чаще его применяют в проектах, с целью наладить управление микроконтроллером с близких расстояний.
В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль.
В списке обнаруженных устройств отобразится наш Bluetooth-модуль, с новым именем, которое я поменял ранее.
Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.
Подключаем модуль HC к плате Arduino по схеме на рис. Подключайтесь к модулю и вводите команды 0 или 1.
Аналогичным образом можно подключаться к модулю при помощи компьютера. После установки приложения нужно загрузить скетч и подключить модуль к плате Ардуино.
Оба модуля представляют собой две спаянные платы.
Как подключить bluetooth-гарнитуру к смартфону ( jabra bt2046 к fly 4410 phoenix )

SoftwareSerial

В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):

#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); // RX, TX

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Откроем терминал и монитор порта и можем общаться с компьютером, Arduino выступает в роли посредника и перекидывает данные с Bluetooth на USB и наоборот:

Точно так же можно использовать SoftwareSerial для программ и приложений, если аппаратный UART на Arduino нужен для других целей.

Программа Bluetooth RC Car — управление роботом-машинкой со смартфона на Android

В свой смартфон я установил программу Bluetooth RC Car. На мой взгляд  — это лучшая софтинка для управления роботом-машинкой.

Программа позволяет передавать команды при нажатии на кнопки или реагировать на данные с акселерометра в смартфоне, регулировать скорость движения ползунком, включать передние и задние фонари, включать и выключать звуковой сигнал, включать и выключать сигнал “аварийка”.

Для работы программы требуется Android версии 2.3.3 или выше. Размер программы 3 мегабайта.

Список команд:

  • F – вперед
  • B – назад
  • L – влево
  • R – вправо
  • G – прямо и влево
  • I – прямо и вправо
  • H – назад и влево
  • J – назад и вправо
  • S – стоп
  • W – передняя фара включена
  • w – передняя фара выключена
  • U – задняя фара включена
  • u – задняя фара выключена
  • V – звуковой сигнал включен
  • v – звуковой сигнал выключен
  • X – сигнал “аварийка” включен
  • x — сигнал “аварийка” выключен
  • 0 – скорость движения 0%
  • 1 – скорость движения 10%
  • 2 – скорость движения 20%
  • 3 – скорость движения 30%
  • 4 – скорость движения 40%
  • 5 – скорость движения 50%
  • 6 – скорость движения 60%
  • 7 – скорость движения 70%
  • 8 – скорость движения 80%
  • 9 – скорость движения 90%
  • q – скорость движения 100%

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

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

Принцип передачи команд: при нажатии на кнопку в программе, команда передается по Bluetooth один раз, а при отпускании кнопки сразу передается команда S-остановка.

Как передаются данные с помощью Bluetooth?

Bluetooth использует полосу частот ISM (Industrial, Scientific and Medical Band) в диапазоне от 2,402 до 2,480 Ггц. В этом интервале доступно до 79 каналов. Каждый из них имеет ширину полосы частот равную 1 Мгц. Диапазон частот 2,4 Ггц, очень близкий к 2,402 Ггц используется связь Wi-Fi, совместимую со стандартом IEEE 802.11.

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

Настройка JDY-31, AT команды

Рассмотрим также настройку самого JDY-31, делается это при помощи AT-команд:

  • Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
  • Загружаем в Arduino пустую программу (Файл/Новый). Либо любую другую, в которой не задействован Serial. Либо подключаем пин RST к GND, чтобы микроконтроллер не запустился и нам не мешал
  • Подключаем JDY-31 на RX TX Arduino (аппаратный Serial) наоборот: TX > TX, RX > RX
  • Открываем монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR

Отправляем команду . Если всё сделано правильно – модуль ответит +VERSION=JDY-31-V1.35,Bluetooth V3.0

Какие ещё есть команды? Полный список есть в документации, давайте разберём:

Команда Описание Ответ
Информация о версии +VERSION=JDY-31-V1.35,Bluetooth V3.0
Перезагрузить +OK
Отключиться +OK
Запрос MAC адреса +LADDR=5C7B00006378
Запрос текущей скорости порта. Код:
  • 4:9600
  • 5:19200
  • 6:38400
  • 7:57600
  • 8:115200
  • 9:128000
+BAUD=4
Установить скорость порта, где x – код (см. выше). Пример установки скорости 115200:

Примечание: после перезагрузки модуль будет работать с АТ командами на новой скорости!

+OK
Запрос текущего ПИН-кода +PIN=1234
Установка пина. Пример: +OK
Запрос текущего имени модуля +NAME=JDY-31-SPP
Установка имени модуля. Пример: +OK
Сброс настроек +OK

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

Windows

Для работы на компьютере у вас должен быть Bluetooth адаптер. Заходим в панель управления, добавляем Bluetooth устройство, вводим пин 1234 для сопряжения:

После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.

void setup() {
  Serial.begin(9600);
}

void loop() {
  static byte count = 0;
  Serial.print("Hello, World! #");
  Serial.println(count++);
  delay(500);
}

Откроем Bluetooth порт и увидим вывод:

Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:

Android

Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(100);
}

void loop() {
  if (Serial.available()) {
    Serial.write(Serial.read());
  }
}

Пишем в терминал – модуль нам отвечает. Своё приложение с Bluetooth можно сделать в MIT App Inventor, этим мы займёмся в будущих уроках.

Создание проекта для ATmega8 в программной среде CodeVision

Аналогичные операции можно произвести и в других программных средах для программирования микроконтроллеров AVR, например, Atmel Studio.

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

Шаг 1. Создайте новый проект в CodeVision, выбрав пункт меню File -> New -> Project. В появившемся диалогом окне нажмите Yes.

Шаг 2. Откроется CodeWizard. Кликните в ней на первой опции, то есть AT90, затем нажмите OK.

Шаг 3. Выберите свой микроконтроллер, в нашем случае им будет Atmega8.

Шаг 4. Кликните на Ports (порты). В нашем проекте мы будем использовать Port C4 и C5 для управления светодиодом. Таким образом, необходимо сконфигурировать биты 4 и 5 как выходные кликнув на них, как показано на рисунке:

Шаг 5. Мы будем использовать универсальный асинхронный последовательный приемопередатчик (USART) для Rx и Tx (приема и передачи данных). Поэтому необходимо выбрать настройки USART, в них кликнуть на настройки приема и оставить их по умолчанию.

Шаг 6. Выберите Program -> Generate, Save and Exit. Теперь более половины вашей работы по программированию микроконтроллера Atmega8 можно считать выполненной.

Шаг 7. Создайте новую папку на рабочем столе чтобы записывать туда наши файлы.

У нас будет 3 диалоговых окна (будут появляться последовательно одно за другим) для сохранения наших файлов.

Сделайте то же самое (что и на представленном рисунке) с двумя другими диалоговыми окнами – то есть сохраните предлагаемые ими файлы.

После этого рабочая область программы будет выглядеть следующим образом:

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

  • взаимодействие двух микроконтроллеров AVR ATmega8 через UART;
  • связь AVR ATmega8 и Arduino Uno через универсальный асинхронный приемопередатчик (UART)

Проверяем наличие модуля Bluetooth?

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

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

Приведенный ниже метод применяется к ОС Windows, таким как Windows 10, Windows 8.1, Windows 8, Windows XP и Windows Vista. Он подходит как для 64-разрядных, так и для 32-разрядных систем. Перейдите к диспетчеру устройств. Диспетчер устройств отобразит все оборудование на вашем компьютере, он покажет, что аппаратное обеспечение установлено и активно. Вот как получить доступ к диспетчеру устройств.

  • Нажмите меню «Поиск»
  • В поле поиска введите «Диспетчер устройств». Вас могут попросить ввести пароль администратора или подтвердить свой выбор.

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

Если на вашем ПК нет устройство Bluetooth, вы можете приобрести адаптер, который стоит всего несколько сотен рублей.

Описание

В наборе GyverKIT обеих комплектаций есть Bluetooth модуль JDY-31 (аналог популярного HC-06). Данный модуль обеспечивает беспроводную связь UART – COM порт, что позволяет использовать его для удобного обмена данными между Arduino и приложением на смартфоне или программой на компьютере. Основные характеристики:

  • Рабочая частота: 2.4 GHz
  • Интерфейс: UART
  • Напряжение питания: 3.6.. 6V
  • Ток потребления: 5 мА в режиме поиска, ~8 мА в режиме передачи
  • Логический уровень: 3.3V, но вроде как не боится 5V
  • Дальность связи: 30м
  • Версия Bluetooth: 3.0 SPP
  • Чувствительность антенны: -97dbm
  • Скорость UART: 9600.. 128000

Индикация состояния подключения:

  • Ожидание
    • Светодиод мигает
    • Пин STATE: LOW
  • Подключено
    • Светодиод горит постоянно
    • Пин STATE: HIGH

3Скетч для Arduinoдля работы по bluetooth

Напишем такой скетч и загрузим в память Arduino:

const int ledPin = 13; // вывод встроенного светодиода
char incomingbyte; // переменная для данных Bluetooth

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) { // если порт доступен
    incomingbyte = Serial.read(); // считываем с порта данные
      switch(incomingbyte) {
      case '1': // если приходит "1"
          digitalWrite(ledPin, HIGH); //
          break;
      case '0': // если приходит "0"
          digitalWrite(ledPin, LOW); // 
          break;
      }
  }
}

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

Скетч для управления роботом на Arduino по Bluetooth через смартфон на Android

В своём скетче я реализовал следующие функции:

  • Движение вперед
  • Движение назад
  • Разворот влево
  • Разворот вправо
  • Плавный поворот влево при движении вперед
  • Плавный поворот вправо при движении вперед
  • Плавный поворот влево при движении назад
  • Плавный поворот вправо при движении назад
  • Остановка

Установка скорости 0%

Установка скорости 10%

Установка скорости 20%

Установка скорости 30%

Установка скорости 40%

Установка скорости 50%

Установка скорости 60%

Установка скорости 70%

Установка скорости 80%

Установка скорости 90%

Установка скорости 100%

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

Проверьте порты аудиовыхода на телевизоре

Важно обратить внимание на параметры звука телевизора, поскольку существуют разные типы подключений. Например, вам нужно знать, есть ли оптическое аудиосоединение, RCA или дополнительный выход, чтобы вы имели лучшее представление о том, какой передатчик Bluetooth купить. К счастью, есть универсальные передатчики, такие как Avantree Oasis (на Amazon), которые охватывают RCA, оптическое аудио соединение, а также вспомогательные

К счастью, есть универсальные передатчики, такие как Avantree Oasis (на Amazon), которые охватывают RCA, оптическое аудио соединение, а также вспомогательные.

RCA

Чтобы узнать, где находятся выходы RCA, вам просто нужно посмотреть на заднюю панель телевизора. Аналоговые выходы RCA нередко находятся в нижней части телевизора или по бокам, и они, как правило, имеют красную и белую цветовую кодировку, поэтому легко правильно настроить кабели, не допуская ошибок во время процесса. Если вы видите метку «Вывод», это означает, что он предназначен для отправки звука на другое устройство.

Оптическое аудио соединение

Оптическое аудиосоединение – также известное как соединения TOSLINK – это очень популярный способ отправки высококачественного звука с одного устройства на другое. Если на вашем телевизоре есть порт для оптического аудиосоединения, вы увидите один порт на задней или боковой панели телевизора вместе с этикеткой под ним с надписью «Оптический».

Вспомогательный (AUX)

Вспомогательный или AUX, вероятно, один из самых популярных аудиопортов. Опять же, он обычно находится на задней или боковой стороне телевизора и будет обозначаться как AUX Out или AUX Output. Фактически вы можете преобразовать RCA в AUX и наоборот.

Подключение Bluetooth-модуля к Arduino

Так теперь нам нужно подключить нашу Arduino с Bluetooth. Если на Arduino нет вывода с 3.3В, а только 5В то нужен будет поставить стабилизатор чтобы снизить питание. Назначение выводов HC-05 легко найти в интернете. Для использования рекомендуем вам сделать плату с выведенными линиями питания, Rx и Tx. Подключение к Arduino необходимо производить в следующем порядке:

  • вывод Arduino 3.3В или (5В через стабилизатор!) — к 12 пину модуля Bluetooth
  • вывод Arduino GND — к 13 пину модуля Bluetooth
  • вывод Arduino TX — к 2 пину модуля RX Bluetooth
  • вывод Arduino RX — к 1 пину модуля TX Bluetooth

После подключения необходимо проверить работоспособность Bluetooth модуля. Подключим Светодиод к 12 выводу Arduino и загрузим на плату следующий скетч:

Char incomingByte; // входящие данные
int LED = 12; // LED подключен к 12 пину
void setup() {
Serial.begin(9600); // инициализация порта
pinMode(LED, OUTPUT); //Устанавливаем 12 вывод как выход
Serial.println(«Press 1 to LED ON or 0 to LED OFF…»);
}
void loop() {
if (Serial.available() > 0) { //если пришли данные
incomingByte = Serial.read(); // считываем байт
if(incomingByte == «0»)
{
digitalWrite(LED, LOW); // если 1, то выключаем LED
Serial.println(«LED OFF. Press 1 to LED ON!»); // и выводим обратно сообщение
}
if(incomingByte == «1») {
digitalWrite(LED, HIGH); // если 0, то включаем LED
Serial.println(«LED ON. Press 0 to LED OFF!»);
}
}
}

Step 2: Load the Arduino Test Sketches

NOTE: When uploading sketches from the Arduino IDE to the Arduino microcontroller, make sure your Bluetooth transceiver TX pin/wire is not connected to the Arduino’s RX pin (pin 0) . Else, this may prevent your PC from sending sketches to the Arduino microcontroller.
Check the video to see how these demo sketches work. 
I have two Arduino test sketches. The first one is a «send test.» The Arduino microcontroller sends numbers to the PC over serial Bluetooth. So if you have a terminal emulator running on your PC, such as Tera Term, you will see a list of numbers rolling down your emulator’s screen.
I have done almost no error trapping in my code to keep the code clear and simple. I trust the developers will add it per their requirement. 
The second Arduino test sketch is a «get test.» If you type 1 on your keyboard, from the terminal emulator application such as Tera Term, the Arduino’s pin 13 LED will turn on. If you click 0 on your keyboard, the LED will turn off.
//////////////////////////////////////////////////////////////////////////////////
// REMIXED BY: TECHBITAR (HAZIM BITAR)
// LICENSE: PUBLIC DOMAIN
// DATE: MAY 2, 2012
// CONTACT: techbitar at gmail dot com
int counter =0;
void setup() {
  Serial.begin(9600); 
  delay(50);
}
void loop() {
  counter++;
  Serial.print(«Arduino counter: «);
  Serial.println(counter);
  delay(500); // wait half a sec
}
//////////////////////////////////////////////////////////////////////////////////
// REMIXED BY: TECHBITAR (HAZIM BITAR)
// LICENSE: PUBLIC DOMAIN
// DATE: MAY 2, 2012
// CONTACT: techbitar at gmail dot com
char INBYTE;
int  LED = 13; // LED on pin 13
void setup() {
  Serial.begin(9600); 
  pinMode(LED, OUTPUT);
}
void loop() {
  Serial.println(«Press 1 to turn Arduino pin 13 LED ON or 0 to turn it OFF:»);
  while (!Serial.available());   // stay here so long as COM port is empty   
  INBYTE = Serial.read();        // read next available byte
  if( INBYTE == ‘0’ ) digitalWrite(LED, LOW);  // if it’s a 0 (zero) tun LED off
  if( INBYTE == ‘1’ ) digitalWrite(LED, HIGH); // if it’s a 1 (one) turn LED on
  delay(50);
}

Немного теории

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

Bluetooth

Стандарт беспроводной радиосвязи, связывающий на коротком расстоянии различные типы устройств. Для управления железками через Web Bluetooth API нам потребуется Bluetooth v4.0.

Сервисы

Внутри bluetooth-устройства есть сервисы. Сам по себе сервис — это коллекция характеристик и связей с другими сервисами. У каждого сервиса есть свои UID и имя. Зачастую будут попадаться “Unknown services”. Это связано с тем, что количество устройств и вариантов их использования велико.

Характеристики

Внутри каждого сервиса есть характеристики, в которые можно писать, считывать их, а также подписаться на них. Характеристика также имеет свой UID.

Как на ноутбуке включить блютуз

Существует несколько простых способов для активации этой беспроводной технологии. Сначала следует проверит наличие на боковой или передней поверхности корпуса специальной кнопки (относится к старым моделям). На переключатели должен быть нарисован логотип технологии. Если таковой нет, то активируйте Bluetooth при помощи сочетания клавиши Fn и одной из кнопок на которой напечатан значок адаптера. На разных моделях за это отвечают разные клавиши. Но как правило это одна из кнопок F1-F12 или 1-0.

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

  1. Нажмите Win+R и наберите devmgmt.msc.
  2. В выпадающем меню «сетевые адаптеры» найдите устройство.
  3. Убедитесь, что рядом с ним тем восклицательного знака в желтом треугольнике. Если таковой имеется, значит драйвера не установлены и нужно выполнить эту процедуру.
  4. После этого перезапустите операционную систему.

Windows 7

Это очень популярная операционная система, которая сейчас используется только в старых компьютерах, не способных справляться с win10. Включить блютуз на виндовс 7 можно при помощи сочетания клавиш на клавиатуре, этот способ поддерживается данной ОС. Для этого у вас должен быть установлен необходимый драйвер (для разных моделей Asus, Lenovo они отличаются). При активации должен появится соответствующий значок в трее программ, если его нет, то выполните следующие действия:

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

Есть еще один вариант запуска «Синего Зуба» в Виндовс 7:

  • включите меню «Пуск»;
  • откройте раздел «Устройства и принтеры»;
  • найдите Блютуз-адаптера, откройте его параметры;
  • если его в перечне нет, то выполните функцию «добавление устройства».

Windows 8

Чтобы включить bluetooth на ноутбуке под ОС 8 версии нужно использовать панель Charms. Вызывать ее можно при наведении курсора на верхний правый угол экрана или через сочетание кнопок на клавиатуре Win+С. Затем необходимо выполнить следующее:

  1. Кликните по кнопке «Параметры».
  2. Откройте окно изменения параметров ПК.
  3. Включите раздел «Сеть».
  4. Найдите Bluetooth и переведите в режим «Включен».

Windows 10

Подключить блютуз на ноутбуке под этой операционное системой проще, чем на всех остальных. Все необходимые программы и утилиты уже встроены в стандартные настройки ОС. Эта версия винды максимально оптимизирована под использование на всех мобильных и портативных устройствах, поэтому необходимости в панели Charms более нет. При наличии самого адаптера, установленных драйверов вам нужно выполнить несколько очень простых действий для активации беспроводной технологии:

  1. Нажмите в нижнем правом углу на значок «уведомления».
  2. Внизу будет «плитка» с разными функциями. Если она не отображается, то кликните по надписи «развернуть».
  3. Кликните по значку «Синего зуба» для его активации.
  4. Если его нет в «плитке», то перейдите в раздел «параметры» и включите его через левое боковое меню.

Как включить блютуз на Mac

Если вы владелец ПК от компании Apple, то у вас тоже есть возможность использоваться этот беспроводной адаптер. Сначала нужно настроить блютуз на ноутбуке: скачать и установить драйвера. Далее следует выполнить следующие действия:

  • откройте меню Apple;
  • кликните на системные настройки;
  • откройте вкладку Bluetooth;
  • активируйте устройство.

JavaScript

Работа с Web Bluetooth API построена на Promise. Ниже я буду приводить поэтапные примеры кода. Полный исходный код можно будет найти в репозитории, на который будет оставлена ссылка.

Для начала нам необходимо подключиться к устройству. Мы запрашиваем устройства и в фильтре передаём имя устройства и UID сервиса, с которыми будем работать. Если не указать сервис заранее, то в дальнейшем с ним нельзя будет взаимодействовать.

После того как мы нажмём на кнопку “Connect”, у нас откроется окно (рис. 5), в котором необходимо выбрать устройство и нажать на кнопку подключения.

Рис. 5 (Окно с доступным к подключению устройством)
При подключении возвращается Promise, содержащий “device”, к которому можно подключиться. Окей, давайте запишем его в переменную и создадим соединение.

После этого нам возвращается Promise, содержащий “server”. Затем мы у “server” запрашиваем “service”, передавая туда UID сервиса (который мы подсмотрели через приложение). Затем нам возвращается Promise, содержащий “service”, у которого мы запрашиваем “characteristic”, передавая её UID (который мы тоже подсмотрели через приложение).

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

В обработчиках кликов по кнопкам содержится следующий код:

В характеристику необходимо передавать массив uint8, поэтому для преобразования кода, который будет передан в неё, необходимо использовать Uint8Array.

По задумке, код 1 заставляет светодиоды мигать тремя цветами и затем гаснуть. Но как погасить светодиод, если в него был передан код 3 и светодиод всё ещё горит? Или включить другой цвет?

Я считываю значение, лежащее в характеристике, преобразую его с помощью getUint8 и, если код совпадает, отправляю любое невалидное значение (например 0). Если же значение валидное, то преобразую его в массив unit8 и записываю в характеристику.

Для окончательного решения поставленной задачи необходимо всего лишь научиться отключаться от устройства. У нас уже есть eventListener на кнопке “Disconnect”, в котором происходит отключение от bluetooth-устройства, снимаются eventListeners, кнопки управления прячутся, а в переменные записывается undefined.

Приложение Android для контроля светодиода с использованием микроконтроллера AVR

Итак, как мы уже говорили, мы будем использовать “Bluetooth Terminal app” на нашем смартфоне чтобы сообщать модулю HC-05 команды (в нашем случае это просто символы) для управления светодиодом.

Вы можете запитать схему от вашего программатора usbasp, подключив его к компьютеру или можете использовать внешний источник напряжения 5В (не более !!!), подключив его к контакту Vcc Atmega8.

После установки приложения откройте его и подключите его к Bluetooth-модулю HC-05, используя пароль по умолчанию: 1234.

Теперь пошлите символ ‘a’ и светодиод загорится. Пошлите ‘b’ – и светодиод потухнет.

Теперь с помощью передачи символов ‘a’ и ‘b’ вы сможете управлять светодиодом по беспроводному каналу используя ваш смартфон. А если вы будете использовать голосовую клавиатуру с приложением Bluetooth, то вы сможете отдавать эти команды голосом, даже не набирая их на клавиатуре.

Схема сборки машинки на Ардуино

Если у вас есть все необходимые детали (в проекте можно обойтись без светодиодов и резисторов), то далее мы рассмотрим, как сделать машинку из ардуино своими руками. Для начала следует припаять к контактам моторчиков провода и зафиксировать их изолентой, чтобы контакты не оторвались. Провода необходимо соединить с клеммниками M1 и M2 на Motor Shield (полярность потом можно будет поменять).

Схема сборки машинки с Блютуз управлением

Питание на Bluetooth модуль идет от контактов для сервопривода, в проекте серво нам не понадобятся. А на питание идет стабилизированное напряжение 5 Вольт, что нам подходит. К портам TX и RX удобнее будет припаять коннекторы «мама», а к портам «Pin0» и «Pin1» на Motor Shield припаять штырьки (BLS). Таким образом, вы сможете легко отключать Bluetooth модуль от Arduino при необходимости загрузки скетча.

Управление светодиодами идет от порта «Pin2», здесь провод можно припаять напрямую к порту. Если вы делаете несколько машинок с Блютуз, которыми будете управлять одновременно, то рекомендуем сделать перепрошивку модуля HC-05. Делается прошивка модуля очень просто, а затем вы уже не будете путать машинки, так как у каждой будет отображаться свое уникальное имя на Андроиде.

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

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

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

.
Действие 1

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

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

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

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

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

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

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

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

Действия

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

. Действие 2

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

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

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

setup
Serial
loop
Serial
Serial
// При символе «W» включаем светодиод
// При символе «S» выключаем светодиод
Termite

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

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

Скетч

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

В скетче прописанные необходимые поясняющие комментарии.

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

void rightWheelForward () {               // Правое колесо вперёд.
  digitalWrite (motorRight1, LOW);
  digitalWrite (motorRight2, HIGH);
  analogWrite(enableRight, motorSpeed);
}

void leftWheelForward () {                // Левое колесо вперёд.
  digitalWrite (motorLeft1, LOW);
  digitalWrite (motorLeft2, HIGH);
  analogWrite(enableLeft, motorSpeed);
}

Со смартфона приложение по Bluetooth посылает сигналы в виде латинских букв (W, S, E и т.д.). В зависимости от пришедшей команды, с помощью оператора if, вызываются комбинации тех или иных функции. Если вы будете использовать другое приложение, не то, которое я предоставлю ниже, то оно будет посылать другие команды, другие буквы. Соответственно, придётся переписать их в скетче.

Например, когда по Bluetooth приходит ‘ W ‘ вызываются две функции rightWheelForward (); и leftWheelForward (); что заставит оба мотора крутится вперёд.

    if (control == 'W') {      // Ехать вперёд.
      rightWheelForward ();
      leftWheelForward ();
    }

А если приходит ‘E’, то вызываются функции rightWheelStop (); и leftWheelForward (); что заставит остановиться правый мотор и вращаться вперёд только левый, от чего машинка поведет вперёд вправо.

if (control == 'E') {      // Повернуть направо вперёд.
      rightWheelStop ();
      leftWheelForward ();
    }

Есть три вида скорости, которые включаются, когда приходят команды ‘1’, ‘2’ и ‘3’. Скорость можно задавать от 0 до 250. На каждую и трёх команд в скетче прописаны скорости 120, 170 и 250, соответственно.

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

Скорость приходит в виде переменной motorSpeed в функцию analogWrite() и запускает двигатель с заданными оборотами.

Приложение

Так как я не владею навыком написания приложение под Anroid, то для создания пульта управления использовать уже известный у многих начинающих разработчиков инструмент визуального программирования — App inventor.

Что-то подсмотрел у других в интернете, что доработал, и получилось такое простое приложение.

Скачать APK файл приложения

Скачать AIA файл для APP inventor

Сначала нужно включить машинку и сделать сопряжение по Bluetooth со смартфоном. Пароль модуля 0000 или 1234. После этого откройте приложение и нажмите «Подключиться к машинке». Подключитесь к модулю HC-06. Светодиод на нём должен перестать мигать.

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

И, так как я не публиковал это приложение в Google Play, смартфон может ругаться на его безопасность. Но можно смело устанавливать. В нём всё работает безопасно.