Простой робот
проект по информатике (4 класс)

Олеся Шкуратова

Рассмотрим построение простого робота на Arduino UNO, который объезжает препятствия. На рисунке 1 представлено фото этого робота. На рисунке 2 - фото Arduino motor drive shield-L298N, который управляет двумя двигателями, установленными на двухколесной платформе. На рисунке показаны положение трех переключателей, а также соединение motor drive с двигателями. Питание двигателей с motor drive и сервопривода выполняется отдельным источником питания -  Li-ion 18650 аккумуляторами, а питание контроллера Arduino - плоским li-ion аккумулятором напряжением ~4 вольт малой емкости. Целесообразно использовать два источника питания - отдельно Arduino и motor drive с двигателями, так как Arduino начинает работать очень неустойчиво.

Скачать:

ВложениеРазмер
Файл prostoy_robot.docx276.27 КБ

Предварительный просмотр:

- Простой робот, который объезжает препятствия

Простой робот на Arduino UNO с ультразвуковым дальномером HC-SR04 для объезда препятствий

    Рассмотрим построение простого робота на Arduino UNO, который объезжает препятствия. На рисунке 1 представлено фото этого робота. На рисунке 2 - фото Arduino motor drive shield-L298N, который управляет двумя двигателями, установленными на двухколесной платформе. На рисунке показаны положение трех переключателей, а также соединение motor drive с двигателями. Питание двигателей с motor drive и сервопривода выполняется отдельным источником питания -  Li-ion 18650 аккумуляторами, а питание контроллера Arduino - плоским li-ion аккумулятором напряжением ~4 вольт малой емкости. Целесообразно использовать два источника питания - отдельно Arduino и motor drive с двигателями, так как Arduino начинает работать очень неустойчиво.

https://www.sites.google.com/site/webstm32/_/rsrc/1521730783057/robot_ultrasonic/robot.jpg

Рис. 1. Фото робота

https://www.sites.google.com/site/webstm32/_/rsrc/1521730783057/robot_ultrasonic/sil_rob1.jpg

Рис.2. Фото Arduino motor drive shield-L298N

    На роботе установлен ультразвуковой дальномер HC-SR04 с помощью которого определяется расстояние до препятствия с последующим объездом его. В свою очередь дальномер установлен на сервоприводе. В случае, если расстояние до препятствия менее 25 см, робот останавливается, перемещается назад, а сервопривод поворачивает дальномер примерно на 60 градусов для поиска расстояния, больше 25 см. Далее робот поворачивается в этом направлении и продолжает движение пока опять не встретит препятствие.  На рисунке 3 представлена схема соединений контроллера Arduino UNO, Arduino motor drive shield-L298N ,ультразвукового дальномера HC-SR04, сервопривода и двух двигателей.

https://www.sites.google.com/site/webstm32/_/rsrc/1521730783057/robot_ultrasonic/cxema.JPG

Рис.3. Схема соединений

Ниже представлен текст программы в среде Arduino IDE с  описанием:

#include "Ultrasonic.h"

//motor A

int dir1PinA = 13;  // 13-й и 12 выводы Ардуино контролируют направление вращения

int dir2PinA = 12;  // двигателя А

int speedPinA = 10; // 10-й вывод Ардуино контролирует скорость врашения двигателя А

//motor B

int dir1PinB = 11;  // Аналогично для мотора В

int dir2PinB = 8;

int speedPinB = 9;

float ab=0,bb=0;

Ultrasonic ultrasonic(4,5); 

void setup()

{

pinMode (dir1PinA, OUTPUT); // Выводы 13,12,10,11,8,9 назначаются выводными

pinMode (dir2PinA, OUTPUT);

pinMode (speedPinA, OUTPUT);

pinMode (dir1PinB, OUTPUT);

pinMode (dir2PinB, OUTPUT);

pinMode (speedPinB, OUTPUT);

pinMode(7,OUTPUT);

analogWrite (speedPinA,153); // Устанавливается максимальная скорость вращения

analogWrite (speedPinB,150);

 delay(4000); 

 step(1400); // Устанавливаем Ultrasonic прямо

  /* задаем скорость общения. В нашем случае с компьютером */

//    Serial.begin(9600);

}

unsigned int impulseTime=0;

float a=0;

void step(unsigned int imp){ //Функция работы с сервоприводом

  digitalWrite(7,HIGH);        

  for(int i=0;i<25;i++)

  {

    digitalWrite(7, HIGH); //Запись высокого уровня в вывод 7 Ардуино

    delayMicroseconds(imp);  

    digitalWrite(7, LOW);

    delay(20);

  }

void loop()

{

  a=ultrasonic.Ranging(CM);

//  Serial.println(a);

  if (a<25) // Если расстояние менее 25 сантиметров

  {

//Стоп 

sto(); delay(1000);

backw();

delay(300);

sto();

step(800); // Поворачиваем Ultrasonic вправо (если смотреть сзади робота)

ab=ultrasonic.Ranging(CM); // Определение расстояния

delay(1000);

if(ab >25 ) {right(); delay(300);  forw(); step(1400); goto aa;}

else {step(2100); }// Поворачиваем Ultrasonic влево (если смотреть сзади робота)

bb=ultrasonic.Ranging(CM);

delay(1000);

if(bb>25) { left(); delay(300); forw(); step(1400);  goto aa;}

else {step(1400); delay(1000);}

backw();

delay(500);

sto();

delay(1000);

right(); delay(300);

}

  else 

  {

  //Вперед

forw();

  }  

 aa: ; 

  delay(100);

}

void forw() // Вперед

{

digitalWrite (dir1PinA, LOW);

digitalWrite (dir2PinA, HIGH);

digitalWrite (dir1PinB, LOW);

digitalWrite (dir2PinB, HIGH);  

}

void right() // Вправо

{

digitalWrite (dir1PinA, LOW);

digitalWrite (dir2PinA, HIGH);

digitalWrite (dir1PinB, HIGH);

digitalWrite (dir2PinB, LOW); 

}

void left() // Влево

{

digitalWrite (dir1PinA, HIGH);

digitalWrite (dir2PinA, LOW);

digitalWrite (dir1PinB, LOW);

digitalWrite (dir2PinB, HIGH); 

}

void sto() // Стоп

{

digitalWrite (dir1PinA, LOW);

digitalWrite (dir2PinA, LOW);

digitalWrite (dir1PinB, LOW);

digitalWrite (dir2PinB, LOW);  

}

void backw() // Назад

{

digitalWrite (dir1PinA, HIGH);

digitalWrite (dir2PinA, LOW);

digitalWrite (dir1PinB, HIGH);

digitalWrite (dir2PinB, LOW);  

}

В программе использована библиотека Ultrasonic для работы с датчиком расстояний HC-SR04, которую легко найти в Интернете.


По теме: методические разработки, презентации и конспекты

Простые и сложные предложения. Знаки препинания в простом и сложном предложении.

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

Тест "Повторение простого настоящего и простого прошедшего времени"

Данный тест содержит задания, направленные на повторение следующих тем "Present Simple Tense" и "Past Simple Tense", а также множественного числа имен существительных (исключения)....

Present Simple and Past Simple (Настоящее простое и прошедшее простое время, упражнения)

Present Simple and Past Simple (Настоящее простое и прошедшее простое время, упражнения)...

Конспект урока по русскому языку 4 класс Тема: "Простые и сложные предложения. Как отличить сложное предложение от простого предложения?"

Конспект урока по русскому языку 4 класс "Простые и сложные предложения. Как отличить сложное предложение от простого предложения?"...

История робототехники. Что такое робот. Виды современных роботов

Технологическая карта занятия "История робототехники. Что такое робот. Виды современных роботов"...

Разработка урока по теме "Конструирование робота. Преобразование конструкции робота".

Разработка урока по теме "Конструирование робота. Преобразование конструкции робота", подразумевающая сборку действующей модели робота из набора LEGO EV3 Mindstorms по инструкции, изучение р...