Книга - Конспект Ардуинщика 12 мини-проектов - от ArduBlock для детей!
В этом видео установим программу Arduino ide и соберём 12 мини проектов используя генератор кода ArduBlock.
В этом видео установим программу Arduino ide и соберём 12 мини проектов используя генератор кода ArduBlock.
Развеем мифы о робототехнике в ArduBlock ! Да Это Очень громко сказано! Значит просто соберём робота на платформе Arduino! Напишем несколько программ для нашего Мобильного робота в начале рассмотрим как собрать программу чтобы заставить робота двигаться вперёд назад и развороты. Вторым этапом будет Управление роботом при помощи с ik пульта. Третий этап установка лине сенсора и Ездим по линии, установим дальномер и Если есть препятствие то просто остановим робота. Следующей программой напишем программу Примитивный робот пылесос. Да робот просто будет ездить и не натыкаться на стены. И последней программой будет программа Управление робота с двух осевого Джойстика.
«Робототехника — отдел прикладной науки, который занимается проектированием, производством и применением автоматизированных технических систем — роботов. Робот — это программируемое механическое устройство, способное действовать без помощи человека» (ссыль), говорит гугл. Как вы понимаете, под такое описание попадает множество объектов, но те люди, которых я спрашивал отвечали – LEGO!
Всем здравствуйте!
Меня зову Сергей, мне 25 лет. Я являюсь безумным фанатом IT-сферы. Работаю в школе учителем информатики, сам изучаю и преподаю электронику, программирование, 3д-моделирование. Поучаствовав в различных соревнованиях и мероприятиях, побывав в разных городах, у меня сформировалось мнение, что образовательная робототехника в стране находится не в том русле, она немного отстала от времени. Размышления об этом начались с вопроса «Что такое робототехника?».
Лего-робототехника очень глубоко зашла в деятельность дополнительного образования технической направленности. Многие кружки робототехники используют MINDSTORMS. И это неплохо, когда ты еще вчера под столом собирал кубики из лего, а теперь занят колёсными моделями, которые программируешь на определенное поведение. Но стоит задуматься, какую профориентациюнную нотку можно получить с детского конструктора?
Профессиональное и личностное самоопределение стоит в задачах дополнительного образования. Само определение «робототехника» у любого, помимо LEGO, ассоциируется еще с такими словами, как «программирование», «механика», «моделирование», «электроника». Возьмем их за тот абсолют, при достижение которого обучающийся достигнет великого уровня профессионализма и вернемся к LEGO MINDSTORMS.
Программирование в лего есть двух типов:
• Визуальное (EV3/NXT-G, Robolab (для MK RCX, NXT), stratch);
• Текстовое (Small-Basic, RobotC, ev3dev).
Что из этого следует? Начнем по порядку.
Первое, что меня очень разочаровывает, так это визуальное программирование в целом. Да, когда тебе 7 лет идея хорошая, но интерфейс расстраивает. Но когда тебе 16 лет, а ты до сих пор строишь бесконечной размерности цепи из блоков, то хочется просто все бросить и стать врачом. Особого навыка программирования ты не получаешь, так как строить «алгоритмы» подобными конструкциями и считать себя джедаем программирования – бред, хотя повторюсь, что для детей это хорошо, порог вхождения в «программирования» ниже, но сейчас я уже о подростках. Текстовый формат здесь есть, хотя не так уже и давно это появилось. RobotC – урезанный C, который дает триал на 30 дней, а потом никто не знает, что будет. Ни разу не слышал, чтобы кто-то покупал ключ. Ev3dev – уже использует язык программирования (далее ЯП) Python. Многие говорят, что выбор в эту сторону делать не стоит, так как много времени уходит на компиляцию и включение проекта, а также опрос датчиков по времени дольше, чем визуальная среда или Basic. Ну и сам Basic. ЯП адаптирован под микрокомпьютер (далее МК), т.е. может выводить на LCD, опрос датчиков, работа с моторами, массив (вектор) и все, опять-таки ничего такого, что хотелось бы дать ребенку в 15-17 лет, тем более язык неактуален, работает в рамках среды .NET, а там уж лучше C#. В итоге поверхностное вхождение в «тыжпрограммист» и такое же в робототехнику.
«Механика» тут лучше всего, относительно других компетенций. Есть все, что необходимо для воспитания от начинающего механика и до “профессионального” конструктора.
Для моделирования есть нативное приложение LEGO® Digital Designer ™. Ну и куча разных сторонних программ, но многие соревнования запрещают использовать детали не от Mindstorms =’(.
Последняя компетенция «электроника» в рамках рассматриваемой линейки вообще отсутствует, кроме пары датчиков, которые не дают особых познаний, разве что темная поверхность поглощает свет, светлая отталкивает.
И цена набора составляет в среднем 34 тысячи рублей. Забавно, что контроллер Ev3 на борту имеет ARM-архитектуру, частоту 300 Мгц, ПЗУ – 16мб (16мб, КАРЛ!), ОЗУ – 64мб. Usb 2.0, 1.1. И все это чтобы юзать 4 порта датчиков и 4 для моторов. Порты поддерживают I2C, SPI интерфейсы.
Теперь кратко о соревнованиях.
• Езда по черной линии (как навигация или кто быстрее);
• Сортировка (из точки А перенести в точку В).
Есть еще немного выбившие из этих категорий, как, например, футбол, боулинг и т.д. Ну и все.
Теперь вернёмся к нашим баранам, как говорится. Поговорим о главном!
Всё прочитанное вами относится к тому, что хочется развивать и продвигать робототехнику. На дворе 21-ый век, развитие разных технологий имеет экспоненциальный рост, а значит и мы должны не стоять на месте. Нужно бежать со всех ног, чтобы только оставаться на месте, а, чтобы куда-то попасть, надо бежать как минимум вдвое быстрее! (с) «Алиса в стране чудес» Льюиса Кэрролла (математики чушь не скажут).
Я считаю, что пора уже переходить на платформы (ESP, ARDUINO, ISKRA, STM, PIC и т.д.) с синтезом МК (raspberry pi, banana pi, orange pi и т.д), так как здесь мы полноценно изучаем как программирование (С++, Python, Javasript, если в рамках IoT, IoV, умного дома и т.п. создаем веб-сервер, то еще и PHP, SQL + верстка html, css). Порог вхождения в программирование через микроконтроллеры ниже. А ведь это только программирование.
В плане моделирования здесь тоже все отлично: можно собрать, что удобно из всего, что угодно. 3д-принтер - лучший друг, помогающий создать детали. (а про проги 3д-моделирования?) Ну и электроника, как и программирование здесь самый главный компонент. Построение схем, обвязок, сборка, пайка. Количество идей, которые можно реализовать – бесконечно.
Работая с микроконтроллерами, основами электротехники, программирования и моделирования можно вполне воспитать очень достойное поколение инженеров, которые будут готовы к тому, что будет требовать от них рынок труда. Я понимаю, сказать легче, чем сделать. «А ТЫ ПОПРОБУЙ ЭТО ВСЕ ОБЪЯСНИ!!!». Не каждому получается и хочется сидеть и разбираться, а потом еще и детям пытаться объяснить.
Достаточно книг и видеоуроков (DI HALT, AlexGyver, Amperka, В. Петин и многие другие, чьи наработки помогают при обучении – вы лучшие), но не достаточного того, кто все это разложит по полочкам и на блюдечке преподнесёт детям, и будущим преподавателям. А также тех, кто продумает систему соревнований и оценивания знаний.
Сейчас я разрабатываю программу проектного обучения робототехнике, продумываю соревнования. Хочу попытаться выиграть грант и создать площадку на базе школы для обучения как детей, так и взрослых. Буду стараться развивать это направление. Если кто-то желает помочь, есть идеи или какие-то наработки, пишите на почту, я знаю и уверен, что гениев – преподавателей или просто самоучек полно, но нужно собираться в массы и двигаться вперед!
Привет =) Сегодня у меня для вас простенький шагающий робот на ардуино. Ссылку на проект можно найти в описании под видео. Скетч для ардуино лежит там же.
Все детали напечатаны PLA пластиком. Скорость 40- 50 мм\с, сопло 0.5, слой 0.2, заполнение 30%. Робот состоит из 16 напечатанных деталей. Так же потребуется: Arduino Nano, плата расширения с преобразователем на 2А, 6 штук любых шаровых наконечников, аккум с напряжением 6-12 вольт, два китайских сервопривода MG996r и штук 30 винтов М3х10. Сервы подключаются к пинам D9 и D10. Немного о настройке прошивки. Здесь несколько параметров, которые можно настраивать: Leg rest и foot rest – угол, на который поворачиваются обе сервы при инициализации. Устанавливаем в среднее положение – 90 градусов.Left foot up и right foot up – эти параметры относятся к верхней серве. Это углы, на которые поворачивается серва для подъёма правой и левой стопы. Здесь нужно отталкиваться от среднего положения в 90 градусов. Для левой ноги 80 градусов, для правой – 95. Значения этого и следующего параметра можно подстраивать, чтобы добиться стабильной походки. Left leg forward и Right leg forward – Углы для движения ног вперёд и назад. Здесь всё аналогично предыдущим параметрам. Для левой ноги 97 градусов, для правой – 83. Stepdelay – задержка между поворотами серв. Чем больше цифра, тем дольше пауза. Movedelay – скорость поворота серв, это условное значение. Чем меньше цифра – тем быстрее будут поворачиваться сервы.
В целом робот очень простенький, печатается и собирается буквально за день =)
Подробный видеогайд по сборке:
Привет, меня зовут максим, я студент первого курса в колледже. Я пришел сюда похвастаться своим проектом, который получил 3-е место на конференции. Знаю, это такое себе творение, но я бился над ним больше месяца, уделяя ему почти все свободное время, и я мягко говоря горжусь им.
Когда-то я писал пост про управлением нагревом на самогонном аппарате. https://pikabu.ru/story/arduino_i_izgotovlenie_spirtnyikh_na.... Читатели справедливо упрекали, что я не использую многих возможностей Ардуино для более точного управления нагрузкой, не использую регуляторов и т.д. Но в этом была не моя вина, я делал то, что меня попросили. Теперь же совпало два события. Во-первых, мне попалась на глаза интересная статья, во-вторых, еще один товарищ попросил автоматизировать работу ректификационной колонны. Ну теперь-то, я опробую всякие штучки за чужой счет!)
Итак статья. Чтобы плавно управлять нагрузкой, можно использовать фазовую модуляцию. В статье же предлагается использовать алгоритм Брезенхема. https://habr.com/ru/post/254719/
Для нагревателей - то что нужно, подумалось мне. Действительно, этот способ имеет ряд преимуществ, да и схема, использованная мной, как раз подойдет для этого случая.
Для тех, кто не хочет читать статью, поясню, в чем суть. Переменное напряжение в бытовой электросети изменяется по синусоидальному закону с частотой 50Гц. Это значит, что за одну секунду мы имеем 50 полных волн или 100 полуволн. Таким образом, если каждую секунду включать нагрузку таким образом, чтобы пропускать определенное количество полуволн, то мы можем дискретно регулировать выдаваемую мощность. Если за 1 секунду мы будем пропускать 1 полуволну - это будет 1% мощности, если 50 полуволн, то 50%, а если все 100 - то 100%. МОС сама отслеживает прохождение волны через 0, поэтому включать и выключать будет в 0, что уменьшит помехи, возникающие при работе, например, фазового модулятора.
Итак, осталось только равномерно распределить в течение секунды полуволны, а для этого и используется алгоритм Брезенхема. Картинка из статьи это прекрасно иллюстрирует.
Единственный нюанс, мы возьмем за основу не 10, а 100 полуволн, и будем выдавать мощность в процентах, за 1 секунду. Для тестирования устройства проценты будем задавать с помощью потенциометра.
Итак, имелась плата Arduino ProMini, к ней все и подключим. Код получается мелкий и простой, надеюсь, что сообщество извинит, что я его выкладываю прямо тут:
byte pers; // Переменная для получения данных порта
int x; // Переменная координат алгоритма Брезенхема
int y; // Переменная координат алгоритма Брезенхема
int onoff ; // Переменная сигнала на плату симистора
void setup() {
pinMode(12, OUTPUT); // Назначаем пин на выход (плата симистора)
}
void loop() {
pers = analogRead(pinPot); // Положение потенциометра
pers = map(pers, 0, 1013, 0, 100); // Переводим показания потенциометра в проценты
if (pot > 100) {pot = 100; } // Ограничиваем значение
y = 0;
for (int i = 1; i <= 100; i++){ // Алгоритм Брезенхема
x = i * pers / 100 ;
if (x == y) {onoff = 0;}
else {onoff = 1;}
digitalWrite(12, onoff);
delay(10);y = x;
}
}
Ну вот, отлично работает эта схема. Крутим потециометр и смотрим на мигание лампочки на электрическом чайнике. Красота. Получился прекрасный диммер - регулятор мощности переменного тока, нагрузкой, если верить даташиту симистора, до 40A и напряжением до 600В при наличии хорошего радиатора. https://html.alldatasheet.com/html-pdf/22042/STMICROELECTRON...
Я поставил радиатор от кулера процессора, большой и красивый. При управлении 2,2кВт чайником, он даже теплым не становится.
Ну а как же управлять теперь получившимся устройством? Ведь плата Ардуино Только тем и занята, что отправляет импульсы на плату симистора. А как же цифровые датчики температуры? Их библиотеки вносят задержки. Использовать аналоговые? Это не наш метод. А как же дисплей, настройки, различные режимы работы, мигающие светодиоды и прочее? Да и ладно, пусть меня осудят, подумал я и решил использовать еще одну плату, на этот раз Uno и все-все реализовать на ней. А уже с нее просто бросать данные по softserial на Pro Mini.
В чем еще удобство такого управления? А в том, что на UNO теперь можно сделать автоматический регулятор. Процесс нагрева небыстрый, поэтому я решил, что ПИД-регулятор тут не нужен, достаточно будет ПИ-регулятора, и не ошибся.
В следующей статье опишу и его и покажу, как почти готовое устройство греет электрический чайник.
Предыдущий проект с мини роботом-шпиёном вам понравился, поэтому продолжаю тему. Сегодня будем делать мини робота, который управляется со смартфона по Bluetooth, а также шлёт видео с бортовой камеры опять же на смартфон! Для этого проекта мне пришлось чуть поднять свой скилл и разработать собственное приложение под Андроид. Всё показано и рассказано в следующем видео, а ссылки на компоненты, инструкции и прошивки находятся на странице проекта вот тут https://alexgyver.ru/bluetooth-car/
Кратко о том, что как работает:
Машинка: Bluetooth модуль принимает пакеты вида $<позиция X> <позиция Y>; (пример $10 50; ) и отправляет их на Ардуину, значения преобразуются в управление моторами по танковой схеме (едем вперёд - все моторы крутят вперёд, поворот - моторы одной стороны крутятся медленнее), моторы управляются через полномостовой драйвер для двух моторов. Камера передаёт видео по каналу 5.8 GHz.
Смартфон: к смартфону подключен FPV приёмник, который принимает и показывает видео с камеры в специальном приложении (в моём случае FPViewer, но есть и другие). Приложение GyverJoy (лежит в архиве проекта в папке Android) отслеживает позицию джойстика и отправляет пакеты вида $<позиция X> <позиция Y>; по Bluetooth. Вооружившись разделением экрана в свежих версиях Android получаем одновременно и возможность управлять машинкой, и смотреть видео с бортовой камеры!
СХЕМА ПРОЕКТА
Робот представляет собой платформу с четырьмя колесами. Платформа вырезана лазером по моим чертежам.
Каждое колесо приводится в движение редуктором с мотором.
Для управления колесным роботом используется Ардуино Мега.
Существуют три режима работы робота: радиоуправление, самостоятельное движение и откат по памяти назад.
Используемые датчики: ультразвуковые, инфракрасные.
Для индикации текущего режима работы используется полноцветный LED. В режиме радиоуправления светодиод мигает, при самостоятельном режиме - светится постоянно, синий цвет - откат по памяти.
Крепление деталей к платформе робота осуществляется нейлоновыми болтами, гайками, стойками.
Состав пульта: Ардуино Нано, джойстик, передатчик 433МГц, клавиатура на 5 кнопок.
Видео испытаний инфракрасных датчиков: https://youtu.be/F4poZUIt5Mc
Видео испытаний ультразвуковых датчиков: https://youtu.be/s-vzDc4BbiA
Видео поворотов: https://youtu.be/dissl3xMw9Y
По части программирования Arduino:
KemaUS - класс для работы с ультразвуковыми датчиками. При расстоянии до препятствия более 30см робот движется вперед, сигнал на LED индикаторе зеленый. При расстоянии 15 - 30 см - он останавливается, LED индикатор желтый. При приближении препятствия менее чем на 15 см - робот едет назад, LED индикатор красный.
KemaIR - класс для работы с инфракрасными датчиками. Данные датчики срабатывают на определенном расстоянии, в данном случае чуть ниже плоскости, на которой стоят колеса робота. Если хотя бы один срабатывает, то робот останавливается.
KemaState - класс для сохранения состояния робота. В него записываются показания датчиков, скорость и поворот, если есть. В скетче для Ардуино Меги используются две переменные этого класса: текущее и предыдущее состояния. Также используется в классе KemaMem.
KemaDrive - класс для управления моторами. Скорость отрицательная - назад, положительная - вперед. Отрицательный поворот - влево, положительный - вправо.
KemaLED - класс для управления полноцветным LED индикатором. Мигание означает режим радиоуправления, постоянный свет - режим робота. При этом могут гореть три цвета:
зеленый - робот едет вперед (нет препятствий);
желтый - робот стоит;
красный - робот едет назад.
Синий индикатор - откат по памяти.
Чертежи, схемы, классы Arduino в моей группе по робототехнике: https://vk.com/myrobotics