#1 2014-06-17 18:36:54

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Bluetooth HC-06

Начну первый.

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

Модуль блютуз HC-06.

IMG_20140508_233227.jpg

Описание:

Bluetooth модуль для подключения устройств к ардуино по блютуз. Режим работы пассивный.


Для работы просто выбираем поиск на другом устройстве, и находим его как НС-06. Пин базовый 1234. После подключения к ардуино, данный блютуз выступает в роли порта, т.е. все что мы пошлем на последовательный порт будет отсылался а этот блютуз, также все то  что мы будем слать на этот блютуз из вне, будет приниматься на ардуино как через порт.
Пины:
STATE -- выводит сигнал от светодиода.
RXD -- контакт для получения данных. На него мы посылаем данные.
TXD -- контакт для отправки данных.
GND  - земля
VCC -- питание 3.3 v
EN -- питание вкл\выкл, если подать единицу модуль будет включен. Если ноль то модуль будет отключен.
Настройка:
Для изменения базовых настроек, имя, пин. Модуль нужно подключит к ПК,  через переходник. И через ПК, АТ коммандами изменять настройки. На данный момент я этого не делал, т.к. не имею переходника.

Но вот список команд для изменения:

AT  - возвращает  OK
AT+VERSION  - посмотреть версию
AT+NAMEyyy - изменить имя устройства.
AT+PINxxxx - задать другой пин, базовый 1234
AT+BAUDx - установить скорость.


Источник http://arduino-ua.com/index.php?productID=241

Схема подключения:

HC-06.png

Пример скетча: (пример не мой, но где нашел не могу сказать )

В данном примере, по команде с телефона мы отправляем 1 и светодиод на 13 порту включается, 0 его отключает, а * заставляет его мигать с  интервалом в  1 секунду.

enum { LED_PIN = 13 };
enum LedState { LED_ON, LED_OFF, LED_BLINK };

LedState led_state;

void setup()
{
  led_state = LED_OFF;
  pinMode(LED_PIN, OUTPUT);
  pinMode(3,OUTPUT);
  
  Serial.begin(9600);
}

void loop()
{ 

if (Serial.available())
  {
    char command = Serial.read();
    
    switch (command)
    {
      case '1':
        led_state = LED_ON; 
        Serial.println("Led On Cool");
        break;
        
      case '0': 
        led_state = LED_OFF; 
        Serial.println("Led Off Fall");
        break;
      case '*': 
        led_state = LED_BLINK;
        Serial.println("Led Blink ");
        break;
      
      default:
      {
        for (int i = 0; i < 5; ++i)
        {
          
          digitalWrite(LED_PIN, HIGH);
          delay(50);
          digitalWrite(LED_PIN, LOW);
          delay(50);
        }
        Serial.println("Fail ....");
      }
    }
  }
  
  switch (led_state)
  {
    case LED_ON: digitalWrite(LED_PIN, HIGH); break;
    case LED_OFF: digitalWrite(LED_PIN, LOW); break;
    
    case LED_BLINK:
    {
      static unsigned long start_millis = 0;
      
      if (millis() - start_millis >= 300)
      {
        start_millis = millis();
        digitalWrite(LED_PIN, !digitalRead(LED_PIN));
      }
    }
  }
}

И вот видео того что получилось.

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

Редактировался Tigran (2014-06-17 19:35:46)

#2 2014-06-17 19:23:00

Андрей
Гость

Re: Bluetooth HC-06

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

#3 2014-06-17 19:34:22

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Re: Bluetooth HC-06

В каком смысле к компу, сам модуль к компу или через соединение по блютуз, или через плату ардуино к компу по кабелю?

Редактировался Tigran (2014-06-17 19:52:45)

#4 2014-06-17 20:26:17

Андрей
Гость

Re: Bluetooth HC-06

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

#5 2014-06-17 20:41:48

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Re: Bluetooth HC-06

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

#6 2014-06-17 21:42:38

Андрей
Участник
Зарегистрирован: 2014-06-17
Сообщений: 46

Re: Bluetooth HC-06

Да я с телефона не пробовал. А ПО использовал стандартное от Windows 7.

#7 2014-06-18 15:17:13

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Re: Bluetooth HC-06

Попробуй с телефона, если так-же будут отключения, скорее всего проблема в блютуз. А к чему конкретно подключен модуль, какая плата, что еще по мимо этого подключено? У меня примерная ситуация была, когда на плату Romeo v2 был подключен блютуз и папру моторов и дальномеров. При включении всего этого, переставало поступать питание на модуль блютуз. При этом переставал мигать индикатор на самом модуле. Вышел из ситуации подключив отдельное питание на модуль! Проверь так!

#8 2014-06-18 22:17:34

Андрей
Участник
Зарегистрирован: 2014-06-17
Сообщений: 46

Re: Bluetooth HC-06

Попробую, спасибо.

#9 2014-06-19 08:23:35

Fidel
Гость

Re: Bluetooth HC-06

А что за программка на телефоне для отправки команд? Это что-то самописное?

#10 2014-06-20 08:44:13

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Re: Bluetooth HC-06

Нет, не самопальное,  в маркете скачал, Bluetoot terminal. В общем в маркете много вариантов, есть из чего выбрать.

#11 2014-06-20 08:45:16

Tigran
Участник
Из Одесса
Зарегистрирован: 2014-06-17
Сообщений: 23
Сайт

Re: Bluetooth HC-06

Андрей пишет:

Попробую, спасибо.

Отпишись кода попробуешь.

#12 2015-02-22 09:47:11

ghostaz
Гость

Re: Bluetooth HC-06

Здравствуйте.
Помогите с проблемой, пожалуйста. Приобрел HC-06, подключил к Arduino. Передаю команды через putty(не важно что за терминал) часть символов не доходит. Показательный пример: передаю 123456789, arduino возвращает только 12345789. Шестой символ с большей вероятностью теряется. Бывает доходят все символы. Через обычный serial по usb данные передаются полностью. Подскажите в чем дело?
https://yadi.sk/i/pr_Ovyvcepj37

#13 2015-02-22 12:48:47

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Bluetooth HC-06

ghostaz, с проблемами искажения данных  сталкивался когда неверно настроен UART,
например модуль настроен на парити None, а мега на парити Even

либо теряете данные )  6-ой байт  всегда?  а 12 тый?
понимаю так :
2 модуля работают хорошо,
но когда один на меге, эхо искажается?
или как делаете тест?

#14 2015-02-22 13:31:58

ghostaz
Гость

Re: Bluetooth HC-06

6й символ не всегда теряется, но большинстве случаев. 12 символ не теряется.
Тест делаю между Arduino Leonardo и ноутбуком.
В ноуте соеднияюсь с HC-06, создается ком порт, подключаюсь к нему через Putty или через Arduino IDE. Отправляю строку ищу в ней подстроку "setmode", если нахожу пишу ОК + то что прислал, не нахожу пишу Error + то что прислал.

char Command[15];
Serial1.readBytes(Command, 15);
if (strstr(Command, "setmode") != NULL) {
      Serial1->println("OK");
      Serial1->println(Command);
    }
    else {
      Serial1->println("Error");
      Serial1->println(Command);
    }

Скорость сериала 9600 бод.

#15 2015-02-22 15:55:49

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Bluetooth HC-06

мысли вслух

send 12345678\n
send 12345678

'6' 16 символ  буфер в Command[15]

http://arduino.cc/en/Reference/StreamReadBytes
Syntax
stream.readBytes(buffer, length)
Parameters
stream : an instance of a class that inherits from Stream.
buffer: the buffer to store the bytes in (char[] or byte[])
length : the number of bytes to read (int)
Returns
The number of bytes placed in the buffer

алгоритм мне не нравится
поток то асинхронный в чистом виде, для начала я бы формировал данные в своем буфере ( Command, только переполнение  буфера  не реализуйте ), т.е. читал бы по байту.
по завершению строки '\r' или  '\n' анализировал бы входные данные

if (strstr(Command, "setmode") != NULL) {

#16 2015-02-22 18:25:25

ghostaz
Гость

Re: Bluetooth HC-06

При передаче через USB код работает. Да, и как вы говорите, пробовал, выводил по байтам - через bluetooth пропускает шестой символ( Не пойму никак.

#17 2015-02-22 18:41:30

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Bluetooth HC-06

не мне нравится   stream.readBytes(buffer, length)  length = 15
по логике читает 15 байт и отдает буферу, либо по таймауту  отдает что такое встречал
есть ли  возможность читать по одному байту? 
вывод в  порт в Ардуино не буфиризирован,  тут все равно, важен прием.

#18 2015-02-22 19:21:44

ghostaz
Гость

Re: Bluetooth HC-06

Сделал через read. Проблема та же. https://yadi.sk/i/IHnoUHfDeq9PA. Чувствую что аппаратная проблема.

#19 2015-02-22 22:23:29

ghostaz
Гость

Re: Bluetooth HC-06

Залил пример работы с serial вместо моего кода - ошибок нет. Получается проблема в коде - буду искать. Спасибо за помощь)

#20 2015-03-25 22:13:41

AntonGdalev
Участник
Зарегистрирован: 2015-03-25
Сообщений: 1

Re: Bluetooth HC-06

Приветствую!
Планшет Explay Hit некорректно подключается через синезуб к устройству Arduino Bluetooth модуль HC-06 через приложение для андроида.
В свою очередь телефон самсунг работает через точно такое же приложение корректно.
Вопрос: это проблемы с моим планшетом?

#21 2015-03-28 20:21:05

Shishka
Участник
Зарегистрирован: 2015-03-28
Сообщений: 1

Re: Bluetooth HC-06

Всем привет, я хочу сделать в своем авто блютуз ключ н модуле НС-5 без изпользования ардуино, но хочу сделат чтоб именно смартфон автоматический подключался к модулю а не наоборот, никак немогу найти готовое приложение с финкцией автоконнекта, вернее одно нашел "MuseHack Full" но оно автоматический подключается если розорвать соединение на небольшой промежуток времени до минуты.

Неподскажите где взять прогу которая бы при появлении модуля НС-5 в поле видимости автоматически к нему конектилать?

#22 2015-04-15 23:40:31

Тимур
Гость

Re: Bluetooth HC-06

Ребята,помогите!!!! Весь измучился) написал программу в апп инвентаре, должна выводить температуру и влажность воздуха... Все бы ничего, но при запросе данных с платы, передает сначала первый символ, а затем второй, и при повторное запросе все сначала и вместо 25 градусов выходит как то так 2 25 2. Пробовал добавлять пробел перед передачей  данных, работает лучше, но для функций программы так быть не должно... что может быть не так??? Bluetooth hc 06

#23 2015-04-16 09:26:46

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Bluetooth HC-06

а без модуля хорошо работает? вместо модуля юарт переходник поставьте

в строку с температурой добавить \r\n это раз
контроль потока отключить в модуле

#24 2015-04-16 12:38:21

Тимур
Гость

Re: Bluetooth HC-06

без модуля все работает, в мониторе порта все четко...Модуль хорошо принимает данные, как однозначные так и двузначные, но как только дело доходит до передачи, он отправляет сначала первый символ, затем после повторного запроса второй и снова первый и выглядит это как то так:
> t
< 2
> t
< 5 2
и так далее, вместо 25, а по поводу кода..., как то так( датчик, терморезистор на 10 кОм):

int sensePin = 2;
int dim;

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

void loop(){

int val = analogRead(sensePin);
val= constrain(val, 250, 555);
int temp = map(val, 250 , 555, 1 , 30);

if (Serial.available())
{
dim = Serial.read();

if (dim == 't')
{
 
  Serial.print(temp);

}
}


Заменить строку  Serial.print(temp);  на   Serial.print( \r\n temp); ???

#25 2015-04-16 12:54:07

NoName
Customer
Из Київ
Зарегистрирован: 2014-07-08
Сообщений: 1,446

Re: Bluetooth HC-06

Serial.println(temp);
or
{
Serial.print(temp);
Serial.print("\r\n");
}

Редактировался NoName (2015-04-16 12:54:47)

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела