Мозги моего робота — Arduino, первый опыт

в 4:58, , рубрики: arduino, микроконтроллеры, Программинг микроконтроллеров, роботы, Электроника для начинающих, метки: , ,

Меня всегда посещала мысль сделать робота на базе Arduino и однажды утром мой коллега говорит — «не плохо было бы купить контроллер Arduino для...», я конечно же знал про него не по наслышке и тут все началось. Мы делаем «Ардуино КАР»!

Ардуино КАР

Где взять?

Исходя из того что в Ростове-на-Дону, а я как раз от туда, про платформу Arduino ни в одном магазине не слыхали, то заказывал все online.

Как оказалось дешевле всего купить все в Китае через ebay, но есть большой минус — очень долго. Доставка заказа из Гонконга более месяца.

Второй вариант взять у нас на родине, доставят за неделю — две, но чуть дороже. Я пользуюсь магазином «Амперка», здесь выбор не большой, но зато есть все что необходимо для начала. И товар хорошего качества (в коробочке с наклеичками бренда, все как надо) в отличии от китайского брата.

Arduino бренд

Что брать?

Мой совет — определитесь с целью, потом заказывайте, иначе можно взять лишка.
Моя цель — дистанционно управлять движущейся платформой по средствам ПК.
Сразу совет — не ставьте сложных задач, если вы только начинаете, или разбивайте цель на более простые задачи.
Я решил упростить задачу — мне нужно, чтобы платформа ездила по комнате и не врезалась в стенки.

Для моего первого робота я заказал:

  • Arduino New Version Mega 2560 Starter Package Kits — это, так называемый, стартовый пакет, куда входит сам контроллер и сопутствующие материалы. Я взял набор с LCD дисплеем, но для первого проекта можно было обойтись и Uno.
  • Motor Drive Shield L293D for Arduino Duemilanove Mega / UNO — Силовой модуль для управления двигателями.
  • Arduino Sensor Shield V5.0 — модуль для подключения датчиков, и периферии.
  • Arduino Sharp IR Sensor — GP2Y0A21YK0F — инфракрасный дальномер.
  • Arduino Robot Platform All-Wheel-Drive 4 Wheel Chassiss — полно приводная платформа с электродвигателями.

С чего начать?

Интернет кишит статьями, как работать и программировать под Arduino. Я не стал углубляться, решил начать с простых вещей:

  • Скачал ПО с официального сайта: драйвер для подключения контроллера и среда разработки с компилятором.
  • Написал первую программу, пользуясь онлайн справочником (функции ядра и библиотеки). При этом пришлось вспомнить азы языка программирования «C».
  • Подключил и прошил контроллер. Процедура довольно проста, если использовать средство для разработки Arduino.

Как собирать?

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

Ардуино КАР - сборка платформы

Будьте внимательнее при подключении периферии к контроллеру или платам расширения.
Например я столкнулся с тем, что распиновка на плате расширения(Sensor Shield) не совпадала с датчиком дальномером и LCD дисплеем, вернее разъемы подходят отлично а полярность не совпадает. При не соблюдении полярности можно попросту спалить оборудование.

Ардуино КАР - подключение контроллера

Многие вещи приходят с опытом разработки.
Например я столкнулся с проблемой подключения LCD дисплея к последовательному порту.
Вернее проблем не было, дисплей работал, но при подключенном дисплее прошивать контроллер нельзя, потому что порт занят (долго не мог понять почему прошивка не заливается).
У меги 4 аппаратных последовательных порта, казалось бы что проще, переключи дисплей на второй, но не тут то было, плата расширения, которую я использовал, не захватывает нужные пины на контроллере.
В итоге подключил LCD к аналоговому порту и использовал библиотеку для работы с программным последовательным соединением.

Ардуино КАР - в сборе

Как программировать?

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

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

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

Запуск прототипа!

P.S. Не использует китайские аналоги.

Автор: obidnov

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js