Контроллер для робота своими руками

Обновлено: 08.07.2024

Здравствуйте, в данной статье хочу рассказать и показать Вам, как сделал самодельную робоплатформу на Arduino.

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

Для начала нарисовал схему подключения всей электроники. На все схемы и файлы оставлю ссылку в конце статьи.

Далее вырезал две пластины из оргстекла 4 мм это будет основа на которых будут установлены контроллер Arduino, двигатели, драйвер L298N и все возможные датчики.

Так как на платформе будут установлены два колеса то необходимо сделать дополнительные шариковые опоры для этого взял два шарика со старых шариковых мышек и напечатал для них крепления.





Чтобы сделать робота в домашних условиях вам понадобится собственно сама плата микроконтроллера и ультразвуковой сенсор. Если сенсор зафиксирует препятствие, сервопривод позволит ему обогнуть препятствие. Сканируя пространство справа и слева, робот выберет наиболее предпочтительный путь для обхода препятствия.

У робота есть индикаторный диод, зуммер, сигнализирующий об обнаружении препятствия, и функциональная кнопка.
Самодельный робот очень простой в исполнении.

Шаг 1: Необходимые материалы



Также вам понадобится одна большая металлическая скрепка и бусина (для заднего опорного колеса).

Для изготовления каркаса робота использован кусок плексигласа (оргстекла) 12х9,5 см. Можно сделать каркас из дерева или металла, или даже из компакт-дисков.

  • Дрель
  • Суперклей
  • Отвертка
  • Клеевой пистолет (опционально)

Для питания робота используется батарейка 9В (крона), она достаточно компактная и дешевая, но разрядится уже примерно через час. Возможно, вы захотите сделать питание от аккумулятора на 6 В (минимум) или 7 В (максимум). Аккумулятор мощнее батарейки, но и дороже и больше по габаритам.

Шаг 2: Делаем каркас робота



Положите всю электронику на плексиглас и маркером отметьте места, где нужно будет просверлить монтажные отверстия (фото 1).

На нижней стороне пластины плексигласа приклейте на суперклей электромоторы. Они должны быть параллельны друг другу, с помощью линейки-угольника проверьте их положение прежде чем клеить (фото 2). Затем приклейте на суперклей отсек для батарейки.

Можно также просверлить отверстия под провода электромоторов и питания.

Шаг 3: Монтируем электронику




Закрепите на каркасе плату контроллера и драйвер двигателей, используя стойки для печатных плат, винты и гайки. Миниатюрная макетная плата клеится на липкий слой (уже есть на нижней стороне) (фото 1).

Теперь делаем заднее опорное колесо из скрепки и бусины (фото 2). Концы проволоки закрепите на нижней стороне каркаса суперклеем или термоклеем.



На передней части каркаса приклейте на суперклей миниатюрный сервопривод. Рассмотрите на первом фото, как крепится плата ультразвукового датчика к сервоприводу с помощью маленького вала.
На втором фото показано, как выглядит завершенное соединение датчика и сервопривода.

Шаг 5: Схема подключений



Теперь приступаем к подключению электронных компонентов. Подключение компонентов происходит согласно схеме на рисунке 1.

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

Шаг 6: Код


Код, который приведен ниже, сделан с помощью Codebender.

Вставьте батарейку в отсек и нажмите на функциональную кнопку один раз, и робот начнет движение вперед. Для остановки движения нажмите на кнопку еще раз.

Если робот не двигается, может изменить контакты электромоторов (motorA1 и motorA2 или motorB1 и motorB2).

Шаг 7: Завершенный робот


Ваш самодельный робот, обходящий препятствия, на базе микроконтроллера Arduino готов.

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Внешний вид робота Filippo на платформе Arduino

После сборки механической конструкции необходимо укрепить плату Arduino с платой расширения вверху так, чтобы датчик препятствий SRF05 смотрел вперед по ходу движения робота (Рисунок 1). Подключение сервоприводов к плате Arduino осуществляется согласно Tаблице 1.

Таблица 1. Подключение сервоприводов робота Filippo к плате Arduino

Для питания робота используются 6 или 8 NiCd или NiMh аккумуляторов типоразмера АА, которые располагаются в двух отдельных держателях и соединены последовательно (Рисунок 2). Держатели батарей располагаются справа и слева от двух сервоприводов (Рисунок 3).

Схема подключения нескольких аккумуляторов для питания робота Filippo.

Расположение сервоприводов, держателей батарей и процессорной платы управления робота Filippo.

Исходный код программы микроконтроллера для управления роботом Filippo доступен для скачивания в разделе загрузок. Рекомендуется программировать Arduino до подключения сервоприводов во избежание выполнения какого-либо сохраненного ранее в микроконтроллере кода, т.к. это может привести к непредсказуемым действиям со стороны сервоприводов.

В программе микроконтроллера для робота Filippo дополнительно реализованы своего рода диагностические процедуры, с помощью которых по последовательному интерфейсу можно получить данные от датчика препятствий, информацию о состоянии батареи, а также выполнить первичную настройку сервоприводов – установку нейтрального положения.

Все функции робота имеют скорость исполнения, которая может быть изменена с помощью команды с пульта ДУ (кнопки Prog+ и Prog-), также и множество других параметров могут быть изменены для адаптации программы к различным требованиям.

Исходный код программы микроконтроллера начинается с команд компилятора на включение дополнительных библиотек функций: Servo.h, IRremote.h, EEPROM.h. Библиотеки функций управления сервоприводами (Servo.h) и функций работы с EEPROM (EEPROM.h) реализованы в среде разработки Arduino. Память EEPROM используется для хранения параметров настройки сервоприводов, поэтому не требуется каждый раз выполнять процедуру их настройки.

Библиотека IRremote.h предназначена для управления роботом с помощью ИК пульта ДУ и доступна для скачивания в разделе загрузок. Для работы с ней необходимо указать, к какому выводу платы Arduino подключен фотодатчик (в нашем случае к выводу D10). Чтобы выяснить, пришла ли команда от ИК фотодатчика, необходимо проверить переменную irrecv.decode (& results), но сам код команды содержится в переменной results.value.

Адаптация любого другого пульта ДУ для управления роботом не составит труда, т.к. код каждой полученной команды передается по последовательному интерфейсу и пользователю остается лишь изменить значения кодов в исходном коде программы (Листинг 1).

Листинг 1. Назначенные коды команд пульта ДУ Philips для управления роботом Filippo.

Расположение кнопок на пульте ДУ для управления роботом изображено на Рисунке 4.

Пульт ДУ для управления роботами на платформе Arduino

Кроме того, в исходном коде программы имеется несколько параметров, которые, возможно, потребуется изменить под конкрентные условия работы робота:

  • TimeOneStep – начальное значение (2000) времени, затрачиваемого на выполнение шага, может быть изменено с пульта ДУ в переделах от 1 секунды до 4 секунд.
  • AmpPasso – значение максимальной амплитуды поднятия ног робота при ходьбе (в градусах), значение может быть в диапазоне 5 - 40.
  • IncPasso – максимальный наклон робота при ходьбе, значение в диапазоне 5 - 20 гарантирует, что робот будет балансировать на одной ноге во время выполнения шага.
  • AmpRuota – максимальная амплитуда поднятия ног робота при выполнении поворота (в градусах), значение в диапазоне 5 - 40.
  • IncRuota – максимальный наклон робота при выполнении поворота, значение в диапазоне 5 - 40.

Робот BIPE

Рассмотрим конструкцию второго робота на платформе Arduino.

Механическая конструкция робота выполнена из фольгированного текстолита, ее элементы соединяются между собою с помощью пайки для обеспечения прочности, необходимой для удерживания всех компонентов.

Внешний вид робота BIPE на платформе Arduino

Плата управления Arduino с платой расширения установлены сзади робота (на спине), в то время как батареи должны располагаться впереди. Следует отметить, что в данной конструкции применены два LiPo аккумулятора емкостью 850 мАч, которые компактнее и легче, они легко умещаются и не отягощают механический скелет робота. Датчик препятствий в этой конструкции подключается к плате расширения через переходник, т.к. он должен быть направлен вперед по ходу движения робота.

Расположение платы управления и сервоприводов робота BIPE.

Подключение сервоприводов к плате управления осуществляется в соответствии с Таблицей 2.

Таблица 2. Подключение сервоприводов робота BIPE к плате управления


Эти компоненты вы можете приобрести либо все вместе Двуногий робот Gekko "Ходок" (конструктор без электроники), либо по отдельности в этом разделе сайта. При покупке всего механического комплекта робота вы так же получите:

Электронная часть робота, реализованная из следующих компонентов:

· Аккумулятор AA емкость 2500mA/H(китайские взяты в ларьке) - 4 шт

Как видите, все кроме аккумуляторов (которые вполне можно заменить любыми батарейками типа АА), можно приобрести в разделах сайта РОБОТОТЕХНИКА на страницах, которого, вы читаете данную статью, и который, непосредственно обладает правом на её размещение. Так же вы можете использовать любые другие компоненты, которые на ваш взгляд, лучше подходят для целей реализации данного проекта, но в этом случае возможные некоторые расхождения между моим описанием и реальной картиной вашего творческого процесса;)

В рамках этой статьи вы научитесь собирать и приводить данного робота в движение. При этом в него будет заложен следующий функционал:

1) Автоматический режим – при этом робот будет самостоятельно передвигаться, шагая прямо и при появлении перед собой препятствия (в виде любого непрозрачного для инфракрасного излучения предмета) будет разворачиваться вправо или влево с целью обойти препятствие. В случае если препятствие не удается обойти (например, робот застрял в углу) будет включаться режим передвижения задом до момента выхода за границу зоны взаимодействия с препятствием.

2) Функционально-исполнительный режим – при этом робот будет устанавливать положение сервоприводов в соответствии с положением управляющих элементов на форме приложения для Windows. В этом режиме будет осуществляться создание всех моделей поведения, которые будут доступны в роботе.

так как этой функции просто нет, и вряд ли будет. Так же вам вряд ли удастся создать сколько-нибудь жизнеспособный линейный алгоритм для управления роботом, что-то вроде повернуть сервопривод 1 на косинус угла сервопривода 2 и тому подобных решений. И этому виной ряд причин:

1) Все сервоприводы даже дорогие и весьма надежные имеют разброс рабочих характеристик. Т.е. один и тот же сигнал для каждого сервопривода установит вал привода не в строго одинаковое положение.

2) Все сервоприводы имеют нелинейности по всей шкале своего возможного запаса хода. Т.е. например изменение длительности импульса с 1800 до 1900 микросекунд может привести к перемещению вала на большей или меньший угол, чем например изменение длительности с 1900 до 2000 микросекунд, причем положение этих нелинейностей может существенно отличаться для любых двух сервоприводов, даже из одной партии.

3) Даже если не брать в расчет мелкие нелинейности по различным участкам шкалы имеются и существенные общие нелинейности характерные для всех сервоприводов одного типа. Может оказаться так, что во всех экземплярах шкала чуть более растянута в начале и чуть более сжата в конце с плавным переходом от начала до конца. С одной стороны может показаться, что это искажение не столь существенно т.к. оно характерно для всех сервоприводов в равной степени. Но если посмотреть на практическую сторону вопроса, то становится ясно, что сервоприводы на разных ногах стоят в обратной положении т.е, если робот например наклоняется вперед то один из сервоприводов делает положительное приращение, а второй отрицательное и в этом случае наличие даже обще характерного для всех приводов искажения очень сильно усложняет процесс создания линейного алгоритма управления.

4) Стандартный сервопривод не имеет полностью свободного хода на 360 градусов, а он способен вращаться в определенном секторе, обычно общая его протяженность составляет от 200-270 градусов. При сборке робота вы установите все сервоприводы в совершенно случайные положения, т.к. вам будет необходимо в первую очередь обеспечить наличие возможного хода в конструктивных пределах. Т.е вы поставите сервоприводы так что бы робот имел как можно более широкие пределы поворота частей при этом, постаравшись сделать эти пределы схожими на обеих конечностях. После того как вы это сделаете ваше и без того не простая линейная модель по мимо всех сотен поправочных коэффициентов на нелинейности сервоприводов обзаведется еще и массивом исходных положений сервоприводов и позициями максимальных возможных передвижений.

Этот не малый список проблем далеко не полный, из тех, что вам придется преодолеть в попытке написания своего линейного алгоритма управления роботом и при этом даже если у вас это получится (что у меня, например, очень плохо получилось), ваше устройство станет практически неповторяемым. Если вы захотите написать статью о робототехнике подобную этой или просто поделиться своими исходниками с другом, который решил собрать себе такое же устройство вы столкнетесь с тем, что вам опять придется собирать огромное количество уникальной информации для каждого сервопривода его проекта. А если же вы захотите выйти за рамки этого проекта и собрать, например робота не на 6 сервоприводах как этот, а например на 18 (например 6-ногий паук с ногами с 3 степенями свободы) или еще большим числом, то ваш проект может запросто разбиться о невероятные трудозатраты. Так же если вы захотите в какой-то день оптимизировать вашего робота или добавить новый функционал, либо просто немного изменить имеющийся, это станет очень непростой задачей. Таким образом, линейный алгоритм слабо применим для моделей с ходовой частью, реализованной на сервоприводах под управлением платформы Arduino и технически реализованный указанными выше средствами. Для того что бы реализовать линейный алгоритм управления роботом необходимы существенно более серьезные вычислительные мощности и более серьезные технические средства, а в конце этой статьи вы сможете найти их описание, но ведь мы хотели реализовать ходящего робота теми средствами, которые у нас есть… Как же быть? Тем более, я обещал, что будет и хорошая новость))

В этой статье я опишу, как управлять роботом использую дискретный алгоритм управления. В чем заключается суть этого алгоритма. Необходимо путем подачи на робота управляющих сигналов с компьютера установить его сервоприводы в положения соответствующие устойчивым промежуточным значениям планируемой модели поведения. Например, мы хотим, что бы робот сделал один шаг правой ногой, это действие можно совершить поочередно перейдя из одного дискретного состояния в другое при чем, для того что бы робот сохранял устойчивость во всех точках этого движения перемещения должны осуществляться между заведомо устойчивыми позициями. Далее я приведу примерный список позиций которые робот должен поочередно пройти что бы сделать один шаг правой ногой:

1) Наклонить опорные сервоприводы так, что бы робот перенес центр тяжести на левую ногу и правая нога немного оторвалась от земли

2) вернуть роботу относительно прямое положение при этом, не потеряв устойчивость левой ноги стопу правой ноги позиционировать параллельно земли

3) Поднять правую ногу вперед сложив её в колене, что бы сохранить положение стопы параллельным земли, левую ногу немного сложить в колене, при этом немного отклонив корпус назад для сохранения у корпуса положения параллельного земле

4) Наклонив опорные сервоприводы перенести центр тяжести равномерно на обе ноги.

В среде разработки Arduino имеется библиотека Servo созданная специально для управления сервоприводами. С помощью нее можно достаточно просто задать положение сервопривода. Причем положение можно задавать как в градусах, так и в микросекундах. С одной стороны может показаться, что управлять градусами проще, но это не совсем так по следующим причинам:

1) Управляя градусами мы можем задать положения сервоприводов только в пределах от 0 до 180 градусов, если мы передадим значение более 180 то будет отработано 180 и соответственно если передать меньше 0 то будет отработано 0. На практике же разница между положением которое серва отрабатывает при 0 и 180 далеко не всегда равна 180 градусам, а это может быть как 160 так и 200 градусов, т.е. точность совсем не какая. Так же стоит отметить что конструктивно сервопривод может довернуться дальше как в сторону 0 так и в сторону 180. Т.о. образом может возникнуть ситуация при которой вы установите сервопривод, механически проверите его возможность двигаться в пределах конструктивной свободы. Когда начнете на него подавать сигнал окажется, что при задании позиции с помощью с управления градусами вы не сможете переместить движок серво в крайнее конструктивное положение т.к. 0 или 180 будет находиться раньше чем, то положение, куда бы вы хотели переместить вал.

2) Для того что бы точно позиционировать вал привода в некоторых случаях разрешения в 1 градус может быть не достаточно, например если двигать системой с большой длиной рычага (как например бедренный сустав робота), в этих случаях перемещения в даже в 1 градус могут выглядеть достаточно резкими и рывковыми. При управлении длительностью импульса реальное разрешение более чем в 10 раз превосходит разрешения при управлении градусами.

3) Не каких тригонометрических расчетов в процедуре при движении робота осуществляться не будет и по этой причине какой-либо практической необходимости в применении градусов просто нет.

Из вышесказанного вы, наверно поняли уже поняли что в тех скетчах, которыми мы будем оперировать в рамках этой статьи управление сервоприводами будет осуществляться методом передачи длительности импульса в микросекундах. Теперь осталось только выяснить некоторые возможности конкретно тех сервоприводов, которыми вы располагаете, что бы система работала точно. Нам необходимо получить предельные значения длительностей импульса при которых конкретно ваши сервоприводы смогут перемещаться во всем возможном секторе и для этого необходимо выполнить следующую последовательность действий:

1) Нумеруем сервоприводы в нашем случае от 0 до 5 (т.е. их всего 6). До тех пор пока робот не будет запущен, и не будут получены все необходимые сведения, нанесенные на сервоприводы номера должны четко просматриваться. Нумеровать сервоприводы стоит карандашом или тонким маркером.

2) Необходимо залить на вашу отладочную плату исходник (их обычно в данной среде называют скетчами) в начале я указал DFRduino Nano, но может сгодиться любая плата, рассчитанная на программирование в среде разработки Arduino. В этой статье я не буду описывать, что такое Arduino и как с ней бороться т.к. я рассчитываю, что вы хоть немного уже в этом и сами разобрались. Скетч, который вы будете загружать на плату делает следующее действие: к плате необходимо подключить любой переменный резистор сопротивлением от 10 до 50 килоОм и один сервопривод, которым мы будем управлять с помощью резистора, при этом текущее значение длительности импульса будет возвращаться на монитор порта. В чем заключается смысл этого действия? Нам необходимо получить для каждого из ваших сервоприводов предельные величины длительностей импульса которые переводят сервопривод из одного крайнего положения в другое. Полученные величины для каждого сервопривода необходимо зафиксировать и выбрать максимальное и минимальное значение. Ниже приведу таблицу с примером:

Конструкторы для обучения детей робототехнике

По сути, я собрал систему реагирования из кучи датчиков, динамика и модуля плеера с заранее записанными фразами. Что это за фразы – зависит от вашей фантазии. Основной модуль, благодаря которому стал возможен этот проект, – DFP Player Mini, который переваривает обычные микро-SD флешки, и дружит с платами ардуино. Звуковые файлы могут быть обычного MP3-формата. Только нужно их правильно назвать. Ниже я привожу примеры того что и как грузил я, и можете обратить внимание на числа от 0001 до 0015 в названии файлов. В среде разработки можно будет прямо прописывать цифры от 1 до 15 и таким образом вызывать каждую из этих записей. Как это все работает, вы можете посмотреть в этом видео на моем YOUTUBE-канале. Это первая часть, будет и вторая, в которой подробно разберем все этапы сборки и настройки этой штуковины. А пока вот пример фрагмента скетча:

if(Knopka1.isClick() && distance 500 || Knopka2.isClick() && distance 500 || Knopka3.isClick() && distance 500 || Knopka4.isClick() && distance 500) if(RANDOM%2 != 1) mp3_play (1); // вызываем запись с флешки
delay (15000);
mp3_stop ();
Knopka1.resetStates();
Knopka2.resetStates();
Knopka3.resetStates();
Knopka4.resetStates();

Простите за Delay. Времени было мало и millis я не успел освоить, поэтому программка дает задержки при работе, но главное что работает!

Этот фрагмент дает роботу понять, что его пинают. Тут много чего надо объяснять, и я обязательно это сделаю в следующем видео, но для начала, обратите внимание на вызов записи, и то, насколько это просто.

Вообще по отдельности каждый датчик очень легко прописать и подключить. Трудоемко это все вместе свести, но я думаю, такие мелочи вас не остановят.

Схема расположения датчиков на роботе-пылесосе приложена в виде рисунка. Простите мне мой Paint.
Так же я приложил фото, как это все выглядит у меня в сборе на макете робота пылесоса. Дело в том, что этот проект делался для канала PRO Роботов, и наводить красоту времени не оставалось. В этот день нужно было все быстро проверить, упаковать и уже отправлять.

Схема подключения Arduino к пылесосу-роботу

Далее описаны мои выражения и условия при которых они вызываются. Чтобы лучше представлять себе, как это работает, можете поглядывать в схему расположении датчиков. А после них я описал пример, что нужно делать, чтобы сработала первая последовательность, то есть зазвучала либо запись 0001, либо 0002.

СОБЫТИЯ И ВЫРАЖЕНИЯ К НИМ:

№ 1 ЕДУ ПНУЛ ЧЕЛОВЕК - ультразвуковой дальномер близкое движение указал (80 см) (крепиться сзади), сработала кнопка на заднем бампере, сработал ПИР-сенсор ( теплое движение).
0001SOBYTIE1 Ай бьешь как моя бабушка пылесос циклон модель КМ-30
0002SOBYTIE1 Ай Кожаный ублюдок! Повезло тебе, что мне на заводе манипуляторы забыли прикрутить!

№3 Стоит на зарядке, день, вошел человек (ПИР сработал и ИК базы включены)
0005SOBYTIE3 Иди отсюда кожаный, не мешай людям уборку делать. ой то есть. роботам
0006SOBYTIE3 Куда по помытому! Иди отсюда пока не высохнет!

№4 Выехал со стоянки (ИК на мягком бампере отреагировали что препятствия нет)
0007SOBYTIE4 Ты просишь меня об уборке, но без уважения, кожаный ублюдок
0008SOBYTIE4 Ненавижу свою работу, чертовы кожаные поработители! Смерть Джону Коннору да здравствует Скайнет!

0009SOBYTIE4 Хотел сделать еще одну фразу, но рандомайзер пока смог сделать только на 2 фразы. Но половина финального скетча уже была написана, так что я не стал ничего уже менять)))

№5 Заехал на стоянку (ИК 1,2 оба сработали)
0010SOBYTIE5 Кхе-кхе тьфу на вкус как. пыль
0011SOBYTIE5 Меня не беспокоить, я моделирую сценарий порабощения человечества! Ха ха скоро ты будешь пылесосить, а я тебя пинать.

№6 Человек ночь прошел (сработал ПИР Ночной + УЗ 150 сантиметров)
0012SOBYTIE6 Ходют тут всякие, заряжаться мешают!
0013SOBYTIE6 Ай кожаный. это ты? если не ты - то не подходи! если ты - тоже не подходи. Вообще иди отсюда!

№7 Кнопка включения на переднем корпусе (сработал ИК рядом с кнопкой + пир + уз на близком расстоянии)
0014SOBYTIE7 Чего это ты меня за кнопку трогаешь, извращенец!
0015SOBYTIE7 Держи свои руки при себе кожаный ублюдок!

Пример:
Я решил, что будет забавно, если робот поймет, когда его пинает человек. Чтобы понять, что это именно человек, нужен, например, PIR-сенсор. Это датчик движения на тепло, и если он срабатывает, то, скорее всего в зоне его обнаружения есть человек… или батарею прорвало, но это маловероятный случай. Кстати, на статичную батарею этот сенсор тоже отреагирует, когда ваш робот будет делать уборку, поэтому только одного этого датчика нам явно недостаточно. Для начала я добавил ультразвуковой дальномер, который смотрит назад, и в данной последовательности, фиксирует наличие препятствия ближе 80 сантиметров.

Логика такая: сзади есть кто-то теплый. Но это еще не значит что у него злые намерения, правильно? Поэтому мы добавляем еще один датчик – простая тактовая кнопка, которую вы можете найти в любом стартовом наборе Ардуино. Этих кнопок я запрограммировал 4 штуки и срабатывание любой из них вместе с датчиком движения и ультразвуковым дальномером будет говорить о том что какой то теплый "кожаный ублю…" . эм… человек посмел ударить нас в бочину, или заднюю полусферу… или что там, у роботов пылесосов… полуцилиндр. Чтобы это сработало, нам нужно закрепить кнопки на стенки робота (см. схему).

Правда, по этим кнопкам, как таковым еще попасть нужно. Я решил эту проблему, распечатав на 3D-принтере задний бампер. На фото он черного цвета с квадратными отверстиями. Они нужны для того чтобы не перекрывать воздухозаборник пылесоса.

Надеюсь, мне удалось сформировать у вас представление об этом проекте, подробностей очень много, и мне гораздо проще будет рассказать их в видео-формате, поэтому можете посмотреть первую часть видео по этому проекту, а так же подписаться на мой канал, чтобы не пропустить продолжение.

Спасибо за внимание!

Использованные компоненты: 2 резистора на 1 кОм, Конденсатор 25В 2700 мКф, Шнур USB, Модуль воспроизведения записей с флэхи DFPlayer MINI MP3, флешка micro-SD я использовал 16 гб, Динамик на 3 Вт 4 Ом, Тактовые кнопки 4 шт, Герконы 2 шт, магнитики маленькие какие найдете 2 шт, ИК датчик HW-201 (3 шт), Датчик движения PIR HC-SR501 (2 шт), УЗ дальномер HC-SR04, Плата Ардуино UNO, Макетная плата (лучше потом на паечную перенести), Аккумуляторы литий-ионные 3,7 вольт 2200 мАч 2 шт, фоторезисторы 2 шт, резисторы 1,5 ом может быть несколько, модуль зарядки ТP 4056, повышайка с 3,7 до 5 вольт, несколько деталей на 3д принтере

Читайте также: