Вы хотите научиться создавать своего собственного робота? Есть много разных типов роботов, которые можно сделать самому. Большинство людей хотят видеть, как робот выполняет простые задачи перемещения из точки А в точку Б. Вы можете сделать робота полностью из аналоговых компонентов или купить стартовый комплект с нуля! Создание собственного робота - отличный способ научиться как электронике, так и программированию.
Шаги
Часть 1 из 6: Сборка робота
Шаг 1. Соберите компоненты
Чтобы построить базового робота, вам понадобится несколько простых компонентов. Вы можете найти большинство, если не все, из этих компонентов в местном магазине электроники или в нескольких интернет-магазинах. Некоторые базовые комплекты также могут включать в себя все эти компоненты. Этот робот не требует пайки:
- Arduino Uno (или другой микроконтроллер)
- 2 сервопривода непрерывного вращения
- 2 колеса, подходящие для сервоприводов
- 1 роликовый самоустанавливающийся ролик
- 1 небольшой макет без пайки (ищите макет с двумя положительными и отрицательными линиями с каждой стороны)
- 1 датчик расстояния (с четырехконтактным соединительным кабелем)
- 1 мини-кнопочный переключатель
- 1 резистор 10 кОм
- 1 кабель USB A - B
- 1 комплект отрывных заголовков
- 1 держатель для 6 батареек AA с разъемом питания 9 В постоянного тока
- 1 упаковка перемычек или соединительного провода 22-го калибра
- Крепкий двусторонний скотч или горячий клей
Шаг 2. Переверните аккумуляторную батарею плоской задней стороной вверх
Вы будете строить тело робота, используя в качестве основы аккумуляторную батарею.
Шаг 3. Совместите два сервопривода на конце аккумуляторной батареи
Это должен быть конец, из которого выходит провод аккумуляторной батареи. Сервоприводы должны касаться дна, а вращающиеся механизмы каждого должны быть обращены к сторонам аккумуляторной батареи. Сервоприводы должны быть правильно выровнены, чтобы колеса двигались прямо. Провода для сервоприводов должны выходить из задней части аккумуляторной батареи.
Шаг 4. Закрепите сервоприводы лентой или клеем
Убедитесь, что они надежно прикреплены к аккумуляторной батарее. Задняя часть сервоприводов должна быть выровнена заподлицо с задней частью аккумуляторной батареи.
Сервоприводы теперь должны занимать заднюю половину аккумуляторной батареи
Шаг 5. Прикрепите макетную плату перпендикулярно к открытому пространству аккумуляторной батареи
Он должен немного нависать над передней частью аккумуляторной батареи и выходить за пределы каждой стороны. Прежде чем продолжить, убедитесь, что он надежно закреплен. Ряд «А» должен быть ближе всего к сервоприводам.
Шаг 6. Присоедините микроконтроллер Arduino к верхним частям сервоприводов
Если вы правильно прикрепили сервоприводы, между ними должно остаться ровное пространство. Прикрепите плату Arduino к этому плоскому пространству так, чтобы разъемы USB и питания Arduino были обращены назад (в сторону от макета). Передняя часть Arduino должна едва перекрывать макетную плату.
Шаг 7. Установите колеса на сервоприводы
Плотно прижмите колеса к вращающемуся механизму сервопривода. Для этого может потребоваться значительное усилие, поскольку колеса спроектированы таким образом, чтобы максимально плотно прилегать к ним для наилучшего сцепления с дорогой.
Шаг 8. Присоедините ролик к нижней части макетной платы
Если вы перевернете корпус, вы увидите, что за аккумуляторной батареей выходит макетная плата. Прикрепите ролик к этой удлиненной части, при необходимости используя подступенки. Колесо действует как переднее колесо, позволяя роботу легко поворачиваться в любом направлении.
Если вы купили комплект, заклинатель мог поставляться с несколькими подступенками, которые вы можете использовать для обеспечения того, чтобы заклинатель достиг земли. я
Часть 2 из 6: Подключение робота
Шаг 1. Отломите два 3-контактных разъема
Вы будете использовать их для подключения сервоприводов к макетной плате. Протолкните штифты через жатку так, чтобы штифты выходили на одинаковом расстоянии с обеих сторон.
Шаг 2. Вставьте два разъема в контакты 1–3 и 6–8 ряда E макета
Убедитесь, что они плотно вставлены.
Шаг 3. Подключите сервокабели к разъемам, при этом черный кабель должен находиться слева (контакты 1 и 6)
Это подключит сервоприводы к макетной плате. Убедитесь, что левый сервопривод подключен к левому жатке, а правый сервопривод - к правому жатке.
Шаг 4. Подключите красные перемычки от контактов C2 и C7 к контактам красной (положительной) шины
Убедитесь, что вы используете красную направляющую на задней части макетной платы (ближе к остальной части шасси).
Шаг 5. Подключите черные перемычки от контактов B1 и B6 к синим контактам шины (заземления)
Убедитесь, что вы используете синюю направляющую на задней стороне макета. Не подключайте их к контактам красного рельса.
Шаг 6. Подключите белые перемычки от контактов 12 и 13 на Arduino к A3 и A8
Это позволит Arduino управлять сервоприводами и вращать колеса.
Шаг 7. Присоедините датчик к передней части макета
Он подключается не к внешним шинам питания на макетной плате, а к первому ряду контактов с буквами (J). Убедитесь, что вы разместили его точно по центру, с равным количеством штифтов с каждой стороны.
Шаг 8. Подключите черную перемычку от контакта I14 к первому доступному контакту синей направляющей слева от датчика
Это заземлит датчик.
Шаг 9. Подключите красную перемычку от контакта I17 к первому доступному контакту красной шины справа от датчика
Это включит датчик.
Шаг 10. Подключите белые перемычки от контакта I15 к контакту 9 на Arduino и от I16 к контакту 8
Это будет передавать информацию с датчика на микроконтроллер.
Часть 3 из 6: Подключение питания
Шаг 1. Переверните робота на бок, чтобы вы могли видеть батарейки в пакете
Сориентируйте его так, чтобы кабель аккумуляторной батареи выходил слева внизу.
Шаг 2. Подключите красный провод ко второй пружине слева снизу
Убедитесь, что аккумуляторная батарея ориентирована правильно.
Шаг 3. Подсоедините черный провод к последней пружине в правом нижнем углу
Эти два кабеля помогут подать правильное напряжение на Arduino.
Шаг 4. Подключите красный и черный провода к крайнему правому красному и синему контактам на задней панели макета
Черный кабель должен быть подключен к контакту 30 синей шины. Красный кабель должен быть подключен к контакту 30 красной шины.
Шаг 5. Подключите черный провод от контакта GND на Arduino к задней синей шине
Подключите его к контакту 28 на синей направляющей.
Шаг 6. Подключите черный провод от задней синей направляющей к передней синей направляющей к контакту 29 для каждого
Не подключайте красные направляющие, так как вы можете повредить Arduino.
Шаг 7. Подключите красный провод от передней красной шины к контакту 30 к контакту 5V на Arduino
Это обеспечит питание Arduino.
Шаг 8. Вставьте кнопочный переключатель в зазор между рядами на штырях 24-26
Этот переключатель позволит вам выключить робота, не отключая питание.
Шаг 9. Подключите красный провод от H24 к красной направляющей в следующем доступном контакте справа от датчика
Это включит кнопку.
Шаг 10. С помощью резистора подключите H26 к синей шине
Подключите его к контакту непосредственно рядом с черным проводом, который вы подключили несколько шагов назад.
Шаг 11. Подключите белый провод от G26 к контакту 2 на Arduino
Это позволит Arduino зарегистрировать кнопку.
Часть 4 из 6: Установка программного обеспечения Arduino
Шаг 1. Загрузите и распакуйте IDE Arduino
Это среда разработки Arduino, которая позволяет программировать инструкции, которые затем можно загрузить в свой микроконтроллер Arduino. Вы можете бесплатно скачать его с arduino.cc/en/main/software. Разархивируйте загруженный файл, дважды щелкнув его, и переместите папку внутри в легкодоступное место. Фактически вы не будете устанавливать программу. Вместо этого вы просто запустите его из извлеченной папки, дважды щелкнув arduino.exe.
Шаг 2. Подключите аккумулятор к Arduino
Подключите разъем задней батареи к разъему на Arduino, чтобы дать ему питание.
Шаг 3. Подключите Arduino к компьютеру через USB
Windows, скорее всего, не распознает устройство.
Шаг 4. Нажмите
⊞ Win + R и введите devmgmt.msc.
Это запустит диспетчер устройств.
Шаг 5. Щелкните правой кнопкой мыши «Неизвестное устройство» в разделе «Другие устройства» и выберите «Обновить программное обеспечение драйвера»
" Если вы не видите этот параметр, нажмите «Свойства», выберите вкладку «Драйвер» и нажмите «Обновить драйвер».
Шаг 6. Выберите «Найти на моем компьютере драйверы»
" Это позволит вам выбрать драйвер, поставляемый с IDE Arduino.
Шаг 7. Нажмите «Обзор», затем перейдите в папку, которую вы извлекли ранее
Внутри вы найдете папку «драйверы».
Шаг 8. Выберите папку «драйверы» и нажмите «ОК»
" Подтвердите, что вы хотите продолжить, если вас предупреждают о неизвестном программном обеспечении.
Часть 5 из 6: Программирование робота
Шаг 1. Запустите IDE Arduino, дважды щелкнув файл arduino.exe в папке IDE
Вы увидите пустой проект.
Шаг 2. Вставьте следующий код, чтобы ваш робот двигался прямо
Приведенный ниже код заставит ваш Arduino постоянно двигаться вперед.
#include // это добавляет в программу библиотеку "Servo" // следующее создает два сервообъекта Servo leftMotor; Сервопривод rightMotor; пустая настройка () {leftMotor.attach (12); // если вы случайно поменяли номера контактов для своих сервоприводов, вы можете поменять их местами здесь rightMotor.attach (13); } void loop () {leftMotor.write (180); // при непрерывном вращении 180 указывает сервоприводу двигаться "вперед" на полной скорости. rightMotor. написать (0); // если оба они на 180, робот будет двигаться по кругу, потому что сервоприводы перевернуты. «0» указывает ему двигаться на полной скорости «назад». }
Шаг 3. Соберите и загрузите программу
Нажмите кнопку со стрелкой вправо в верхнем левом углу, чтобы создать и загрузить программу в подключенный Arduino.
Возможно, вы захотите поднять робота с поверхности, так как он просто продолжит двигаться вперед после загрузки программы
Шаг 4. Добавьте функцию аварийного отключения
Добавьте следующий код в раздел «void loop ()» своего кода, чтобы включить аварийный выключатель, над функциями «write ()».
if (digitalRead (2) == HIGH) // это регистрируется, когда кнопка нажата на контакте 2 Arduino {while (1) {leftMotor.write (90); // "90" - нейтральное положение для сервоприводов, которое говорит им, чтобы они прекратили вращение вправо Motor.write (90); }}
Шаг 5. Загрузите и протестируйте свой код
Добавив код аварийного выключателя, вы можете загрузить и протестировать робота. Он должен продолжать движение вперед, пока вы не нажмете переключатель, после чего он перестанет двигаться. Полный код должен выглядеть так:
#include // следующее создает два сервообъекта Servo leftMotor; Сервопривод rightMotor; пустая настройка () {leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) {в то время как (1) {leftMotor.write (90); rightMotor.write (90); }} leftMotor.write (180); rightMotor.write (0); }
Часть 6 из 6: Пример
Шаг 1. Следуйте примеру
Следующий код будет использовать датчик, прикрепленный к роботу, чтобы он поворачивался влево всякий раз, когда он сталкивается с препятствием. См. Комментарии в коде для получения подробной информации о том, что делает каждая часть. Код ниже представляет собой всю программу.
#include Servo leftMotor; Сервопривод rightMotor; const int serialPeriod = 250; // это ограничивает вывод на консоль до одного раза в 1/4 секунды unsigned long timeSerialDelay = 0; const int loopPeriod = 20; // это устанавливает, как часто датчик принимает показания до 20 мс, что является частотой 50 Гц без знака long timeLoopDelay = 0; // это назначает функции TRIG и ECHO контактам на Arduino. Измените здесь числа, если вы подключили иначе const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // это определяет два возможных состояния робота: движение вперед или поворот налево #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = движение вперед (ПО УМОЛЧАНИЮ), 1 = поворот налево void setup () {Serial.begin (9600); // эти конфигурации выводов датчика pinMode (ultrasonic2TrigPin, OUTPUT); pinMode (ultrasonic2EchoPin, ВХОД); // это назначает моторы выводам Arduino leftMotor.attach (12); rightMotor.attach (13); } void loop () {if (digitalRead (2) == HIGH) // это обнаруживает переключатель уничтожения {while (1) {leftMotor.write (90); rightMotor.write (90); }} debugOutput (); // это выводит отладочные сообщения на последовательную консоль if (millis () - timeLoopDelay> = loopPeriod) {readUltrasonicSensors (); // это указывает датчику считывать и сохранять измеренные расстояния stateMachine (); timeLoopDelay = миллис (); }} void stateMachine () {if (state == DRIVE_FORWARD) // если препятствия не обнаружены {if (ultrasonic2Distance> 6 || ultrasonic2Distance <0) // если перед роботом ничего нет. ultrasonicDistance будет отрицательным для некоторых ультразвуковых устройств, если нет препятствий {// движение вперед rightMotor.write (180); leftMotor.write (0); } else // если перед нами объект {state = TURN_LEFT; }} else if (state == TURN_LEFT) // если препятствие обнаружено, поверните налево {unsigned long timeToTurnLeft = 500; // поворот на 90 градусов занимает около 0,5 секунды. Вам может потребоваться отрегулировать это, если ваши колеса имеют другой размер, чем в примере unsigned long turnStartTime = millis (); // сохраняем время начала поворота while ((millis () - turnStartTime) <timeToTurnLeft) // остаемся в этом цикле, пока не истечет время timeToTurnLeft {// повернуть налево, помните, что когда оба установлены на "180", он повернется. rightMotor.write (180); leftMotor.write (180); } состояние = DRIVE_FORWARD; }} void readUltrasonicSensors () {// это для ультразвукового датчика 2. Возможно, вам придется изменить эти команды, если вы используете другой датчик. digitalWrite (ultrasonic2TrigPin, HIGH); delayMicroseconds (10); // поддерживает высокий уровень триггерного вывода не менее 10 микросекунд digitalWrite (ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn (ultrasonic2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration / 2) / 29; } // следующее предназначено для отладки ошибок в консоли. void debugOutput () {если ((millis () - timeSerialDelay)> serialPeriod) {Serial.print ("ultrasonic2Distance:"); Серийный принт (ultrasonic2Distance); Serial.print («см»); Serial.println (); timeSerialDelay = millis (); }}