====== Управление "Смарт РОБО" через Bluetooth (UART) ======
====== Описание ======
В этом проекте мы будем управлять нашим миниботом через смартфон с помощью Bluetooth. Для этого будет произведена установка специального приложения для работы с Bluetooth на смартфон и настроена работа с миниботом. 

===== Дополнительные модули =====
Предполагается что у Вас уже есть набор Смарт РОБО, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится на выбор один из двух Bluetooth модулей: [[https://smartelements.ru/collection/svyaz/product/bluetooth-modul-se|Bluetooth SE]] или HC-05. Мы остановимся на версии Bluetooth SE и ниже будет рассмотрен пример с его использованием. Однако, работа с модулем HC-05 аналогична и не вызовет трудностей.

^ Что нужно                                                                                                               ^  Кол-во, шт  ^
| [[https://smartelements.ru/collection/svyaz/product/bluetooth-modul-se|Bluetooth модуль SE]] |  1           |


===== Библиотеки =====
  * [[http://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE (для робота)]]


===== Порядок действий =====
==== Шаг 1. Установите библиотеки ====
Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше (в подпункте "Библиотеки"). О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий [[main:info:libs|раздел Базы Знаний]].

==== Шаг 2. Загрузите скетч на контроллер ====
В скетче мы описываем при получении каких команд с модуля наш робот должен двигаться. Например, команда "F" - означает движение вперёд. Общий список команд:
^  Команда   ^  Движение робота  ^
|    F     |  Движение вперёд  |
|    B     |  Движение назад   |
|    L     |  Движение влево   |
|    R     |  Движение вправо  |
|    S     |  Остановка        |

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

<file Arduino>
#include <robotSE.h> //подключение библиотеки для работы с платформой.


robotSE robot; //создание объекта робота

void setup()
{
  //инициализация Serial-соединения для получения команд от WiFi модуля
  Serial.begin(9600);
}


void loop()
{
  String command = Serial.readStringUntil('\n'); //чтение строки из Serial-порта
  command.trim(); //обрезать строку (убрать незначащие символы)

  if (command == "F") { //если это команда F
    robot.move_forward(); //двигаться вперед
    Serial.println("FORWARD"); //поясняющая надпись в модуль
  }
  if (command == "L") { //если это команда L
    robot.move_left(); //двигаться влево
    Serial.println("LEFT"); //поясняющая надпись в модуль
  }
  if (command == "S") { //если это команда S
    robot.move_stop(); //остановиться
    Serial.println("STOP"); //поясняющая надпись в модуль
  }
  if (command == "R") { //если это команда R
    robot.move_right(); //двигаться вправо
    Serial.println("RIGHT"); //поясняющая надпись в модуль
  }
  if (command == "B") { //если это команда B
    robot.move_back(); //двигаться назад
    Serial.println("BACK"); //поясняющая надпись в модуль
  }

}
</file>

==== Шаг 3. Подключите Bluetooth - модуль ====

<WRAP center round info 80%>
Обратите внимание, что мы подключаем модуль к контроллеру уже после того как на контроллер загружен скетч. После подключения Bluetooth модуля к выводам UART, контроллер уже не сможет ими пользоваться для связи с компьютером. И Serial порт будет занят Bluettoth модулем.
</WRAP>

Схема подключения:
^  Вывод Bluetooth SE  ^  Вывод Motor Shield  ^
|  +             |  +                   |
|  -             |  -                   |
|  TX            |  RXD                 |
|  RX            |  TXD                 |
|  SYS1          |                      |
|  SYS2          |                      |

{{  :main:upgkits:hm-10_motorshield.png  |}}
 
==== Шаг 4. Установка и настройка приложения ====
После того, как модуль подключен к контроллеру, нам нужно установить приложение для работы с блютус на смартфоне. На примере ОС Android рассмотрим процесс установки приложения.

В магазине приложений найдите приложение serial bluetooth terminal и установите его.
{{ :main:comm:install_app.jpg?nolink&400 |}}

В настройках телефона активируйте Bluetooth соединения.
{{ :main:comm:bt_activating.jpg?nolink&400 |}}

Откройте приложение Serial Bluetooth Terminal, войдите в основное меню.
{{ :main:comm:btapp_main_menu.jpg?nolink&400 |}}

Выберите раздел Devices, перейдите на вкладку Bluetooth LE и нажмите Scan.
{{ :main:comm:btapp_scan.jpg?nolink&400 |}}

После сканирования устройств, выберите нужное устройство. (Если Вы до этого не меняли его имени, то имя должно содержать фразу "BT_SE"). 
{{ :main:comm:btapp_device_select_se.jpg?nolink&400 |}}

При выборе устройства, приложение снова откроет начальную страницу (терминал) и отобразит состояние подключения.
{{ :main:comm:btapp_just_connected_se.jpg?nolink&400 |}}

Далее, в поле ввода, наберите с клавиатуры любую команду из описанных выше, и нажмите кнопку отправить. После отправки, сообщение отобразится в терминале. В терминал выведется информация о направлении движения робота. Робот начнёт двигаться в указанную сторону.
{{ :main:upgkits:commands.jpg?nolink&400 |}}
==== Шаг 5. Быстрые команды ====
В прошлом шаге мы добились того, чтобы робот двигался в сторону, которую мы указываем. Но большой минус в том, что каждый раз команду вводить долго, и робот становится менее манёвренным. 

Сейчас мы выполним настройку приложения, чтобы команды отправлялись быстро. В нижней части приложения, можно заметить семь кнопок для быстрого ввода (М1, М2, М3, М4, М5, М6, М7). На эти кнопки можно установить команду, которая будет отправляться по нажатию на кнопку, а так же изменить название кнопки. Для этого выполните долгое нажатие по кнопке М1:

{{ :main:upgkits:m1_long_pushing.jpg?nolink&400 |}}

И в открывшемся окне редактирования быстрой команды, измените значение полей **Name** (имя) на **F**, и в поле **Value** (значение) также укажите команду **F**. И нажмите "галочку" для подтверждения.

{{ :main:upgkits:m1_editing.jpg?nolink&400 |}}

Аналогично отредактируйте остальные кнопки:
^ Кнопка  ^ Значение Name  ^ Значение Value  ^
| M1      | F              | F               |  
| M2      | L              | L               |  
| M3      | S              | S               |  
| M4      | R              | R               |  
| M5      | B              | B               |  

После введённых значений, нажимая на кнопку команда отправляется сразу же на модуль и робот моментально выполняет указанные движения.
{{ :main:upgkits:commands_final.jpg?nolink&300 |}}
==== Шаг 6. Запуск ====
Управляйте роботом с помощью отправляемых команд на Bluetooth-модуль через смартфон.

