Простой робот
проект по информатике (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 класс "Простые и сложные предложения. Как отличить сложное предложение от простого предложения?"...

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

Цель урока: создание педагогических условий для ознакомления учащихся с понятиями "простые и сложные предложения"; сформировать представление о простых и сложных предложениях....

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

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