Урок 33. Обучаем Arduino робота ездить по линии
При создании любого робота, его нужно оснастить датчиками (показания которых будет считывать робот), управляющими модулями (для вывода результатов работы робота), и скетчем (по алгоритму которого должен работать робот). В нашем случае, мы оснастим машинку, тремя аналоговыми датчиками линий и одним ультразвуковым датчиком расстояния, а в роли управляющих модулей выступят два закрепленных к каркасе моторчика, с колёсами на валах.
Видео:
Нам понадобится:
-
х 1шт. x 1шт. x 3шт.
Для реализации проекта нам необходимо установить библиотеку:
-
для работы с ультразвуковыми датчиками расстояния по внешним прерываниям.
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .
Схема подключения:
Моторчики подключаются к клеммам M1 (левый мотор) и M2 (правый мотор) расположенным на Motor Sield. Аналоговые датчики линии подключаются к любым аналоговым входам Arduino Uno, в нашем примере используются входы A5 (для правого датчика), A4 (для центрального датчика) и A3 (для левого датчика). Вывод TRIG ультразвукового датчика расстояния подключается к любому выводу Arduino Uno, в нашем случае вывод D2. Вывод ECHO, при использовании библиотеки iarduino_HC_SR04_int, может подключаться только к тем выводам Arduino Uno, которые используют внешние прерывания, в нашем случае это вывод D3. Все датчики запитаны от напряжения 5 В. Напряжение питания на Arduino Unoподаётся через Motor Shield (клеммник Vin), для чего нужно установить перемычку, рядом с клеммником, в позицию «Общ. Пит.». Входы Motor Shield H1 (направление 1 мотора), E1 (ШИМ 1 мотора), E2 (ШИМ 2 мотора), H2 (направление 2 мотора), по умолчанию, подключены к выводам D7, D6, D5 и D4 соответственно, но их можно поменять, сняв перемычку и соединив вывод Motor Shield с нужным выводом Arduino Uno.
Алгоритм работы:
- Если центральный датчик находится на линии, а боковые вне линии, то машинка едет прямо.
- Если левый датчик находится на линии, а правый вне линии, то машинка поворачивает налево (независимо от показаний центрального датчика)
- Если правый датчик находится на линии, а левый вне линии, то машинка поворачивает направо (независимо от показаний центрального датчика)
- Если правый и левый датчики находятся на линии (вне зависимости от показаний центрального датчика), то такое состояние является неопределённым, машинка продолжает предыдущее движение (прямо или с поворотом) в течении 2 секунд (можно менять в скетче). Если в течении этого времени состояние не изменится, то она остановится.
- Если все три датчика находятся вне линии, то такое состояние является неопределённым (потеря линии). Если этому состоянию предшествовал поворот, то машинка продолжит поворот в течении 2 секунд (можно менять в скетче). Если в течении этого времени состояние не изменится, то она остановится. Если этому состоянию не предшествовал поворот (машинка ехала прямо и линия оборвалась), то машинка сразу остановится.
- Если перед машинкой появилось препятствие, на расстоянии менее 10 см (можно менять в скетче), то машинка остановится и продолжит движение, как только препятствие исчезнет.
Скорость движения задаётся в константе valSpeed, от 1 до 255. Крутизна поворотов задаётся в константе valTurning, от 1 до 255. Время продолжения движения, при неопределённом состоянии, задаётся в константе tmrDelay, в микросекундах. Направление движения моторов указывается логическими значениями элементов массива arrRoute (0 элемент — правый мотор, 1 элемент — левый мотор), по умолчанию все элементы равны «1». Если вы перепутали полярность при подключении мотора, то измените значение соответствующего элемента этого массива на «0».
Калибровка для светлых, слабоконтрастных или цветных линий:
Машинка настроена на движение по темной линии, но она может ездить по светлым, слабоконтрастным или цветным линиям. Для этого её нужно откалибровать, указав значения для констант valSensor1 (показание датчика находящегося на линии) и valSensor0 (показание датчика находящегося вне линии). Для чего, в коде setup скетча, предусмотрен вывод показаний центрального датчика в монитор последовательного порта.
Робот, ездящий по линии под управлением Arduino
В данной статье будет описан процесс создания робота, ездящего по линии. Эта задача является классической, идейно простая, она может решаться много раз, и каждый раз вы будете открывать для себя что-то новое. Решение этой задачи и реализация полученного решения позволяют приобрести необходимые начальные навыки для дальнейшего совершенствования в робототехнике.
Существует множество подходов для решения задачи следования по линии. Выбор одного из них зависит от конкретной конструкции робота, от количества сенсоров, их расположения относительно колёс и друг друга.
В нашем примере будет собран робот на лёгкой платформе с двумя колёсами и двумя датчиками линии, расположенными на днище робота перед колёсами.
В результате выглядеть он будет так:

Что понадобится
Для нашего примера понадобятся следующие детали:

Вообще говоря, лучше было бы использовать NiMH-аккумуляторы: они лучше отдают ток и значительно дольше держат напряжение, но для целей этого проекта одной батарейки на 9 В вполне хватило.
Собираем робота
Сначала соберём робота, установим всю механику и электронику.
Собираем платформу
Для начала прикрепим колёса к моторам.

Затем с помощью пластиковых П-образных креплений прикручиваем моторчики к платформе. Обратите внимание на взаимное расположение крепления и моторчики: в креплении есть небольшие углубления, так что если всё соединить правильно, то моторчики будут крепко держаться и никуда не выскочат.

Теперь крепим балансировочный шар.

Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.
Крепим сенсоры
Закрепим их, как показано на фото:

Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.
Крепим Arduino
Arduino закрепим с противоположной стороны двумя винтиками и гайками.

Опять же, можно выбрать и другое место. Например над колёсами, если приподнять Arduino на латунных стойках. Это изменило бы положение центра масс и повлияло бы на эффективность робота в лучшую или худшую сторону.
Крепим Motor Shield и соединительные провода
Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).

В этом проекте, для экономии времени концы соединительных проводов просто скручены с контактами моторов. При работе «начисто» стоит жёстко припаять провода к моторам.
Крепим Troyka Shield
Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:

Программирование
Теперь напишем программу, которая заставит собранную конструкцию двигаться по нарисованной линии. В проекте мы будем использовать чёрную линию, напечатанную на белых листах бумаги.
Основная идея алгоритма
Пусть у нас усть белое поле, и на нём чёрным нарисован трек для нашего робота. Используемые датчики линии выдают логический ноль, когда «видят» чёрное и единицу, когда «видят» белое.
На прямой робот должен пропускать трек между сенсоров, то есть оба сенсора должны показывать единички.
При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.
Таким образом получаем простую систему с тремя состояниями:
На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:
| Левый | Правый | Целевое состояние |
|---|---|---|
| 0 | 0 | STATE_FORWARD |
| 0 | 1 | STATE_RIGHT |
| 1 | 0 | STATE_LEFT |
| 1 | 1 | STATE_FORWARD |
Реализация на Arduino
Проблема инертности и её решение
Однако если выставить скорость моторов побольше, мы столкнёмся со следующей проблемой: наш робот будет вылетать с трека, не успевая отреагировать на поворот. Это связано с тем, что наши моторчики не умеют тормозить мгновенно.
В этом легко убедиться поставив следующий эксперимент: с заданной скоростью робот будет двигаться по поверхности, и в некоторый момент будет установлена нулевая скорость и измерен тормозной путь робота. Пусть робот разгоняется по монотонной поверхности и тормозится при фиксировании импровизированной стоп-линии.
Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:
На той поверхности, на которой проводился эксперимент, были получены следующие результаты:

Таким образом, начиная с некоторого момента у нашего робота нет никакой возможности успеть среагировать и остаться на треке.
Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.
Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:
На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:

Полученные две зависимости были линейно аппроксимированы, затем была выведена формула зависимости времени, которое надо двигаться назад, от скорости перед остановкой.
Обратим внимание на то, что у вас значения могут оказаться другими: из-за особенностей сборки либо из-за поверхности, поэтому в общем случае лучше провести все измерения самостоятельно.
Адаптивное поведение
Перед финальным экспериментом произведём ещё несколько поправок.
Во-первых, нам необязательно давать команду ехать назад перед каждым поворотом, как мы помним, на маленькой скорости робот прекрасно справляется и без этого. К тому же лучше ему двигаться не прямо назад, а немного поворачивая, всё-таки робот находится перед поворотом.
Во-вторых, нам стоит различать состояния робота: когда он движется по прямой, и ничто ему не мешает ускоряться; и когда робот входит в поворот. В первом случае действительно будем увеличивать скорость робота для более динамичного прохождения трека, во втором случае будем сбрасывать скорость до значения, достаточного для успешного прохождения поворота, и будем держать эту скорость ещё какое-то время.
В итоге наш код будет выглядит следующим образом:
Результат
Что дальше?
Представленный алгоритм оставляет множество возможностей для улучшения и оптимизации. Скорость поворота можно так же менять адаптивно. Можно добавить контроль заноса. Можно поиграть с расположением сенсоров и центром масс. В конце концов можно получить непобедимого на треке робота.
Программирование Arduino с помощью ArduBloсk на примере робота, движущегося по полосе
Здравствуйте! Я Аликин Александр Сергеевич, педагог дополнительного образования, веду кружки «Робототехника» и «Радиотехника» в ЦДЮТТ г. Лабинска. Хотел бы немного рассказать об упрощенном способе программирования Arduino с помощью программы «ArduBloсk».

Эту программу я ввел в образовательный процесс и восхищен результатом, у детей она пользуется особым спросом, особенно при написании простейших программ или для создания какого-то начального этапа сложных программ. ArduBloсk является графической средой программирования, т. е. все действия выполняются с нарисованными картинками с подписанными действиями на русском языке, что в разы упрощает изучение платформы Arduino. Дети уже со 2-го класса с легкостью осваивают работу с Arduino благодаря этой программе.
Да, кто-то может сказать, что еще существует Scratch и он тоже очень простая графическая среда для программирования Arduino. Но Scratch не прошивает Arduino, а всего лишь управляет им по средством USB кабеля. Arduino зависим от компьютера и не может работать автономно. При создании собственных проектов автономность для Arduino — это главное, особенно при создании роботизированных устройств.
Даже всеми известные роботы LEGO, такие как NXT или EV3 нашим ученикам уже не так интересны с появлением в программировании Arduino программы ArduBloсk. Еще Arduino намного дешевле любых конструкторов LEGO и многие компоненты можно просто взять от старой бытовой электронной техники. Программа ArduBloсk поможет в работе не только начинающим, но и активным пользователям платформы Arduino.
Итак, что же такое ArduBloсk? Как я уже говорил, это графическая среда программирования. Практически полностью переведена на русский язык. Но в ArduBloсk изюминка не только это, но и то, что написанную нами программу ArduBloсk конвертирует в код Arduino IDE. Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин.
Ниже приведен пример мигающего светодиода и конвертированной программы в Arduino IDE. Вся работа с программой очень проста и разобраться в ней сможет любой школьник.

В результате работы на программе можно не только программировать Arduino, но и изучать непонятные нам команды в текстовом формате Arduino IDE, ну а если же «лень» писать стандартные команды — стоит быстрыми манипуляциями мышкой набросать простенькую программку в ArduBlok, а в Arduino IDE её отладить.
Чтобы установить ArduBlok, необходимо для начала загрузить и установить Arduino IDE с официального сайта Arduino и разобраться с настройками при работе с платой Arduino UNO. Как это сделать описано на том же сайте или же на Амперке, либо посмотреть на просторах YouTube. Ну, а когда со всем этим разобрались, необходимо скачать ArduBlok с официального сайта, вот ссылка. Последние версии скачивать не рекомендую, для начинающих они очень сложны, а вот версия от 2013-07-12 — самое то, этот файл там самый популярный.
Затем, скачанный файл переименовываем в ardublock-all и в папке «документы». Создаем следующие папки: Arduino > tools > ArduBlockTool > tool и в последнею кидаем скачанный и переименованный файл. ArduBlok работает на всех операционных системах, даже на Linux, проверял сам лично на XP, Win7, Win8, все примеры для Win7. Установка программы для всех систем одинакова.

Ну, а если проще, я приготовил на Mail-диске 7z архив, распаковав который найдете 2 папки. В одной уже рабочая программа Arduino IDE, а в другой папке содержимое необходимо отправить в папку документы.
Для того, чтобы работать в ArduBlok, необходимо запустить Arduino IDE. После чего заходим во вкладку Инструменты и там находим пункт ArduBlok, нажимаем на него — и вот она, цель наша.

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

В разделе «Управление» мы найдем разнообразные циклы.

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

В разделе «Числа/Константы» мы можем с вами выбрать цифровые значения или создать переменную, а вот то что ниже вряд ли будите использовать.

В разделе «Операторы» мы с вами найдем все необходимые операторы сравнения и вычисления.

В разделе «Утилиты» в основном используются значки со временем.

«TinkerKit Bloks»- это раздел для приобретенных датчиков комплекта TinkerKit. Такого комплекта у нас, конечно же, нет, но это не значит, что для других наборов значки не подойдут, даже наоборот — ребятам очень удобно использовать такие значки, как включения светодиода или кнопка. Эти знаки используются практически во всех программах. Но у них есть особенность — при их выборе стоят неверные значки обозначающие порты, поэтому их необходимо удалить и подставить значок из раздела «числа/константы» самый верхний в списке.

«DF Robot» — этот раздел используется при наличии указанных в нем датчиков, они иногда встречаются. И наш сегодняшний пример — не исключение, мы имеем «Регулируемый ИК выключатель» и «Датчик линии». «Датчик линии» отличается от того, что на картинке, так как он от фирмы Амперка. Действия их идентичны, но датчик от Амперки намного лучше, так как в нем имеется регулятор чувствительности.

«Seeedstudio Grove» — датчики этого раздела мной ни разу не использовались, хотя тут только джойстики. В новых версиях этот раздел расширен.

И последний раздел это «Linker Kit». Датчики, представленные в нем, мне не попадались.
Хочется показать пример программы на роботе, двигающемся по полосе. Робот очень прост, как в сборке, так и в приобретении, но обо всем по порядку. Начнем с его приобретения и сборки.
Вот сам набор деталей все было приобретено на сайте Амперка.
- AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
- AMP-B017 Troyka Shield 1 690 руб
- AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
- AMP-B018 Датчик линии цифровой 2 580 руб
- ROB0049 Двухколёсная платформа miniQ 1 1890 руб
- SEN0019 Инфракрасный датчик препятствий 1 390 руб
- FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
- A000066 Arduino Uno 1 1150 руб
Для начала соберем колесную платформу и припаяем к двигателям провода.
Затем установим стойки, для крепления платы Arduino UNO, которые были взяты от старой материнской платы ну или иные подобные крепления.
Затем крепим на эти стойки плату Arduino UNO, но один болтик прикрутить не получиться — разъемы мешают. Можно, конечно, их выпаять, но это уже на ваше усмотрение.
Следующим крепим инфракрасный датчик препятствий на его специальное крепление. Обратите внимание, что регулятор чувствительности находиться сверху, это для удобства регулировки.
Теперь устанавливаем цифровые датчики линии, тут придется поискать пару болтиков и 4 гайки к ним Две гайки устанавливаем между самой платформой и датчиком линии, а остальными фиксируем датчики.
Следующим устанавливаем Motor Shield или по другому можно назвать драйвер двигателей. В нашем случае обратите внимание на джампер. Мы не будем использовать отдельное питание для двигателей, поэтому он установлен в этом положение. Нижняя часть заклеивается изолентой, это чтобы не было случайных замыканий от USB разъема Arduino UNO, это на всякий случай.
Сверху Motor Shield устанавливаем Troyka Shield. Он необходим для удобства соединения датчиков. Все используемые нами сенсоры цифровые, поэтому датчики линии подключены к 8 и 9 порту, как их еще называют пины, а инфракрасный датчик препятствий подключен к 12 порту. Обязательно обратите внимание, что нельзя использовать порты 4, 5, 6, 7 так как оны используются Motor Shield для управлением двигателями. Я эти порты даже специально закрасил красным маркером, чтобы ученики разобрались.
Если вы уже обратили внимание, мной была добавлена черная втулка, это на всякий случай, чтобы установленный нами батарейный отсек не вылетел. И наконец, всю конструкцию мы фиксируем обычной резинкой.
Подключения батарейного отсека может быть 2-х видов. Первый подключение проводов к Troyka Shield. Также возможно подпаять штекер питания и подключать уже к самой плате Arduino UNO.
Вот наш робот готов. Перед тем как начать программировать, надо будет изучить, как все работает, а именно:
— Моторы:
Порт 4 и 5 используются для управления одним мотором, а 6 и 7 другим;
Скоростью вращения двигателей мы регулируя ШИМом на портах 5 и 6;
Вперед или назад, подавая сигналы на порты 4 и 7.
— Датчики:
У нас все цифровые, поэтому дают логические сигналы в виде 1 либо 0;
А что бы их отрегулировать, в них предусмотрены специальные регуляторы а при помощи подходящей отвертки их можно откалибровать.
Подробности можно узнать на Амперке. Почему тут? Потому что там очень много информации по работе с Arduino.
Ну что ж, мы, пожалуй, все просмотрели поверхностно, изучили и конечно же собрали робота. Теперь его необходимо запрограммировать, вот она — долгожданная программа!

И программа конвертированная в Arduino IDE:
В заключении хочу сказать, эта программа просто находка для образования, даже для самообучения она поможет изучить команды Arduino IDE. Самая главная изюминка — это то, что более 50 значков установки, она начинает «глючить». Да, действительно, это изюминка, так как постоянное программирование только на ArduBlok не обучит вас программированию в Arduino IDE. Так называемый «глюк» дает возможность задумываться и стараться запоминать команды для точной отладки программ.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Скетчи и инструкция для робота-машинки на базе Arduino.
dsidov/ArduinoCar
Name already in use
- Local
- Codespaces
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Скетчи и инструкция для робота-машинки на базе Arduino.
1. Сборка машинки
На занятиях мы с вами навесили на машинку все модули, что были в комплекте, и вы можете запрограммировать робота как минимум на:
- Управление через ИК & Bluetooth
- Автономное движение по нарисованной линии
- Автономное движение с избеганием препятствий Можно расширить круг обязанностей робота, если вы докупите к нему модули (или платформы). Модули это, по сути, разнообразные датчики и устройства, которые сделаны в удобном для ардуино форм-факторе, который исключает необходимость пайки, например. Есть модули, основанные на датчиках температуры, давления, ИК диодах и пр. Есть двигатели, драйвера к ним, солнечные батареи и много всего прочего. Достаточно дешево их можно купить в Китае. Инструкции к роботу можно найти в google и youtube по запросам «робот ардуино», и значительно больше инструкций вы найдете на английском языке (aruino robot).
Немного о подключении проводов
После сборки робота необходимо соединить модули между собой. Для этого нужно соединить пины на драйвере шагового двигателя (красная микросхема) с пинами на ардуино или плате расширения. Пин это вид электрического соединителя, он может быть в виде розетки или гнезда. В обиходе пинами называют, по сути, любой вид вывода от контакта микросхемы. А вот соединять их нужно ТОЛЬКО исходя из особенностей скетча или можно самим менять в скетче значения подключаемых пинов. Ну или писать скетч самим. Скетч — это программа, написанная в среде Arduino IDE. Сборку и подключение машинки поясню на примере скетча для управления через ИК & BT.
Распиновка (цоколевка) ардуино выглядит вот так:

Мы будем использовать следующие пины:
- Цифровые (Digital Pins) — в коде они определяются через цифры (0-13)
- Входное питание (Vin)
- Питание (5V, V)
- Заземление (GND, G)
Если поставить сверху шилд, то распиновка не изменится, но добавятся дублирующие цифровые и аналоговые выходы и появится много пинов земля+питание.
Обратите внимание, что на каждый радиотехнический компонент, будь то диод или модуль, есть т.н. даташит (datasheet) – инструкция, которая описывает характеристики, особенности подключения, функционал и прочую необходимую об устройстве информацию. Как ее искать я объяснял на лекции, но если простым языком, то все опять же ищется в google исходя из той маркировки, что нанесена на модули. Если с маркировками все плохо, то можно использовать google картинки =)

Шилд выглядит примерно вот так:

Вот так выглядит ИК датчик:

А вот так Bluetooth датчик:
Подключение модулей к ардуино

Как я писал ранее, при соединении модулей надо исходить из особенностей скетча. Если какой-то модуль, двигатель и т.д. не предусматривает его подключение, НЕ НАДО ЕГО ПОДКЛЮЧАТЬ. Лучше пусть провода болтаются. Например, возьмем, скетч для управления через ИК & Bluetooth “IR_BT_Remote_Control_Car_v2_1” (про прошивку скетчей есть отдельная тема ниже). Нам нужно подключить драйвер шагового двигателя, ИК и Bluetooth датчики.
В нем, если приглядеться, можно увидеть, что за сигнал с ИК порта отвечает 10 цифровой пин, за двигатели пины 3-7, 9.
Поэтому ИК датчик подключаем так: G — GND R — 5V Y — 10 Важно! Не перепутайте контакты, ИК датчики ОТЛИЧНО ГОРЯТ, если их неправильно подключить.
А драйвер подключаем вот так:
ENA, IN1, IN2 — пины управления правой парой двигателей ENB, IN3, IN4 — левой парой двигателей И не забываем присоединить Vin — Vms (отвечает за внешнее питание).
У некоторых были перепутаны красные и черные провода на машинке, что, может привести к тому, что колеса будут крутиться в разные стороны. Если это произошло, попробуйте попарно поменять пины IN<> на одной из пар двигателей. «Реакция» на ИК пульт тоже программируется. Например, при нажатии кнопки CH выдается значение 0х00FF629D. Поэтому на действие можно присвоить любую кнопку любого пульта, если вы знаете ее значение. Для нашего пульта (HX1838) значения следующие: #fmt: off PWR FFE21D CH FF629D
|<< FF22DD
Plus FFA857
EQ FF906F
0 FF6897
100 FF9867
200 FFB04F
1 FF30CF
2 FF18E7
3 FF7A85
4 FF10EF
5 FF38C7
6 FF5AA5
7 FF42BD
8 FF48B5
9 FF52AD
Можете попробовать поменять их затем в коде и посмотреть что из этого выйдет.
Bluetooth датчик подключается через протокол UART, он задействует цифровые пины 0 и 1.
Важно! При прошивке Ардуино RX и TX должны быть отключены, или у вас постоянно будет выскакивать ошибка загрузки.

Если вам не хватает коннекторов Для этого существуют провода F-F (мама-мама) с двумя розетками. В комплекте их нет, но вы можете воспользоваться макетной платой:
2. Прошивка Arduino
Фактически, ваша машина имеет неограниченное число функций, если вы знаете как ее программировать. Если нет, можно взять стандартный и загрузить его в микроконтроллер. Для этого нужно:
2.1 Скачать и установить среду программирования Arduino IDE
https://www.arduino.cc/en/Main/Donate (Донатить необязательно, можно “Just download”) При этом нужно одобрить установку всех необходимых драйверов.
2.2 Скачать скетчи и библиотеки
2.3 Распаковать библиотеки для Arduino IDE
Иногда вам придется пользоваться библиотеками. Библиотеки используются, в основном, для того, чтобы перевести машинные функции обращения с модулем на более-менее человеческий язык. Подключение библиотеки в скетче происходит с помощью ф-ии #include, также можно посмотреть, какие библиотеки используются. Так, в скетче управления машинкой используется библиотека для ИК порта (#include <IRremote.h>). Для того, чтобы среда ардуино не ругалась на ее отсутствие, надо распаковать IRremote.zip в папку This PC \ Documents \ Arduino \ libraries или С:\Users#Name\Documents\Arduino\libraries
2.4 Прошивка микроконтроллера
Запускаем среду Arduino IDE и скетч. Для этого достаточно кликнуть на желаемом скетче расширения .ino Подключаем плату Ардуино к ПК. Ардуино должно определиться в программе:

В разделе “Плата” должна стоять “Arduino UNO”
После этого мы жмем кнопку “загрузить”

И ждем пока пока программа загрузится в Ардуино.
В случае удачной прошивки все готово, можете пользоваться машинкой.
Важный момент — если светодиоды у машинки горят, но она не двигается, то проблема, возможно, в батарейках, они быстро садятся и если тока в них недостаточно (особенно дешевые батарейки), то двигатели просто не работают. Поэтому для тестирования лучше использовать блок питания 7-12В, подключив его напрямую к входу ардуино (DC Power Jack) или к коннектору.
Машинка управляется с пульта, для управления используются вот эти кнопки: (где квадрат это “стоп”)

Если машинка не едет, нужно нажать несколько раз вперед-назад.
Управление с помощью Bluetooth осуществляется с помощью программы BLEJoystick (Android & IOS)
Сначала нужно узнать MAC адрес bluetooth модуля. Для этого нужно подать питание на модуль, уйти подальше от других bluetooth устройств и просканировать MAC адреса с помощью программы.
Один из адресов должен быть вашим (обычно он начинается на BT-05). Адрес лучше записать.
Для подключения к машинке нужно нажать на соответствующий ей MAC адрес и нажать CONNECT. Если у значка BT справа сверху появились две точки, это значит, что устройства сопряжены и можно продолжать, если нет, нужно попробовать еще раз, включив-выключив машинку.

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

Символы A, C, B, D, G – это установки приложения BLEJoystick, другие приложения могут иметь другие управляющие символы.
4. Прочие прошивки
В папках вы также можете найти другие программы для машинки. Папка Sketches-Factory содержит в себе программы, любезно украденные у китайцев. Можете запрограммировать машинку на движение по линии или избегание препятствий.
