Bluetooth модуль HC-05 не работает с Arduino UNO (а с nano работает)

mark2qualis
Offline
Зарегистрирован: 05.09.2013

Люди добрые,

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

Подключил модуль HC-05 к Arduino UNO V3 на стандартные пины последовательной шины: 0 (RX) и 1 (TX). Не заработало. После чего стал разбираться, стал использовать SoftwareSerial ну и логи смотреть через стандартный Serial. Схема подключения такая:

Извиняюсь за модуль bluetooth - единственно что нашлось аналогичное.

Код отладки следующий...

#include <SoftwareSerial.h>  // Software Serial Port

#define baudRate 9600

/* ********** Define Arduino PINs usage ********** */

#define  TxD            12
#define  RxD            11 // SoftwareSerial PINs declaration

/* ********** End of PINs usage definition ********** */

SoftwareSerial btSerial(RxD,TxD);

// Define logging
#include <stdarg.h>

void log(char* format, ...)
{
  char line[512];
  va_list args;
  va_start(args, format);
  vsnprintf(line, sizeof(line), format, args);
  va_end(args);
  Serial.print(line);
}

void setup() {
  Serial.begin(baudRate);      // initialize serial communication at 9600 bits per second:

 /* ********** SoftwareSerial setup ********** */
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  btSerial.begin(9600); //Set bluetooth HC-05 BaudRate to default baud rate 9600
  /* ********** End of SoftwareSerial setup ********** */

  log("Begin:\n");
}

void loop() {
  char recvChar;

  if(btSerial.available()) {
    recvChar = btSerial.read();
    log("bluetooth: recv: %u\n", recvChar);
  }
  if(Serial.available()) {
    recvChar = Serial.read();
    log("bluetooth: send: %u\n", recvChar);
    btSerial.write( recvChar );
  }
}

Данные подавались через Android. И как в песне поется, "Я менял города (провода) я менял имена (пины разные пробовал)" ... "но счастья не знал (ничего не передавалось)" ((с) песня «Я в весеннем лесу»). Причем пайринг проходил без проблем, что было видно по LEDу линка.

Дома завалялась так же Arduino nano. Смеху ради попробовал потестить модуль через нее, и о чудо! - все заработало с первого раза. При чем на разных пинах пробовал (RxD:10/TxD:11;RxD:11/TxD:12; RxD:12/TxD:12) - все прекрасно работает. В остально с UNO все нормально (по USB норамльно шьется, все пины для других датчиков работают).

Что не так с UNO или модулем HC-05?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Логические уровни и рабочее напряжение HC-05: 3.3V

нужно или UNO от 3.3V питать или преобразователь делать(или купить)

ZSeregaA
ZSeregaA аватар
Offline
Зарегистрирован: 21.04.2013

У меня подобная проблема. Использую HC-06 + Arduino Mega R3 + Android планшет. Блютуз вот такой http://www.ebay.com/itm/130941272273?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Использая этот код, данные с ардуино на планшет приходят:

int cnt = 0; // счетчик

void setup() {
 Serial.begin(9600); // инициализация порта 
}

void loop() {
 cnt++; Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись
 Serial.println(cnt); // выводим значение счетчика и переводим на новую строку
 delay(1000); // ждем 1 секунду 
}

А при отправке данных с планшета (1 или 0), ардуино не реагирует:

char incomingByte; // входящие данные
 int LED = 13; // LED подключен к 12 пину

void setup() {
 Serial.begin(9600); // инициализация порта
 pinMode(LED, OUTPUT); 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!"); 
} 
} 
} 

В чем проблема?

mark2qualis
Offline
Зарегистрирован: 05.09.2013

NeiroN пишет:

Логические уровни и рабочее напряжение HC-05: 3.3V

На платке HC-05 написано Power 3.3V - 6V, логические уровни 3.3. Саму HC-05 пробовал питать как от 3.3 так и от 5. Поведение стандартное - с обоими питаниями работает с nano и не работает с UNO. Nano ведь тоже 5V на логических уровнях имеет, в чем различия в работоспособности?

 

NeiroN пишет:

нужно или UNO от 3.3V питать или преобразователь делать(или купить)

А как отлаживать при этом, без USB-то?
mark2qualis
Offline
Зарегистрирован: 05.09.2013

NeiroN пишет:

Логические уровни и рабочее напряжение HC-05: 3.3V

Я понимаю конечно, что китайцам не следует доверять, но по поводу логических уровней, часто кстати указывают что допустимо использовать 5V (например http://www.aliexpress.com/item/HC05-HC-05-master-slave-6pin-JY-MCU-anti-reverse-integrated-Bluetooth-serial-pass-through-module/1327975786.html):

Interface level 3.3V, can be directly connected the various SCM (51, AVR, PIC, ARM, MSP430, etc.), the 5V MCU also can be connected directly, without MAX232

mark2qualis
Offline
Зарегистрирован: 05.09.2013

Цитата:
А при отправке данных с планшета (1 или 0), ардуино не реагирует:

Некоторым (читая архивы данного форума), помог переход на SoftwareSerial, как указано у меня в примере. Мне к сожалению не помог. Попробуйте.

Кроме догадок, почему так, у меня ничего нету.

ZSeregaA
ZSeregaA аватар
Offline
Зарегистрирован: 21.04.2013

mark2qualis пишет:

Некоторым (читая архивы данного форума), помог переход на SoftwareSerial, как указано у меня в примере. Мне к сожалению не помог. Попробуйте.

Кроме догадок, почему так, у меня ничего нету.

Сегодня проверю и сообщу о результатах.

ZSeregaA
ZSeregaA аватар
Offline
Зарегистрирован: 21.04.2013

Проверил на примере вашего кода, ситуация не изменилась. Буду заказывать другой блютуз модуль.

mark2qualis
Offline
Зарегистрирован: 05.09.2013

Извиняюсь нашел ошибку. В картинке (или в коде по усмотрению) нужно поменять местами RxD<->TxD. RxD bluetooth модуля должен приходиться на TxD в коде, и наоборот.

Апрайсин
Апрайсин аватар
Offline
Зарегистрирован: 05.08.2013

Извеняюсь. А не могли бы вы подсказать, как с ним работать то=)
ну или ссылочку на документацию, которой пользуетесь с парой примерчиков.

а то ковыряю - ковыряю, и что-то всё не то(((

Skif90
Offline
Зарегистрирован: 20.02.2014

Здравствуйте! Помогите пожалуйста бедному студенту. У меня есть задача передать медицинские данные с прибора по каналу bluetooth на мобильное устройство, который имеет выход RS232. Каким образом можно это реализовать имея HC-05 или аналоги. Планируется передача данных на андроид. 

Очень нужна помощь) 

SteveBM
Offline
Зарегистрирован: 10.04.2014

Здравствуйте! Имея Arduino Uno R3  и модуль HC-05 установленный на буферную плату с пятью выходами сам столкнулся с подобной проблемой и решил ее следующим образом:  

1. Решение с резистивным мостом не работает. Отсюда идея необходимости согласования сигналов TX и RX по напряжению (3.3v HC-05 и 5v у Arduino Uno), т. е. CMOS и TTL. 

2. В дебрях дома была найдена микруха CD4050 (даташит найдете по поиску) которая работает как Hex non-inverting buffers.

3. Уже когда все заработало было найдено видео и проект android to arduino led в котором автор в конце ролика показывает аналогичную микруху на бреадборде и дает соответствующие комментарии: http://www.youtube.com/watch?v=USeZd9jthZM#t=625

4. Два замечания, у меня версия буферной платы HC-05 по разъемам такая же как у автора TechBitar с расположением слева-направо 1:KEY | 2:RX | 3:TX | 4:5v | 5:3.3v | 6: GND и подавать 5v на платку HC-05 не надо, и, если вы захотите использовать скетч автора, то поправьте в нем 9600 на 38400.

Удачи с экспериментами. 

 

TechBitar

   

bezzeb
Offline
Зарегистрирован: 02.11.2013

Добрый день!.

У меня аналогичная проблема как и у ZSeregaA

коннект планшета и arduino mega+hc05 ,на планшет данные идут,а наоборот нет.

на нано тоже не запустилась

в чем может быть проблема?

и еще непонятно почему работает модуль только на пинах rx0/tx0