Сообщество - Arduino & Pi

Arduino & Pi

1 491 пост 20 825 подписчиков

Популярные теги в сообществе:

149

Парктроник в гараж

Интереснейшая штука эта ваша Ардуино, всё можно сделать. Дело было вечером, делать было нечего и в голове всплыл проект парктроника в гараж, уж и не помню, где я его видел.

Смысл парктроника в том, чтобы в зависимости от приближения менялся цвет ленты. В данном случае, т.к. это "мини" парктроник, то я задумал, что 20 см - зелёный, 10 см - жёлтый и менее 5 см - должен моргать красный.

Для проекта нужно.

  1. Кусок светодиодной ленты. У меня был на кусочек 12 диодов.

  2. Ардуино UNО.

  3. Ультразвуковой датчик для измерения расстояния и движения HC-SR04.

  4. Пакет молока

HC-SR04 - это популярный и недорогой ультразвуковой датчик для измерения расстояния. Он использует принцип эхолокации - посылает ультразвуковой сигнал и измеряет время, за которое он возвращается после отражения от объекта.

  • Эффективная дистанция: 2 см - 400 см (реально 2 см - 200 см стабильно)

  • Точность: ~3 мм

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

Поэтому вначале проверяем датчик HC-SR04. Для этого загружаем скетч проверки и в мониторе порта смотрим, как датчик реагирует, например, на руку.

Схема подключения HC-SR04 к Arduino Uno:

HC-SR04 Arduino Uno

VCC 5V

Trig PIN 12

Echo PIN 11

GND GND

Скетч для проверки:

https://disk.yandex.ru/d/wELrf8-F7Ad3OA

Смотрим монитор порта. Датчик работает

Смотрим монитор порта. Датчик работает

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

Arduino Uno Светодиодная лента

GND GND

5V +5V

PIN6 DIN

Заливаем скетч и проверяем. В качестве авто пакет молока)

https://disk.yandex.ru/d/qKIzeLijFmiitg

Всё нормально работает. И при необходимости можно парктроник воткнуть и во взрослый гараж.

Показать полностью 2 1
144

Самодельные песочные часы + Pomodoro таймер

Не знаю как вам, а мне очень нравятся песочные часы. Что то есть в них такое притягательное, теплое. Но вообще то (если вдруг кто то не заметил) на дворе 2025 год. Сейчас в век электроники вполне себе логично заменять песок на светодиоды. Что я и решил сделать. Кроме того так, как я все таки айтишник, некоторое время назад я активно интересовался техникой Pomodoro. Это такой способ работы когда выключаешь все раздражители и работаешь активно 25 минут, а потом 5 минуть отдыхаешь, после чего цикл повторяется заново. Постоянной эта техника для меня не стала, но в общем часто помогает начать какое то дело которое сложно начать. Короче это все лирика, давайте приступим к делу!

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

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

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

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

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

Проверяем работу зарядки. Тут кажется тоже все в норме.

Теперь включаем и проверяем. Кажется все работает нормально.

Но это еще не все! Ведь таймер нужно настраивать. Как например поставить 5, 10 минут, и что там насчет техники Помодоро? Ведь на корпусе только одна кнопка! Все просто! Чтобы минимизировать количество кнопок, я решил что все внутри таймера будет настраиваться через вайфай. Сделал так чтобы к контроллеру можно было подключится по wifi

А так же сбацал простенькую страничку настроек. Без излишеств и вебдванольности, я ведь не веб дизайнер, просто любитель поэтому прошу тапками не кидаться! Интерфейс простой - настройка времени основной задержки и настройка времени для таймера помодоро, а так же кнопка запуска таймера по вайфай.

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

P.S. Если кому то захочется обсудить то что я делаю или возникнут вопросы - пишите в комментариях или заходите в мой ТГ канал https://t.me/akiman_sa - там я бываю значительно чаще чем здесь. Ну а если вам захотелось поподробнее узнать как именно я делал этот таймер - вы можете посмотреть об этом ролик

Показать полностью 8 1
35

Адаптер для установки сервопривода SG90 на разные поверхности, для ваших проектов Arduino

Скачать можно здесь:
https://3dtoday.ru/3d-models/sport-and-rest/hobby/adapter-dl...

Показать полностью 1
101

Своими разработками, соревнуюсь с брендами в АСУ ТП. Аналог Allen Bradley? STM32G030 против Micro810

Своими разработками, соревнуюсь с брендами в АСУ ТП. Аналог Allen Bradley? STM32G030 против Micro810

Пока еще некоторые отладочные платы для полного теста еще едут (жду более разнообразных маленьких RISC V), хотел бы сравнить свою разработку с Allen Bradley и их базовым ПЛК Micro810.

Что у меня за проект такой, начало тут: Своими разработками c нуля, решил тягаться с Rockwell Automation и Siemens в АСУ ТП

Железо:

Отладочная плата : 3$

stm32 G030  (Cortex M0)

8 KB RAM

32 KB Flash.

Тестовая программа:

400 LD  инструкций в целом (на 4 задачи, но тестируем только одну с примитивами 184 LD. Так же в фоне работает своя виртуальная RTOS - можно и без нее, но берем самый тяжелый случай). Но так как в программе есть ветки - не все эти 400 LD  отрабатывают. При отличном от ожидаемого значении - идет перемещение указателя на инструкцию:

считаем только отработанные инструкции, замеряем их скорость выполнения.

считаем только отработанные инструкции, замеряем их скорость выполнения.

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

В  конце цикла - устанавливаем/сбрасываем ножу микроконтроллера.

Замеряем время осциллографом.

Рассчитываем среднее время выполнения 1 инструкции в составе всех отработанных LD.

Результаты сравнения:

значения брендового ПЛК берем из документации. В моем случае разброс 9.5-14.5 мксек, следующее: если читать переменную из памяти в каждой LD инструкции - 14.5 микросекунд. Если вы загружаете состояние входов только один раз в начале цикла : 9.5 мксек.

значения брендового ПЛК берем из документации. В моем случае разброс 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) , и прямой  соревнование с брендом - будет интересно. Сравниваться буду всем - своим компилятором, средой разработки и выполнения на микроконтроллере. Если вам тоже интересно  - присоединяйтесь.

Показать полностью 3 1
13

Программа на ПК для измерения расстояния (дальномер) с помощью датчика VL53L0X и Arduino Nano

Скетч и программу, можно скачать здесь:
https://drive.google.com/file/d/1RI_grEx6S8EkkG2cVaXFgVYo2qk...

Загрузите скетч на Arduino Nano и запустите программу

Загрузите скетч на Arduino Nano и запустите программу

Выберите нужный порт

Выберите нужный порт

Нажмите подключить, программа сообщит об успешном подключении и начнёт измерения

Нажмите подключить, программа сообщит об успешном подключении и начнёт измерения

Как смог, так сфотографировал сравнение с 20 см линейкой.

Как смог, так сфотографировал сравнение с 20 см линейкой.

Показать полностью 3
38

Конь,стул, двадцать восемь

Два года назад мы набрались смелости и начали искать единомышленников, кто готов, на наших наборах учить детей схемотехнике/Arduino. Было немного страшно не получить откликов, но и получить очень много тоже не хотелось). В итоге откликнулся один человек (возможно пост не получил должного охвата, либо не заинтересовал аудиторию) но получилось как получилось и, после небольших согласований, первые наборы уехали в г.Шелехов.
Фото с разрешения преподавателя публикую:

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

Сарапул
Челябинск
Сургут
Семенов
Кузнецк

Одна из обратных связей

Одна из обратных связей


Тут уже работа шла более уверенно и плодотворно. Преподаватели рады, дети счастливы, мы довольны, или наоборот, уже не помню)
В этом году мы продолжили нести свет мигающего светодиода по стране, отклик был уже настолько большой, что закрыли набор достаточно быстро, но ещё некоторое время получали обратную связь. В итоге набралось 14 населенных пунктов. Были отправлены тестовые наборы для преподавателей для ознакомления и общий старт был намечен на 1 октября, но прознал президент заморский, что скоро Россия станет лидеров в робототехнике и подготовил заговор против устремлений светлых, а так как не знал, где конкретно едут наборы – вообще перекрыл поток товаров из Китая.  Погрустили, погоревали, но где у себя на складе что-то нашли, где в других ардуино магазинах выкупили, собрали и отправили по 8 наборов в 14 городов, мы даже стали немного международным проектом(отправили в Кыргызстан) в нашем понимании у образования нет границ. Ещё в 2 (по договоренности с ними, так как обратились уже после закрытия границ) поедут наборы в ноябре. В 2025 году кружки были согласованы/открыты в следующих населенных пунктах:

Красногорский
Сатка
Новосибирск
Барабинск
Краснотуранск
Сарапул
Вологда
Муезерский
Новосибирск (ещё раз)  
Актаныш
Карасук
Киров
Таганрог
Нарын (Кыргызстан)
В ноябре отправим в Новодвинск и Котельнич

Наборы для кружков в 2025 году

Наборы для кружков в 2025 году

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

Показать полностью 3

Нужна помощь или направление

Здравствуйте великие умы и повелители Ардуино.
у меня к Вам вопрос, у меня есть наборчик на Ардуино ,шаговый мотор и гироскоп акселерометр, как мне сделать инверсию гироскопа? Т.е. нужно чтоб он давал сигнал мотору поворачивать вал в противоположную сторону относительно показаний.
в программирование нихера не понимаю, скетч или как правильно ... брал готовый

Отличная работа, все прочитано!