Bluetooth иль не Bluetooth, вот в чем вопрос...

chihpyh
Offline
Зарегистрирован: 12.02.2015

Здравствуйте. Извиняюсь за интригу в теме, на самом деле все банально. Пытаюсь подключить модуль блютуз HC-06 к MEGA 2560. Вроде все просто - питание, земля, TX, RX. И все подключилось и даже телефон видит этот модуль и даже подключается к нему. А вот когда начинаю писать скетч, то такое впечатление, что нет тут никаких блютузов.

Простейшая конструкция:

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

void loop()
{
   Serial.println("1");
   delay(100);
   if (Serial.available())
   {
        Serial.println("2");
   }

}

не срабатывает. Т.е. в монитор порта все время валятся символы "1" и ни разу не проходит символа "2". Т.е. не считает ардуино, что Serial у него Available. Пробовал на питание подавать и 3.3 и 5 вольт. Пробовал RX-TX местами менять - аналогично. Провода прозвонил - рабочие. Это значит, что модуль бракованый, несмотря на то, что телефон его и видит и к нему подключается? Или бывают еще какие-то подводные камни?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

К какому из последовательных портов подключен модуль?

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

chihpyh
Offline
Зарегистрирован: 12.02.2015

Хм... Не очень понял вопрос... Модуль подсоединен к ардуино. TX к TX, RX к RX (пробовал и наоборот). Арудино присоединена к компу через USB-шный шнур. Соответственно определяется как COM9. Подозреваю что именно его монитор порта и просматривает. Т.е. вы намекаете на то, что одновременно обращаться к блютузу и использовать монитор порта несколько... неправильно?

Впрочем, я ж не сразу в порт полез. Я сперва пытался на блютуз некие данные с телефона слать, которые он не отрабатывал. Получается с помощью монитора порта обмен данными отследить нельзя?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

...отредактировано...

Попробуйте добавить задержку после Serial.println("2");

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Гыыы. Угу, задержку девушке добавь своей... будешь занят на следующие лет 20.
Serial.available сработает только если из монитора послать что нибудь.
А как можно отследить что блютус не отрабатывает если он никуда не подключен?
Получается что у мега2560 несколько портов. И первый из них занят, если подключен компьютер.

chihpyh
Offline
Зарегистрирован: 12.02.2015

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

P.S. Да, действительно - ничем не помогло.

chihpyh
Offline
Зарегистрирован: 12.02.2015

Puhlyaviy пишет:
Serial.available сработает только если из монитора послать что нибудь.

Ай маладца! Точно, работает, если послать... Получается у меня с телефона данные как-то криво поступают. Буду экспериментировать.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

chihpyh пишет:

Puhlyaviy пишет:
Serial.available сработает только если из монитора послать что нибудь.

Ай маладца! Точно, работает, если послать... Получается у меня с телефона данные как-то криво поступают. Буду экспериментировать.


Если на один uart повесить 2 устройства, то ни одно работать не будет нормально.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

И
TXD>>>>RXD

RXD>>>>TXD

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

chihpyh, вы меня пугаете.
Написал-же в чем у вас проблема, так вы пытаетесь с бубном танцевать...

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

void loop(){
int data=Serial1.read();

if (data !=-1){  
   Serial.println(data);
}
 
 
}    

Подключите свой модуль на пины 18, 19 Меги и наблюдайте, наздоровье, что в него приходит по монитору порта.