Сборка радиоуправляемой игрушечной машинки на основе Arduino. Как? Простая Bluetooth машинка на Arduino

На iOS - iPhone, iPod touch 12.07.2019
На iOS - iPhone, iPod touch

Основная идея проекта - создать недорогую автономную четырехколесную подвижную платформу.

В проекте используется логика на базе Arduino, недорогая радиоуправляемая машина, источник питания 9 вольт. В качестве датчиков обратной связи используется инфракрасный передатчик.

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

Необходимое оборудование и материалы

  • Arduino
  • Arduino Мотор шилд
  • Радиоуправляемая машина
  • Паяльник
  • Припой
  • Инфракрасный передатчик
  • Инфракрасный приемник
  • Батарейка 9 В с коннекторами
  • Переключатель

*Обратите внимание: если в вашей машине установлена большая плата контроллера, то это, скорее всего, чип TX2 или RX2. Если это так, то вы можете сэкономить немного денег и использовать для двигателей встроенные контроллеры. Хороший пример (на английском языке!) есть .

Разбираем машинку

Ваш первый шаг - разобрать машинку. Снимите корпус и извлеките все платы из машинки. Моторы не трогаем. В проекте нам понадобятся родные шасси, колеса и моторы.


Подготавливаем сенсоры

Подготавливаем электронику. Для начала припаяйте резистор на 100 Ом к одному из контактов на вашем ИК передатчике. Припаиваем провода к другой ноге резистора и ноге датчика. После этого припаиваем два провода к ногам вашего ИК приемника.


Устанавливаем Arduino и датчик

В корпусной части машинки надо сделать отверстия под крепеж вашего контроллера Arduino . Отверстия под крепеж зависят от габаритов подвижной платформы машинки. В данном конкретном случае плата была расположена "перпендикулярно" несущей системе. Подобное расположение удобно еще и тем, что расстояния от двигателей передней и задней подвески до пинов платы примерно одинаковое.

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



Переходим к следующему шагу.

Питание

В проекте используется одна батарейка на 9 В (крона). В данном случае ее получилось установить под несущей системой платформы на колесах. Крепим пластиковыми стяжками. В принципе, для увеличения времени автономной работы нашего автомобиля, можно установить две кроны параллельно.



Подключение к Arduino

С подключением можно разобраться и на основании фото. Но на всякий случай, ниже приведена схема подключения в текстовой форме.



ИК светодиод

Позитивный контакт - 5v

Отрицательный контакт - Ground

Позитивный контакт - Analog pin 5

Негативный контакт - Ground

Двигатель

Негативный контакт - Мотор шилд Channel A -

Двигатель для поворота

Позитивный контакт - Мотор шилд Channel B +

Негативный контакт - Мотор шилд Channel B -

Позитивный контакт - Мотор шилд Vin

Негативный контакт - Мотор шилд Gnd

Программа Arduino

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

int irsensor = A5;

int measure = 1;

int ambientir = 0;

//настройка канала A (Channel A)

pinMode(12, OUTPUT); //инициализация контакта Motor Channel A

pinMode(9, OUTPUT); //Инициализация контакта тормоза - Brake Channel A

pinMode(irsensor, INPUT);

digitalWrite(irsensor, HIGH);

Serial.begin(9600);

ambientir = ambientir + analogRead(irsensor);

measure = measure + 1;

ambientir = ambientir / 10;

distance = analogRead(irsensor);

digitalWrite(12, HIGH); //Обечпечиваем обратное направление вращения ротора на Channel A

digitalWrite(9, LOW); //Отключаем тормоз на Channel A

analogWrite(3, 100); //Вращаем ротор мотора на Channel A на половине максимальных оборотов

if(distance > ambientir - 50){

digitalWrite(12, LOW);

digitalWrite(9, LOW);

analogWrite(3, 100);

Serial.println(distance);

Приведенный выше костяк программы для Arduino можно (и даже нужно!) дорабатывать под вашу конкретную конструкцию, но общий концепт вы должны были уловить.

Результат, тестирование и дальнейшие варианты модификаций

Как видите на фото, оригинальный корпус машинки был окрашен в бежевый цвет и установлен на стойках на подвижную четырехколесную платформу.



После тестирования разработанной конструкции можно выделить следующие проблемы :

  • Ограниченный диапазон чувствительности сенсора;
  • Проблемы, связанные со скоростью машины, а именно - невозможность быстрой остановки;
  • Необходимость подстраивать датчик под разные условия освещения;
  • Ну и конечно же, дешевый китайский пластик никоим образом не придает автономной машинке на Arduino хорошей жесткости и надежности конструкции.

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

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

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

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

Немного об уровне, авторе и предостережения

Я, автор, пацан 16-17 лет с подмосковной деревни, специализируюсь на написании android-приложений (а там сложнее что-то сжечь), поэтому ответственность за оптимальный подход к решению задач с себя снимаю.

Задача

Задача легчайшая – заставить ездить машинку, управляемую Arduino, а пульт заменить андроидом. Но в большинстве моментов пришлось изобретать колесо, потому что в интернетах подходящего решения найдено не было.

Понадобится

  1. Arduino
  2. Motor Shield (в моем случае две)
  3. Bluetooth
  4. Android
  5. Провода обычные

Основа конструкции

За основу была взята машина Lego Outdoor Challenger (в реальности выглядит менее пафосно). Все, что от нее осталось: корпус (все элементы украшения сняты) и три двигателя.

У машинки была своя плата, но одна из задач подразумевала универсальность: это сделал я, это смогут повторить другие. Мозги вынул, поставил Arduino Uno.

Установка Arduino

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

Поверх платы сразу поставил две motor shiled, так надо. Чтобы управлять второй, придется прокинуть один провод с любого digital порта на H1 (направление) и второй с пина с поддержкой шима (помечены знаком «~», обычно 10, 11) на E1 (скорость).

Определение угла поворота

За поворот машинки отвечает на удивление не сервопривод, а обычный двигатель. Встает проблема: хорошо бы было его не сжечь, ведь угол поворота ограничен, а крутиться двигатель может сколько угодно.

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

Решение проблемы: отслеживать угол через замыкание. На фото продемонстрирована небольшая штучка, которая крепится недалеко от поворотного механизма. На часть, которая крутится вместе с колесами влево/вправо двигателем, прикрепляется гребешок с железными контактами.

Принцип работы: к каждой линии припаивается провод (всего их четыре), нижний подключается к плюсу (он зажат гребешком всегда, см. картинку), остальные провода уходят на минус. Когда зубик гребешка попадает и на нижний ряд, и на, допустим, третий, происходит замыкание, ток течет, это замечает Arduino.

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

Подключение угла и код

Для каждого уровня был выбран свой цвет: нижний – зеленый, первый снизу – красный, второй – черный, третий – белый. На начальном этапе использовались breadboard и светодиоды для визуальной отладки.

Схема подключения показана на рисунке. Плюс тянем к зеленому, остальные протягиваем к минусу. Через резистор, установленный для устранения помех и отсутствия КЗ, подключаем провода к выходам A0-A2. Выбраны они просто из экономии остальных портов.

Код дан с комментариями. Подключаем пины и опрашиваем их через digitarRead(). Если напряжение есть, вернется значение true. Далее смотрим, если результат означает, что колеса в крайних положениях, запрещаем дальнейший поворот в эту сторону.

Небольшая хитрость: поскольку выходы на 5В и 3.3В понадобятся в будущем, можно поставить плюс на один из digital-пинов. Перед каждой проверкой угла выдавать ток через digitalWrite(whitePin), потом проверять угол и убирать ток.

Int speedTurn = 180; //скорость поворота, от 0 до 255 //пины для определения поворота int pinRed = A0; int pinWhite = A1; int pinBlack = A2; int pinAngleStop = 12; //выводит ток на светодиод, если достигнут максимальный угол, нужен //только для отладки void setup() { //пины поворота на считывание pinMode(pinRed, INPUT); pinMode(pinBlack, INPUT); pinMode(pinWhite, INPUT); //светодиод pinMode(pinAngleStop, OUTPUT); //пины драйвера двигателя, направление и скорость pinMode(angleDirection, OUTPUT); pinMode(angleSpeed, OUTPUT); Serial.begin(9600); } //функция вызывается из loop(), когда приходит команда с андроида void turn(int angle) { digitalWrite(pinAngleStop, HIGH); //выдаем ток на провод, подключенный к плюсу delay(5); //немного ждем, чтобы ток "успел" дойти if(angle > 149) { if(digitalRead(pinWhite) == HIGH && digitalRead(pinBlack) == LOW && digitalRead(pinBlack) == LOW) { //если достигнуто крайне правое положение, выйти из функции не подавая ток, чтобы не //сжечь мотор return; } //если угол не максимальный, поворачиваем digitalWrite(angleDirection, HIGH); analogWrite(angleSpeed, speedTurn); } else if (angle < 31) { if(digitalRead(pinRed) == HIGH && digitalRead(pinBlack) == HIGH && digitalRead(pinWhite) == HIGH) { //если достигнуто крайне левого положение, выйти из функции не подавая ток, чтобы не //сжечь мотор return; } //если угол не максимальный, поворачиваем digitalWrite(angleDirection, LOW); analogWrite(angleSpeed, speedTurn); } digitalWrite(pinAngleStop, LOW); //убираем ток с определителя угла delay(5); }

Распараллеливание ходовых колес

Изначально два ходовых двигателя соединены вместе. Их рассоединил по двум причинам: поворот эффективней, если колеса крутятся в разные стороны, и два мощных двигателя одна плата не вытянет.

Проблема: у motor shield два выхода, каждый из которых выдает до 2 ампер. Каждый двигатель ест по 0,7А. Вроде меньше, но не при максимальных нагрузках. Допустим, машинка застряла в песке или уперлась, ток возрастает выше ампера. Не критично, но потенциально опасно.

А вот критичным оказалось то, что плата греется. Через минуты полторы после заезда, motor shield нагревалась и начинала работать безобразно: токи подаются не те, колеса не крутятся и прочее.

Решение обоих проблем: один двигатель подключил к одной motor shield, второй – к другой. Как ни странно, помогло. Температура упала, перегрев отсутствует. Можно было поставить радиатор, но крепить тяжело.

Подключение Bluetooth

Я использовал модель HC-05, что сыграло роковую шутку. Подключаются все блютузы одинаково: один провод на 3.3В (иногда начинал работать только от 5В), второй на минус, еще два на порт 0 и 1 (чтение и отправка соответственно). Провод, подписанный RXD на bluetooth, втыкается в TXD ардуино, а TXD в RXD (если перепутаете, то данных не увидите).

Есть оговорка: порты 0 и 1 по умолчанию используются Serial, через который заливает скетч. То есть, пока воткнут блютуз, скетч не зальется. Есть два выхода: вынимать блютуз на время заливки или переназначить входы и выходы блютуза. Второй вариант осуществляется двумя строчками

#include \\подключение библиотеки SoftwareSerial BTSerial(8, 9); \\установка 8 и 9 пина заместо 0 и 1
Подводный камень, съевший у меня трое суток работы – скорость общения. По привычке установил 9600 и пошел пробовать. То данные не приходили, то была каша символов. И в конце концов ответ – модель HC-05 общается на 38400! Очень сильно обратите внимание на то, что в Setup() я выполню BTSerial.begin(39400), хотя Serial.begin(9600).

Система отправки команд

Статья становится слишком длинной, поэтому рассмотрение кода Arduino и Android вынесу в отдельную вторую часть, а сейчас опишу принцип.

На андроид устройстве есть джойстик (круг, о реализации которого также во второй части). Андроид считывает показания с него и конвертирует их в подходящие для ардуино числа: скорость из пикселей превращает в значение от -255 до 255 (отрицательные – задний ход), а также определяет угол. Я сознательно отдал эту задачу телефону, так как он куда мощнее и спокойно справится с подсчетом нескольких сотен значений в секунду.

После установки сокета данные отправляются в следующем формате: @скорость#*угол#. @ - говорит о том, что следующие цифры содержат скорость, # - извещает об окончании значения скорости, * - начало значения угла, # - закончить запись угла. Цикл бесконечен, команды отправляются каждые 100 миллисекунд (цифра подобрана оптимальная). Если ничего не нажато на андроиде, то ничего и не отправляется.

Алгоритм приема данных подробно описан в коде скетча. Он не раз переписывался и, как по мне, работает идеально.

Заключение первой части

В этой статье я попытался раскрыть все, что касается физической части машинки. Вероятнее всего, что-то упустил, так что обязательно спрашивайте.

Но самое интересное, как по мне, осталось на второе – программа Arduino и приложение на Android, там творится настоящая магия, по крайней мере, для молодого меня.

Если вы не найдете ответа на какую-то часть и захотите потыкать меня в недостатки лично, жду – [email protected], .

UPD: вторая часть уже вышла -

Что нам понадобится:

1. Шасси для робота, =9,50$
2. Драйвер двигателя, =1,22$
3. Датчик, который будет определять препятствие, я остановился на самом популярном и дешевом варианте =0,94$
Однако, никто не мешает воспользоваться более дорогими или чем-то подобным
4. Крепление датчика, не самый лучший, но жизнеспособный вариант. =1,08$
В качестве аналогов: , еще существует неуловимый желтый, наиболее прошаренный, но ссылку так и не нашел. Кто будет искать на вид он похож на синий, но имеет нормальные отверстия под винт м3 и 4 шурупа для крепления дальномера.
5. Плата arduino, которая будет обрабатывать данные с датчика и выдавать решение, куда ехать дальше. Остановился на , как на самой удобной для моделирования на «лету» =5.88$
Эта плата выбрана из-за возможности заменить микроконтроллер в случае фатальной неудачи, так что можно купить версию

Итого я потратил примерно 19$ на самое основное

!!! терминалы, разъемы, клещи можно заменить

вышеперечисленное мне понадобится позже и не раз, не обязательно так разгоняться

Парочка фото на закуску

Провода и терминалы


Стойки, болты, гайки, шайбы

Сборка

Переходим к самому интересному - к созданию Франкенштейна!
Первым делом сверлим в синем кронштейне отверстие под болт м3, потому как иного варианта крепления я не нашел


на термоклей сажаем дальномер.


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

Крепим драйвер двигателя, подключаем моторы.



Приспосабливаем повербанк вместо батарейного отсека.
Для этого делаем два отверстия под винты м3 для крепления на шасси, припаиваем два проводка "+" и "-" к USB на плате и выводим провода через еще одно просверленное отверстие. К сожалению у меня не было под руками подходящего выключателя, так что эту функцию будет выполнять отключение проводков от ардуины. Далее крепим это дело на шасси.





Ставим ардуину, подключаем провода




Удобно, что заряжается аккумулятор через повербанк.

Вставляем аккумулятор прошиваем (воспользовался средой atmel studio 6), переворачиваем, чтобы не убежала, и тестируем, что получилось.

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

Подведем итоги

Для начала, тем, кто решит делать что-то подобное, стоит обратить внимание на шасси с четырьмя моторами. Такой шаг, в теории, исключит вероятность движения по дуге, но может добавить головной боли при подборе драйвера двигателя. Но не спешите ломать голову, можно оставить этот, все должно отлично работать, по токам проходит впритык - два мотора на канал. А вот однобаночного повербанка не хватит точно. На мой взгляд это уже повод рискнуть. Так же придется покупать шайбы, т.к. при креплении к пластмассе могут быть неприятные вещи. Еще было бы отлично разделить питание ардуины и моторов, либо воспользоваться стабилизатором, на худой конец впаять конденсатор большой емкости, но это для истинных ценителей, у меня работает и так. На практике я уложился в цену примерно 2000 руб, можно было и дешевле, но это была моя зарядка для ума и первый опыт в программировании (для чего собственно все и затевалось), особо экономить не стал. Появится время прикручу радиоуправление и выключатель.

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

Машинка на arduino и Bluetooth без редактирования кода. Мы будем использовать специализированный бесплатный софт для составления скетча. Кроме того не надо покупать шасси для нашей поделки, подойдет практически любая неисправная радиоуправляемая модель автомобиля или танка.

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

Итак, давайте разберем на живом примере как сделать своими руками дистанционно управляемую по bluetooth c android планшета или смартфона машинку. Статья, как ни странно, рассчитана на начальный уровень знаний. Здесь нет руководства по редактированию кода в Arduino IDE, да и мы использовать его будем только для заливки нашего кода. А составлять алгоритм управления будем в программе под названием FLProg. Программа управления со смартфона — HmiKaskada_free. Но сначала о железе, которое нам понадобится.

Машинка на arduino и Bluetooth — аппаратная часть.

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

Для управления электродвигателями нашего будущего творения понадобится Н-мост на микросхеме L298N Ссылка на Али, я брал у именно этот. Картинка кликабельна.

Н-мост для arduino

Может управлять двумя двигателями в диапазоне напряжений 5 — 35 вольт. Поддерживает ШИМ, то есть можно регулировать обороты двигателей. На плате есть вывод стабилизированного напряжения 5 вольт для питания ардуино.

Схема подключения проста и незатейлива:

Следующей неотъемлемой частью электронной начинки нашего проекта является bluetooth модуль HC-06 . Самый обычный модуль для ардуино, настолько популярен что в дополнительном описании не нуждается.

HC-06 bluetooth for arduino

Основным элементом и мозгом в моем случае выступает arduino nano , тут даже фото выкладывать не буду ибо все о ней знают и умеют с ней работать. Кстати подойдет любая плата ардуино, лишь бы в корпус поместилась 😀

Аккумуляторы и провода для пайки в определении спецификации не нуждаются. Выбор аккумуляторов зависит от рабочего напряжения электродвигателей.

Машинка на arduino и Bluetooth — составление скетча.

Повторюсь — никакого копания в коде тут не будет. Мы будем использовать популярную программу FLProg. Скачать ее последнюю версию можно на официальном сайте . Интерфейс проги прост и незатейлив, но имеется огромный функционал и поддержка практически всех популярных модулей. Как ей пользоваться писать не буду так как это потянет на пару статей. Скажу только что я не встречал более удобной и доступной программы для составления скетчей для arduino и ее клонов. Скрин интерфейса:

Интерфейс FLProg

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

Мой проект для дистанционно-управляемой машины можно скачать с яндекс-диска через сервис сокращения ссылок.

Машинка на arduino и Bluetooth — интерфейс управления на планшете android.

По многочисленным просьбам написал подробную инструкцию по разработке интерфейса управления на базе HmiKaskada android в статье . Ссылка кликабельна.

Для устройств под управлением android существует программа HmiKaskada (ссылка на ЯндексДиск) . Изначально она разрабатывалась как альтернатива дорогим промышленным HMI панелям. Но пытливые умы быстро смекнули что управлять она может чем угодно. В нашем случае машинкой. Поддерживает беспроводные интерфейсы Wi-Fi и Bluetooth, кроме того можно девайс подключить напрямую через USB.

Есть платная и бесплатная версии программы. У меня есть обе но я принципиально сделал проект в бесплатной версии что бы показать вам и в очередной раз убедиться в абсолютной работоспособности free версии. Основное отличие free от PRO версий это работа только по блютуз.

На форуме FLProg есть гигантская ветка по вопросу совместимости с КаСкадой, да и разработчик активен и общителен. Скрин панели управления выкладывать не вижу смысла — он есть в видеоролике.

Машинка на Ардуино с Bluetooth управлением от Android телефона — это очень простой, но интересный проект на Arduino UNO с использованием модуля Motor Shield. На этой странице вы узнаете какие потребуются компоненты для изготовления робота машинки на Ардуино своими руками, пошаговую инструкцию по сборке электрической схемы и сможете скачать все необходимые программы для Android и Arduino.

Видео. Машинка на блютуз управлении ардуино

Для этого проекта использовался модуль Motor Shield L293D , два колеса с редукторами, плата Arduino UNO, блютуз модуль HC-05 и два светодиода для фар. Управление происходит дистанционно через Bluetooth сигнал от смартфона или планшета. После сборки модели и установки программ, вы сможете через приложение на смартфоне поворачивать машинкой, ездить вперед и назад, включать и выключать фары.

Машинка на Ардуино своими руками

Для этого проекта нам потребуется:

  • плата Arduino UNO;
  • Motor Control Shield L293D;
  • Bluetooth модуль HC-05/06;
  • два мотора с редукторами и колесами;
  • аккумулятор на 9В (крона);
  • 2 резистора и 2 светодиода;
  • корпус и колеса от старой машинки;
  • паяльник, термопистолет, канцелярский нож;
  • провода, припой и изолента.
Детали для робота — машинки на Ардуино УНО

Схема сборки машинки на Ардуино

Если у вас есть все необходимые детали (в проекте можно обойтись без светодиодов и резисторов), то далее мы рассмотрим, как сделать машинку из ардуино своими руками. Для начала следует припаять к контактам моторчиков провода и зафиксировать их изолентой, чтобы контакты не оторвались. Провода необходимо соединить с клеммниками M1 и M2 на Motor Shield (полярность потом можно будет поменять).


Питание на Bluetooth модуль идет от контактов для сервопривода, в проекте серво нам не понадобятся. А на питание идет стабилизированное напряжение 5 Вольт, что нам подходит. К портам TX и RX удобнее будет припаять коннекторы «мама», а к портам «Pin0» и «Pin1» на Motor Shield припаять штырьки (BLS). Таким образом, вы сможете легко отключать Bluetooth модуль от Arduino при необходимости загрузки скетча.

Управление светодиодами идет от порта «Pin2», здесь провод можно припаять напрямую к порту. Если вы делаете несколько машинок с Блютуз, которыми будете управлять одновременно, то рекомендуем сделать перепрошивку модуля HC-05 . Делается прошивка модуля очень просто, а затем вы уже не будете путать машинки, так как у каждой будет отображаться свое уникальное имя на Андроиде.

Приложение и скетч для машинки на Ардуино

После сборки схемы загрузите следующий скетч для машинки (не забудьте отключать Bluetooth модуль от Ардуино при загрузке) и установите приложение на смартфоне. Все файлы для проекта (библиотека AFMotor.h, скетч для машинки и приложение для Android) можно скачать одним архивом по прямой ссылке .

#include // подключаем библиотеку для шилда AF_DCMotor motor1(1); // подключаем мотор к клеммнику M1 AF_DCMotor motor2(2); // подключаем мотор к клеммнику M2 int val; // освобождаем память в контроллере void setup () { Serial .begin (9600); pinMode (2, OUTPUT ); // Порт для светодиодов motor1.setSpeed (250); motor1.run (RELEASE ); // останавливаем мотор motor2.setSpeed (250); // задаем максимальную скорость мотора motor2.run (RELEASE ); // останавливаем мотор } void loop () { if (Serial .available ()) // проверяем, поступают ли какие-то команды { val = Serial .read (); if (val == "f") { // едем вперед motor1.run (FORWARD ); motor1.setSpeed (250); motor2.run (FORWARD ); motor2.setSpeed (250); } if (val == "b") { // едем назад motor1.run (BACKWARD ); motor1.setSpeed (200); motor2.run (BACKWARD ); motor2.setSpeed (200); } if (val == "s") { // останавливаемся motor1.run (RELEASE ); motor2.run (RELEASE ); } if (val == "l") { // поворачиваем налево motor1.run (FORWARD ); motor1.setSpeed (100); motor2.run (BACKWARD ); motor2.setSpeed (250); } if (val == "r") { // поворачиваем направо motor1.run (BACKWARD ); motor1.setSpeed (250); motor2.run (FORWARD ); motor2.setSpeed (100); } if (val == "1") { // включаем светодиоды digitalWrite (2,HIGH ); } if (val == "0") { // выключаем светодиоды digitalWrite (2,LOW ); } } }

Пояснения к коду:

  1. Для тестирования, можно отправлять команды с компьютера через USB;
  2. Вращение моторов при подключении к аккумулятору будут отличаться;
  3. Вы можете задавать свою скорость вращения моторами.

После проверки работы машинки, установите приложение на смартфон или планшет. При первом подключении к Bluetooth модулю HC-05/06, потребуется сделать сопряжение с Андроид (затем сопряжение будет выполняться автоматически). Если у вас возникли сложности с подключением — прочитайте эту статью



Рекомендуем почитать

Наверх