Схемы

Как построить робота - Урок 7. Создание робота Arduino с управлением по Bluetooth: 14 шагов

Моя недотрога классное исполнение под гармонь

Моя недотрога классное исполнение под гармонь

Оглавление:

Anonim

Поскольку робот Arduino может выполнять основные функции, теперь мы обновили его еще одной функцией - управлением romote через Bluetooth.

Как и в других руководствах «Как построить робота», в качестве примера используется комплект робота Arduino (Pirate: 4WD Arduino Mobile Robot Kit с Bluetooth 4.0). Кроме того, нам также нужна помощь GoBLE (универсальный контроллер BLE APP), который позволяет вам подключать и управлять роботами, мобильными платформами, дронами или чем-то еще, например беспилотным летательным аппаратом (uav), с вашими мобильными устройствами через Bluetooth.

Меню уроков:

Урок 1: Введение

Урок 2. Создание базового робота Arduino

Урок 3: Создание робота Arduino для отслеживания линий

Урок 4: Создайте робота Arduino, который мог бы избежать препятствий

Урок 5: Создание робота Arduino со световыми и звуковыми эффектами

Урок 6: Создайте робота Arduino, который мог бы контролировать среду

Урок 7. Создание робота Arduino, управляемого Bluetooth

подготовка

iPhone или iPad × 1

GoBLE APP × 1

Расходные материалы:

Шаг 1:

Примечание. В настоящее время GoBLE можно использовать только на устройствах iOS, и он просит вас установить хотя бы установленную iOS 8.1.

Для пользователей iOS: загрузите GoBLE из App Store.

Шаг 2:

Загрузить код тестирования

Пожалуйста, подключите Romeo BLE к компьютеру. Тестовый код «GoBLE_Test.ino» находится в пакете программного обеспечения. Это позволяет вам проверить выходной сигнал от ваших устройств. СКАЧАТЬ ЭТО И ПРОВЕРИТЬ. Не забудьте загрузить библиотеку GoBLE перед загрузкой кода тестирования.

Шаг 3:

Тест Bluetooth

Теперь давайте начнем Bluetooth-соединение. Включите мобильный Bluetooth и откройте приложение GoBLE. Ваш экран будет выглядеть так!

Шаг 4:

Нажмите кнопку поиска Bluetooth (она выглядит как красное увеличительное стекло). Затем выберите одно из устройств Bluetooth, которое соответствует имени Romeo BLE. Нажмите UUID, и они начнут спариваться.

Шаг 5:

После подключения цвет клавиши поиска Bluetooth изменится с красного на зеленый.

Шаг 6:

В то же время загорится индикатор LINK на плате, это означает, что ваш iPhone был подключен к BLE Romeo (Arduino Robot Control Board с Bluetooth 4.0).

Шаг 7:

Теперь давайте проверим, может ли контроллер успешно принимать сигнал с вашего iPhone. Вернитесь к интерфейсу Arduino IDE и нажмите Serial Monitor в верхнем правом углу.

Шаг 8:

Появится диалог, как показано на рисунке ниже. Во-первых, скорость передачи последовательного порта должна быть установлена ​​равной 115200, как показано красным кружком ниже.

Шаг 9:

Теперь вы можете достать свой iPhone и случайным образом провести виртуальным джойстиком или нажать кнопку на экране. Если ничего другого, вы увидите соответствующее значение на последовательном мониторе. И значение джойстика на последовательном мониторе будет изменено, когда вы проведете виртуальный джойстик на экране. Вы обнаружите, что значение увеличивается при перемещении джойстика вверх или уменьшается при перемещении джойстика вниз.

Идентификатор кнопки означает, какую кнопку вы нажимаете.

Шаг 10:

Загрузить код для дистанционного управления

Если все в порядке, давайте продолжим и загрузим код для удаленного управления на плату Arduino. Это очень важный момент, о котором следует помнить!

Ваш iPhone уже был подключен к плате Romeo BLE на последнем этапе тестирования. Однако вы не можете загрузить код на плату Romeo BLE, если между вашим телефоном и платой установлен Bluetooth. Таким образом, вы должны сначала отключить соединение Bluetooth. Кроме того, вы можете загрузить код еще раз, если плата была отключена от телефона. ЭТО ОЧЕНЬ ВАЖНО!

Есть два способа прервать соединение. Одним из способов является то, что вы можете просто отключить питание Remeo BLE и затем включить его снова. Другой способ заключается в том, что просто выключите Bluetooth на вашем телефоне.

После отключения вы можете снова загрузить пример кода. Код называется GoBLE_APP.ino в пакете кода.

Шаг 11:

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

Шаг 12:

Сводка кода

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

Нет необходимости обсуждать основной код - давайте просто взглянем на часть, касающуюся управления bluethooth. Если вы хотите дистанционно управлять роботом, будут использоваться две библиотеки с именами Metro и GoBLE.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, джойстикY;

int buttonState 6;

ДжойстикX, джойстикY и buttonState 6, три переменные, определены для библиотеки GoBLE. Они используются для хранения значения состояния для оси X, оси Y и значений шести кнопок.

Карта ниже показывает расположение всех кнопок. Возможно, вы знаете значения + X, -X, + Y и –Y, если проанализировали изменение значений состояния.

X & Y - это направления движения джойстика. »+, -« показывают тренды стоимости. «+» Означает, что значение состояния увеличивается. А «-» означает, что значение состояния уменьшается.

Шаг 13:

Начальная настройка должна быть записана в функции Setup ().
Goble.begin ();

Эта строка используется для запуска настройки Bluetooth. И это нельзя пропустить, когда вы используете код Bluetooth на вашей доске.

Serial.begin (115200);

Фактически эта линия была использована на стадии тестирования. Он используется для инициирования последовательного порта. Если вы хотите прочитать значение из последовательного монитора, вы должны записать это утверждение в функцию настройки. И, также необходимо установить скорость передачи данных.

Поскольку скорость передачи данных по Bluetooth особая, необходимо установить значение 115200. Убедитесь, что скорость передачи установлена, иначе это может вызвать некоторые проблемы.

Пожалуйста, продолжайте смотреть вниз. Следующая строка - функция Goble.available ()

if (Goble.available ()) {сделать что-нибудь; }

Это означает, что следующим действием будет получение фигуры через Bluetooth.

То, что написано в скобках, будет нашим следующим действием. Сначала нам нужно проанализировать полученную цифру. Следующие два утверждения должны прочитать значение по осям X и Y.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

// Serial.print ("joystickX:");

// Serial.print (joystickX);

// Serial.print ("joystickY:");

// Serial.println (joystickX);

Угадайте, что означают четыре оператора Serial.print () выше. Это связано с серийным. Серийный номер должен распечатывать полученные данные, что удобно для отладки и оптимизации кода.

«//» означает аннотацию следующего содержания. Эти четыре предложения не будут включены при компиляции кода. А именно, никакие данные не будут отправлены в серийный номер, как только мы используем аннотацию для этих четырех операторов.

Пожалуйста, обратитесь к справочной странице веб-сайта Arudino (www.arduino.cc) для получения дополнительной информации.

buttonState SWITCH_UP = Goble.readSwitchUp ();

buttonState SWITCH_DOWN = Goble.readSwitchDown ();

buttonState SWITCH_LEFT = Goble.readSwitchLeft ();

buttonState SWITCH_RIGHT = Goble.readSwitchRight ();

buttonState SWITCH_SELECT = Goble.readSwitchSelect ();

buttonState SWITCH_START = Goble.readSwitchStart ();

Все содержимое выше используется для загрузки информации о состоянии кнопок.

Расположение кнопок выглядит следующим образом.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Шаг 14:

Нам нужно обработать все прочитанные данные, прежде чем мы начнем их использовать.

Значение, считываемое с джойстика, должно быть сопоставлено с частотой вращения колес нашего робота. Таким образом, скорость вращения колес оказывается между -255 и 255.

int SpeedX = 2 * джойстикX-256;

int SpeedY = 2 * джойстикY-256;

Serial.print («Скорость:»);

Serial.print (SpeedX);

Serial.print ("");

Serial.println (Speedy);

Также сериал распечатал бы скорость. Если в этом нет необходимости, вы можете добавить «//» в начале, чтобы удалить его.

Теперь давайте управлять роботом и заставить его двигаться.

Если (переместите джойстик вверх или (||) вниз) {робот двигается вперед или назад; }

Если (переместите джойстик вправо или (||) влево) {робот переместится вправо или влево}

Если (ось X джойстика остается в центре и (&&) ось Y джойстика остается в центре) {Робот останавливается; }

Соответствующие коды следующие:

if (SpeedX> 200 || SpeedX <-200) {LeftWheelSpeed ​​= SpeedX; RightWheelSpeed ​​= SpeedX; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed); }

иначе if (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

иначе if (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Последний код используется для управления светодиодом на плате, подключенной к PIN13.

int ledPin = 13;

Вывод 13 должен быть определен в начале кода.

pinMode (ledPin, OUTPUT);

Настройте режим вывода для светодиода, написав функцию setup (). Пожалуйста, обратитесь к инструкции для функции pinMode () на веб-сайте Arduino (www.arduino.cc).

Следующие выражения показывают состояние кнопок. После нажатия кнопки № 1 светодиод загорится. Это означает, что светодиодный контакт установлен на ВЫСОКИЙ.

if (buttonState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

После отпускания кнопки № 1 светодиод погаснет. Это означает, что светодиодный контакт установлен на НИЗКИЙ.

if (buttonState 1 == RELEASED) {digitalWrite (ledPin, LOW); }

Это все для кодирования сегодня. Разве это не весело? Итак, для вас не невозможно написать код, верно? Вы можете попробовать изменить кнопку для управления светодиодной подсветкой, изменив код. Это определенно более интересно, когда вы можете управлять им с помощью своего кода. Теперь начните веселиться с вашим роботом!