Переделка RC-машинки в смарт-машинку при помощи ардуино

Во многих проектах на ардуино предлагается сделать то же самое, что продается в магазинах, но с гораздо большими трудовыми и материальными затратами. Сегодняшний проект не такой, смарт-машинки продаются в магазинах, но стоят в среднем раз в 5 дороже, чем RC-машинки. Поэтому я решил поделиться, как можно переделать практически любую RC-машинку в модную нынче машинку с приставкой «смарт» при помощи ардуино. Вот демо видео того, что получилось в итоге:

Итак, переделывать я решил стандартную RC-машинку, купленную в магазине игрушек примерно за 500 рублей.
8faa56777a464bdeb7cdbfbacae1df14.jpg
Переделку можно осуществить двумя основными способами:
1. Подключить ардуино к пульту ДУ от машинки
2. «Вживить» ардуино внутрь самой машинки
Я решил попробовать оба способа, но сегодня расскажу только про первый, поскольку он несколько проще, а начинать лучше с простого.
Чтобы подключиться к пульту ДУ, его нужно сначала разобрать и удалить те 4 кнопки, которые отвечают за движения вперед-назад и повороты вправо-влево. Можно их отпаять, а можно просто сломать корпус кнопок, оставив только контакты.
b0aeff48017345098eb991d0a9e16076.jpg
Вместо четырех кнопок подключаем четырехканальный блок реле по схеме:
d05e702d6f204633b4c56fb2aa662100.jpg
Блок реле подключаем к ардуино, а она уже будет получать сигналы со смартфона посредством блютуз модуля. Скетч для ардуино

тут
unsigned long incomingByte;
int LED2 = 6;
int LED3 = 7;
int LED4 = 8;
int LED5 = 9;

void setup () {
Serial.begin (9600);
Serial.setTimeout (4);
pinMode (LED2, OUTPUT);
pinMode (LED3, OUTPUT);
pinMode (LED4, OUTPUT);
pinMode (LED5, OUTPUT);
}
void loop () {
if (Serial.available () > 0) {
incomingByte = Serial.parseInt ();
if (incomingByte == 2) {digitalWrite (LED2, LOW); }
if (incomingByte == 3) {digitalWrite (LED3, LOW); digitalWrite (LED2, LOW); }
if (incomingByte == 4) {digitalWrite (LED4, LOW); }
if (incomingByte == 5) {digitalWrite (LED5, LOW); digitalWrite (LED2, LOW);}
if (incomingByte == 18) {digitalWrite (LED2, HIGH); }
if (incomingByte == 18) {digitalWrite (LED3, HIGH); }
if (incomingByte == 18) {digitalWrite (LED4, HIGH); }
if (incomingByte == 18) {digitalWrite (LED5, HIGH); }
}
}


Теперь нужно сделать простенькое приложение для управления всем этим на подобии этого:
4f519940c6d54a58a043e6aba14a3dba.jpg
Приложение я сделал в среде визуальной разработки андроид приложений App Inventor 2.
Выглядит оно приложение так:
9f1a10a313d94b4fb54dca3f4055813a.jpg
Логика у приложения очень простая: при касании пальцем кнопки оно отправляет сигнал на ардуино замкнуть соответствующее реле. При отпускании кнопки отсылается команда разомкнуть все реле. Скачать приложение можно тут, исходник тут, но если у кого-то есть полчаса-час лишнего времени, то можно сделать такое приложение «с нуля». На эту тему я снял отдельное видео, где подробно рассказываю что и как делать для тех, кто сталкивается с этой средой разработки в первый раз.

Ну и в конце фото того, как эта схема управления выглядит. Упаковывать все это в коробку не стал, поскольку в планах есть внедрение ардуино непосредственно в корпус этой машинки.
ef5b538b7d6c45f59b8f4c29f358dcbf.jpg

© Habrahabr.ru