Собираем простого робота на Arduino

Содержание

Управление двигателями робота на основе микроконтроллера Arduino

Собираем простого робота на Arduino

26 ноября в 19:48 / Уроки / Моторы, Робототехника

Arduino – отличная платформа для робототехники. Микроконтроллер предлагает множество входов, выходов и легко разработать код для работы с ними.

Этот урок является первым из серии «Роботы Arduino» и мы начнем с движения робота – путем управления двумя двигателями постоянного тока. Спасибо за данный урок нашим друзьям из проекта darkbluebit.com.

Шаг 1: Список комплектующих

Нам понадобятся для создания первого робота некоторые комплектующие.

– Комплект-шасси для создания робота (на фото выше) – можно купить отдельными деталями или в наборе- Драйвер-мост двигателя H-Bridge TB6612FNG- 4x – Диод 1N4001- 4x – 1,5 В AA батарея- 1x – 9 В батарея

– Макет и провода

Шаг 2: Шасси

Есть много шасси для роботов, мы купили на Amazon.com комплект шасси для автомобиля Smart Robot от Ardokit, потому что это очень простой и довольно дешевый вариант. Он поставляется с двумя колесами, управляемыми двумя двигателями постоянного тока (3 – 6 В).

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

Arduino может обеспечить только очень ограниченный ток непосредственно от выходных контактов – около 20 – 40 мА. Этого достаточно для светодиода, но нам нужен еще один способ питания двигателей.

Контроллер H-Bridge (H-мост) – это схема, используемая для управления скоростью и направлением двигателя. В этом случае нам нужен двойной H-мост (H-Bridge) для управления двумя из них.

В цепи используется внешнее питание для обеспечения тока для двигателей.

Батарейный блок 4x AA (держатель, входящий в комплект корпуса) предназначен только для этой цели – таким образом, источник питания Arduino (батарея 9 В) можно разделить для защиты нашей платы.

Мы выбрали MOSFET на основе TB6612FNG от Pololu, вы также можете купить почти то же самое от SparkFun (с другим цветом и распиновкой). Эти H-мосты способны управлять двигателями в диапазоне от 4,5 В до 13,5 В и обеспечивать непрерывный ток 1 А (с пиками 3 А).

Распиновка Pololu TB6612FNG и SparkFun TB6612FNG

Справка: H-мост — это электронная схема, которая даёт возможность приложить напряжение к нагрузке в разных направлениях. Эта схема очень часто используется в робототехнике и игрушечных машинах, чтобы изменять направление вращения мотора. H-мосты представлены в виде интегральных схем, а также могут быть построены из отдельных радиодеталей.

Структура H-моста (красным)

Шаг 4: Обратное подавление EMF

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

Мы можем подавить это поведение, подключив диод как на схеме ниже:

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

Шаг 5: Цепь

Наше финальное подключение можно посмотреть на схеме ниже:

Шаг 6: Код

Номера выводов в приведенном ниже коде соответствуют схеме с SparkFun H-Bridge (см.выше), номера контактов в видео на последнем шаге отличаются друг от друга, поскольку там использовался Pololu H-Bridge.

// Left motorconst int pinAIN1 = 5; //Directionconst int pinAIN2 = 4; //Directionconst int pinPWMA = 3; //Speed // Right motorconst int pinBIN1 = 7; //Directionconst int pinBIN2 = 8; //Directionconst int pinPWMB = 9; //Speed //H-Bridge Standbyconst int pinSTBY = 6; boolean leftMotor = 1;boolean rightMotor = 0; void setup() { pinMode(pinPWMA, OUTPUT); pinMode(pinAIN1, OUTPUT); pinMode(pinAIN2, OUTPUT); pinMode(pinPWMB, OUTPUT); pinMode(pinBIN1, OUTPUT); pinMode(pinBIN2, OUTPUT); pinMode(pinSTBY, OUTPUT);} void loop() { // acceleration for (int i = 0; i = 0; i -= 5) { motorDrive(leftMotor, 1, i); motorDrive(rightMotor, 1, i); delay(55); } // stop motorStop(leftMotor); motorStop(rightMotor); delay(10000);} /* Drive a motor: – motorNumber: 0 left motor, 1 right motor – moveForward: motor direction (0 reverse, 1 forward) – motorSpeed: 0 to 255 —> 0 = stop / 255 = max speed*/void motorDrive(boolean motorNumber, boolean moveForward, int motorSpeed) { boolean pinIn1; //Relates to AIN1 or BIN1 (depending on the motor number specified) // direction to turn the motor // clockwise: IN1 = HIGH and IN2 = LOW // counter-clockwise: IN1 = LOW and IN2 = HIGH if (moveForward) pinIn1 = LOW; else pinIn1 = HIGH; // select the motor to turn, set the direction and the speed if (motorNumber == leftMotor) { digitalWrite(pinAIN1, pinIn1); digitalWrite(pinAIN2, !pinIn1); analogWrite(pinPWMA, motorSpeed); } else { digitalWrite(pinBIN1, pinIn1); digitalWrite(pinBIN2, !pinIn1); analogWrite(pinPWMB, motorSpeed); } // STBY must be high to enable motors digitalWrite(pinSTBY, HIGH);} // Stop the specified motorvoid motorStop(boolean motorNumber) { if (motorNumber == leftMotor) { digitalWrite(pinAIN1, LOW); digitalWrite(pinAIN2, LOW); } else { digitalWrite(pinBIN1, LOW); digitalWrite(pinBIN2, LOW); }}

Шаг 7: Итоговый результат

На видео ниже процесс по созданию данного урока и итоговый результат.

Спасибо, что прошли этот урок с нами до конца! Желаем вам отличных проектов и до встречи в ближайших уроках.

Источник: https://ArduinoPlus.ru/arduino-robot-upravlenie-dvigatelem/

Записки программиста

Собираем простого робота на Arduino

Мало что может сравниться по крутизне с разработкой высоконагруженных веб-проектов типа или ковырянии ядра Linux. В качестве примечательного исключения можно привести разработку самопальных роботов у себя дома. И знаете, что? Оказывается, полученных нами на данный момент знаний в электронике и программировании микроконтроллеров уже более чем достаточно для создания первого робота!

Управление электродвигателями из Arduino

Ну, почти достаточно. Нам понадобится управлять электродвигателями, а это мы еще не проходили. К счастью, тут все довольно просто.

Типичная схема подключения электродвигателя превосходно объяснена на wiki-сайте Амперки, поэтому я просто приведу здесь их иллюстрацию:

Там же можно прочитать интересную статью про полевые МОП-транзисторы (a.k.a. MOSFET). В отличие от биполярных транзисторов, полевые транзисторы управляются напряжением, а не током. Полевые транзисторы используются, когда нужно управлять сравнительно большим током (сотни миллиампер). Типичный полевой транзистор, используемый во многих проектах, что я видел — IRF3205.

Дополнение: Также вас может заинтересовать Шпаргалка в картинках по использованию MOSFET’ов.

Описанная схема позволяет вращать электродвигателем только в одну сторону. Однако колеса в роботе должны крутиться не только вперед, но и назад. Для решения этой проблемы используется конструкция под названием H-мост.

При желании его можно спаять и самостоятельно, но в наше время обычно используют готовые микросхемы. Одной из самых популярных является микросхема L298P. В частности, именно она используется в Motor Shield от Амперки.

Если вы полистаете даташит [PDF], то обнаружите, что это довольно скучная микросхема, построенная на транзисторах и логических вентилях — никакой магии.

Из драйверов двигателей, аналогичных L298P, стоит упомянуть L293D и L293B. Максимальный ток на канал первого составляет 0.6 А против 2 А у L298P. Зато L293D имеет встроенную диодную защиту от паразитных токов и стоит заметно дешевле. L293B также намного дешевле L298P. Максимальный ток на канал этого чипа — 1 А, встроенной диодной защиты нет.

Если вы решите изготовить свой Motor Shield при помощи ЛУТ или ФР, вот соответствующая схема для одного электродвигателя:

Картинку было лень рисовать самому, поэтому я позаимствовал ее из поста H Bridge Motor Control Circuit Using L298 в блоге circuitstoday.com. Кстати, с виду весьма интересный блог. В качестве возвратных диодов Motor Shield от Амперки использует диоды Шоттки SS14. На аналогичной по функционалу китайской плате используются более дешевые диоды M7.

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

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

Рассмотренный далее робот, к примеру, способен подъехать к стене, начать карабкаться на нее, и в результате перевернуться.

Собираем радиоуправляемого робота

В мире Arduino существует великое множество готовых ходовых частей — как «собери сам», так и уже собранных; двухколесных, четырехколесных, гусеничных, паукообразных и даже гуманоидных.

Я лично использовал гусеничную платформу Rover 5, так как она продается в собраном виде и мне в свое время ее советовал @sum3rman.

На самом деле, чтобы повторить описанные далее шаги, подойдет абсолютно любая ходовая часть на колесах или гусеницах, содержащая 2 или 4 электродвигателя (не сервопривода, это сильно другая штука!).

Также я использовал упомянутый выше Motor Shield от Амперки. Вы можете использовать его, или любую аналогичную плату на базе чипа L298P.

Наконец, нам понадобится пара NRF24L01, два адаптера со стабилизатором напряжения к ним, или, предпочтительнее, один адаптер и один Joystick Shield. Напомню, что эти устройства ранее рассматривались в заметке Arduino и беспроводная связь при помощи NRF24L01.

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

Сборка робота осуществляется элементарно. Motor Shield ставится на Arduino. К винтовым клеммникам шилда подключаются электродвигатели, провода фиксируются при помощи отвертки. Если у вашей ходовой части 4 двигателя, подключите к каждому клеммнику по два электродвигателя, расположенных с одной стороны. В один момент времени эти двигатели все равно крутятся в одну и ту же сторону.

Клеммник питания я подключил к шести последовательно соединенным батарейкам AA. Соответствующий отсек для батареек шел вместе с гусеничной платформой.

Помимо прочего, отсек еще и обеспечивает платформе низкий центр тяжести. Подойдет и другой источник питания на 9 В, например, крона.

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

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

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

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

Робот и пульт управления им в собранном виде:

Дополнение: Впоследствии робот и джойстик к нему были существенно переработаны. Кроме того, был добавлен FPV. Фото улучшенной версии можно посмотреть здесь (JPG, 224 Кб).

Код прошивки робота:

#include
#include
#include “nRF24L01.h”
#include “RF24.h”

typedef struct {

  uint8_t directionM1;
  uint8_t directionM2;
  uint8_t speedM1;
  uint8_t speedM2;
} EnginesState;

const int directionM1 = 4;

const int speedM1 = 5;
const int speedM2 = 6;
const int directionM2 = 7;

const int FORWARD = HIGH;

const int BACKWARD = LOW;

const uint64_t addresses[] = { 0xAF1510009001LL, 0xAF1510009002LL };

RF24 radio(9, 10);

EnginesState enginesState;
unsigned long lastEnginesStateUpdateMs = 0;

void setDefaultEnginesState()

{
  enginesState.directionM1 = FORWARD;
  enginesState.directionM2 = FORWARD;
  enginesState.speedM1 = 0;
  enginesState.speedM2 = 0;
}

void setup()

{
  setDefaultEnginesState();

  pinMode(directionM1, OUTPUT);

  pinMode(directionM2, OUTPUT);
  pinMode(speedM1, OUTPUT);
  pinMode(speedM2, OUTPUT);

  radio.begin();

  radio.setChannel(108);
  radio.setPALevel(RF24_PA_LOW);
  radio.setDataRate(RF24_250KBPS);
  // radio.openWritingPipe(addresses[0]); // not used yet
  radio.openReadingPipe(1, addresses[1]);
  radio.startListening();
}

void loop()

{
  delay(10);

  if(radio.available())

  {
    radio.read( &enginesState, sizeof(enginesState) );
    lastEnginesStateUpdateMs = millis();
  }
  else if(millis() – lastEnginesStateUpdateMs > 500)
  {
    setDefaultEnginesState();
    lastEnginesStateUpdateMs = millis();
  }

  digitalWrite(directionM1, enginesState.directionM1);

  analogWrite(speedM1, enginesState.speedM1);

  digitalWrite(directionM2, enginesState.directionM2);

  analogWrite(speedM2, enginesState.speedM2);
}

Как видите, робот просто получает направление и скорость вращения двигателей от пульта. Если пульт не посылал никаких данных в течение 500 мс, робот останавливается. NRF24L01 иногда теряет пакеты, особенно при наличии помех от самих двигателей робота. Благодаря тому, что робот какое-то время помнит последнюю полученную команду, он будет двигаться плавно, даже если 98% пакетов теряются.

Прошивка джойстика:

#include
#include
#include “nRF24L01.h”
#include “RF24.h”

typedef struct {

  uint8_t directionM1;
  uint8_t directionM2;
  uint8_t speedM1;
  uint8_t speedM2;
} EnginesState;

/* depends on your point of view */

/*const int FORWARD = HIGH;const int BACKWARD = LOW;

*/

const int FORWARD = LOW;
const int BACKWARD = HIGH;

const int joystickX = A0;

const int joystickY = A1;
const int joystickBtn = 2;

const int THRESHOLD_LOW = 510;

const int THRESHOLD_HIGH = 530;

const uint64_t addresses[] = { 0xAF1510009001LL, 0xAF1510009002LL };

RF24 radio(9, 10);

void setup()

{
  pinMode(joystickX, INPUT);
  pinMode(joystickY, INPUT);
  pinMode(joystickBtn, INPUT);

  radio.begin();

  radio.setChannel(108);
  radio.setPALevel(RF24_PA_LOW);
  radio.setDataRate(RF24_250KBPS);
  radio.openWritingPipe(addresses[1]);
  // radio.openReadingPipe(1, addresses[0]); // not used yet
}

void loop()

{
  EnginesState enginesState;
  delay(10);

  int x = analogRead(joystickX);

  int y = analogRead(joystickY);

  if(y THRESHOLD_HIGH)
  {
    enginesState.directionM1 = BACKWARD;
    enginesState.directionM2 = BACKWARD;
    enginesState.speedM1 = map(y, THRESHOLD_HIGH, 1023, 0, 255);
    enginesState.speedM2 = enginesState.speedM1;
  }
  else
  {
    enginesState.directionM1 = FORWARD;
    enginesState.

directionM2 = FORWARD;
    enginesState.speedM1 = 0;
    enginesState.speedM2 = enginesState.speedM1;
  }

  if(x THRESHOLD_HIGH)
  {
    enginesState.speedM1 = map(x, THRESHOLD_HIGH, 1023,
                                  enginesState.

speedM1, 0);
  }

  if(digitalRead(joystickBtn) == LOW) /* rotation mode */

  {
    if(x THRESHOLD_HIGH)
    {
      enginesState.directionM1 = BACKWARD;
      enginesState.directionM2 = FORWARD;
      enginesState.speedM1 = map(x, THRESHOLD_HIGH, 1023, 0, 255);
      enginesState.speedM2 = enginesState.speedM1;
    }
  }

  radio.write( &enginesState, sizeof(enginesState) );

}

Здесь текущее положение джойстика довольно тривиально переводится в направление и скорость вращения двигателей, которые затем посылаются роботу. При нажатии на джойстик (напомню, что он кликабелен) осуществляется переход в альтернативный режим, при котором двигатели вращаются в противоположных направлениях. Этот режим позволяет роботу вращаться на месте.

Заключение

Как видите, роботов делать легко и приятно. Полную версию исходников к этой заметке вы найдете в этом репозитории на GitHub.

А пробовали ли вы делать роботов? Если да, то какие компоненты использовали? Если нет, собираетесь ли попробовать?

Дополнение: Управление серводвигателями на примере робо-руки MeArm

AVR, Электроника.

Источник: https://eax.me/arduino-robot/

Робот На Ардуино Своими Руками

Собираем простого робота на Arduino

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

Два винта

Установка двигателей и винтов в бутылки

Возьмите бутылку без крышки и вставьте мотор в её горлышко (Можно использовать изоленту если мотор меньше горлышка).

Соединение бутылок

Я использовал полиморфные трубки для изоляции проводов моторов  и изоленту для скрепления бутылок.

Электронная часть

Если вы используете motoruino, вам просто нужно подключить аккумулятор и провода двигателей к нему. Если вы используете Arduino, вам придется использовать драйвер двигателей с Н-мостом.

Я использовал ультразвуковой датчик SFR05, если вы также используете его ориентируйтесь на этот пример:

Запуск робота

Вставьте аккумулятор и Arduino в корпус и поместите его на робота. Прошейте микроконтроллер. Код и прошивка прилагается ниже.

Версии плат

Оригинальные платы Arduino производит Smart Projects .

На данный момент доступны 13 версий плат, [7] перечисленных ниже.

    Serial Arduino, программируется через последовательное соединение (разъём DB9 ), используется ATmega8. Arduino Extreme, с USB-интерфейсом для программирования, используется ATmega8. Arduino Mini, миниатюрная версия Arduino, использующая поверхностный монтаж ATmega168. Arduino Nano. ещё миниатюрнее, с питанием от USB и поверхностным монтажом ATmega168. LilyPad Arduino, минималистичный дизайн для носимых применений с поверхностным монтажом ATmega168. Arduino NG, с USB-интерфейсом для программирования, используется ATmega8. Arduino NG plus, с USB-интерфейсом для программирования, используется ATmega168. Arduino BT, с Bluetooth -интерфейсом для программирования, используется ATmega168. Arduino Diecimila, текущая версия, использует USB-интерфейс и Atmega168 в DIP28 корпусе (как на картинке). Arduino Duemilanove («2009»), на основе ATmega168 (в новых версиях ATmega328), с автоматическим выбором питания от USB или внешнего источника. Arduino Mega («2009»), на основе ATmega1280 Arduino Mega2560 («2010»), на основе ATmega2560. Используется конвертер USB-UART на базе ATmega8U2 Arduino Uno (2010) на основе ATmega328. Используется конвертер USB-UART на базе ATmega8U2

Программное обеспечение

Интегрированная среда разработки Arduino это кроссплатформенное приложение на Java. включающее в себя редактор кода. компилятор и модуль передачи прошивки в плату.

Среда разработки основана на языке программирования Processing и спроектирована для программирования новичками, не знакомыми близко с разработкой программного обеспечения. Язык программирования аналогичен используемому в проекте Wiring [5]. Строго говоря, это C++. дополненный некоторыми библиотеками. Программы обрабатываются с помощью препроцессора. а затем компилируется с помощью AVR-GCC .

Минимальная Arduino своими руками

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

Собирая робота на гусеничном шасси, я столкнулся с тем, что бутерброд из Arduino + MotorShield + Sensor Shield плюс ко всему аккумулятор и прочие компоненты обросли проводами и стали с трудом помещаться на не самом крошечном шасси. Городить еще кучу шилдов, чтобы избавиться от лишних проводов не хотелось.

Появилась идея избавиться от всего, что в Arduino не требуется в готовом девайсе. Попутно хотелось снизить стоимость робота.

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

В итоге я получил Arduino-совместимую плату, стоимостью в 210 рублей на макетной плате и в

270 рублей в готовом для наращивания функционала виде.

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

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

Сначала я хотел купить Atmega328P в DIP корпусе, чтобы воспользоваться статьей Arduino on a Breadboard и собрать Arduino на беспаечной макетке.

Но оказалось, что в DIP28 ее в Москве крайне трудно найти, да к тому же в этом корпусе она существенно дороже. Зато в наличии навалом Atmega168 в любом корпусе.

Но цена DIP28 и TQFP-32 отличается тоже довольно существенно.

Для робота на гусеничном шасси и домашней автоматизации возможностей Atmega168 более чем достаточно, поэтому поборов страх, я решил сэкономить и использовать 168ю в TQFP-32 корпусе (шаг ножек — 0.8мм)

Все компоненты кроме эпоксидной макетки я купил в Москве, в одном магазине (макетки продаются в любом радиомагазине или на рынке, просто у меня уже было 5 штук, купленных ранее на ebay).

Итак, для начала нужно припаять микроконтроллер размером 9х9 мм на DIP переходник, чтобы более комфортно с ней было работать.

mkpochtoi не работал, поэтому купить готовую макетную плату не получилось, купил макетку MP-QFP, от которой ножовкой по металлу отпилил кусок под TQFP-32.

Просмотрев видеоурок по пайке от DIHALT я водрузил микруху на макетку с помощью обычного 40Вт паяльника, потратив на это чуть больше 5 минут (опыта пайки таких мелких компонентов и вообще SMD компонентов у меня не было). В качестве флюса использовал несколько капель глицерина (попросил у девушки, она занимается мыловарением). Отмыл горячей водой и высушил феном.

40-ногую линейку PBS-40 кусачками настрогал на кусочки по 4 ножки и впаял с обратной стороны. Я взял гнезда, а не штырьки, чтобы микроконтроллерную плату можно было подключать к макетке проводками без пайки.

Дальше все как в статье — собрал на макетной плате схему, использовав datasheet от семейства Atmega 48/88/168 (номера ножек на DIP28 и TQFP-32 различаются).

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

Arduino IDE знает только Atmega168 и ничего не знает об Atmega168P (точнее Atmega168PA-AU) — более свежей версии микросхемы. Прошивать она его отказалась. А еще раньше я выяснил, что Freeduino Nano v5.

0 почему-то не хочет работать ISP программатором. Пришлось разобрать робота и достать Freeduino 2009. с помощью скетча ArduinoISP и примера на Freeduino.

ru удалось заставить avrdude игнорировать различие в сигнатуре (ключ -F) и прошить бутлоадер, фьюзы и лок.

У меня сработал такой вариант:

Прошиваем bootloader (порт COM9 нужно поменять на Ваш)

avrdude -F -C avrdude.conf -p m168p -c avrisp -P COM9 -b 19200 -e -U flash:w:optiboot_diecimila.hex

Прошиваем fuse и lock биты

avrdude -F -C avrdude.conf -p m168p -c avrisp -P COM9 -b 19200 -Uefuse:w:0x00:m -Uhfuse:w:0xdd:m -Ulfuse:w:0xff:m -Ulock:w:0x0F:m

На официальном сайте есть описание подключения для прошивки:

Как вариант, можно обновить файл avrdude.conf, прописав правильную сигнатуру, но нужды в этом особой нет.

Все, Arduino на макетке готова. Можно подключать любой USB — serial TTL (или RS-232-TTL) адаптер и зашивать скетч из Arduino IDE, выбрав Board- Arduino Diecimila, Duemilanove or Nano w/Atmega168.

Убедившись в работоспособности, я занялся переносом на макетную плату.

Сложнее всего оказалось оптимально разместить элементы. Для этого наиболее простым бесплатным инструментом оказался Fritzing. Правда нагромождение картинок и проводов выглядит страшно, но позволяет при сборке не запутаться в проводах:

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

Добавив примерно 65 р на запчасти я получил вот такой результат:

Для удобства я добавил шину питания и землю (2 гребенки справа внизу), кнопку питания, гнездо RX, TX, DTR для загрузки скетчей и ICSP разъем для прошивки микроконтроллера программатором прямо на плате.

Воткнув микроконтроллерную плату с Atmega328P-AU, можно прогапгрейдить девайсик для задач, где 16 кб под скетч не хватает. Оставшееся на макетке место я собираюсь использовать под сенсоры, драйвер мотора и прочие нужные вещи.

Вот список компонентов и цен:

Все материалы сюжета:

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

Интернет наполнен готовыми программными библиотеками и проектами с открытым исходным кодом на все случаи жизни.

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

Давай с чего-нибудь начнем? Главный вопрос — выбор контроллера. Существует множество ревизий Arduino, а также сторонних клонов, построенных на основе этих версий. Вот, пожалуй, два самых интересных для нас класса:

  • Arduino Uno — лучший выбор новичка, самая простая, бюджетная и распространенная плата. В основе — чип ATmega328 с тактовой частотой в 16 МГц, 32 Кб флеш-памяти, 2 Кб ОЗУ и 1 Кб EEPROM. В Uno 14 цифровых входов/выходов, которые могут использоваться для управления сенсорами и сервоприводами и другими устройствами

Arduino Uno

  • Arduino Mega / Mega 2560 — плата, которая подойдет в случае, когда ты заранее знаешь, что проект будет сложным. Главное отличие — большее количество входов/выходов (48 в Mega, 54 в Mega 2560). Также тут намного больше памяти: 8 Кб ОЗУ, 4 Кб EEPROM, а флеш-памяти 128 и 256 Кб (в Mega и Mega 2560 соответственно). Между собой платы также отличаются чипом, скоростью USB и некоторыми другими характеристиками.

Arduino Mega 2560

Разумеется, еще есть Arduino Pro, Arduino LilyPad и многие другие. Но сейчас давай остановимся на первых двух моделях. В нашем случае все довольно просто: Mega нужна для робота с большим количеством ног.

Первый код

Источник: http://informatik-m.ru/mir_robototehniki/robot-na-arduino-svoimi-rukami.html

Наборы Ардуино для начинающих

Собираем простого робота на Arduino

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

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

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

Недорогие наборы Ардуино в зарубежных интернет-магазинах

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

Стартовые наборы Ардуино

Набор Arduino Starter Kit обычно содержат только самые основные элементы, включая контроллер Arduino.

Расширенные наборы Arduino

Наборы и конструкторы, включающие дополнительные датчики, моторы, дисплеи. В некоторых наборах вместе с Arduino Uno предлагается еще и вариант контроллера Mega.

Большой набор Ардуино с большим количеством датчиков, шаговым двигателем, экраном, пультом и многим другим. Качественная упаковка, в комплекте инструкция на английском. Самый лучший способ начать работу с Ардуино!Набор Arduino Mega2560 с большим набором датчиков и электронных компонентов в пластиковой коробке. Мелкие детали заботливо упакованы в маленькие коробки, качественные компоненты. В комплекте диск с примерами и инструкция на английском
Популярный набор RFID Ultimate Starter Kit, включающий различны датчики, плату Arduino UNO R3 в пластиковой коробкеОдин из самых недорогих вариантов набора RFID Arduino Kit в неплохой упаковке и традиционным набором содержимого
Отличный большой набор с Arduino Mega 2560, огромным количеством датчиков и модулей. Совсем не “китайское” качество упаковки и компонентовНабор Keyestudio для юных исследователей природы с отличным набором датчиков, включая такие необычные, как датчик пыли

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

Экономный вариант для тех, у кого уже есть ардуино – просто шасси с набором двигателей, колес, держателя для батареек и проводовБольшой автомобильный комплект Arduino с возможностью управлением по Bluetooth, с датчиками, платой Arduino Uno, драйвером двигателя, шасси, 4 моторами, колесами, сервоприводом, крепежом и проводами.
Отличный качественный набор ардуино автомобиля с контроллером, с шасси, двигателями, датчиками, Bluetooth, а также LCD дисплеем!Очень популярный и недорогой набор с контроллером ардуино, шасси, драйвером двигателя и всеми остальными необходимыми деталями

Российские наборы Ардуино

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

 Arduino – это универсальный электронный конструктор. Он позволяет, благодаря удобной платформе, разрабатывать и создавать электронные устройства на основе работы микроконтроллеров, имеет открытую архитектуру и не требует знания сложного языка программирования. 

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

Набор Матрешка

Набор может быть различных модификаций – X, Y или Z, и отличается по количеству входящих в состав компонентов.

Оптимальный вариант для тех, кто совершенно не имеет опыта, а также радиодеталей для электронного конструирования.

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

Набор «Матрешка X» содержит комплект из элементов, позволяющий создать 8 электронных моделей, предлагаемых в брошюре, и не включает таких устройств, как фоторезистор, термистор, конденсаторы и т.д., которыми комплектуются наборы Y или Z.

«Матрешка Y» позволяет собрать уже 17 электронных устройств, и значительно расширена наличием дополнительных элементов. В комплекте имеются различные типы светодиодов, конденсаторы разной емкости, штырьковые соединители и пьезо-пищалка.

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

Конструктор Йодо

Набор состоит из совместимого с Ардуино контролера (Iskra JS), который обеспечивает возможность программирования на языке Java Script.

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

Технологичная плата Troyka Shield обеспечивает простое подключение модулей к плате при помощи шлейфов.

Выбрать и купить наборы и конструкторы Амперки можно на официальном сайте: http://amperka.ru/

Наборы и конструкторы Эвольвектор

В зависимости от сложности и входящих в комплект компонентов наборы делятся по предназначению на три уровня:

Для новичков оптимальным выбором станут комплекты стартового уровня, которые помогают изучить основы электроники при помощи брошюр и простых электронных компонентов.  Серия представлена такими наборами: Стартовый набор – Уровень 1 (Основы электроники), Переходный набор -Уровень 1 (набор-дополнение, как переход от стартового уровня к основному), Основной набор – Уровень 1.2.

В наборы второго уровня входят программируемые микроконтроллеры (Ардуино), и освещаются особенности работы с ними.

  Серия представлена наборами: Стартовый набор- Уровень 2 (контроллеры Ардуино), Переходный набор-Уровень 2 (есть три варианта: от старта к основному, от основного к расширенному, от расширенного к расширенному Робот+), Основной набор- Уровень 2 (контроллеры Ардуино), Расширенный набор- Уровень 2 (контроллеры Ардуино).

Комплекты третьего уровня помогают изучить миниатюрные одноплатные компьютеры Raspberry Pi и его аналоги. Серия включает: Стартовый набор. Уровень 3 (Изучение Raspberry pi).

Выбрать и купить наборы Эвольвектор можно на официальном сайте: http://www.evolvector.ru/

ЛАРТ Сармат Армага

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

ЛАРТ Печенег Батана

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

Выбрать и купить наборы ЛАРТ можно на официальном сайте: lartmaster.ru/

Конструктор Смарт Робо

Готовый конструктор для создания электронного робота на основе Ардуино, в комплект входит необходимое количество элементов, и руководство к сборке. Базовый элемент набора – плата от Keyestudio (100% аналог Ардуино).

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

Доработать и усовершенствовать полученную конструкцию можно добавив на плату дополнительные элементы, совместимые с контроллером Ардуино.

Конструктор Смарт

Серия наборов, которые отличаются по комплектации. Основной компонент – плата Smart Uno – аналог контроллера  Ардуино Уно, не уступающий ему по качественным характеристикам.

В зависимости от комплектации (Смарт 10, Смарт 20 и Смарт 30) набор содержит элементы, как для начального уровня проектирования, так и для разработки более сложных проектов.

При необходимости возможно подключение других электронных компонентов, совместимых с микроконтроллером.

Смарт Genuino

Серия наборов – Смарт 10 Genuino, Смарт 20 Genuino, Смарт 30 Genuino, которые отличны по количеству деталей в комплекте. Главный базовый компонент – плата Genuino Uno, кроме которой в составе имеются электронные детали, беспаечная макетная плата, провода и руководство по проектированию.  Набор будет интересен как новичкам, так и профессиональным пользователям.

Выбрать и купить конструктор SmartElements можно на официальном сайте: http://smartelements.ru/

Робоплатформа Robbo (ScratchDuino)

Конструктор предназначен для обучения детей и взрослых основам робототехники и электроники. Управление роботизированным механизмом может осуществляться из различных сред программирования (Scratch, Lazarus, Кумир) или же пульта управления. Базовый компонент – картридж Ардуино. В зависимости от типа комплектации варьируется количество составных элементов.

Выбрать и купить конструктор Robbo можно на официальном сайте: http://robboclub.ru/

Мастер Ардуино

Образовательный электронный конструктор, который разделен на серии, в зависимости от количества базовых компонентов (Старт, Light, XXL). Главный элемент – микроконтроллер Arduino UNO R3,  помимо которого в набор входят и другие электронные детали, необходимые для обучения робототехнике и конструированию. Наборы помогут освоить правила и особенности программирования на С/C++.

Выбрать и купить конструктор серии Мастер можно на официальном сайте: http://mbitech.ru/

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

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

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

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

Источник: https://ArduinoMaster.ru/arduino-kit/rus-konstruktory-arduino-dlya-detej/

Четвероногий робот на базе Arduino

Собираем простого робота на Arduino

Перевёл alexlevchenko для mozgochiny.ru 

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

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

Мы пройдёмся по процессу сборки, заглянем одним глазом в программный код и в конечном счете оживим детище «силиконовой долины». Советую посмотреть видео, чтобы иметь представление о том, что в итоге должно получится.

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

Шаг 1: Как это работает?

Робот имеет 4 ноги, с 3 сервоприводами на каждой из них, что позволяют ему перемещать конечности в 3-х степенях свободы. Он передвигается «ползучей походкой». Пусть она медленная, зато одна из самых плавных.

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

Шаг 2: Необходимые детали

Скелет изготавливается из оргстекла толщиной 2 мм.

Электронная часть самоделки будет состоять из:

  • 12 сервоприводов;
  • arduino nano (можно заменить любой другой платой arduino);
  • Шилда для управления сервоприводами;
  • блока питания (в проекте использовался БП 5В 4А);
  • ультразвукового датчика;
  • hc 05 bluetooth модуля;

Для того, чтобы изготовить шилд понадобится:

  • монтажная плата (предпочтительно с общими линиями (шинами) питания и земли);
  • межплатные штыревые соединители — 30 шт;
  • гнезда на плату – 36 шт;

Инструменты:

  • Лазерный резак (или умелые руки);
  • Суперклей;
  • Термоклей.

Шаг 3: Скелет

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

После этого в любой доступный способ вырезаем 30 деталей будущего робота.

Шаг 4: Сборка

После резки снимаем защитное бумажное покрытие с оргстекла.

Далее приступаем к сборке ног. Крепежные элементы встроенные в части скелета. Всё, что остаётся сделать — это соединить детали воедино. Соединение довольно плотное, но для большей надежности можно нанести по капле суперклея на элементы крепежа.

Затем нужно доработать сервоприводы (приклеить по винту напротив валов сервоприводов).

Этой доработкой мы сделаем робота более устойчивым. Доработку нужно выполнить только для 8 сервоприводов, остальные 4 будут крепиться непосредственно на тело.

Прикрепляем ноги к связующему элементу (изогнутая деталь), а его в свою очередь к сервоприводу на теле.

Шаг 5: Изготавливаем шилд

Изготовление платы довольно простое, если следовать представленным в шаге фотографиям.

Шаг 6: Электроника

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

Шаг 7: Программирование

Пришло время оживить Франкенштейна. Сначала загрузим программу legs_init и убедимся в том, что робот находится в таком положении, как на картинке. Далее загрузим quattro_test, чтобы проверить реагирует ли робот на базовые движения, такие как движение вперед, назад, влево и вправо.

ВАЖНО: Вам необходимо добавить дополнительную библиотеку в программную среду arduino IDE. Ссылка на библиотеку представлена ниже:

flexitimer2-master

Робот должен сделать 5 шагов вперед, 5 шагов назад, повернутся влево на 90 градусов, повернутся вправо на 90 градусов. Если Франкенштейн делает всё правильно, мы двигаемся в верном направлении.

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

Шаг 8: Инверсная кинематика

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

Простыми словами инверсная кинематика или сокращенно ик – «часть» тригонометрических уравнений, что определяют положение острого конца ноги, угла каждого сервоприводи и т.д., что в итоге определяют пару предварительных установочных параметров.

Для примера, длина каждого шага робота или высота на которой будет располагаться тело во время движения/покоя.

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

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

Код прикрепленный ниже – всего лишь недоработанные формулы, с которыми вы можете «повозится», подтвердить и попробовать найти лучшее методы/алгоритмы исполнения.

Шаг 9:

Как только вы увидите, что робот выполняет все базовые движения, можете приступать к доработке конструкции. Ультразвуковой датчик позволит роботу избегать препятствий на своём пути. Также можете установить модуль Bluetooth или модуль ого управления.

Для выполнения движений, вам нужно вызывать следующие функции.

  • для движения вперед — step_forward();
  • для движения назад — step_back();
  • для поворота налево — turn_left();
  • для поворота направо — turn_right();
  • стоять — stand();
  • сидеть — sit();

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

Шаг 10: QUATTRO готов!

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

(A-z Source)

Источник: http://mozgochiny.ru/electronics-2/chetveronogiy-robot-na-baze-arduino/

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.