Проверка работоспособности модуля bluetooth на моей плате Arduino - PullRequest
1 голос
/ 22 февраля 2012

Я пытаюсь, чтобы моя плата Arduino UNO работала с BlueSmirf Gold (http://www.sparkfun.com/products/10268).

Я запрограммировал его, как описано в различных уроках (например, здесь: http://www.instructables.com/id/how-to-Control-arduino-by-bluetooth-from-PC-pock/)

Я установил скорость передачи 9600, как описано здесь: http://forum.sparkfun.com/viewtopic.php?p=94557

Мне удается подключиться к нему с помощью стандартного последовательного терминала Arduino, ZTerm и моего телефона (используя Amarino). В каждом случае загорается зеленый индикатор на модеме Bluetooth, поэтому пока он там не выглядит хорошо.

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

Например, у меня есть этот код (здесь он упрощен, но основная идея есть):

int out_pin = 2;

String readLine() {
  char command[100];
  int i = 0;

  if(Serial.available()){

     delay(100);
     while( Serial.available() > 0 && i< 99) {
        command[i++] = Serial.read();
     }

     command[i++]='\0';
     Serial.flush();
  }

  Serial.print("command: ");
  Serial.println(command);
  return (String) command;
}

void menu() {
  if (Serial.available() <= 0) {
    return;
  }

  String command = readLine();

  // Do thing based on the command
}

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

void loop() {
 menu();
}

По логике вещей, когда я отправляю что-то через терминал, я должен получить это обратно (что происходит при использовании последовательного порта USB). Когда я подключаюсь к плате через Bluetooth, она просто молчит.

Я также попробовал этот кусок кода:

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

 void loop() {
     Serial.println("Spam ...");
 }

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

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

Я пробовал разные вещи: - нет доступного последовательного USB (я запитал плату Arduino через USB, но с помощью сетевого адаптера. Я попробую позже с батареей 9 В, но в данный момент у меня ее нет) - не подключайте CTS-1 к RTS-0 в модеме (один учебник говорит, чтобы подключить их, а другой нет. Поэтому, как я сомневался, я попробовал оба решения).

Единственный раз, когда у меня было что-то похожее на общение, было с этой настройкой:

  • Arduino - телефон подключен через Bluetooth
  • Мониторинг Амарино был на
  • Arduino - компьютер, подключенный через USB-порт

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

Я почти уверен, что где-то сделал что-то не так (кажется, по крайней мере, это самое логичное объяснение), но мне также интересно, не может ли это быть проблемой с моделью Bluetooth (я имею в виду, даже образец учебники не работают).

Итак, вопросы:

  • есть что-то, что я пропустил / забыл сделать, чтобы помочь мне решить проблема?
  • если нет: есть ли простой способ проверить, что мой модем Bluetooth работает нормально?

Спасибо, Винсент

Ответы [ 2 ]

0 голосов
/ 25 октября 2014

Та же проблема здесь. Я попытался соединить наоборот 0 и 1, RX и TX (то есть RX к RX и TX к TX), и я получил некоторую информацию о бессмысленности, а не о чем-то вообще.

0 голосов
/ 23 февраля 2012

У меня все еще нет ответа на второй вопрос («Есть ли простой способ проверить, работает ли мой Bluetooth-модем?»), Но я наконец-то смог отправлять / получать сообщения с Bluetooth-модема.

Как я догадался (по крайней мере, насколько я понимаю), это была проблема с двумя сериалами (Bluetooth и USB) на одной плате. Чтобы решить эту проблему, я подключил BT TX-1 к цифровому выводу 5, RX-0 к цифровому 3 и использовал следующий код (на основе руководства SoftwareSerial):

#include <SoftwareSerial.h>
SoftwareSerial bluetooth(5, 3);

void setup()
{
  // Start the hardware serial port
  Serial.begin(9600);
  bluetooth.begin(9600);
}

void loop()
{
  bluetooth.listen();
  // while there is data coming in, read it
  // and send to the hardware serial port:
  while (bluetooth.available() > 0) {
    char inByte = bluetooth.read();
    Serial.write(inByte);
  }
}

Он отправляет все записи, полученные от Bluetooth, по серийному номеру по умолчанию (в моем случае USB). Я проверил с Amarino, и сообщения, отправленные с моего телефона, отображаются на серийном мониторе Arduino.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...