roboforum.ru

Технический форум по робототехнике.


Bluetooth HC-05 для Arduino

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Bluetooth HC-05 для Arduino

Сообщение Kitam1n » 06 апр 2013, 16:56

Всем привет!
Помогите разобраться что я делаю не так? Не получается добиться совместной работы HC-05 и Arduino Uno.

Получил Bluetooth HC-05 для Arduino : http://www.ebay.com/itm/310540196588?ss ... 1497.l2649
Залил в Arduino Uno простой скетч включающий и выключающий 13-й светодиод по командам "1" и "0". Проверил скетч через терминал обычным подключением по USB, все работает.
Код: Выделить всёРазвернуть
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);
 
  Serial.begin(9600);
  Serial.println("Press 1 to LED ON or 0 to LED OFF...");
}

void loop()

  if (Serial.available())
  {
    char command = Serial.read();
   
    switch (command)
    {
      case '1': led_state = LED_ON; Serial.println("LED_ON"); break;
      case '0': led_state = LED_OFF; Serial.println("LED_OFF"); break;
      case '*': led_state = LED_BLINK; Serial.println("BLINK"); break;
     
      default:
      {
        for (int i = 0; i < 5; ++i)
        {
          digitalWrite(LED_PIN, HIGH);
          delay(50);
          digitalWrite(LED_PIN, LOW);
          delay(50);
        }
      }
    }
  }
 
  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));
      }
    }
  }
}


Отключил USB и подключил Bluetooth, в ПК появился COM, подключаюсь к нему терминалом, в терминал приходит "Press 1 to LED ON or 0 to LED OFF..." как и положено при старте.
Но шлю команды туда - ноль реакции.
Т.е. в целом свисток работает, комп его находит, подключается, Терминал видит что шлет Arduino, но туда ни чего не доходит, или доходит но он это не выводит.
Что я делаю не так? Или свисток паленый, может недопай, как разобраться?
Пробовал подключать свисток к USB-TTL переходнику, та же картина, свисток шлет нормально, принимать не принимает. :cry:

Добавлено спустя 2 минуты 30 секунд:
И еще, зачем нужен пин "KEY"?
Вложения
$T2eC16R,!ykE9s7t)btTBQz-uQm4ow~~60_35.JPG
$T2eC16R,!ykE9s7t)btTBQz-uQm4ow~~60_35.JPG (36.39 КиБ) Просмотров: 11696
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

Re: Bluetooth HC-05 для Arduino

Сообщение elmot » 06 апр 2013, 17:15

key нужен все сбрасывать. соврал. У 05 - это переход в командный режим.
позвони тестером RX. тут у кого-то уже встречался непропай на таком модуле.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Bluetooth HC-05 для Arduino

Сообщение Kitam1n » 06 апр 2013, 20:11

Удалось наладить с переходником USB-UART. Шлет туда и обратно. Т.е. в целом он работает.
Подключаю к Arduino UNO, от Arduino принимает, а отправлять в нее не хочет. Ну че за фигня?? :shock:

Ладно, залил в Arduino скетч добавляющий дополнительно 2 UART (получился типа хаб).
Код: Выделить всёРазвернуть
#include <SoftwareSerial.h>

SoftwareSerial myserial(10, 11);
SoftwareSerial myserial_2(5, 6);


void setup()

  Serial.begin(9600);
  myserial.begin(9600);
  myserial_2.begin(9600);
 
  Serial.println("Arduino");
  myserial.println("Bluetooth");
  myserial_2.println("USB-UART"); 
}

void loop()
{
        if(myserial.available() > 0) {
                byte b = myserial.read();
                Serial.write(b);
                myserial_2.write(b);             
        }
       
        if(myserial_2.available() > 0) {
                byte c = myserial_2.read();
                Serial.write(c);
                myserial.write(c);             
        }       
       
        if(Serial.available() > 0) {
                byte c = Serial.read();
                myserial.write(c);             
                myserial_2.write(c);           
        }         
}

Подключил к Arduino этот Bluetooth и переходник USB-UART.
Итого в компе получилось 3 COM порта:
1) родной USB от Arduino
2) дополнительный переходник USB-UART
3) Bluetooth HC-05

Открыл терминалы для каждого порта,
- шлю через родной порт Arduino - дублирует в 2 других порта
- шлю через переходник USB-UART - тоже дублирует
- шлю через Bluetooth - везде молчит.
Че за хрень? Как еще можно проверить? Пробовал менять девайсы местами, безрезультатно. :cry:
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

Re: Bluetooth HC-05 для Arduino

Сообщение Madf » 07 апр 2013, 11:50

закарачиваем TX и RX на БТ и подаем питание на него
далее конектимся к нему и через терминал кидаем любые данные, они должны сразу дублироваться в том же терминале (как эхо)
если не работает, есть две причины: 1 - фиговый и не рабочий драйвер БТ на управлении (кстати такое часто бывает (ведь уарт и БТ - разные вещи)), 2 - не работает сам БТ модуль (но в этом я сильно сомневаюсь).
на счет КЕЯ, лучше использовать РЕСЕТ, т.к. всё равно выхода из режима команд происходит по сбросу (да и совместимость сомнительная с другими модулями, китайцы же кривые, могут, что угодно напутать (зашить другую прошивку или попутать руками)), а зачем лишние провода, когда проще сбросить модуль, а потом его быстро конфигурировать до конекта к устройству + режим спячки будет (для экономии, если надо)
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Bluetooth HC-05 для Arduino

Сообщение Kitam1n » 07 апр 2013, 20:39

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

Спасибо за помощь, наверно мне просто попалась не удачная плата...
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

Re: Bluetooth HC-05 для Arduino

Сообщение Madf » 08 апр 2013, 11:00

если не кратные кварцы МК к скорости порта и данных большой объём, то скорее всего это не глюк, а возможно накапливается ошибка
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Bluetooth HC-05 для Arduino

Сообщение AndreW82 » 08 апр 2013, 20:06

мой тоже глючил, пока я его не сбросил до заводских настроек, а потом настроил как надо...
в командном режиме введи AT+ORGL
Аватара пользователя
AndreW82
 
Сообщения: 170
Зарегистрирован: 14 ноя 2012, 21:30
Откуда: Моск. обл.

Re: Bluetooth HC-05 для Arduino

Сообщение Kitam1n » 09 апр 2013, 13:36

1) Я его не сброшу так что потом мозгов не хватит его настроить как положено?
2) Как добиться принятия AT-команд? подать еденицу на KEY?
3) Как мне понять хватит ли скорости? У меня сейчас 8-ми разрядный джойстик управляющий танковой тележкой посредством передачи 5-ти управляющих байтов. Джойстиком могу управлять как захочу, могу плавно трогаться, менять направление и т.д... Wi-Fi справляется с лихвой.
Не загнется ли от такой наглости BT?
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

Re: Bluetooth HC-05 для Arduino

Сообщение elmot » 09 апр 2013, 15:18

1) Сие врядли
2) Что-то в этом роде. RTFM
3)не загнется. На скорости 11500 оно передает килобайт в сек(примерно). 200 пакетов по 5 байт в секунду. Это гораздо больше, чем механика сможет отработать.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Bluetooth HC-05 для Arduino

Сообщение AndreW82 » 09 апр 2013, 16:08

Kitam1n писал(а):1) Я его не сброшу так что потом мозгов не хватит его настроить как положено?
2) Как добиться принятия AT-команд? подать еденицу на KEY?
3) Как мне понять хватит ли скорости? У меня сейчас 8-ми разрядный джойстик управляющий танковой тележкой посредством передачи 5-ти управляющих байтов. Джойстиком могу управлять как захочу, могу плавно трогаться, менять направление и т.д... Wi-Fi справляется с лихвой.
Не загнется ли от такой наглости BT?

1) там всё просто настраивается, я после сброса ввёл всего несколько команд: задал новое имя модулю, сменил пин-код для паринга, и выставил нужную скорость UART.
вот здесь самые основные команды: http://we.easyelectronics.ru/part/rabot ... -hc05.html
2) если этот пин подключен к PIO11 модуля, да - нужна лог."1" . (прозвони этот пин до PIO11, вот распиновка модуля http://robocraft.ru/blog/electronics/587.html)
3) хватит за глаза.
Аватара пользователя
AndreW82
 
Сообщения: 170
Зарегистрирован: 14 ноя 2012, 21:30
Откуда: Моск. обл.

Re: Bluetooth HC-05 для Arduino

Сообщение Madf » 09 апр 2013, 16:26

AndreW82 писал(а):вот здесь самые основные команды: http://we.easyelectronics.ru/part/rabot ... -hc05.html

Сколько покупал у китацев этот модуль, никогда таких команд не было. Это описание какого-то правильного (лицензионного), обычно китаёсы шьют облегченную прошивку с обкоцанными командами где нет "+" и даже переноса строки (0D,0A), а вместо них выдерживаешь паузу в секунду.
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Bluetooth HC-05 для Arduino

Сообщение AndreW82 » 09 апр 2013, 16:48

Madf писал(а):Сколько покупал у китацев этот модуль, никогда таких команд не было. Это описание какого-то правильного (лицензионного), обычно китаёсы шьют облегченную прошивку с обкоцанными командами где нет "+" и даже переноса строки (0D,0A), а вместо них выдерживаешь паузу в секунду.
Хммм... у меня с прошивкой всё в порядке, т.е. команды именно такие, как в статье (AT+"КОМАНДА" + CRLF), брал модуль здесь http://www.ebay.com/itm/1pcs-Wireless-B ... 3a74b3519b

Kitam1n писал(а):Всем привет!
Помогите разобраться что я делаю не так? Не получается добиться совместной работы HC-05 и Arduino Uno...
Код: Выделить всёРазвернуть
Serial.begin(9600);
...
Похоже у тебя проблема из-за неправильной скорости порта - UART модуля, по-умолчанию, открыт на 38400.
Аватара пользователя
AndreW82
 
Сообщения: 170
Зарегистрирован: 14 ноя 2012, 21:30
Откуда: Моск. обл.

Re: Bluetooth HC-05 для Arduino

Сообщение elmot » 09 апр 2013, 17:06

Madf писал(а):
AndreW82 писал(а):вот здесь самые основные команды: http://we.easyelectronics.ru/part/rabot ... -hc05.html

Сколько покупал у китацев этот модуль, никогда таких команд не было. Это описание какого-то правильного (лицензионного), обычно китаёсы шьют облегченную прошивку с обкоцанными командами где нет "+" и даже переноса строки (0D,0A), а вместо них выдерживаешь паузу в секунду.

Значит ты покупал HC-06. Он такой и есть. HC-05 - это та железка, но с другой(более умственной) прошивкой. У меня есть типо оба.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Bluetooth HC-05 для Arduino

Сообщение Madf » 09 апр 2013, 17:23

elmot писал(а):Значит ты покупал HC-06. Он такой и есть. HC-05 - это та железка, но с другой(более умственной) прошивкой. У меня есть типо оба.

А я думал, что возможно это HC-04...я брал правда на Диле. Там разница была только в возможности режима Мастер (не только слэйв).
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Bluetooth HC-05 для Arduino

Сообщение elmot » 09 апр 2013, 17:32

HC-04 и HC-06 - одно и то же. Один типа industrial, второй - customer(ЕМНИП). Режим только slave
Вот 03(?)/05 - они с мастером и команд куды как поболе.
Кстати, распиновка key и светодиодов у 06 и 05 разная!
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6