Как собрать домашнего робота?

   Уверен, прочитав статью или посмотрев видео на одном из каналов YouTube про роботов, Вам не раз хотелось собрать своего робота, но Вы не знали с чего начать. Конечно, у Вас не получится построить двуногого терминатора, но мы и не стремимся к этому. Собрать простого робота может любой, кто умеет правильно держать паяльник в руках и для этого не нужно глубоких знаний, хотя они и не помешают. Любительское роботостроение мало чем отличается от схемотехники, только гораздо интереснее, потому что тут так же затронуты такие области, как механика и программирование. Все компоненты легкодоступны и стоят не так уж и дорого. Прогресс не стоит на месте, и мы будем его использовать в свою пользу.
 
   Итак. Что же такое робот? В большинстве случаев это автоматическое устройство, которое реагирует на какие-либо действия окружающей среды.  
   Роботы могут управляться человеком или выполнять заранее запрограммированные действия. Обычно на роботе располагают разнообразные датчики расстояния, угла поворота, ускорения, видеокамеры, манипуляторы. Электронная часть робота состоит из микроконтроллера (МК) – микросхема, в которую заключён процессор, тактовый генератор, различная периферия, оперативная и постоянная память. В мире существует огромное количество разнообразных микроконтроллеров для разных областей применения и на их основе можно собирать разнообразных роботов. Для любительских построек широкое применение нашли микроконтроллеры AVR. Они, на сегодняшний день, самые доступные и в интернете можно найти много примеров на основе этих МК. Чтобы работать с микроконтроллерами тебе нужно уметь программировать на ассемблере или на Си и иметь начальные знания в цифровой и аналоговой электронике. В нашем проекте мы будем использовать Cи. Программирование для МК мало чем отличается от программирования на компьютере, синтаксис языка такой же, большинство функций практически ничем не отличаются, а новые довольно легко освоить и ими удобно пользоваться.
 
   Для начала наш робот будет уметь просто объезжать препятствия, то есть повторять нормальное поведение большинства животных в природе. Всё что нам потребуется для постройки такого робота можно будет найти в нашем интернет магазине. Решим, как наш робот будет передвигаться. Наиболее удобное решение это колёса ими удобно управлять (для поворота достаточно вращать колеса в разные стороны). На сайте можно выбрать понравившееся шасси с моторами и колесами. Так же нам потребуется плата с микроконтроллером, мой выбор пал на KYIV UNO аналог Arduino UNO REV3, но с рядом доработок и улучшений в сторону качества (микропроцессор ATmega328P) – у него достаточно портов для подключения датчиков и периферии и вообще он довольно удобный.
    

Плата KYIV UNO

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


Модуль DC/DC (Step down) 

   На борту имеется АЦП, ШИМ, USART и много другого, что мы пока использовать не будем. Рассмотрим несколько важных узлов. 
   О том, как прошивать KYIV UNO, я рассказывать не буду, так как об этом можно прочитать в интернете. Писать программу мы будем на Cи, в качестве среды программирования я выбрал Arduino IDE. Это довольно удобная среда и полезна новичкам, потому что имеет встроенный мастер создания кода.
 
   Не менее важным компонентом в нашем роботе является драйвер двигателей, который облегчает нам задачу в управлении им. Никогда и ни в коем случае нельзя подключать двигатели напрямую к плате Arduino! Вообще мощными нагрузками нельзя управлять с микроконтроллера напрямую, иначе он сгорит. Пользуйтесь ключевыми транзисторами. Для нашего случая есть готовый модуль – L298P.

                                                      

Шилд управления двигателями L298P
 
    В подобных несложных проектах всегда можно использовать именно этот модуль. Этой микросхемой очень легко управлять и её просто достать в радиотехнических магазинах.  Поэтому саму микросхему мы будем питать от стабилизатора напряжения, а двигатели напрямую от аккумуляторов. L298P выдерживает нагрузку 2А, и имеет два канала, то есть к одной плате можно подключить два двигателя. 
 
   Чтобы наш робот мог ориентироваться и не врезался во всё, мы установим на него ультразвуковой датчик.  В нашем случае есть уже готовый модуль  HC-SR04.
   Принцип такой: Ультразвуковой датчик расстояния определяет расстояние до объекта, измеряя время отображения звуковой волны от объекта. Частота звуковой волны находится в пределах частоты ультразвука, что обеспечивает концентрированное направление звуковой волны, так как звук с высокой частотой рассеивается в окружающей среде меньше. Типичный ультразвуковой датчик расстояния состоит из двух мембран, одна из которых генерирует звук, а другая регистрирует отображенное эхо. Образно говоря, мы имеем дело со звуковой колонкой и микрофоном. Звуковой генератор создает маленький, с некоторым периодом ультразвуковой импульс и запускает таймер. Вторая мембрана регистрирует прибытие отображенного импульса и останавливает таймер. От времени таймера по скорости звука возможно вычислить пройденное расстояние звуковой волны. Расстояние объекта приблизительно половина пройденного пути звуковой волны.


                                                            
Вариант ультразвукового датчика HC-SR04

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

// MakeRobot

const int trig = 8;
const int echo = 9;
const int leftForward = 2;
const int leftBackward = 3;
const int rightForward = 4;
const int rightBackward = 5;

int duration = 0;
int distance = 0;

void setup() 
{
  pinMode(trig , OUTPUT);
  pinMode(echo , INPUT);
  pinMode(leftForward , OUTPUT);
  pinMode(leftBackward , OUTPUT);
  pinMode(rightForward , OUTPUT);
  pinMode(rightBackward , OUTPUT);
  pinMode (10, OUTPUT);
  pinMode (11, OUTPUT);
  
  Serial.begin(115200);
  Serial.print ("===  MakeRobot Ultrasonic ===");

}

void loop()
{
  digitalWrite(trig , HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig , LOW);


  duration = pulseIn(echo , HIGH);
  distance = (duration/2) / 28.5 ;
  Serial.print ("Forward distance: ");
  Serial.println(distance);

  digitalWrite(10, HIGH);
  digitalWrite(11, HIGH);

  if ( distance < 30 )
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , HIGH);
    delay(40);
   
  }
  else
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , HIGH);
    
  }
 
}

Следующие строки условные, потому что значения зависят от того, как Вы подключили драйвер двигателей к своему микроконтроллеру:

const int leftForward = 2;
const int leftBackward = 3;
const int rightForward = 4;
const int rightBackward = 5;
   
Следующей конструкцией мы проверяем, есть ли перед роботом препятствие:
 
if ( distance < 30 )
  {
    digitalWrite(leftForward , HIGH);
    digitalWrite(leftBackward , LOW);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , HIGH);
    delay(100);
   
  }
  else
  {
    digitalWrite(leftForward , LOW);
    digitalWrite(leftBackward , HIGH);
    digitalWrite(rightForward , LOW);
    digitalWrite(rightBackward , HIGH);
    
  }
   
   Рассмотрено большинство аспектов, которые помогут собрать первого робота. Но на этом робототехника не заканчивается. После сборки этого робота у Вас появится куча возможностей для его расширения. Можно усовершенствовать алгоритм робота, как например, если препятствие не с какой-то стороны, а прямо перед роботом. Помимо ультразвуковых датчиков существуют, и инфракрасные тоже не лишены недостатков, но в последнее время не менее популярны у роботостроителей. Для того, чтобы робот мог реагировать на звук, было бы неплохо установить микрофон с усилителем. Но по-настоящему интересным, я считаю, установка камеры и программирование на её основе машинного зрения. Есть набор специальных библиотек OpenCV, с помощью которых можно запрограммировать распознавание лиц, движения по цветным маякам и много всего интересного. Всё зависит только от твоей фантазии и умений.
 
Источник для написания статьи: https://geektimes.ru/post/256234/
 



В данной категории нет товаров.