Интереснейшая штука эта ваша Ардуино, всё можно сделать. Дело было вечером, делать было нечего и в голове всплыл проект парктроника в гараж, уж и не помню, где я его видел.
Смысл парктроника в том, чтобы в зависимости от приближения менялся цвет ленты. В данном случае, т.к. это "мини" парктроник, то я задумал, что 20 см - зелёный, 10 см - жёлтый и менее 5 см - должен моргать красный.
Для проекта нужно.
Кусок светодиодной ленты. У меня был на кусочек 12 диодов.
Ардуино UNО.
Ультразвуковой датчик для измерения расстояния и движения HC-SR04.
Пакет молока
HC-SR04 - это популярный и недорогой ультразвуковой датчик для измерения расстояния. Он использует принцип эхолокации - посылает ультразвуковой сигнал и измеряет время, за которое он возвращается после отражения от объекта.
Эффективная дистанция:2 см - 400 см (реально 2 см - 200 см стабильно)
Точность: ~3 мм
Если в проекте несколько составляющих, то я всегда по возможности их отдельно проверяю, чтоб потом не ломать голову, из-за чего всё не работает.
Поэтому вначале проверяем датчик HC-SR04. Для этого загружаем скетч проверки и в мониторе порта смотрим, как датчик реагирует, например, на руку.
Не знаю как вам, а мне очень нравятся песочные часы. Что то есть в них такое притягательное, теплое. Но вообще то (если вдруг кто то не заметил) на дворе 2025 год. Сейчас в век электроники вполне себе логично заменять песок на светодиоды. Что я и решил сделать. Кроме того так, как я все таки айтишник, некоторое время назад я активно интересовался техникой Pomodoro. Это такой способ работы когда выключаешь все раздражители и работаешь активно 25 минут, а потом 5 минуть отдыхаешь, после чего цикл повторяется заново. Постоянной эта техника для меня не стала, но в общем часто помогает начать какое то дело которое сложно начать. Короче это все лирика, давайте приступим к делу!
В процессе сборки этих часов я потратил просто огромное время на проектирование корпуса. Корпус для них я переделывал не меньше шести раз, а может и больше. Вот большая часть моих экспериментов.
Слева направо видна эволюция корпусов, а последнюю версию вы видите снизу. Под сокращением "бп" размещена деталька которая держит блок питания который заражает аккумулятор.
Подозреваю что далеко не все тут разбираются в электронике поэтому вкратце опишу что здесь происходит. Я использовал модули которые продаются в большом количестве магазинов электроники. Модули матричных светодиодов с контроллерами, модуль зарядки аккумуляторов, сам аккумулятор я купил на озоне, а микроконтроллер заказал с алиэкспресс.
А вот причина того что я переделывал корпус и внутренние части так много раз. Я обычный радиолюбитель и у меня нет под боком инженерного отдела, поэтому размещать компоненты в корпусе пришлось методом проб и ошибок. Точнее сначала все было достаточно просто и легко, но по мере того как количество компонентов увеличивалось становилось все сложнее разместить их так чтобы они друг другу не мешались.
Но вот наконец то настал момент истины. Корпус собран, все компоненты спаяны а микроконтроллер запрограммирован и протестирован. Сзади я расположил выключатель, правда у меня не получилось утопить его в корпусе на всю высоту. Мне очень хотелось это сделать, но для этого нужно было сделать корпус толще, а мне этого делать совершенно не хотелось.
Проверяем работу зарядки. Тут кажется тоже все в норме.
Теперь включаем и проверяем. Кажется все работает нормально.
Но это еще не все! Ведь таймер нужно настраивать. Как например поставить 5, 10 минут, и что там насчет техники Помодоро? Ведь на корпусе только одна кнопка! Все просто! Чтобы минимизировать количество кнопок, я решил что все внутри таймера будет настраиваться через вайфай. Сделал так чтобы к контроллеру можно было подключится по wifi
А так же сбацал простенькую страничку настроек. Без излишеств и вебдванольности, я ведь не веб дизайнер, просто любитель поэтому прошу тапками не кидаться! Интерфейс простой - настройка времени основной задержки и настройка времени для таймера помодоро, а так же кнопка запуска таймера по вайфай.
Ну а на этом все! Надеюсь было интересно. А у ж если я кого то из вас сподвиг на какой то свой проект, я буду вообще счастлив!
P.S. Если кому то захочется обсудить то что я делаю или возникнут вопросы - пишите в комментариях или заходите в мой ТГ канал https://t.me/akiman_sa - там я бываю значительно чаще чем здесь. Ну а если вам захотелось поподробнее узнать как именно я делал этот таймер - вы можете посмотреть об этом ролик
Пока еще некоторые отладочные платы для полного теста еще едут (жду более разнообразных маленьких RISC V), хотел бы сравнить свою разработку с Allen Bradley и их базовым ПЛК Micro810.
400 LD инструкций в целом (на 4 задачи, но тестируем только одну с примитивами 184 LD. Так же в фоне работает своя виртуальная RTOS - можно и без нее, но берем самый тяжелый случай). Но так как в программе есть ветки - не все эти 400 LD отрабатывают. При отличном от ожидаемого значении - идет перемещение указателя на инструкцию:
считаем только отработанные инструкции, замеряем их скорость выполнения.
В моей виртуальной машине кеширования нет, или какой либо оптимизации, все переменные каждый раз пройдут полный путь загрузки и проверки.
В конце цикла - устанавливаем/сбрасываем ножу микроконтроллера.
Замеряем время осциллографом.
Рассчитываем среднее время выполнения 1 инструкции в составе всех отработанных LD.
Результаты сравнения:
значения брендового ПЛК берем из документации. В моем случае разброс 9.5-14.5 мксек, следующее: если читать переменную из памяти в каждой LD инструкции - 14.5 микросекунд. Если вы загружаете состояние входов только один раз в начале цикла : 9.5 мксек.
Одна LD базовая инструкция выполняется от 9.5 до 14.5 микросекунд против 2.5 мксек у Micro810.
STM32G030 (мой ПЛК на нем) в 4 - 6 раз медленнее чем Micro810.
Также стоит отметить, что частота STM32G030 в моем тесте была намеренно снижена с 64 до 42 Мегагерц. Но даже если частоту поднять и скорость возрастет на треть, все равно ,бренд Allen Bradley Micro810 будет в разы быстрее STM32G030.
Еще стоит отметить, я не знаю какой процессор стоит в ПЛК Micro810, но судя по производительности скорее всего не сильно производительнее нашего STM32G030. Моя задача была проверить возможности ПЛК на STM32G030 в режиме энергосбережения, и сравнить с брендом.
За счет того что программа нашего ПЛК с STM32G030 выполняется виртуальной машиной собственной разработки, обычно, есть проигрыш по скорости примерно 2-4 раза от нативной реализации (от того я и предположил что Allen Bradley Micro810 имеет CPU не сильно производительнее STM32G030 ).
Что можно выжать из STM32G030 в качестве ПЛК:
При настройках цикла в 5 миллисекунд, за этот период мы можем отработать 400 LD и отправить/принять по Modbus на RS485 : 32 целочисленные переменные, на низких скоростях. Много это или мало? в тесте, например тут 184 LD.
таймеры/счетчики еще отнимут 64 - 100 байт за каждый. Шахтный конвейер, одна из веток конвейера обошелся около 300 LD, тут - 184 но влезет в STM32G030 400 LD.
Cамое главное, преимущество перед Micro810
Наш ПЛК STM32G030 может работать в режиме вытесняющей многозадачности. И мы можем менять программу не перезагружая ПЛК физически - отправить кусок кода по Ethernet или RS485, и полностью переписать программу задачи не останавливая другие задачи. Эти функции есть только в Топовых ПЛК.
Еще есть момент, у STM32G030 всего 8кб ОЗУ: 4кб примерно забирают переменные виртуальной машины, еще на 4кб остаются под программу, поэтому больше 400 LD и несколько десятков целочисленных и булевых переменных не получится на нем реализовать. Флеш 32кб занят полностью прошивкой. Расширить программу ПЛК можно только через внешнюю память (например через интерфейс I2C / SPI), у Micro810 по документации влезет 2000 LD .
Минимальную цену Allen Bradley Micro810 которую видел на международных площадках - 140$ за один такой ПЛК. Сложно сказать какая себестоимость его на производстве но думаю ПЛК на STM32G030 обошелся бы не дороже 50$ (цена платы с STM32G030 3$ + хорошие гальванические развязки с корпусом и прочее).
Следующий тест я проведу на знаменитой синей плате STM32F103C8T6.
В интернете (на известном и других ресурсах) видел тестирование ее в качестве ПЛК со средой разработки от Mitsubishi. Тут уже будет поинтереснее, так как все сравниваться будет на одном и том же железе ( в отличии от Allen Bradley Micro810,которые не разглашают что у них там в качестве CPU) , и прямой соревнование с брендом - будет интересно. Сравниваться буду всем - своим компилятором, средой разработки и выполнения на микроконтроллере. Если вам тоже интересно - присоединяйтесь.
Два года назад мы набрались смелости и начали искать единомышленников, кто готов, на наших наборах учить детей схемотехнике/Arduino. Было немного страшно не получить откликов, но и получить очень много тоже не хотелось). В итоге откликнулся один человек (возможно пост не получил должного охвата, либо не заинтересовал аудиторию) но получилось как получилось и, после небольших согласований, первые наборы уехали в г.Шелехов. Фото с разрешения преподавателя публикую:
На второй год мы подумали, что у нас же есть тематическая группа ВК и разместили всю информацию там, далее будем размещать только там. Отклик был уже намного больше, и в 2024 году получилось открыть кружки в:
Сарапул Челябинск Сургут Семенов Кузнецк
Одна из обратных связей
Тут уже работа шла более уверенно и плодотворно. Преподаватели рады, дети счастливы, мы довольны, или наоборот, уже не помню) В этом году мы продолжили нести свет мигающего светодиода по стране, отклик был уже настолько большой, что закрыли набор достаточно быстро, но ещё некоторое время получали обратную связь. В итоге набралось 14 населенных пунктов. Были отправлены тестовые наборы для преподавателей для ознакомления и общий старт был намечен на 1 октября, но прознал президент заморский, что скоро Россия станет лидеров в робототехнике и подготовил заговор против устремлений светлых, а так как не знал, где конкретно едут наборы – вообще перекрыл поток товаров из Китая. Погрустили, погоревали, но где у себя на складе что-то нашли, где в других ардуино магазинах выкупили, собрали и отправили по 8 наборов в 14 городов, мы даже стали немного международным проектом(отправили в Кыргызстан) в нашем понимании у образования нет границ. Ещё в 2 (по договоренности с ними, так как обратились уже после закрытия границ) поедут наборы в ноябре. В 2025 году кружки были согласованы/открыты в следующих населенных пунктах:
Красногорский Сатка Новосибирск Барабинск Краснотуранск Сарапул Вологда Муезерский Новосибирск (ещё раз) Актаныш Карасук Киров Таганрог Нарын (Кыргызстан) В ноябре отправим в Новодвинск и Котельнич
Наборы для кружков в 2025 году
Этим постом мы не ищем одобрения, просто хотели бы показать, что делать добрые дела можно на любом уровне. Главное желание, да мы отнимаем у себя ресурсы, время, но взамен получаем намного больше – понимание, что действительно меняем мир. В последнее время на Пикабу все стараются добавить ссылки на тг/вк ресурсы, чтобы получить подписчиков, мы же здесь не для этого и размещать ссылки не планируем, найти информацию о проекте не сложно, но просьба не выкладывать переходы/название магазина, возможно выпускники Бизнес молодости скажут, что это нелогично, непрактично, даже делая добрые дела надо стараться получать выгоду, ну а мы скажем: конь, стул, двадцать восемь. Всем добра)
Здравствуйте великие умы и повелители Ардуино. у меня к Вам вопрос, у меня есть наборчик на Ардуино ,шаговый мотор и гироскоп акселерометр, как мне сделать инверсию гироскопа? Т.е. нужно чтоб он давал сигнал мотору поворачивать вал в противоположную сторону относительно показаний. в программирование нихера не понимаю, скетч или как правильно ... брал готовый