Проста Bluetooth машинка на Arduino
Широке поширення і дешевизна платформи Arduino і різних робоплатформ дозволило любителям створювати радіокеровані машинки на будь-який смак. А широке поширення смартфонів дозволило використовувати їх як контролерів цих машинок. Головною проблемою для багатьох любителів Arduino є відсутність досвіду в програмуванні під Android. Сьогодні я розповім, як легко вирішити цю проблему, використовуючи середовище візуальної розробки android-додатків App Inventor 2.
Будівництво будь-якої машинки треба починати з «заліза», тому коротко опишу, що використовував для своєї машинки:
arduino nano
bluetooth module HC-05
Z-Mini Motor Sensor Shield L293D
2WD Motor Chassis
Конфігурація «заліза» не відіграє великої ролі в цьому проекті, тому шасі, шилд і саму ардуїно можна замінити на будь-які аналоги.
Тепер перейдемо до створення програми для Android. App Inventor - середовище візуальної розробки android-додатків, працює з браузера. Заходимо на сайт, дозволяємо доступ до свого акаунту в Google, натискаємо кнопку «create» і створюємо новий проект. У новому проекті методом «Drag and Drop» створюємо 4 кнопки для вибору напрямку руху і одну для підключення до нашого bluetooth модуля. Приблизно так:
Далі натискаємо на кнопку «Blocks» у правому верхньому куті і все тим же методом перетягування елементів створюємо логіку роботи нашого android-програми приблизно ось так:
Тепер залишається скомпілювати додаток, натиснувши на кнопку «Build».
З написанням скетчу я думаю у любителів ардуіно проблем не виникне, скажу лише, що можна взяти вибрати з готових скетчів, де керування машинкою здійснюється з комп'ютера по sireal порту. Я використав цей
скетч
int val;
int IN1 = 4;
int IN2 = 7;
int EN1 = 6;
int EN2 = 5;
void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
//Задаємо рух вперед
if (val = «W» )//Натисніть W
{
//Висновки налаштовано за допомогою Motor Shield'a
//Мотори крутяться вперед
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
}
//Задаємо рух назад
if ( val == 'S')
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
//Задаємо рух праворуч
if ( val == 'D')
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
}
//Задаємо рух ліворуч
if ( val == 'A')
{
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
}
//Стоп режим
//Відпускання клавіш до порту «T»
if (val ='T')//Натисніть «T»
{
//Висновки ENABLE притягнуті до мінуса, мотори не працюють
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
}
}
}
Отже, ось така у мене вийшла машинка:
Ті, кому подобається дизайн у додатках, можуть трохи поміняти. Детально описувати як це робити не буду, там не складно самому розібратися. Скажу лише, що для цього в основному потрібно використовувати .png файли, замість .jpeg, які не підтримують прозорий фон. Наприклад, зробити такий дизайн за півгодини або годину зможе будь-яка непідготовлена людина:
P.S. Для тих, хто не стикався з розробкою додатків в App Inventor 2, я зробив більш докладний гайд з розробки цього додатку (для перегляду потрібно перейти на ютуб).
https://www.youtube.com/watch?v=y2jAJ05s2EQ
P.P.S. Збірка з понад 100 навчальних матеріалів по ардуїно для початківців і профі тут.
Онлайн курс по ардуїно на гіктаймс тут.
UPD 1.02.2017: виклав додаток на play market.
Аналогічні проекти з іншими шилдами тут.