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)
Прикрепленные файлы:
- my_bluetooth_car_aia.zip (54 Кб)
- my_bluetooth_car_apk.zip (1532 Кб)
- tank_cxemnet_01.zip (6 Кб)