DIY платформа для танка — Управление по Bluetooth + движения по линии

DIY платформа для танка на Arduino —  Управление по Bluetooth (мобильное приложение на Android App Invertor 2) + автономный режим — движение по линии на макетах для соревнований Робофеста.

В первой части мы рассмотрим Управление по Bluetooth (мобильное приложение на Android App Invertor 2)

Платформа с шасси для танка предоставлена сервисом ЖелеZona. Но вообще, продается в Banggood и стоит всего ~15$.

Приступим к созданию движущейся платформы. В качестве контроллера будем использовать Arduino Nano. Схема соединений

Вот как получилось 

Управление танк будем осуществлять с планшета с ОС Android по Bluetooth. Нам нужна простая и понятная система создания кода для Android, наподобие системы Sctratch для Arduino, Будем использовать онлайн  редактор для визуального программирования для Android App Invertor 2. Страница проекта – http://ai2.appinventor.mit.edu.

После авторизации (можно использовать профиль google) или регистрации попадаем в свой профиль программы, где можем создать новый проект.

Сначала в панети Design создаем интерфейс нашего приложения, перетаскивая на экран необходимые компоненнты. Кроме визуальных компонентов необходимо добавить 4 невизуальных:

  • Bluetooth client из раздела Connectivity;
  • Clock из раздела Sensors (для получения данных из Bluetooth c периодичностью, установленной в Clock);
  • Notifer из UserInterface;
  • OrientationSensor.

Для создания кода переходим в раздел Block.

Скачать данный проект можно архива прикрепленного в конце статьи — my_bluetooth_car_aia.zip

Создаем app приложение и загружаем его на телефон — my_bluetooth_car_apk.zip

Скриншоты работы приложения

Теперь скетч на Arduino

основной файл — tank_cxemnet_01.ino

// подключаем файл настроек
#include «defines.h»

// Подключаем библиотеку SoftwareSerial
#include <SoftwareSerial.h>
// Создаем последовательный порт на пинах HC05_RX, HC05_TX
SoftwareSerial HC05(HC05_RX, HC05_RX); // RX, TX
// Переменная для приема данных по Bluetooth.
char hc05_input;
// структура для сохранения настроек движения
struct MOVE {
int left1; //
int left2; //
int leftpwm; //
int right1; //
int right2; //
int rightpwm; //
int pr; // 1- ; 1- ; 1- ; 1- ;
};
MOVE MOVE1={0,0,255,0,0,255};
//текущий режим
int mode=STOP_MODE;
// скорость изменения состояния
unsigned long millis1=0;
// данные, пришедшие из последовательного порта
String inputString = «»;
// строка пришла
boolean stringComplete = false;
//*** данные из HC05
// команда
int command_serial=0;
// данные
int data_serial=0;
// flag для режима 2
boolean flag2=true;
//
int orient_speed_left=0;
int orient_speed_right=0;

// настройки
void setup() {
// запуск последовательных портов Serial и HC05
Serial.begin(9600);
HC05.begin(9600);
// резервирование 30 bytes для inputString:
inputString.reserve(50);
// инициализация и установка в начальное состояние
ini_motors();
set_motors(0,0,0,0,0,0);
// старт!!!
Serial.println(«start»);
}
// основная программа
void loop() {
// проверка прихода строки из последовательного порта
serialEventHC05();
if (stringComplete) {
Serial.println(inputString);
// парсинг строки
if(!parse_string()) {
Serial.println(«ERROR»);
}
else {
run_command();
}

// очистить строку
inputString = «»;
stringComplete = false;
}

// изменение состояния моторов
if(millis()-millis1>=MILLIS_M) {
millis1=millis();
set_motors(MOVE1.left1,MOVE1.left2,MOVE1.leftpwm,MOVE1.right1,MOVE1.right2,MOVE1.rightpwm);
}

}

В продолжении мы рассмотрим автономный режим — движение по линии на макетах для соревнований Робофеста.


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

Плата ArduinoArduino Nano 3.01

Драйвер электродвигателейL2932

Аккумулятор литиевый186502

Отсек для 2-х аккумуляторов1

Линейный регуляторLM78051

Конденсатор10мкФ 25В2

Конденсатор0.1 мкФ1
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.