Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Pathfinder

Компоненты и расходные материалы

Arduino UNO
Один из основных компонентов.
× 1
Ультразвуковой датчик - HC-SR04 (общий)
Один из основных компонентов.
× 1
Литий-ионный аккумулятор 1000 мАч
Один из основных компонентов.
× 2
Общий катод, рассеянный RGB
Один из основных компонентов.
× 1
Зуммер
Один из необходимых материалов.
× 1
Резистор 330 Ом
Один из необходимых материалов.
× 3
Кабель USB-A - B
Один из необходимых материалов.
× 1
Перемычки (общие)
Один из необходимых материалов.
× 20

Необходимые инструменты и машины

Arduino Materia 101
Одна из основных машин.
Цифровая отвертка
Один из необходимых инструментов.

Приложения и онлайн-сервисы

IDE Arduino
Одно из основных приложений.
Autodesk Fusion 360
Одна из онлайн-служб.

Об этом проекте

Сводка

В документе представлена ​​конструкция робота для избегания препятствий, способного обнаруживать объекты на своем пути и перемещаться вокруг этих объектов, принимая правильное решение. Он демонстрирует роботизированный блок на базе 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 с.} 

Изготовленные на заказ детали и корпуса

Шасси
Шасси робота для соответствующей настройки этой автономной машины.

Схема

Принципиальная схема для соответствующей настройки этой автономной машины.

Производственный процесс

  1. Компоненты схемы
  2. Интегральная схема
  3. Отправка данных датчика от одного Arduino к другому с помощью Firebase
  4. Цифровые игральные кости Arduino
  5. Многотемпературный датчик
  6. Игровой контроллер Arduino
  7. MOSMusic
  8. Что такое микроэлектроника?
  9. Компоненты сверлильного станка
  10. Компоненты двигателя внутреннего сгорания