Pathfinder
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 20 |
Необходимые инструменты и машины
| ||||
|
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
Сводка
В документе представлена конструкция робота для избегания препятствий, способного обнаруживать объекты на своем пути и перемещаться вокруг этих объектов, принимая правильное решение. Он демонстрирует роботизированный блок на базе Arduino UNO и Adafruit Motor Shield, код которого написан в программном обеспечении Arduino IDE. Избегание препятствий - один из важных ключевых факторов при разработке мобильных роботов. Использование ультразвукового датчика расстояния, размещенного на микро-серводвигателе, позволило повысить точность обнаружения окружающих объектов. Этот разработанный робот отличается от других доступных роботов из-за интеграции магнитного зуммера и рассеянного светодиода CC RGB, с помощью которого он достиг способности указывать процедуру обнаружения объекта и контролировать скорость мотор-редукторов постоянного тока в 4 типах обстоятельств. В качестве автономного робота была реализована возможность маневрировать в неизвестных условиях без какого-либо удара. Кроме того, эта разработанная технология может быть использована для военных операций и оказания гуманитарной помощи за счет повышения способности обнаружения объектов в различных средах.
Мультимедиа
Интерпретация
Включенные библиотеки, добавленные в блочный код, следующие:
AFMotor.h
Servo.h
Определенные соединения, назначенные во встроенном коде, следующие:
определить BuzzPIN A0
определить TrigPIN A1
определить EchoPIN A2
определить LEDBPIN A3
определить LEDGPIN A4
определить LEDRPIN A5
определить DCMROFF 25
Предполагаемая программа, представленная в архитектуре робота, выглядит следующим образом:
- Возможность обнаруживать объекты на своем пути по заранее заданному диапазону расстояний.
- Ищите новый путь относительно открытого направления.
- Укажите обнаружение объекта и контролируйте его скорость.
Все операции будут выполняться автономно без какого-либо внешнего управления.
В этом проекте представлены основные детали для разработки мобильного робота, который был реализован с возможностью обхода препятствий, самостоятельной навигации и индикации движения мотор-редукторов постоянного тока путем включения селективного цвета рассеянного светодиода CC RGB в 4 различных ситуациях. Разработанный робот показал отличия от других роботов, уклоняющихся от препятствий, с точки зрения светозвуковой индикации, управления скоростью двигателя и техники интенсивного маневрирования, обнаруживая препятствия с диапазоном 180 градусов перед роботом; что было сложно совместить с помощью правильного программирования. Робот был построен на платформе Arduino UNO Rev3 с помощью программного обеспечения Arduino IDE v1.8.5 для интеграции правильного ассемблерного кода для получения необходимых функций. Эта интеграция сделала робота способным выполнять необходимые операции без участия человека и со значительной точностью. Благодаря дальнейшим разработкам за счет объединения вещательной камеры и беспроводной технологии, этот робот может эффективно использоваться в военных операциях для обнаружения различных видов деятельности, в то время как его базовые блоки могут быть полезны для помощи людям с нарушениями зрения или слуха в уведомлении о местонахождении окружающих объектов.
Витрина проекта Youth Zest
Код
- Программа
Программа Arduino
Программа сборки для соответствующей настройки этой автономной машины.#include// Добавить Adafruit Motor Shield для библиотеки комплекта Arduino. # Include // Добавить библиотеку сервомотора. #Define BuzzPIN A0 // Назначьте PIN-код A0 как BuzzPIN (соедините PIN-код Arduino UNO «A0» с PIN-кодом зуммера «+»). # Define TrigPIN A1 // Назначьте PIN-код A1 как TrigPIN (подключите PIN-код Arduino UNO «A1» к ультразвуковому датчику сонара «Trig» PIN). # Define EchoPIN A2 // Назначьте PIN A2 как EchoPIN (соедините PIN Arduino UNO «A2» с PIN-кодом ультразвукового датчика сонара «Trig»). # Define LEDBPIN A3 // Назначьте PIN A3 как LEDBPIN (подключите Arduino UNO «A3» ПИН с ПИН-кодом диффузного общего катода RGB «LEDB»). # Define LEDGPIN A4 // Назначьте ПИН A4 как LEDGPIN (соедините ПИН Arduino UNO «A4» с ПИН-кодом диффузного общего катода RGB «LEDG»). # Define LEDRPIN A5 // Назначьте ПИН A5 как LEDRPIN (Подключите ПИН Arduino UNO «A5» к ПИН-каналу «LEDR» с диффузным общим катодом RGB). #Define DCMROFF 25 // Устанавливает смещение, чтобы учесть различия между двумя тяговыми двигателями постоянного тока. AF_DCMo тор M1 (1, MOTOR12_64KHZ); // Создаем DCMotor # 1, используя выход M1, устанавливаем частоту PWM 64 кГц AF_DCMotor M2 (2, MOTOR12_64KHZ); // Создаем DCMotor # 2, используя выход M2, устанавливаем частоту PWM 64 кГц.Servo SER1; // Создание объекта Servo для управления поиском Servo.int (void) {// Объявление переменной целочисленного типа. float Duration =0,0; // Объявление переменной типа Float. поплавок CM =0,0; // Объявление переменной типа Float. digitalWrite (TrigPIN, LOW); // Вывод TrigPIN как 0 В (низкий логический уровень). delayMicroseconds (2); // Задержка на 2 мкс, отправка импульса высокого уровня 10 мкс на ультразвуковой датчик сонара "TrigPIN". digitalWrite (TrigPIN, HIGH); // Выход TrigPIN как 5V (высокий уровень логики). delayMicroseconds (10); // Задержка на 10 мкс. digitalWrite (TrigPIN, LOW); // Вывод TrigPIN как 0 В (низкий логический уровень). Длительность =pulseIn (EchoPIN, HIGH); // Начинаем отсчет времени, до снова EchoPIN вернемся к логике «Высокий уровень» и поместим «Время» в переменную с именем «Продолжительность». CM =(Длительность / 58,8); // Преобразуем расстояние в см. вернуть CM; // Возврат к CM.} Int RightDistance, LeftDistance; // Расстояния по обе стороны. Float Distance =0.00; // Объявление переменной типа с плавающей запятой .void setup () {// Цикл установки. pinMode (BuzzPIN, ВЫХОД); // Объявить BuzzPIN как «Выходной PIN». pinMode (TrigPIN, ВЫХОД); // Объявить TrigPIN как «Выходной PIN». pinMode (EchoPIN, ВХОД); // Объявить EchoPIN как «Выходной PIN». pinMode (LEDBPIN, ВЫХОД); // Объявить LEDBPIN как «Выходной PIN». pinMode (LEDGPIN, ВЫХОД); // Объявить LEDGPIN как «Выходной PIN». pinMode (LEDRPIN, ВЫХОД); // Объявить LEDRPIN как «Выходной PIN». SER1.attach (10); // Присоединяет сервопривод к выводу 10 (SER1 на Adafruit Motor Shield для набора Arduino к сервообъекту).} Void loop () {// Главный цикл. SER1.write (80); // Сообщает сервоприводу положение под углом 80 градусов (лицом вперед). задержка (100); // Задержка на 0,1 с. Расстояние =Поиск (); // Измерение расстояния в см. if (Distance <30) {// Если препятствие найдено в 30см. digitalWrite (BuzzPIN, HIGH); // Вывод BuzzPIN как 5 В (высокий уровень логики). digitalWrite (LEDBPIN, LOW); // Вывод LEDBPIN как 0 В (низкий логический уровень). digitalWrite (LEDGPIN, LOW); // Вывод LEDGPIN как 0 В (низкий логический уровень). digitalWrite (LEDRPIN, HIGH); // Вывод LEDRPIN как 5V (высокий уровень логики). M1.setSpeed (100); // Снизить скорость. M2.setSpeed (100); // Снизить скорость. ChangePath (); // Если вперед заблокирован Сменить направление. } else if ((Distance> =30) &&(Distance <60)) {// Если обнаружено препятствие между 30 см и 60 см. digitalWrite (BuzzPIN, LOW); // Вывод BuzzPIN как 0 В (низкий логический уровень). digitalWrite (LEDBPIN, HIGH); // Вывод LEDBPIN как 5 В (высокий уровень логики). digitalWrite (LEDGPIN, LOW); // Вывод LEDGPIN как 0 В (низкий логический уровень). digitalWrite (LEDRPIN, LOW); // Вывод LEDRPIN как 0 В (низкий логический уровень). M1.setSpeed (150); // Скорость немного увеличивается. M2.setSpeed (150); // Скорость немного увеличивается. Вперед (); // Робот движется в прямом направлении. } else if ((Distance> =60) &&(Distance <90)) {// Если обнаружено препятствие между 60 см и 90 см. digitalWrite (BuzzPIN, LOW); // Вывод BuzzPIN как 0 В (низкий логический уровень). digitalWrite (LEDBPIN, LOW); // Вывод LEDBPIN как 0 В (низкий логический уровень). digitalWrite (LEDGPIN, HIGH); // Вывод LEDGPIN как 5V (высокий уровень логики). digitalWrite (LEDRPIN, LOW); // Вывод LEDRPIN как 0 В (низкий логический уровень). M1.setSpeed (200); // Ускорение. M2.setSpeed (200); // Ускорение. Вперед (); // Робот движется в прямом направлении. } else {// Если препятствие не может быть найдено в 90 см. digitalWrite (BuzzPIN, LOW); // Вывод BuzzPIN как 0 В (низкий логический уровень). digitalWrite (LEDBPIN, HIGH); // Вывод LEDBPIN как 5 В (высокий уровень логики). digitalWrite (LEDGPIN, HIGH); // Вывод LEDGPIN как 5V (высокий уровень логики). digitalWrite (LEDRPIN, HIGH); // Вывод LEDRPIN как 5V (высокий уровень логики). M1.setSpeed (250); // Скорость увеличивается полностью. M2.setSpeed (250); // Скорость увеличивается полностью. Вперед (); // Робот движется в прямом направлении. }} void ChangePath () {// Цикл смены пути. Останавливаться (); // Робот останавливается. Назад (); // Робот бежит в обратном направлении. Останавливаться (); // Робот останавливается. SER1.write (12); // Проверяем расстояние вправо. задержка (500); // Задержка 0,5 с. RightDistance =Поиск (); // Устанавливаем правильное расстояние. задержка (500); // Задержка 0,5 с. SER1.write (160); // Проверяем расстояние слева. задержка (1000); // Задержка на 1 с. LeftDistance =Поиск (); // Устанавливаем расстояние слева. задержка (500); // Задержка 0,5 с. SER1.write (80); // Вернуться в центр. задержка (500); // Задержка 0,5 с. CompareDistance (); // Находим наибольшее расстояние.} Void CompareDistance () {// Цикл сравнения расстояний. if (RightDistance> LeftDistance) {// Если справа меньше препятствий. Поверните направо (); // Робот поворачивает направо. } else if (LeftDistance> RightDistance) {// Если Left меньше препятствий. Поверните налево (); // Робот поворачивает налево. } else {// Если оба имеют одинаковые препятствия. Повернись (); // Робот разворачивается. }} void Forward () {// Цикл вперед. M1.run (ВПЕРЕД); // Поверните двигатель постоянного тока №1 вперед. M2.run (ВПЕРЕД); // Поверните DCMotor # 1 в положение Вперед.} Void Backward () {// Обратный цикл. M1.run (НАЗАД); // Поверните двигатель постоянного тока №1 назад. M2.run (НАЗАД); // Поверните двигатель постоянного тока № 2 назад. задержка (500); // Задержка на 1 с.} Void TurnRight () {// Цикл правого поворота. M1.run (НАЗАД); // Поверните двигатель постоянного тока №1 назад. M2.run (ВПЕРЕД); // Поверните двигатель постоянного тока № 2 вперед. M1.setSpeed (100 + DCMROFF); // Калибровка скорости двигателя постоянного тока №1. задержка (300); // Задержка на 0,7 с.} Void TurnLeft () {// Цикл левого поворота. M1.run (ВПЕРЕД); // Поверните двигатель постоянного тока №1 вперед. M2.run (НАЗАД); // Поверните двигатель постоянного тока № 2 назад. M2.setSpeed (100 + DCMROFF); // Калибровка скорости двигателя постоянного тока №2. задержка (300); // Задержка на 0,7 с.} Void TurnAround () {// Цикл Trun Around. M1.run (ВПЕРЕД); // Поверните двигатель постоянного тока №1 вперед. M2.run (НАЗАД); // Поверните двигатель постоянного тока № 2 назад. M2.setSpeed (100 + DCMROFF); // Калибровка скорости двигателя постоянного тока №2. задержка (700); // Задержка на 2,1 с.} Void Stop () {// Остановить цикл. M1.run (РЕЛИЗ); // Отпускаем DCMotor # 1. M2.run (ВЫПУСК); // Отпускаем DCMotor # 2. задержка (100); // Задержка на 0,1 с.}
Изготовленные на заказ детали и корпуса
Шасси
Шасси робота для соответствующей настройки этой автономной машины.Схема
Принципиальная схема для соответствующей настройки этой автономной машины.Производственный процесс
- Компоненты схемы
- Интегральная схема
- Отправка данных датчика от одного Arduino к другому с помощью Firebase
- Цифровые игральные кости Arduino
- Многотемпературный датчик
- Игровой контроллер Arduino
- MOSMusic
- Что такое микроэлектроника?
- Компоненты сверлильного станка
- Компоненты двигателя внутреннего сгорания