Куплен вот такой модуль.
Судя по описанию он предназначен для работы в режиме Slave, т.е. не может быть инициатором соединения что в общем то мне и не требуется.
Подключаем к ардуино следующим образом -
VCC к +3.3V (можно и к +5V)
GND к GND
Tx к 9 конт
Rx к 8 конт
После подачи питания на модуле замигает светодиод - модуль в режиме ожидания и может принимать AT-команды.
Вот набор этих команд:
AT - ответ OK - проверка связи по посл. порту
AT+BAUDx - ответ OKxxxxxxxx - изменение скорости
где BAUD может принимать следующие значения:
1 - 1200bps
2 - 2400bps
3 - 4800bps
4 - 9600bps
5 - 19200bps
6 - 38400bps
7 - 57600bps
8 - 115200bps
9 - 230400bps
A - 460800bps
B - 921600bps
C - 1382400bps
AT+NAMExxxxxx ответ OKsetname - изменение имени устройства
AT+PINxxxx ответ OKsetPIN - изменение пароля (PIN кода)
Для проверки и конфигурирования заливаем в ардуину первый скетч из темы USB UART мост из Arduino. Не закрывая IDE, откроем терминал, установим в нем скорость 9600 (установленную в модуле по умолчанию), шлем команду AT и получаем радостное ОК.
Теперь пробуем изменить скорость на 57600 командой AT+BAUD7, получаем OK57600. Изменяем скорость в терминале и еще раз проверяем AT. Заодно поменяем и название - AT+NAMEBTdev
Теперь переходим к этапу установления соединения с компом (у меня стоит XP).
Идем в Панель управления - Устройства Bluetooth. Выбираем Добавить, после поиска устройств кликаем на наш BTdev, вводим ключ доступа "1234" (или тот что вы установите на модуле) и Далее.
Таким образом будет создана пара сопряженных устройств - наш модуль и комп. Теперь в свойствах подключенного устройства смотрим номер виртуального порта (если не стоит галочка на "Последовательный порт...", ее нужно поставить).
Далее загружаем любую терминальную программу, устанавливаем соответствующий порт и скорость. Если все верно, то на модуле светодиод загорится постоянно - соединение установлено, можно обмениваться данными из терминальных программ.
Для демонстрации работы прилагаю простой скетч, управляющий светодиодом на ардуино. Посылка 1 включает светодиод, 0 - выключает, * - мигающий режим.
PHP код:
#include <NewSoftSerial.h>
NewSoftSerial nss(9, 8); // (RX, TX)
#define LED_PIN 13
byte blink_on = 0;
void setup()
{
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
nss.begin(57600);
Serial.begin(115200);
}
void loop()
{
if (nss.available())
{
char command = nss.read();
switch (command)
{
case '1':
digitalWrite(LED_PIN, HIGH);
Serial.print("LED_ON");
nss.print("LED_ON");
blink_on = 0;
break;
case '0':
digitalWrite(LED_PIN, LOW);
Serial.print("LED_OFF");
nss.print("LED_OFF");
blink_on = 0;
break;
case '*':
blink_on = 1;
Serial.print("LED_BLINK");
nss.print("LED_BLINK");break;
}
}
if (blink_on == 1) {
static unsigned long start_millis = 0;
if (millis() - start_millis >= 300) {
start_millis = millis();
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
}
}
}
Часть2. Android...
Раз заработала с Windows, то почему бы не попробовать с Android. У меня есть два устройства на этой ОС - телефон HTC Inspire и китайский 8-ми дюймовый планшет.
Начал с телефона. Идем в Настройки - Беспроводные сети - Настройки Bluetooth,включаем Bluetooth, Поиск устройства, находим, вводим ключ доступа - пара создается. Все вроде нормально. Далее в маркете находим любую терминальную программу подходит даже Bluetooth Chat, запускаю, пробуем соединится с парным устройством - фиг вам (((. После продолжительных танцев с бубном, копания инета пробую установить более свежий пакет Радио. И вот оно!!! Есть коннект и полноценная обмен.
Теперь очередь планшета. Так вот эта "балалайка" не хочет даже создавать пару, т.е. устройство то обнаруживается (правда через раз), но до пароля дело не доходит... Что с этим делать пока не знаю, может кто подскажет?