Меня всегда посещала мысль сделать робота на базе Arduino и однажды утром мой коллега говорит — «не плохо было бы купить контроллер Arduino для...», я конечно же знал про него не по наслышке и тут все началось. Мы делаем «Ардуино КАР»!
Где взять?
Исходя из того что в Ростове-на-Дону, а я как раз от туда, про платформу Arduino ни в одном магазине не слыхали, то заказывал все online.
Как оказалось дешевле всего купить все в Китае через ebay, но есть большой минус — очень долго. Доставка заказа из Гонконга более месяца.
Второй вариант взять у нас на родине, доставят за неделю — две, но чуть дороже. Я пользуюсь магазином «Амперка», здесь выбор не большой, но зато есть все что необходимо для начала. И товар хорошего качества (в коробочке с наклеичками бренда, все как надо) в отличии от китайского брата.
Что брать?
Мой совет — определитесь с целью, потом заказывайте, иначе можно взять лишка.
Моя цель — дистанционно управлять движущейся платформой по средствам ПК.
Сразу совет — не ставьте сложных задач, если вы только начинаете, или разбивайте цель на более простые задачи.
Я решил упростить задачу — мне нужно, чтобы платформа ездила по комнате и не врезалась в стенки.
Для моего первого робота я заказал:
- 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