Что такое квадрокоптер?
Уверен, что большинство читающих эту статью уже знают, что такое квадрокоптер. Если нет, привожу краткое описание этих замечательных устройств.
Квадрокоптер — это летающее устройство с четырьмя «ногами», на каждой из которых установлен мотор с пропеллером. Квадрокоптеры по своей сути схожи с вертолетами, но перемещение, поворот, наклон у них обеспечивается за счет синхронной работы четырех пропеллеров. Кроме того, у квадрокоптеров существует такое понятие как “pitch” (“тангаж”) – поворот вокруг продольной оси. Для того, чтобы стабилизировать полет квадрокоптера, два пропеллера вращаются в одно направлении (по часовой стрелке), а два — в противоположном направлении (против часовой стрелки). Благодаря этой возможности — зависать в одном положении в воздухе, квадрокоптеры в первую очередь используются для фотографии с воздуха и видеосъемки. Конечно же, квадрокоптеры и остальные подобные устройства со множеством двигателей, используются в спасательных операциях, полицией, военными и т.п. В последнее время стоимость компонентов для производства квадрокоптеров значительно уменьшилась и многие компании принялись за их производство. Купить готовое изделие на сегодняшний день не составит проблем.
Итак, вы уже немного сориентировались, что такое квадрокоптер, давайте теперь перейдем к краткому описанию процесса его изготовления.
Первое, что было сделано: гуглинг по магазинам в поисках компонентов, которые нам понадобятся для его изготовления.
В большинстве случаев используются микроконтроллеры и безщеточные (вентильные) моторы. В качестве контроллера было решено использовать Arduino, так как это идеальная платформа с точки зрения цены. Первая проблема, которая возникла — безщеточные двигатели. Помните, мы ведь ориентируемся на бюджет в 60 $. А стоимость одного безщеточного двигателя, который можно использовать в нашей конструкции квадрокоптера, колеблется в диапазоне от 20 $ до 60 $! Кроме того, использование этих моторов предполагает установку дополнительных контроллеров — speedcontrollers. Так что было решено использовать щеточные двигатели. Габариты нашего квадрокоптера небольшие, так что были куплены моторы с относительно маленьким крутящим моментом. Гугл подсказал, что квадрокоптеры с подобными приводами существуют. Найденные моторы могут поднять до 55 грамм веса, что нас вполне устроило. Следующий шаг — решение проблем стабилизации моторов с помощью гироскопов и акселерометров. Гироскоп — это устройство, которое использует гравитацию Земли для определения угла наклона (ориентации) в пространстве. Классическая конструкция гироскопа состоит из свободно вращающегося диска, который называется ротором. Ротор установлен на оси, которая расположена по центру большего, более стабильного колеса. При вращении оси ротор остается в статичном состоянии, которое соответствует центру гравитации. Акселерометр же представляет из себя компактное устройство, которое используется для измерения ускорения. Когда объект выходит из состояния покоя (начинает двигаться) акселерометр фиксирует вибрации, которые возникают при этом движении. В акселерометрах используются микроскопические кристаллы, которые генерируют напряжение при ударах. Это напряжение снимается и формируется значение ускорения. Эти два сенсора обязательны в квадрокоптере. Именно на основании их показаний формируется управляющий сигнал, который регулирует скорость вращения двигателей для обеспечения крена, перемещения или стабилизации нашего квадрокоптера.
Первый код
Для начала установим Arduino IDE с сайта arduino.cc (статья об установке IDE)— это кросс-платформенная бесплатная среда разработки. Теперь, если мы подключим наш Arduino, то сможем попробовать написать первый код на самом простом примере: программе мигания светодиодом. На большинстве Arduino-контроллеров он есть и подключен к пину 13. Кстати, в мире Arduino программы принято называть скетчами. Вот текст скетча с комментариями:
Arduino
// Дадим этому пину имя LED:
const int LED = 13;
void setup() {
// Инициализация цифрового пина
// для вывода:
pinMode(LED, OUTPUT);
}
void loop() {
// Подать уровень логической единицы
// на пин 13 (зажечь светодиод):
digitalWrite(LED, HIGH);
// Приостановить выполнение скетча
// на секунду:
delay(1000);
// Подать уровень логического нуля
// на пин 13 (потушить светодиод):
digitalWrite(LED, LOW);
// Снова приостановить выполнение
// скетча на секунду:
delay(1000);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Дадим этому пину имя LED: constintLED=13; voidsetup(){ // Инициализация цифрового пина // для вывода: pinMode(LED,OUTPUT); } voidloop(){ // Подать уровень логической единицы // на пин 13 (зажечь светодиод): digitalWrite(LED,HIGH); // Приостановить выполнение скетча // на секунду: delay(1000); // Подать уровень логического нуля // на пин 13 (потушить светодиод): digitalWrite(LED,LOW); // Снова приостановить выполнение // скетча на секунду: delay(1000); } |
Обрати внимание на функции setup и loop. Они должны присутствовать в любом Arduino-скетче
Setup вызывается единожды при включении или после перезапуска контроллера. Если хочешь, чтобы код выполнялся только один раз, его следует размещать именно здесь. Чаще всего это всевозможные процедуры инициализации чего-либо. Наш скетч не исключение: цифровые пины Arduino могут работать и как входы, и как выходы. В функции setup мы говорим, что пин 13 будет работать как цифровой выход контроллера.
После того как функция setup завершит свою работу, автоматически запускается замкнутый цикл, внутри которого будет вызываться функция loop. От нас требуется написать, что мы хотим там выполнять. А мы хотим подать на пин 13 уровень логической единицы (5 В), то есть зажечь светодиод, затем подождать одну секунду (1000 в миллисекундах), потом подать уровень логического нуля (0 В) и опять подождать одну секунду. Следующий вызов loop все повторит.
Теперь «заливаем» наш скетч в контроллер. Нет, нам не понадобится программатор. Контроллеры Arduino, кроме наших скетчей, содержат специальную программу — bootloader, которая, в частности, управляет загрузкой кода из компьютера. Так что для заливки скетча нам понадобится только USB-кабель и пункт меню File → Upload (Ctrl + U) в Arduino IDE.
Код нашего Helloworld.
Project Bill of Material
• 2 x NEMA 17 Steppers 1.8 Degree Step 12v Torque more than 5kg/cm
• 4 x 8mm smooth rods (I used 8mm, will Suggest you to use 10mm/12mm) 600mm Long
• 8 x SC8UU (Will suggest u to use SC10UU/SC12UU)
• 2 x 20-Tooth GT2 pulleys
• 10 x F623ZZ Bearings (I used Plastic Pulleys to reduce cost)
• 1 x Micro Servo SG90 (Later I Used a Bigger Servo for Quality)
• 1 x Arduino UNO
• 1 x CNC Shield V3
• 2 x Pololu Step Sticks A4988 Stepper Driver
• 1 x GT2 Belt (3 meters long)
• 1 x Hard Wood 1mx20cmx4cm
• 8 x 30mm M3 screws with nuts
• 3 x BLDC Fan (Not Necessary if you are not in tropical climate)
• 1 x Aluminium Sheet 3mm
• 20 x 1 Inch Screw m4
• 20 x 3 Inch Screw M4
• 1 x Inch Screw m3
• 1 x Wire 5m
• 1 x SMPS 12v 5A
• 20 x Washers M4
• 6 x 4 Inch Screw M3
• 1 x Soldering Wire
• 1 x Solder
• 1 x Jig Saw
• 1 x Jig Saw Blade for wood cutting
• 1 x USB Wire
• 4 x Special Liquid ink PEN of multiple colour
• 5x Ferrite Core
• Miscellaneous Tools and Components
Настройка акселерометра-гироскопа (I2C)
TL;DR:
1. Не подключайте к 5 В!
Что такое I2C?
На простых платах акселерометра все логично и понятно: на ней предусмотрены отдельные аналоговые выходы для осей X, Y и Z. Каждый выход соответствует отдельной оси акселерометра. Если вы теперь взглянете на плату с I2C, поймете, что тут все несколько запутаннее. I2C — это стандарт обмена данными, при котором большие объемы информации передаются с помощью цифровых логических импульсов вместо аналоговых выходов. MPU6050 предоставляет вам 6 контролируемых осей (3 для гироскопа и 3 для акселерометра). Если бы они все были аналоговыми, нам пришлось бы задействовать все аналоговые порты на Arduino Uno. С протоколом I2C мы задействует гораздо меньше контактов для подключения.
Дальнейшая модернизация квадрокоптера на Arduino
Основные проблемы с маленьким квадрокоптером — его стоимость и вес. Можете поискать моторы побольше и помощнее, но это особо не улучшит его характеристики. Что вам действительно поможет, (если вы готовы отдать больше денег) — это безщеточные (вентильные) моторы. По характеристикам они на порядок лучше, но в довеску к ним надо использовать контроллеры скорости, что сделает квадрокоптер дороже.
Для уменьшения веса конструкции лучше всего использовать именно Arduino Uno, так как к этой модели контроллера можно снять «прошитый» чип микропроцессора и установить его непосредственно на вашу ProtoBoard. В результате вы выиграете около 30 грамм веса, что немало при таких масштабах. Дополнительно вам надо будет использовать еще несколько конденсаторов и т.п. Или, как альтернативный вариант, можно использовать Arduino Pro Mini.
Программа для Arduino, которая написана и представлена в предыдущем разделе, может быть легко расширена и обогащена дополнительным функционалом. Самое главное, что на этом этапе квадрокоптер уже может автоматически стабилизировать полет. Если вы хотите настроить дистанционное управление, можете посмотреть в сторону трансмиттеров/ресиверов или bluetooth модулей. В общем, основа у вас теперь есть, а пространства для дальнейшей модернизации — еще больше.
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!
Шаг 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);
В этих строчках замените числа на полученные при калибровке.
Software Tools Installation
We need multiple software and plugins for generating art-work, editing and sending G-Code to the CNC using Serial COM Port. I will be discussing installation in Windows platform but you can find all the software for Linux platform too. So the software we will be using are:
>>> Inkscape
• Download the latest stable 32bit/64bit version according to your OS from Inkscape.org
• Installation is pretty simple and straight forward in Windows. In Linux you need to type some easy commands.
• Just do a Next Next and software will be installed.
>>> JTP Laser Tool Inkscape Plugin
[This Inkscape plugin will convert paths/drawing to G-Code for Vector Printing]
• Download the plugin from JTP Website
• Extract it using any good unzipping software.
• Put the contents of this .zip folder into the “inkscape\share\extensions” folder in installation directory.
• Once it is there it will show up under the “extensions” tab in Inkscape.
>>> Raster 2 Laser G-Code Generator
[This Inkscape plugin will convert paths/drawing to G-Code for Raster Printing]
• Download the plugin from my Git Hub Repository Raster 2 Laser
• Extract it using any good unzipping software.
• Put the contents of this .zip folder into the “Inkscape\share\extensions” folder in installation directory.
• Once it is there it will show up under the “extensions” tab in Inkscape.
>>> UGS Platform / UniversalGcodeSender
• Download and install the version of Java listed on the download page according to your OS and system configuration. Requires Java 8. Download Here
• Download UGS Platform UGS Download
• Extract it using any good unzipping software.
• In the extracted folders locate bin in the ugsplatform directory.
• On Windows run ugsplatform.exe or ugsplatform64.exe, on Linux or Mac OSX run ugsplatform.
• No need of any installation or build.
>>> Camotics
• Download the latest version from Camotics
• Simple and fluid installation.
>>> Makelangelo Software
• Download the Makelangelo Software from my Git Hub Repository Makelangelo-Software
• Extract it using any good unzipping software.
• Open the extracted folder and find Makelangelo10.jar file.
• Run the .jar file using Java 8 you have installed in previous steps.
>>> Inkscape Template File
• Download the template from my Git Hub Repository Inkscape-Template
• Extract it using any good unzipping software.
• Open the extracted folder and find Makelangelo10.jar file.
Схема подключения Arduino
Схема подключения платы MPU6050 приведена ниже
Обратите внимание, что библиотека для Arduino предполагает использование именно этих контактов. Как правило, даже если у вас плата от другого производителя, контакты обозначены одинаково, следовательно, схема подключения остается такой же
VDD -> 3.3v
GND -> GND
INT-> digital 2
SCL -> A5
SDA -> A4
VIO -> GND
Если вы запитаете от 5 В, плата может испортиться, так что будьте внимательны и используйте именно 3.3 В. На некоторых платах MPU6050 есть регулятор напряжения, который выполняет роль предохранителя, но рисковать все равно не стоит. Если на вашей плате есть контакт AD0, его надо подключить к земле (GND). В нашем случае контакт VIO подключен к AD0 на самой плате, так что подключать пин AD0 не надо.
Скетч для Arduino
На этом этапе вам понадобятся некоторые знания в программировании Arduino. Если вы чего-то не понимаете, остановитесь на этом моменте и постарайтесь с ним разобраться. Приведенные ниже пояснения помогут вам со многими вопросами, но описать все возможные нюансы невозможно.
Скопируйте код программы, вставьте его в пустой скетч и запустите. Откройте серийный монитор Arduino IDE (Tools->Serial Monitor) и убедитесь, что вы подключены к 9600 (нижний левый).
Если вы все сделали правильно, должно обнаружиться устройство I2C и ему присвоиться адрес 0x68 ил 0x69. Запишите его. Если появились ошибки, проверьте подключение.
После того как вы установили библиотеки, откройте файл MPU6050_DMP6 (MPU6050 -> Examples). Рекомендую вам его просмотреть, даже если вы не особо ориентируетесь в коде. Если у вас присвоился адрес 0x69, вам надо раскомментировать одну строку в верхней части кода (после #includes), так как по умолчанию стоит 0x68. Теперь программа должна компилироваться.
Загрузите программу, откройте окно серийного монитора (в этот раз с 115200) и следуйте инструкциям. Поздравляю, так как сейчас вы должны были получить значения с акселерометра/гироскопа через Arduino!
Прежде чем двигаться дальше, надо откалибровать ваш гироскоп/акселерометр. Найдите плоскую горизонтальную поверхность и поставьте на нее плату MPU6050.
Теперь запустите скетч для калибровки, который можно скачать здесь: MPU6050_calibration.ino (опять-таки, по умолчанию установлен порт 0x68, но вы можете его изменить). Запишите данные отклонений (offset), которые вы получите. Эти данные вы будете использовать в скетче MPU6050_DMP6 (и в дальнейшей программе для квадрокоптера).
Теперь у вас есть рабочий, безусловно полезный, акселерометр/гироскоп.
Шаг 2: Постройте переднюю левую лапу
Примечание: обратите внимание на положение каждой детали; левые и правые лапы должны собираться зеркально относительно друг друга. Все винты и пластиковые приводы которые поставляются с серводвигателями по большей части довольно понятны
При создании лап нужно подключить все серводвигатели одной лапы к портам 0, 1, 2 на SSC-32. После этого я загрузил следующий эскиз в ардуино, чтобы связать эти серводвигатели на этих портах:
Все винты и пластиковые приводы которые поставляются с серводвигателями по большей части довольно понятны. При создании лап нужно подключить все серводвигатели одной лапы к портам 0, 1, 2 на SSC-32. После этого я загрузил следующий эскиз в ардуино, чтобы связать эти серводвигатели на этих портах:
Я использовал одну из своих батарей для питания всех вместе с одним набором UBEC для 6V.
3D печатный яйцебот всего за $15. Рецепт приготовления
Пасха заканчивается и тема печати различных узоров на яйцах становится чуть менее актуальной, но от этого не становится менее актуальным яйцебот, нужный всем и всегда круглый год
Для тех кто не в курсе яйцебот — это машина, которая обычным фломастером умеет рисовать на любых сферических объектах: яйцах, теннисных шариках, ёлочных игрушках. Концепт механизма придумал дизайнер Bruce Shapiro в далеком 1990-м году, а не так давно знаменитая компания Evil Mad Scientist Laboratories выпустила в свободную продажу свою версию под названием The EggBot. Надо отдать должное Evil Mad Scientist Laboratories свой проект сделала открытым и разрешает пользоваться программным обеспечением для других яйцеботов даже в коммерческих проектах.
Вот такие произведения искусства получаются на выходе:
Простые картинки можно рисовать в любом векторном редакторе, а сложные геометрические объекты можно создать, например, на питоне.
А вот получившееся изображение уже на яйце:
Энтузиасты создают даже картинки со стробоскопическим эффектом при вращении:
При создании своего яйцебота я не ставил перед собой цели уложиться в $15, но так уж вышло :). Для сравнения оригинальный Eggbot Pro стоит $325, что дороже на порядок. Основная стоимость любого яйцебота — шаговые двигатели. Я использовал самые доступные — 28BYJ-48-12V, отсюда и итоговый ценник в 15 баксов.
Итак для приготовления моего яйцебота вам понадобится:
1. 110 грамм пластика ABS или PLA. Черные детали я печатал ABS-ом, желтые PLA. Уж больно PLA красив при печати на стекле 2. Электроника в ассортименте:
- 1 x Китайская Arduino UNO c Aliexpress с кабелем для компа за 250 руб.
- 2 x 28BYJ-48-12V Шаговый двигатель + ULN2003 Драйвер шагового двигателя за 100 руб.
- 1 x SG90 Микро серво двигателььза 100 руб.
- 1 x 12V Блок питания (можно и не покупать если есть).
3. То что не можем напечатать, но можем купить почти в любом хозяйственном магазине:
- пружина.
- болты, винты, гайки, шайбы.
- резиновая прокладка (можно и напечатать, если у вас есть Flex).
- подшипник 608.
Пластик засовываем в 3Д принтер и печатаем детали, модели которых я заботливо поместил сюда.
Подробно о том чего и сколько печатать, где конкретно взять электронику, сколько и каких болтов надо смотрим тут.
Тем кто еще не приобрел 3Д принтер, но очень хочет приготовить своего яйцебота я могу напечатать все детали и отправить почтой. Обращайтесь в личку, все будет в лучшем виде! Я гарантирую это!
После печати можно приступить к сборке. Сборка устройства выглядит примерно так:
После печати и сборки у вас должно получиться такое устройство:
После окончания сборки, в яйцебота нужно поместить прошивку. Так, как мозгом устройства является обычная ардуино, у вас не должно возникнуть с этим проблем.
- Скачиваем и распаковываем прошивку отсюда.
- Загружаем Arduino IDE, устанавливаем и запускаем.
- Подключаем яйцебота к компьютеру, выбираем в Arduino IDE модель платы и COM порт.
- Открываем файл Eggduino.ino из папки с прошивкой и загружаем ее в Arduino.
В качестве управляющей программы используется всем известный Inkscape с плагином, написанным Evil Mad Scientist Laboratories. Плагин позволяет настраивать яйцебота, управлять им вручную и отправлять картинки на печать. Я заботливо добавил плагин в Inkscape и поместил готовый архив тут.
Если у вас уже есть Inkscape, но нет плагина, то взять его отдельно можно тут.
Скачиваем, устанавливаем и запускаем Inkscape. Идем в меню с плагинами, ищем там подменю EggBot. Открываем плагин, настраиваем высоту поднятия фломастера и печатаем на яйце все что угодно.
Если у вас Inkscape при попытке управления ботом выдаёт ошибку «Failed to connect to EggBot», то не отчаивайтесь. Проблему можно легко решить. Посмотрите в списке подключенного оборудования, то как называется ваша плата. Затем в файле ebb_serial.py плагина для Inkscape замените в строке 52 текст «USB-SERIAL CH340» на ваше название.
Еще я собрал и выложил небольшую коллекцию с примерами. Посмотреть ее можно тут.
Источник
3-D печать деталей квадрокоптера
Один из первых шагов — создание рамы нашего квадрокоптера. Было решено пойти по пути наименьшего сопротивления и напечатать раму на 3D принтере. Помимо простоты изготовления, каркас, напечатанный на 3D принтере, получается достаточно легкий благодаря печати «сотами». Детали были спроектированы в Solidworks. Ниже представлены все твердотельные модели. Все можете их спокойно скачать и отправлять на печать. Детали сохранены в формате .stl. Если хотите, можете их смело дорабатывать и изменять с использованием того же Solidworks. Модели параметрические, так что если вы решите использовать другие моторы, достаточно просто изменить несколько параметров в модели и вы получите готовый каркас под ваши габаритные размеры квадрокоптера.
В результате вы получите что-то вроде такого:
Step 3: Drawing Board Build
The ends of the belts must be weighted down to keep them from slipping on the cogged pulleys (Here, you can use anything on hand. I have used nuts, but water bottles have also been used.). Also, to keep the pen on drawing surface, it might have to be weighed down as well. this is a trial and error test. If you build my Inscrutable gondola, I have two bearings in center that act as weight. I also needed to add two nuts at bottom to keep in against the paper. On the ends of the belts, more nuts were added (I used shaft collars on mine, but it will be easier to find nuts). I found the rule of thumb, weigh your gondola and divide this number but two. this should give you the approximate weight to start with on the belts. You might have to up it a bit after testing.
This is all for the mechanical end of things.
Основные способности робоплатформы:
Он умеет ловко обнаруживать и перемещаться вслед за световым пятном на полу от яркого луча света оставляемого фонариком. Для этого достаточно просто посветить фонариком перед ним на некотором расстоянии. Чем ближе пятно к робоплатформе, тем быстрее он будет передвигаться и чем дальше, тем медленнее его передвижение по поверхности. |
|
Это самый известный эксперимент начинающего роботостроителя. Робот умеет двигаться по заранее сформированному пути по полю с черной линией благодаря наличию датчиков линии. В заданном режиме 4WD Robot способен ехать вперед, назад, вправо и влево, он легко проезжает как плавные повороты, так и трудные участки маршрута, например, прямые углы, перекрестки, зигзаги. |
|
Датчик цвета принимает свет, отраженный от объекта. Робот идентифицирует цвет расположенного перед ним предмета и изменяет цвет RGB светодиода на цвет объекта, который мы рассматриваем. |
|
Двигаясь по линии робот определяет цвет расположенного перед ним квадрата и самостоятельно находит путь к квадрату идентичного цвета, используя датчики. Таким образом, робот может пройти маршрут от квадрата к квадрату. |
|
Робоплатформа оснащена ультразвуковым дальномером, который используется для нахождения преград на пути движения робота. Посредством особого алгоритма платформа останавливается, объезжает препятствия и не застревает в углу, продолжает движение и тем самым проходит лабиринт. |
|
Видеообзоры:
Инструкция по сборке робота-автомобиля
В этой статье расскажем вам о том, как по шагам собрать универсального робота на колесной или гусеничной платформе. Управлять им будет микроконтроллер Ардуино нано. Если вам не нравится долго читать, посмотрите в конце статьи на видео, подготовленное нашими партнерами – каналом 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
Схема подключения Bluetooth к ардуино машинке
Подключаем Bluetooth
Схема подключения драйвера двигателя к роботу
Схема подключения компонентов к Arduino
Датчик расстояния машины
Платформа робота готова! Теперь осталось загрузить прошивку для контроллера Ардуино и программу для смартфона RC CAR. Вы можете посмотреть на нашем сайте обзор Android приложений для работы с Arduino.
Project Comparison with AxiDraw
Crazy Engineer’s Drawbot is similar as well as different from AxiDraw:
• Crazy Engineer’s Drawbot is a Cartesian CoreXY movement (H-bot I think) similar to AxiDraw.
• Crazy Engineer’s Drawbot is based on Arduino, while AxiDraw is based on the EBB Driver board
• Crazy Engineer’s Drawbot has a large working area (45×38), like an ARCH B paper bigger than A3, while AxiDraw has a normal working area (30×20), like an A4 paper.
• Crazy Engineer’s Drawbot is Made of Wood to reduce cost, while AxiDraw is in metal (? this is not very clear watching the pictures)
• AxiDraw can write with a fountain pen, Crazy Engineer’s Drawbot not (yet)
• AxiDraw costs 475$, Crazy Engineer’s Drawbot costs 150$. Not bad!
CNC After Drawing
Необходимые узлы, детали и оборудование
Для проекта квадрокоптера с управлением от Arduino нам понадобятся:
- — провода;
- — литиевые аккумуляторы на 3.7 В;
- — транзистор: ULN2003A Darlington Transistor (можно взять транзистор, который поддерживает нагрузки и побольше);
- — моторы: 0820 Coreless Motors;
- — микроконтроллер: Arduino Uno;
- — акселлерометр/гироскоп: плата MPU-6050 (дешевый и сердитый вариант типа «все в одном»);
- — 3D принтер или доступ к нему для печати деталей конструкции квадрокоптера;
- — инструменты (в том числе паяльник и умение им пользоваться!).
Несколько советов новичкам
Решая заняться созданием квадрокоптера на Arduino, обратите внимание на следующие советы:
- Не усложняйте первую конструкцию, устанавливая экшен-камеру. Вашей задачей остается создание дрона, который сможет взлететь и уверенно держаться в воздухе, а не упасть на землю, сломавшись при первом полете. Если же последнее произойдет, то легко можно разбить экшен-камеру, а это большие расходы.
- Не гонитесь за большими масштабами, так как на первый раз достаточно создать небольшой рабочий Arduino дрон, над конструкцией которого можно будет дальше работать, совершенствуя и усложняя.
- Сократите до минимума количество дополнительных элементов и соединений, так как большое число датчиков и всевозможных контролеров не всегда повышает надежность дрона в полете. Значительно лучше создать базовую конструкцию и постепенно ее усложнять, добавляя новые функции и возможности. Это будет значительно разумней и позволит в будущем проектировать «специализированные» дроны.
- Если вы хотите изготовить квадрокоптер Arduino с камерой, то вам потребуется основание достаточно больших размеров, что снижает устойчивость всей конструкции.
В завершение обратим внимание, что программирование и создание квадрокоптера на базе Arduino – увлекательное, но достаточно сложное дело для новичков, поэтому не опускайте руки, если у вас не получается. Сделать на Arduino дрон вполне реально каждому и поможет в этом масса дополнительной информации и видео, которое вы легко найдете в интернете
Шаг 6: Код
Код, который приведен ниже, сделан с помощью Codebender.
Codebender – это браузерный IDE, это самый простой способ программировать вашего робота из браузера. Нужно кликнуть на кнопку «Run on Arduino» и все, проще некуда.
Вставьте батарейку в отсек и нажмите на функциональную кнопку один раз, и робот начнет движение вперед. Для остановки движения нажмите на кнопку еще раз.
Нажав кнопку «Edit», вы можете редактировать скетч для своих нужд.
Например, изменив значение «10» измеряемого расстояния до препятствия в см, вы уменьшите или увеличите дистанцию, которую будет сканировать robot Arduino в поисках препятствия.
Если робот не двигается, может изменить контакты электромоторов (motorA1 и motorA2 или motorB1 и motorB2).
Выбор електроники для вашего бота
Прежде чем я расскажу вам все варианты создания бота, позвольте мне перечислить элементы,
которые я использовал в этом проекте.
- 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. Если у вас есть принтер, вы также можете распечатать проект, его файлы будут прикреплены внизу статьи.