Выпало немного свободного времени и я попробовал реализовать связь по представленной выше схеме.
Библиотека SoftwareSerial позволяет реализовать программный приемопередатчик UART на любых выводах контроллера в дополнение к существующему аппаратному UART, который использует пины D0 (RX) и D1(TX).
Подробное описание библиотеки на сайте Arduino -
SoftwareSerial Library.
В примере использовалось следующее железо:
- Arduino UNO R2
- Arduino
Wireless Proto Shield
- Модуль
Bluetooth Bee
Связь тестировалась с помощью терминала Termite, который можно скачать на сайте разработчиков -
http://www.compuphase.com.
Припаиваться к модулю BluetoothBee (BB) мне было влом, поэтому я использовал плату Wireless Proto Shield (WPS), но не устанавливал её на ардуину, а пробросил соединения между пинами (D0, D1) на WPS и D2, D3 на ардуине. Вот что получилось:
- bluetooth-bee-4a.jpg (152.82 КБ) 30921 просмотр
Перед использованием потребовалось настроить BB в AT-режиме на скорость 9600. Для этого я использовал плату Arduino как USB-Serial преобразователь. Переключатель на модуле BB должен быть в положении АТ. Команда, которая меняет настройки скорости модуля:
AT+UART=9600,0,0
Проверить актуальные настройки можно командой:
AT+UART?
После подключения к Bluetooth Bee в диспетчере устройств появляется еще один COM-порт (СОМ3 на картинке) в дополнение к COM-порту Arduino (COM17 на рисунке).
- cap-06a.png (7.34 КБ) 30921 просмотр
Программа для Arduino, которая пересылает символы между UART и SoftwareSerial:
Код: Выделить всё
/*
Схема:
* RX - digital pin 2 (connect to TX of other device)
* TX - digital pin 3 (connect to RX of other device)
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
void setup()
{
// Инициализируем аппаратный UART:
Serial.begin(57600);
// Установим скорость для SoftwareSerial UART:
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
Теперь запускаем два терминала. Один на COM3, другой на COM17. Светящийся индикатор LINK на модуле BB хороший признак наличия коннекта. Для проверки шлем символы в обе стороны. Что, собственно, и требовалось получить:
- cap-04.png (25.85 КБ) 30921 просмотр
Если есть вопросы, пишите.