Инструменты пользователя

Инструменты сайта


ehlektronika:du:bluetooth_pdu

Bluetooth ПДУ

Контроллер Трекдуино имеет встроенный Bluetooth-модуль, который позволяет осуществлять программирование и обмен данными с контроллером по беспроводному протоколу Bluetooth. Самая частая задача - реализация беспроводного «пульта управления» с телефона или планшета. Для этой задачи в проекте Роботрек предусмотрно готовое решение:

  • Приложение "Роботрек ПДУ" для смартфонов и планшетов на ОС Anrdroid.
  • Библиотека для ПО Роботрек, автоматически отслеживающяя принимаемые с мобильного устройства данные и меняющая глобальные переменные (см. Программирование)

Программирование

«Общение» с библиотекой, обрабатывающей данные с мобильного устройства, осуществляется через общие переменные:

bluetooth_X, bluetooth_Y, bluetooth_Z, bluetooth_W, bluetooth_aX, bluetooth_aY, bluetooth_aZ - переменные типа integer, в которых хранятся текущие показания осей аналоговых джойстиков ПДУ (значения от -100 до 100)

bluetooth_F1, bluetooth_F2, bluetooth_F3, bluetooth_F4, bluetooth_F5, bluetooth_F6 - переменные типа boolean (1 или 0), в которых хранится состояние кнопок F1-F6 (1 - нажата, 0 - отпущена)

При работе в текстовом режиме эти переменные необходимо «подцепить» из библиотеки с помощью спецификатора extern. Помимо этого в блоке Setup необходимо выполнить команду BTinit();, после выполнения которой переменные начнут обновляться автоматически в фоновом процессе. Таким образом, любая программа, использующая Bluetoth ПДУ, должна иметь следующую структуру:

extern int bluetooth_X, bluetooth_Y, bluetooth_Z, bluetooth_W, bluetooth_aX, bluetooth_aY,bluetooth_aZ;
extern bool bluetooth_F1, bluetooth_F2, bluetooth_F3, bluetooth_F4, bluetooth_F5, bluetooth_F6;
 
void setup()
{
  BTinit();
  //другие команды
}
 
void loop()
{
  // ваш основной код
}
 

Так как USB-Serial конвертер и Bluetooth-модуль общаются с основным микроконтроллером через один и тот же интерфейс (UART0), работа с Bluetooth ПДУ невозможна одновременно с USB. Даже просто при подключении питания от USB линии передачи информации UART0 переключаться с Bluetooth-модуля на USB-Serial конвертер. Таким образом, дистанционное управление контроллером через Bluetooth возможно только при питании контроллера от батареек или внешнего питания через клеммный разъем.

При работе в визуальной среде этот код генерируется автоматически при использовании любого из блоков, расположенных в группе блоков «Bluetooth ПДУ»:

Блок и генерируемая им функция Описание





bluetooth_Xbluetooth_Z
Обращение к переменным, в которых хранятся текущие состояния аналоговых джойстиков (от -100 до 100)




bluetooth_aXbluetooth_aZ
Обращение к переменным, в которых хранятся текущие показания акселерометра (проекция вектора силы тяжести на каждую из осей) (от -100 до 100)


.
.
.


bluetooth_F1bluetooth_F6
Обращение к переменным, в которых хранятся текущие состояния кнопок F1-F6 (1 или 0)

Пример использования

Управление двумоторной тележкой с помощью двух джойстиков - вертикальная ось левого джойстика (Y) напрямую управляет скоростью левого двигателя, вертикальная ось правого джойстика (Y) напрямую управляет скоростью правого двигателя.

Состояние кнопки-переключателя F4 управляет светодиодом («фарами»), а нажатие на F1 включает на 1 секунду зуммер.

extern int bluetooth_X, bluetooth_Y, bluetooth_Z, bluetooth_W, bluetooth_aX, bluetooth_aY,bluetooth_aZ;
extern bool bluetooth_F1, bluetooth_F2, bluetooth_F3, bluetooth_F4, bluetooth_F5, bluetooth_F6;
 
void setup()
{
  BTinit();
  pinMode( OUT1 , OUTPUT );
}
 
void loop()
{
  startMotor(1, bluetooth_Y);
  startMotor(2, bluetooth_W);
  led ( OUT1 , bluetooth_F4 );
  if (bluetooth_F1)
  {
    tone(OUT2, 440, 1000);
  }
}
ehlektronika/du/bluetooth_pdu.txt · Последние изменения: 2017/06/05 16:55 (внешнее изменение)