Як змайструвати домашнього робота?

Як змайструвати домашнього робота?

  
Впевнений, прочитавши статтю або подивившись відео на одному з каналів 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


Зібравши механічні комплектуючі, наприклад, може вийти такий варіант платформи з 4 провідними колесами:

 

Далі встановивши плати, акумулятори, модуль для зв'язку і з'єднавши всі дроти згідно зі схемою, яку теж бажано накреслити на папері або в спеціалізованій програмі, наприклад вийти такий варіант для експериментів:

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

// 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, за допомогою яких можна запрограмувати розпізнавання осіб, рухи кольоровими маяками та багато всього цікавого. Все залежить тільки від твоєї фантазії та вмінь.


В цій категорії немає товарів.