Управление двигателями робота на основе микроконтроллера arduino

Содержание

Шаг 5: комбинирование и фильтрация данных


Один из наиболее популярных методов совмещения данных с акселерометра и гироскопа – это использование комплементарного фильтра. Данные с гироскопа и акселерометра содержат шумы, у гироскопа ещё есть так называемый дрейф нуля. Комплементарный фильтр компенсирует дрейф нуля гироскопа за счёт использования данных с акселерометра и является фильтром высоких частот для гироскопа и фильтром низких частот для акселерометра.

currentAngle = 0.9934 * (previousAngle + gyroAngle) + 0.0066 * (accAngle)

0.9934 и 0.0066 являются коэффициентами фильтра для интервала времени 0.75с. Фильтр нижних частот пропускает через него любой сигнал, длительность которого превышает эту длительность, а фильтр верхних частот пропускает любой сигнал, длина которого меньше этой длительности. Отклик фильтра можно настроить, выбрав правильную постоянную времени. Понижение постоянной времени позволит увеличить горизонтальное ускорение.

Устранение ошибок смещения акселерометра и гироскопа

Загрузите в Arduino скетч MPU6050_calibration.ino для калибровки смещений MPU6050. В скетче FullCode.ino в функции setup() есть следующие строчки:

mpu.setYAccelOffset(1593);

mpu.setZAccelOffset(963);

mpu.setXGyroOffset(40);

В этих строчках замените числа на полученные при калибровке.

Инструкция по сборке робота-автомобиля

В этой статье расскажем вам о том, как по шагам собрать универсального робота на колесной или гусеничной платформе.  Управлять им будет микроконтроллер Ардуино нано. Если вам не нравится долго читать, посмотрите в конце статьи на видео, подготовленное нашими партнерами – каналом ArduMast Club.

Пример платформы робота-машины на Ардуино

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

Для реализации проекта нам понадобится:

  • Контроллер Ардуино (в нашем случае, Arduino Nano).
  • Драйвер двигателя L298N.
  • Двигатели с редукторами.
  • Корпус и шасси для крепления колес и оборудования
  • Корпус для аккумуляторов 18650 с выключателем.
  • Коммутационные провода.

Дополнительное оборудование, которое потребуется для создания полноценного проекта:

  • Датчик расстояния и серво-мотор, на который он установлен.
  • Инфракрасные датчики линии.
  • Светодиоды для индикации и “красоты”.
  • Пьезодинамик – пищалка.
  • Bluetooth модуль (если собираетесь управлять машинкой дистанционно).
  • Sensor shield (упрощает коммутацию).
  • Модуль контроля заряда и подзарядки аккумуляторов.
  • Сами аккумуляторы.

Схема электропитания робота автомобиля

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

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

Схема питания и подключения двигателей в ардуино автомобиле

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

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

Схема питания с контролем разряда аккумулятора

Теперь аккумуляторы будут защищены, но здесь нет возможности заряжать их.

Для зарядки можно использовать модуль повышения напряжения с 5v до необходимого уровня зарядки, который зависит от количества серий используемых аккумуляторов. Он имеет гнездо типа микро USB и при частом использовании оно может сломаться, поэтому мы рекомендуем установить дополнительное гнездо для последующей подзарядки пяти вольтовым блоком питания. Для зарядки двух литий-ионных аккумуляторов необходимо настроить выходное напряжение на 8,4 Вольта.

Схема питания с модулем зарядки для ардуино робота машинки

Подключаем двигатели и плату

С питанием платформы мы разобрались, теперь подключим остальные компоненты. Для начала припаиваем провода к моторам, затем обматываем их изолентой, чтобы случайно в дальнейшем не оторвать контакты. Можно сделать так, что в итоге на 2 двигателя будут идти всего два провода вместо 4х. Это немного упростит монтаж и сэкономит место на платформе.

Монтируем драйвер двигателей на платформу так, чтобы его радиатор был спереди

ЭТО ВАЖНО! В противном случае, вам придется переписывать программу для микроконтроллера. Драйвер двигателя для Ардуино робота

Затем размещаем холдер и плату БМС. Не забываем оставлять место спереди для последующего монтажа каких-либо сенсоров. Ардуиио нужно разместить так, чтобы была в дальнейшем возможность подключить его к ПК для прошивки. Это же правило относится и к модулю для зарядки аккумуляторов.

Питание для ардуино и других электронных компонентов мы возьмем от драйвера двигателей.

Подключаем Bluetooth к машинке

Мы собираемся использовать модуль Bluetooth через  SoftwareSerial (библиотеку SoftwareSerial.h), поэтому подключаем модуль блютуз к 3 и 4 цифровым пинам ардуино.  RX к D3,   TX к D4

Датчик расстояния машины

Платформа робота готова! Теперь осталось загрузить прошивку для контроллера Ардуино и программу для смартфона RC CAR. Вы можете посмотреть на нашем сайте обзор Android приложений для работы с Arduino.

Шаг 1. Детали, которые понадобятся

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

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

Хорошая новость заключается в том, что нужно только собрать руку, запрограммировать Arduino, а приложение уже доступно для загрузки бесплатно.

  1. Серводвигатели — 4 штуки
  2. Нарезанный кусок картона — сделать «тело».
  3. USB OTG (на фото ниже, выбрать любой).
  4. И, конечно, плата Arduino (любая).
  5. Несколько перемычек, чтобы сделать соединения.
  6. Для питания серводвигателей используется 9-вольтная батарея.

В уроке использованы микросерверы SG90, но любая модель или размер вполне подойдут. Вы можете использовать до 5 сервоприводов для этого робота, у нас всего 4.

USB On-the-Go или просто OTG – это адаптер, который позволяет подключать к вашему смартфону переферийные устройства, такие как клавиатура, мышь, контроллеры, жесткие диски и прочее. Этот переходник фактически превращает ваше устройство в компьютер.

Step 7: Assembling

First of all we are going to mount three servos on the top of battery holder. Take off the stickers from the sides of our servos – we are gluing servos, not stickers. Cut off mounting tabs, we don’t need them and they are taking too much space. Be careful, servo cases are very breakable. Take one servo and glue it to the top of the battery holder. This would be central servo for middle legs. It’s output shaft should be directed towards the controller. Try to position the servo the same way as you see on my photos. Note that we should leave some space for a tiny breadboard beside the servo and some space in front of it to mount middle legs. Glue two other servos to the battery holder and to the sides of the first one but turn their output shafts up. Now let’s mount our breadboard. Take off the sticker that protects the tape’s glue. I don’t trust this tape so I recommend to put some hot glue right above the tape’s glue and to one long side of the breadboard. Check the photos to see the result. Repeat the circuit you’ve made on the prototyping step. I attached the picture of it to this step again. Note that IR receiver should be directed up. I faced two difficulties while connecting the wires to the controller. The first one is that my jump wires had too long connectors. And when I plugged them to +5V, GND and A0 pins my servos couldn’t move. To solve this issue just bend the connectors at 90°. The other difficulty is that the wires from battery holder are too thin. I couldn’t fix them in Vin and GND pins of the controller. The fast and easy solution is to double flat the wires. I tried it (you can see on the photo) and it works. But frankly I’m afraid that these wires could be broken if to plug and unplug the connections for several times. That’s why I used connectors — the same connectors as on the jump wires. Now turn on the switch on battery holder, take the IR remote and check that Ringo works. After you send stop command the sketch will move servos to zero position (90°). It is a safe position to mount servo horns. I suggest to use cross horns. The horn for middle servo should be oriented horizontally. And the horns for left and right servos should be oriented at 45° to the sides. Check the photos. Don’t forget to screw servo horns. And cut off long inner parts of the horns that can conflict to each other while moving.

Step 8: Making Legs

Attentively explore the pictures above. I’ve made photos with marks that will help you to understand the stencils. You can see named points that are used in stencils to mark the intervals of steel wire. Follow stencils’ steps and bend wire.

Two remarks about middle legs.

  1. The shape of these legs is a little bit more complicated than the stencil. So bend the steel wire following the stencil and after that look at the top view photo and correct the shape. If you don’t do that middle and front legs can collide.
  2. I made these legs in the stencil longer than they should be. It’s better to cut some wire than let middle legs hang in the air.

Now the final straight! You should hot-glue these legs to the servo horns: first front-hind legs, than middle legs. Be neat but don’t worry if you make a mistake. To correct it just warm the glue again.

If you don’t plan to scratch your floor then drip a drop of hot glue on Ringo’s legs. I’ve made the photo.

Подключение электроники к сервомоторам

Каждый серводвигатель имеет 3 провода, сгруппированные вместе. Мы будем использовать перемычки Папа/Папа, чтобы соединить серводвигатели и Arduino Uno

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


Подключите перемычки к электронике:

  • Положительный провод к красному отверстию на макетной плате (Выше переключателя, а не колонки от деражтеля батареи).
  • Отрицательное / заземление до черного гнезда на макетной плате.
  • Сигнал от Arduino:

— Провод, идущий на левое колесо если смотреть со спины робота подключается в гнездо №9 На Arduino.

— Провод, идущий на правое колесо, подключается в гнездо №8 на Arduino.

Стяните пластиковыми хомутами провода.

Вставьте лоток с электроникой в корпус

Распределите провода серводвигателя в канавках с обоих сторон корпуса. Убедитесь что провода от серводвигателя доступны.

Подключите провода от серводвигателя к перемычкам от Arduino и от макетной платы

  • Красный провод серводвигателя подключается к положительному проводу
  • Коричневый провод серводвигателя подключается к отрицательному проводу
  • Оранжевый провод серводвигателя подключается к сигнальному проводу от Arduino.

Здесь важно запомнить — или записать — цвета перемычек!

Стяните провода пластиковыми хомутами и спрячьте. Ваша Juno должна быть Готовый к работе!

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

  • Светодиоды должны загораться
  • Мигание 2х проблесковых огня на Arduino
  • Мигание на Bluetooth модуле
  • Колеса должны на мгновенье прокрутится

BangBangEducation

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

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

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

Все последующие модули также рекомендуется пройти, но можно начать с той среды программирования, которая вам близка или уже знакома. Разбираемые среды программирования: TouchDesigner, Ableton (Max), Max/MSP, PureData и Processing.

Кому подойдет курс: всем, кто решил начать изучать Arduino, но пока не хочет программировать на C++.

Для обучения на базе плат расширения нам понадобятся детали/модули:

• Arduino UNO / Mega • соответствующий вашей плате кабель USB • Плата расширения* • Аналоговый модуль потенциометра* • Модуль кнопка* Опционально: • Сервопривод • Блок питания для сервопривода • Датчик уровня шума* • Инфракрасный дальномер Sharp (10−80 см)

Центр при МГТУ им. Баумана

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

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

Во время занятий вы получите базовые представления о программировании микроконтроллеров, робототехнике и электронике. Вы увидите, что представляют собой простейшие программы для микроконтроллеров и соберете рабочие схемы ЖК-дисплеев, температурных датчиков, систем светодиодов и многого другого. Лабораторные работы занимают 70% занятий – у вас будет много времени на увлекательные эксперименты и открытия.

Курс будет полезен:

  • всем, кто хочет преподавать робототехнику в школе или вузе;
  • всем, кто интересуется робототехникой и электроникой;
  • всем, кто занимается автоматизацией в работе или быту;
  • всем, кому интересна идея «интернета вещей».

AlexGyver

Сайт для любителей техники предоставляет бесплатные текстовые уроки — максимально подробные уроки по программированию Arduino с разбором всех тонкостей и особенностей языка.

Есть также бесплатные видеоуроки. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.

Что узнает ребенок:

  • Что такое Ардуино и зачем она нужна?
  • Что умеет Ардуино и что можно сделать на её основе?
  • Подключение датчиков к Ардуино
  • Питание Arduino от различных источников электричества
  • Математические операторы для работы с переменными
  • Особенности переменных и констант
  • Общение между компьютером и Arduino Через COM порт
  • Какие существуют типы реле? В чём достоинства и недостатки?
  • Как подключить реле и как им управлять?

И это еще не все. 16 видеоуроков расскажут все нюансы о программировании на Arduino.

Умный дом xiaomi правильнее, чем home assistant, но можно еще правильнее

В предыдущих сериях я:

  1. Накупил устройств от Xiaomi для умного дома и посредством паяльника заставил их работать в увлекательной манере — без родных серверов через home assistant (ссылка на пост)
  2. Завернул web interface от home assistant в electron (ссылка на пост) с поддержкой нотификаций, менюшек, точбара итд (код тут)
  3. Разобрал протокол miio со стороны рассылки сообщений (ссылка на пост) и реализовал поддержку всяческих кнопок в xiaomi_miio.

Со временем накопилось понимание как устроены разные инкарнации умных домов, с точки зрения реализации сценариев и протоколов взаимодействия. С этим знанием я наделал устройств и реализовал для них «правильную» распределенную среду программирования для IoT с lisp-ом, криптографией и сборкой мусора. Под катом поведаю о ходе и результате процесса.

Подключение Arduino UNO к Bluetooth

Чтобы подключить модуль Bluetooth к Arduino, Вам нужно использовать провода перемычки. Поскольку Bluetooth имеет открытые контакты, торчащие вверх, То перемычку нужно использовать Мама/Папа (одна сторона имеет гнездо а другая сторона открытый контакт). Существуют разные цвета Провода, поэтому рекомендуется записать, какой провод куда идет.

Мы начнем с левой стороны Bluetooth если смотреть на Bluetooth модуль с обратной стороны. Подключите провода:

а. Сначала на Bluetooth модуле обозначается 5V соединяем его с гнездом где маркировка 5V на Arduino UNO

б. Во-вторых, на Bluetooth модуле идет минус, подключите ее к одной из Минусовых гнезд на Arduino. Мы подключили минус чуть ниже отверстия 5V.

в. Затем подключите контакт Tx на Bluetooth модуле с гнездом №13 на плате Arduino Uno.


г. Наконец, подключите контакт Rx на Bluetooth модуле с гнездом №12 на плате Arduino Uno.

Руководство по покупке комплектов роботов Arduino

Перед выбором комплектов роботов Arduino, которые удовлетворяют вашим требованиям, необходимо учитывать следующие факторы.

 1. Стоимость

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

Если вы не готовы тратить больше денег, вы можете приобрести набор среднего класса, так же представленные в нашем рейтинге.

 2.  Умная навигация

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

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

 3.  Сборка

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

Лучшее предложение для вас — когда вы решите купить умный гаджет, особенно тот который требует сборки, получите полное представление об этом устройстве.

Если вы хотите приобрести предмет и не знаете, как его использовать, то покупка не имеет смысла.

4. Список деталей

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

ILUШA vs Dynamixel. Выбор сервопривода с обратной связью

Сервопривод отечественного производства Илюша. Мы разрабатываем робот для сбора мячей для гольфа. Для открытия люка сброса мячей нам требуется сервопривод. Мы опробовали огромное количество и сегодня хотим рассказать Вам об очень интересном аналоге Dynamixel который более, чем в два раза дешевле. Современный модельный сервопривод сегодня представляет законченное устройство в едином корпусе (мотор вместе с редуктором и платой управления). Самым распространенным способом управления модельными сервами является протокол PWM, положение серводвигателя определяется шириной импульса, наличие импульсов служит сигналом включения. Данный подход позволяет максимально упростить электронику, однако не лишен и проблем.

Выбор електроники для вашего бота

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

  • Arduino UNO
  • Двигатели постоянного тока с редуктором – 2Nos
  • L298N Motor Driver Module
  • MPU6050
  • Пара колес
  • 7.4V Li-ion Battery
  • Купа проводов
  • Каркас напечатанный на 3D принтере

Контроллер: Контроллер, который я использовал здесь, это Arduino UNO, почему, потому что он просто прост в использовании. Вы также можете использовать Arduino Nano или Arduino mini, но я бы рекомендовал вам придерживаться UNO, так как мы можем запрограммировать его напрямую без какого-либо внешнего оборудования.

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

Драйвер двигателя: если вы выбрали двигатели постоянного тока, такие как мои, тогда вы можете использовать модуль драйвера L298N, как я, или даже L293D должен работать нормально.

Колеса: не недооценивайте этих парней; Мне было трудно понять, что проблема была в моих колесах. Поэтому убедитесь, что ваши колеса хорошо сцеплены с полом, который вы используете.

Акселерометр и гироскоп: лучшим выбором акселерометра и гироскопа для вашего робота будет MPU6050 . Поэтому не пытайтесь построить его с обычным акселерометром, например ADXL345 , или что-то в этом роде, он просто не сработает. Вы узнаете, почему в конце этой статьи. Вы также можете использовать эту статью для изучения MPU6050 и его подключения к Arduino.

Battery: Нам нужна батарея как можно более легкая, а рабочее напряжение должно быть больше 5 В, чтобы мы могли напрямую управлять нашим Arduino без модуля повышения. Таким образом, идеальным выбором будет литий-полимерный аккумулятор 7.4V. Поскольку у меня была литий-ионная аккумуляторная батарея 7,4 В, я ее использовал. Но помните, что Li-po лучше, чем Li-ion.

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

Загрузка Кода Arduino

Для начало выключите Juno.

Подключите USB-кабель между компьютером и Juno. Модуль Arduino и модуль Bluetooth должены загореться и начать моргать при подключении.

Откройте программу Arduino на своем компьютере. Вы можете скачать программу по адресу: https://www.arduino.cc/en/Main/Software

Откройте свой код «Juno.ino». Вы можете загрузить ТУТ

Нажмите на код, чтобы открыть программу. Программа может сказать, что ей необходимо что бы поместить код в папку, нажмите «ОК», чтобы это произошло.

Проверьте порт. Вам нужно использовать USB-порт.

Перейдите в раздел «Инструменты»/«Tools» и убедитесь, что выбрано Arduino Uno.

Проверьте, что программа использует правильный Uno плату.

  • Откройте «Инструменты» /«Tools» > «Плата»/« Board.». Там должно быт ьуказано, что вы используя (например, Uno). Если Вам нужно изменить его, то уйдите за стрелкой вправо и выберите Плату: Uno.

Когда Juno.ino, загрузится в программу, нажмите на кнопку загрузки (стрелка вверху Программа в левом верхнем углу). Программа должна сообщить «Done Uploading ‘, когда процесс загрузки будет завершен.

Теория

В теории управления, удерживая некоторую переменную (в данном случае позицию робота), требуется специальный контроллер, называемый ПИД (пропорциональная интегральная производная). Каждый из этих параметров имеет «прирост», обычно называемый Kp, Ki и Kd. PID обеспечивает коррекцию между желаемым значением (или входом) и фактическим значением (или выходом). Разница между входом и выходом называется «ошибкой».

ПИД-регулятор уменьшает погрешность до наименьшего возможного значения, постоянно регулируя выход. В нашем самобалансирующем роботе Arduino вход (который является желаемым наклоном в градусах) устанавливается программным обеспечением. MPU6050 считывает текущий наклон робота и подает его на алгоритм PID, который выполняет вычисления для управления двигателем и удерживает робота в вертикальном положении.

PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:

  1. Сделайте Kp, Ki и Kd равными нулю.
  2. Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
  3. Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
  4. Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.

Поведение робота можно посмотреть ниже на видео:

Простые проекты Ардуино

Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.

Проект с мигающим светодиодом – маячок

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

Нам понадобится:

  • Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
  • И все.

Что должно получиться в итоге:

Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.

Схема проекта

Схема проекта довольно проста:  нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.

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

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

Программирование в проекте Ардуино

Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.

Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.

Проверка порта Ардуино – выбираем порт с максимальным номером

Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.

Открываем пример Blink в Ардуино IDE

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

Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!

Проект маячка со светодиодом и макетной платой

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

Графическое изображение схемы подключения доступно на следующем рисунке:

Другие идеи проектов со светодиодами:

  • Мигалка (мигаем двумя свтодиодами разных цветов)
  • Светофор
  • Светомузыка
  • Сонный маячок
  • Маячок – сигнализация
  • Азбука Морзе

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

Использование контроллера Arduino для прерываний

Из песочницы

В данной стать я приведу пример использования arduino контроллера для вызова прерываний программы на C#. Стоит отметить, что в WindowsForms присутствует элемент Timer который включается и выполняет код через определенный промежуток времени. Я решил реализовать подобное используя микроконтроллер Arduino UNO. Для этого я запрограммировал контроллер так, чтобы он через определённый промежуток времени отправлял в последовательный порт данные, вызывая прерывание программы. Я считаю, что данная статья будет интересна тем, кто занимается программированием микроконтроллеров, так как в ней приведен пример одного из вариантов использования микроконтроллеров.

Шаг 6: Сцена «Сопровождение».

Следующая сцена – «Сопровождение». Эта сцена использует заданные пользователем объекты Vuforia, поэтому Вы можете создать отслеживаемый объект во время использования, если у него есть достаточное количество точек. В настройках робота следуйте за менеджером, не забудьте указать IP-адрес вашего Node MCU в сценарии отправки сообщения.

Когда Вы откроете эту сцена на своем телефоне, поставьте какой-то предмет перед камерой и щелкните по экрану, чтобы инициализировать новый трекер. Если изображение имеет достаточное количество точек, он скажет, что качество изображения будет высоким, и начнется отслеживание. Я заметил, что при уменьшении мощности аккумулятора — это поведение немного меняется, но, по крайней мере, оно будет работать стабильно какое-то время с новой батареей. Если мы откроем поведение робота, Вы увидите, что этот скрипт проверяет, находится ли текущий целевой объект изображения в определенном наборе границ, и если он не видит объект, то отправляет команду роботу для перемещения для одного кадра перед остановкой. Движения робота из-за этого не плавные, но движения робота работают довольно прилично.

Первые шаги в Tinkercad

Регистрация онлайн

Для начала работы необходимо получить эккаунт Autocad. Регистрация в Tinkercad абсолютно бесплатная. Зайдите на сайт и выполните простые шаги.

Tinkercad Dashboard – Начальная страница

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

Создаем и редактируем проект

Для создания проекта просто нажимаем кнопку «Создать проект», расположенную под списком проектов. Будет создан проект с названием типа Project N. Нажав на него, мы перейдем в режим просмотра списка схем, включенных в этот проект. Там же мы сможем изменить свойства проекта (включая название), нажав на соответствующий значок сразу под названием.

Добавляем новую схему Circuits

Создать новую схему в Tinkercad можно двумя способами:

  • В меню слева выбрать Circuits и справа над списком схем выбрать команду Create new Circuit (на момент написания статьи все основные интерфейсные элементы не переведены). Новая схема будет создана вне какого-либо проекта.
  • Создать схему в определенном проекте. Для этого надо сначала перейти в окно проекта, а затем нажать на кнопку «Create» сверху над списком. Появится перечень типов схем, мы выбираем Circuit. Созданная схема будет доступна в этом списке и в списке всех проектов в меню Circuits.

После выполнения команды вы сразу же перейдете в режим редактирования схемы, не вводя названия. Имя для схемы формируется автоматически.

  • Чтобы изменить название схемы и отредактировать ее свойства нужно перейти в режим просмотра списка схем, навести на область с названием схемы и нажать на иконку «Настройки». Откроется окно, в котором вы сможете отредактировать параметры.
  • Для удаления схемы надо в том же режиме выбрать в настройках команду «Удалить».
  • Для просмотра краткой информации о схеме нужно просто щелкнуть на ней
  • Для перехода в режим редактирования нужно навести курсор мышки и выбрать появившуюся команду «Изменить».

Все изменения в процессе редактирования схемы сохраняются автоматически.

Описание интерфейса Тинкеркад в режиме редактирования

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

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

На полосе инструментов в верхней части слева находятся основные команды:

  • Повернуть элемент
  • Удалить
  • Масштабировать по размерам экрана
  • Отмена
  • Повтор

Кнопки в правой части панели:

  • Отобразить панель программирования, и отладки
  • Отобразить панель библиотеки компонентов
  • Запустить симулятор схемы
  • Экспорт в Eagle .brd
  • Поделиться

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


С этим читают