· Нейросеть: Локальная модель (TensorFlow Lite / MobileNet SSD / YOLO nano) для детекции насекомых (fly, mosquito, moth). Файл модели лежит на SD-карте, интернет не требуется.
2. Очерёдность закупки железа
Первая очередь (основа, покупать немедленно)
1. Raspberry Pi 5 (8 ГБ) с радиатором.
2. MicroSD карта 64 ГБ (Class 10, U3).
3. Официальный блок питания 5В 5А (USB-C).
4. Камера Module 3 (широкоугольная) + шлейф 30–50 см.
5. Любой HDMI-монитор/телевизор для первой настройки (или USB-TTL переходник).
Что тестируем: Загрузка Pi, захват видео с камеры, проверка OpenCV.
Вторая очередь (подвес, покупать вместе с первой)
6. Два сервопривода MG996R (металлические шестерни).
7. Алюминиевый набор Pan-Tilt (кронштейны, качалки) под сервы MG996R.
Она компактнее и экономнее в два раза, что позволяет печатать ее даже на а1 мини
Ствол длиннее чем у прошлой ,потому что она будет стрелять пластиковыми дартами с резинкой на конце 30мм
Турели в разобранном виде и теперь ее можно поместить куда угодно
Насчет того что нет ссылки и кода на турель , она еще не готова ,но скоро выложу если есть уточнения какие компоненты для нее нужны и как она работает выложу в отдельном посте про нее( нехватает на есп 32 с расширением как открыть сбор я не знаю подскажите в комментах.)
Поделитесь пожалуйста советами на счет того, как стартовать в гидропонике. Опыт выращивания - лук на подоконнике в воде давал корни :)
Опыт в аквариумистике большой (вода, фильтры, освещение - плюс минус понятно), опыт с ардуино небольшой, опыт паяльника - починил гирлянду однажды в жизни. Есть много инструментов, совсем не нравится что за простенькую систему (в том числе, которую можно закодить через ИИшку) требуется так много денег (5-10-14 тысяч на 15-30 мест).
В наличии есть трудоспособные руки, пусть и без опыта. Плюс есть несколько 3D принтеров (филамент еще не изучал, но уже в ближайших планах, а вот фотополимерные - активно использую, много что печатаю для настольных игр).
В идеале хотел бы дома собрать по стене в метра 4-5 несколько труб, с освещением, где полная автоматика присылает мне на телефон что пора воды долить или же добавить каких-то определенных минералов.
Выращивать думаю - микрозелень на мини варианте - клубнику для жены попробую (это основное условие, чтобы оправдать существование экспериментальной установки собственной) - помидорчики черри - траву на еду - салаты всякие, чтобы срезал и сразу на завтрак закинул
Сразу задам вопросы безопасности по спектру ламп - что брать, на что обращать внимание, чтобы потом не мучаться с онко заболеванием глаз - у себя, у всяких котов дома. В аквариуме проще - поставил сверху крышку, а там толща воды да стекла все отфильтруют и до нас уже плюс минус должно доходить безопасно.
Начал я с системы попроще, пока смотрю, что да как работает. Но уже сейчас появляется понимание, что хотелось бы сделать иначе.
Брал на Озоне за 13800, подождал с Китая три недели, все работает, изучаем на практике.
Хочется выйти на уровень плюс минус адекватности по цене и при этом не колхоз городить. В идеале к чему хочу прийти ниже на фото
Это последнее фото самое близкое к тому, что хотелось бы получить
В далёкие времена, когда я только делал свои первые шаги в мир электроники, мой сосед-наставник (дядя Юра) задал мне один простой вопрос: «Тебе нужно просто получить что-то готовое, чтобы оно как-то крутилось и работало, или ты хочешь до конца понять саму суть процесса?». Я выбрал второе и он протянул мне пару учебников, простую платку для разбора (по-началу, я даже не понял, что это за плата, от чего) и дал ровно неделю времени. Уже после я был записан на всякие кружки, ДОСААФ, КасПар - об этом я писал раннее.
Иллюстрация сгенерирована нейронкой.
С тех пор прошло много лет, но этот вопрос актуален и сегодня для многих. Что для вас путь в DIY electronics сейчас, в 2026 году?
Это растворимый кофе «3 в 1», где просто плеснул кипятка из готовых прошвок — и вуаля, или это детальное изучение и разбор полётов? Нужно просто быстрое решение, чтобы «лишь бы работало», или вы хотите разобраться, как всё устроено изнутри, чтобы создавать что-то самостоятельно?
Главный холивар последних лет
«Зачем в 2026 году использовать древний 8-битный микроконтроллер ATmega328P? Ведь за те же деньги можно взять мощный 32-битный STM или ESP с Wi-Fi и Bluetooth на борту! В чем смысл и перспектива?»
Давайте снимем розовые очки маркетинга и разберем этот технический вопрос без эмоций.
1. Фундамент и «Жигули» в мире электроники
ATmega328P — это классика и основа всех основ. Его архитектура настолько проста, прозрачна и легкоусвояема, что лучшей учебной базы на сейчас просто нет. Благо уроков, реальных примеров с объяснениями предостаточно.
Иллюстрация сгенерирована нейронкой.
Когда начинающий мейкер сразу берется за условный STM или ESP, он мгновенно тонет в нюансах сложных платформ: в первом случае ему придется продираться через сотни страниц документации только ради базовой настройки тактирования периферии, а во втором — сталкиваться с многопоточной FreeRTOS, которая делит процессорное время с радиомодулями и регулярно вызывает неожиданные перезагрузки по сторожевому таймеру (Watchdog). Это всё равно что посадить человека, который только пришел в автошколу, за руль гоночного болида «Формулы-1» — начинающий разработчик в этих дебрях не сможет даже «тронуться с места» и быстро потеряет всякую мотивацию.
Atmega328 — это честное железо. В нем нет операционной системы. Контроллер делает ровно то, что написано в прошивке. На ATmega новичок учится беречь память и писать чистый, красивый, оптимизированный код. Научившись уверенно водить «Жигули» и понимая физику автомобиля изнутри, он потом без малейшего страха пересядет на любой высокотехнологичный «Мерседес».
2. Избыточность мощностей: Зачем стрелять из пушки по воробьям?
В инженерной среде есть золотое правило: эффективность системы определяется минимальной достаточностью.
Иллюстрация сгенерирована нейронкой.
Диванные критики привыкли мериться дуданьками «голыми» цифрами в спецификациях: количеством ядер, мегагерцами и гигабайтами. Но давайте ответим на простой вопрос: почему два абсолютно одинаковых по своим аппаратным параметрам компьютера под управлением разных операционных систем работают совершенно по-разному?
Почему один мгновенно откликается на команды, а второй безбожно лагает на том же самом процессоре?
Возьмите флагман на Android и iOS с равным или почти равным железом. Почему один зачастую работает ощутимо шустрее, плавнее и живет дольше другого от одного заряда? (Ничего личного. Просто обсуждение)
Иллюстрация сгенерирована нейронкой.
Ответ знает любой профессиональный программист: дело в чистоте кода, грамотной работе с памятью и оптимизации процессов, а аппаратная составляющая здесь занимает второе место. Чистота кода, правильный подход к кодингу и жесткая оптимизация организации памяти решают абсолютно всё!
Когда под вашим управлением находится 32-битный чип, огромные ресурсы микроконтроллера сгорают впустую внутри громоздких фоновых библиотек и/или операционной системы. Вы вынуждены ставить мощный чип просто для того, чтобы он «прожёвывал» неоптимизированный код.
В случае со скромной ATmega328P у вас нет права на ошибку — в вашем распоряжении всего 2 КБ оперативной памяти. И это не баг, а мощнейший воспитательный инструмент. Это учит ювелирно оттачивать код без лишнего программного «мусора».
Например, чтобы собрать термостат с кастомными настройками и вывести информацию на дисплей — ресурсов ATmega хватает с огромным запасом, ведь прошивка выполняется нативно на уровне железа. Использовать здесь избыточные платформы — это всё равно что нанимать КамАЗ для того, чтобы привезти домой буханку хлеба из магазина за углом.
3. Толерантность и простота обвязки
С ATmega328P всё гораздо проще. В штатном режиме она потребляет ничтожно мало энергии, а в режиме сна и вовсе переходит на микроамперы. При этом она не требует сложной, дорогой обвязки по питанию и стабильно работает в широком диапазоне напряжений, легко переваривая 5-вольтовую логику без дополнительных преобразователей уровней, к которой современные 3,3-вольтовые нежные чипы крайне чувствительны.
Вот и подходим к главному...
4. Изучение простого как железобетонный фундамент
Вся современная сложная инженерия стоит на плечах простых и понятных решений. Попытка перескочить базовый этап и сразу начать обучение со сложных систем — это главная ошибка начинающих. Разумеется, знания устаревают и никто не будет рассчитывать катушку индуктивности и мотать ее, благо все это есть. Дело в другом: нельзя научиться строить небоскрёбы, не поняв, как держится кирпичная кладка.
Классический 8-битный микроконтроллер не ограничивает человека — он даёт ему точку опоры. Освоив эту базу на 100%, научившись работать с регистрами напрямую, оптимизировать алгоритмы и выжимать из кремния абсолютный максимум, начинающий мейкер получает главное: понимание сути процессов.
Этот фундамент останется с ним навсегда. И когда завтра задачи потребуют мегагерцевых частот и беспроводных сетей, переход на условные ESP или Pi займёт всего несколько дней, потому что базовые принципы цифровой логики везде одинаковы.
Начинать нужно с понятного, надёжного и проверенного.
Пропал на долгое время. Просто санитары меня нашли и я смотрел на белые стены с узором кубической формы.
В общем и целом, признали неизлечимым, дали паяльную станцию и отпустили домой.
Всё это время я вынашивал планы по доработке проекта. Кубобот01 Уже был достаточно хорошим, но комментарии в стиле "а зачем он" не давал мне покоя. Поэтому я натурально пропал с радаров, заперся у себя и провел масштабное обновление визуала и ПО.
Итак, Кубобот01. Версия 1.5
Что умел предыдущий кубик что на фото
1) Состояние эмоций. Моргает глазками, смотрит в стороны. Реагирует на температуру, влажность, наклон, тряску 2) Состояния датчиков. Выводит на 1 экран всю портянку того что "чувствует"
Что умеет Кубобот01 новой версии (на фото)
Кстати, ради придания собственной важности, появился бренд CozyForge
В итоге нижесказанного получился настоящий домашний молчаливый персонаж.
1) Состояния эмоций 1.1) Моргает, смотрит в стороны. Реагирует на свет, наклон 1.2) Настроение. По показаниям датчиков показывает свое состояние. Грустно, радостно, хочется кушать и т.д. 1.3) Советы. Выводит разные советы из своей памяти. Дублирует с включением. 1.4) Мысли. Выводит свои мысли. Просто случайные факты или реакцию на окружение. Например, если наклонить его он спросит "я наклонен. А зачем?". Так и случайные милые фразы вроде "Хочу бургер. Вот бы у меня был рот". 2) Состояние датчиков 2.1) Вся портянка датчиков на одном экране 2.2) Датчики погоды: температура, влажность, давление 2.3) Датчики наклона 2.4) Свет и батарейка 3) Состояние концентрации. Яркость приглушается, играется одна из 5 длинных анимаций. Настраивается в веб интерфейсе чтобы не отвлекаться на щелканье кнопкой. 4) Игры. Целых 3. Кубобег (бесконечный 2д раннер), Не зевай! (ввод на реакцию) и Камень Ножницы Бумага (в представлении не нуждается). Рекорды пишутся в память и их видно в игре или вебе!
Фух...портянка вышла знатная. из 2 состояний их стало 16! Борьба за каждый байт памяти стала серьезней давить на меня. Как и то что я загнал себя в рамки 33мм корпуса и там уже была война не на жизнь а насмерть за каждый миллиметр!
На фото только экран, гироскоп, аккум и ТР4056+кондер
Снятая задняя крышка со всеми дитолями
В программной части ради оптимизации все картинки были сжаты через RLE. Ради подключения ОТА.
Код из 1000 строк, 2 файла разросся до 5 файлов и 3500 строк в основном скетче. Рост во все стороны!
Новые файлы это разметка памяти. Потому что в 1.2Мб не упихаешь скетч, а на 3Мб нет ОТА. Так же отдельный файл для веб страницы, определения типов и статичных спрайтов.
Важным дополнением программной части стал Вайфай. С самого начала меня удручало что на плате есть вайфай, но я его не использую. Вот, придумал как.
Веб интерфейс показывает все что происходит у кубобота01 и дает возможность управлять его функциями.
он длинный, так что не весь выкладываю
Вебка писана на чистом HTML+CSS в блокноте. Как в универе. Прям. Ностальгия. Ну так число к слову. заголовок меняется от физического воплощения кубобота. Так если кубик красны, то и текст красный. А глаза могут быть белые\голубые\желтые.
Вебка имеет 2 страницы. Вторая это уже упомянутый ОТА. То есть, если я сделаю новую прошивку с багфиксом или новой эмоцией, ее можно в пару кликов загрузить через вайфай.
Сразу скажу, что кубобот01 это приватный персонаж. Он не подключается к домашнему вайфаю и ничего не сливает. Он сам поднимает сетку и выключает её по таймауту (настраивается). При подключении внешнего питания не выключает.
С апдейтами по софтверной части закончил. Если что не подсветил, напишите в комментах.
В хардварной части тоже прошло немало улучшений.
У старой версии на морде торчал датчик света - фоторезистор. Честно, я его сделал чтобы адекватно реагировали глаза на свет, но вышло так что он стал "бабушкиным телевизором", как кто то мне сказал.
В итоге LDR переехал под прозрачную накладку в левом углу кубика. Свет преломляется, фоторезистор реагирует, поведение адекватное.
Еще сзади наконец то добавился выключатель! Казалось бы вещь элементарная, но мне потребовалось долгое время чтобы до него дойти. Выключатель просто размыкает цепь питания. Вот так, да. Без изысков. Главное что работает. Из минусов это портит внешний вид идеального куба.
Фото одного из корпусов прототипов, но положение выключателя видно.
Так...что еще.. а! точно! самое важное!
Я существо умом обделенное, но пытливое и любопытное.
Замеряя время работы кубобота от батарейки меня удручало то, что он жил не более 4 - 5 часов на одной батарее. Мог и 8, но это скорее исключение. Начал искать проблему.
Сама проблема оказалась не самая очевидная для меня. Все питание было "в лоб" без оптимизаций. Просто ТР гонит заряд от аккума в ESP32 и на перифирию. Начал исправлять.
Сперва софтверное. Добавил режим deep sleep на esp32
Да, он спит. Но жрет как голубь на городской площади.
Решение горело красным светодиодом мне прямо в глаз.
ESP32C3 спит. А перифирия? Не спит.
Софтверно стал переводить датчики в глубокий сон и прижимать I2C к земле. Да, не отключение питания, но потребление снизилось до мкА.
Мало. Надо еще
"Вольтметр" кубобота это 2 маломощных резистора. Делитель. Ток там течет всегда. Надо размыкать. Об этом ниже в блоке про power path.
Второй проблемой стала безопасность работы АКБ. Да, у ТР4056 есть защита, но микросхема за 100р не умеет понимать что нагрузку жрет не батарея, а МК. Поэтому при зарядке нужно отцепить МК от АКБ. Но как тогда с ним взаимодействовать? Выключать во время зарядки как в стародавние времена? Нет! Мы будем делать распределение питания как на современных устройства.
Берем сначала укропу...а не, не то.
Берем транзисторную сборку АОР609 по той причине, что я не готов в SMD погружаться. Транзистор 2N2222, диод 1N4007 и россыпь резюков разных номиналов.
Чтобы не запутаться, даже печатаю себе схему и кладу перед глазами.
Что получилось:
P канальный мосфет. Размыкает цепь питания от АКБ до ESP при наличии напряжения на USB.
Ток от USB течет через 1N4007 на 5V пин ESP32C3.
N канальный мосфет размыкает GND кусок делителя напряжения и поднимает его только по запросу МК на чтение вольтажа.
Получилась вот такая прикольная штука
Диод снизу
Черный это земля, Зеленый, розовый и желтый это разные GPIO. Голубой это питание ESP32, а красные это батарейка+ и USB+
без бутылки не разберешься даже в такой простоте.
В итоге ток потребления снизился до ничтожных цифр, при заряде от USB АКБ не страдает. Активный режим стал чуть подольше, а с учетом сна по расчетам может и пару месяцев лежать. Все рады, я рад. В конце концов, если батарейка сядет, кубобот об этом скажет прямо и в лоб.
Но впихнуть эту микросхему в корпус оказалось задачей со звездочкой. Теперь я официально могу сказать что в куб 33мм (внутреннее пространство 30мм) не влезет больше НИЧЕГО!
Кстати про сон. Не сказал. Через 10 минут бездействия кубобот показывает анимацию сна. Бездействием считается дрейв показаний датчиков некотором пределе, отсутствие активного юзера на вебе и отсутствие зарядки на USB.
Пробуждение из такого режима это погладить по верхней крышке или потрясти его.
Спустя еще 10 минут кубобот ваще конкретно так начинает храпуна давить. То есть уходит в deep sleep. Отсюда пробуждается только если по бошке постучать (нежно).
Вот....портрянка текста вышла знатная. Если сжать все до нескольких картинок, то внизу карточки, что я хотел на озон выложить
1/8
Насчет последнего кадра я бы хотел сказать немного более развернуто.
Я сделал кубобота по той причине, что не смог купить такого на рынке. Тот же Dasai Mochi это взрыв цвета и эмоций. Или другие "кубические" роботы типа Xiaozhi. Говорилка, которая без пользователя не существует. Ждёт вопрос, чтобы на него ответить. А я хотел, так называемого, desktop buddy который не будет требовать от меня вовлеченности или не заставит снимать наушники чтобы послушать очередной ответ.
На фоне всего этого Кубобот это тихий компаньон. Он стоит на столе, в машине, да хоть в кафе пока ешь пиццу и просто существует. Он радует разнообразными эмоциями. Говорит о чем думает, или просто выступает как домашняя метеостанция. Каждый может найти ему применение как хорошему товарищу и тому как и "резиновой уточке" можно всё рассказать.
При всем при этом у кубобота нет ни динамика, ни микрофона ни подключения к облаку. Он не ИИ компаньон, но он осознает себя через свои органы чувств. Он не ответит на вопрос "кубобот, какая погода?" Этим пусть занимается Алиса. Но во время работы за компом можно просто посмотреть и улыбнуться. Или откинуться и поиграть в Кубобег.
Мое любимое состояние это "звезды" в режиме концентрации. 2 глаза смотрят как медленно плывут звезды. Расслабляет. Почти половина кода была написана под это состояние.
Проблемы такой разработки в том, что мой сын, которому 8 лет активно пытался стащить кубобота.
Чтобы откреститься, я быстро на бредборде собрал ему ту самую говорилку сяожи на ESP32S3 который я взял для прототипирования кубобота02.
пока без микрофона и динамика просто залил прошивку
Говорилки хватило на один вечер. Надоело ему. А для меня это потенциальная дыра. Ребенок может ляпнуть чего лишнего, а это все услышит на другой стороне дядюшка Ляо с очень стереотипными усами. Кубобот01 не такой. Он не настучит.
Так вот, говорилка оказалась неинтересна, поэтому он постоянно таскал дев кубобота с моего стола. Ради игр, эмоций, и "мыслей". Ну что сказать...пришлось взять один из комплектов из партии, что я заказал и сделать ему своего. Белого.
теперь их двое! Они плодятся!
Так он его еще в школу таскает! По шапке пока не прилетело, но все же.
Проект жив, развивается и останавливаться я не планирую. Я и сам развиваюсь в программировании и пайке, что не может не радовать.
Напоследок хочу сказать. Кубобот родился из простой идеи. Прошел месяцы модернизаций от ESP32C3+OLED до выверенного 3д печатного кубика с начинкой которая уже не влезает в корпус(я все равно все разместил). Я вложил в него все то что хотел. Буквально уперся в потолок производительности и памяти. Кубобот01 - это мой магнум опус, мой лучший проект, который я довел до конца. Я очень люблю кубобота.
Если хотите такого тихого друга на свой стол — пишите в личку или в комментарии. У меня есть 4 готовых экземпляра из первой партии. Остальные 5 будут готовы в конце месяца.
Цена — 5500р. Каждый собирается вручную. Кроме корпуса. его печатает 3D принтер, но модель моя!
Это не просто цена за кубик. Это ваша поддержка, которая позволит мне купить компоненты для следующего проекта Кубобот02, сделать PCB и двигаться дальше. Спасибо каждому, кто готов разделить этот путь
Ну что, пикабушники, продолжаю. Все иллюстрации реальные. Здесь вы найдете ответы на все ранние вопросы.
В первых двух частях я много философствовал, говорил о душевности мейкерства и о том, как чистый коммерческий маркетинг порой заменяет качество количеством, навязывая тонны ненужной рассыпухи.
Сегодня пришло время полностью сорвать завесу тайны. Я познакомлю вас со своим инженерным детищем, в котором железо и веб-технологии объединились в единую экосистему, но при этом не привязаны друг к другу. Имя этому проекту — OLEDDUINO (OLED+Arduino).
Безель придает законченный вид поделке, прототипу. Декорируй панель как угодно. Не ИИ. Все скрины и отображение на экранах реальные - оно и заметно.
1. Железо: Уход от макетных «соплей» к готовому гаджету
Главный концепт, который я закладывал в плату OLEDDUINO — это монолитность и законченный вид устройства.
Спроектировал печатную плату на базе Arduino Pro mini (ATmega328P). Её размеры ювелирно подогнаны под габариты модуля экрана 1.3" OLED.
Дисплей монтируется и жестко фиксируется прямо над платой. Никаких торчащих проводков, которые могут выскочить от малейшего прикосновения.
Сверху на конструкцию надевается защитная рамка-безель. Она бережно прикрывает хрупкие края стекла и полностью прячет технические швы. Вам остается лишь задекорировать безель на свой вкус.
Получился такой бутерброд: безель экрана + OLED экран + нейлоновые стойки + плата OLEDDUINO + нейлоновые винты. Не ИИ. Все скрины реальные.
Благодаря этому безелю вся конструкция становится действительно надежной, защищенной и выглядит эстетически завершенной. Это решение отлично годится как для быстрого прототипирования, так и для сборки полноценного пилотного проекта. Кроме того, безель позволяет аккуратно установить плату на лицевую поверхность любого вашего кастомного DIY-корпуса – рамка идеально скроет все технические швы и неровности пропила. Вы получаете цельный прибор (head unit), который можно бросить в рюкзак, принести друзьям, запитать от повербанка — и он продолжит работать как фабричное устройство.
При этом OLEDDUINO — это абсолютно открытая платформа. Чертежи и схемы полностью выложены в опенсорс на PCBWay. Я не беру за это деньги, нет монетизации, не собираю донаты и прочие сборы на печеньки как тут - на пикабу, так и там.
Прямую ссылку на PCBWay-проект предоставлю, если администрация не против. В Справочном центре не нашел ответа на сей вопрос. Админ, модератор - дайте добро, и я опубликую.
Бонусом является тот факт, что вы можете собрать все по старинке на макетной плате или навесным монтажом: Arduino Nano/Pro mini + OLED + всяко-разные датчики + проводочки и залить готовую прошивку.
Оформление в стиле Arduino. Абсолютно все рисовалось в ручную. Благо знание и опыт имеется.
Кроме того, Oledduino на 100% совместима с Arduino IDE. Если для вашего проекта в данный момент экран не нужен, её можно использовать как классическую Arduino Pro Mini. Полная свобода выбора!
2. Веб-платформа: Четкое разделение труда
Бесплатно и без регистрации. Понравилось ---> Выбрал ---> Прошил. Без боли, SDK и библиотек.
Каталог прошивок будет пополняться.
Для управления этим железом прямо из браузера внедрена технология Web Serial API, разделив программную часть на два независимых и очень удобных инструмента:
Инструмент №1: Веб-прошивальщик (Web Flasher)
Он встроен непосредственно в страницы каталога готовых прошивок в виде всплывающего окна. У него два сценария работы:
Серверные прошивки: Вы выбираете устройство из каталога (термометр-гигрометр, суточный таймер и т.д.), вызываете окно флешера, и он за Х секунд стягивает готовый скомпилированный файл из облака (Server firmware), заливая его в плату.
Локальные прошивки: Если вы нашли сторонний проект на форуме или GitHub и разработчик поделился исходным файлом и/или .hex, вам больше не нужно устанавливать гигабайты тяжелой Arduino IDE, устранять конфликты библиотек только ради одной прошивки. В окне флешера выбираете опцию Local file ---> Select file [свой .hex с ПК] и браузер сам зашивает его в контроллер.
Онлайн веб прошивальщик прост и удобен. Не ИИ, не мокап. Реальный скриншот.
Инструмент №2: Веб-терминал (Web Serial Monitor)
Это полностью самостоятельная онлайн-утилита, вынесенная на отдельную страницу. Она работает как привычный «Монитор порта» из Arduino IDE, но с удобными фичами отладки.
Виртуальные светодиоды в правом верхнем углу отражают действительсть и мигают в такт;
Терминал разделяет цвета приема и передачи (Rx/Tx) для комфортного восприятия того, что прилетело, что улетело;
Ставится тайм-штамп с возможностью их отключения;
Умеет сохранять логи работы в обычный текстовый файл .txt для последующего разбора.
Web Serial Monitor лежит в Утилитах в футере. Онлайн монитор порта всегда под рукой и это очень удобно! Не ИИ, не мокап. Реальный скриншот.
По сути, формула проекта звучит максимально просто: работает из коробки, заряжен прошивками и изначально создан для реального практического применения, но при этом на 100% открыт для глубокого технического творчества. 100% совместим с Arduino IDE и ориентирован на OLED-проекты (проекты, где нужно выводить информацию на экран). OLEDDUINO — это одна оплата, одна экосистема и десятки готовых устройств, которые вы можете переключать за пару кликов.
И вот уже мы подходим к главному...
3. Главный концепт: Изучение посредством приманки
Вся эта система построена вокруг одного простого и честного правила: «Начните с готового и решите сами, как далеко идти». Никакой другой набор/конструктор это не предлагает. Продавец – коммерсант. Ему это не интересно! Об этом я писал ранее.
В обоих случаях школьник/студент получает моментальный wow-эффект — чистый дофамин от работающей вещи на столе здесь и сейчас, без танцев с бубном. И когда школьник или студент видит, как легко девайс оживает в его руках, у него просыпается спортивный азарт: «А как изменить этот алгоритм под себя? А поменять шрифт? А это, а то?». И вот тогда он сам, абсолютно добровольно и осознанно идёт изучать настоящее программирование. Владельцы M5Stack в теме
Этот МИР прекрасен! Давайте ЖИТЬ, ЛЮБИТЬ, ТВОРИТЬ! Не ИИ. Все скрины и отображение на экранах реальные - оно и заметно.
Это яркий пример того, как OLEDDUINO будит интерес и мотивирует к действию. Красивая, осязаемая приманка – готовый гаджет, а естественное желание его улучшить становится мощнейшим внутренним двигателем для изучения кода. Используйте готовые premade firmware или создавайте что-то свое – решать только вам.
Спасибо за подержку, за апы, лайки - очень мотивирует! Всем мира и добра,
Ушёл работать над продолжением...
Для особо одарённых: Серия моих постов повествует о боли новичка, сравнение конструкторов-пустышек за конские деньги, рассмотрение иного подхода к "Сделай сам", рассказывает о oledduino как плате и веб-платформе (экосистема), но при этом ничего не навязывает, не призывает купить, не продаёт и не покупает ни тут, ни там. Не просит сборы и донаты. Вы можете сами собрать свой набор и залить готовые прошивки из платформы абсолютно бесплатно. Если Я надумаю что-либо монетизировать или попросить средств на печеньки - вы узнаете об этом первыми.
Хейтеры, тролли, тунеядцы, - приступайте к работе ))
Буду рад обсудить в комментариях (Боже, кому обращаюсь - неизвестно, но тем не менее):
Как вам концепт «изучения через приманку»?
Что, по-вашему, важнее на старте: сразу писать код с нуля или сначала увидеть устройство в работе/пощупать, а уже потом разбираться в его работе? Этот вопрос больше адресован владельцам M5STACK-подобных устройств/наборов.
Новичку по-прежнему предлагают собрать на беспаечной макетной плате хлипкую паутину из десятков гибких проводников («соплей»).
А что в этом плохого? Я сам так делаю при прототипировании. Какие-то узлы можно прототипировать прямо в MultiSim, но если это происходит вместе с отладкой кода на ESP32, STM32, RP2040 и т.п., то breadboard весьма полезна.
как цельный, монолитный прибор, применимый в реальной жизни прямо сейчас
Тупиковая ветвь. С одной стороны, такой цельный прибор и есть готовая плата разработки с МК. С другой, как только начинаются практические потребности, требуются датчики и силовые схемы для сопряжения с исполнительными устройствами. В одном случае нужна умная розетка, управляемая с пульта и по WiFi, отображающая в веб-интерфейсе текущий ток, напряжение, мощность и накопленное потребление. В другом - сопряжение с внешней автоматикой.
К тому же платы разработки есть разные. Например, Kincony KC868-A16 предоставляет просто массу возможностей, по сравнению с упомянутыми наборами россыпью
Кнопка стоит копейки, а ведёт себя так, будто у неё пять независимых мнений. Нажали один раз, счётчик прибавил несколько единиц. Для меню это раздражает. Для дозатора уже неприятно.
Соберём простой учебный счётчик: одно обычное нажатие добавляет единицу, удержание ничего не добавляет, отпускание подготавливает следующее нажатие. Понадобятся Arduino Uno R3, нормально разомкнутая кнопка без фиксации и два провода. Результат смотрим в мониторе порта.
1. Сначала подключение
Кнопку подключаем между цифровым выводом D2 и GND. В программе включаем INPUT_PULLUP: внутренний подтягивающий резистор удерживает вход в HIGH, пока кнопка разомкнута. При нажатии кнопка соединяет вход с землёй, получаем LOW.
Итого: • отпущена → HIGH; • нажата → LOW.
Внешний подтягивающий резистор для этой учебной схемы не нужен. Вывод 5V к кнопке не подключаем. D2 остаётся входом: не переключайте его в OUTPUT с уровнем HIGH при замкнутой кнопке на землю.
Если у тактовой кнопки четыре ножки, внутри обычно уже соединены две пары. Возьмите по одному контакту из разных групп; они должны соединяться только при нажатии. При отключённом питании это удобно проверить прозвонкой. Если случайно выбрать два постоянно соединённых вывода, программа будет видеть вечное нажатие.
Схема рассчитана на короткие провода на столе. Длинный кабель рядом с мотором или реле потребует отдельной работы с помехами.
2. Почему «если LOW, прибавить один» не годится
У такой программы сразу две проблемы.
Первая: loop() снова и снова видит LOW, пока вы держите кнопку. Счётчик растёт даже с идеальными контактами.
Вторая: механические контакты при переключении могут несколько раз замкнуться и разомкнуться. Это дребезг. Простого поиска перехода HIGH → LOW тоже недостаточно: переходов может оказаться несколько.
Нужны две вещи: фильтрация состояния и счёт только при переходе от подтверждённого HIGH к подтверждённому LOW.
3. Правило для фильтра
Увидели изменение входа — запомнили время. Вход изменился ещё раз — начали отсчёт заново. Если новых замеченных изменений не было 50 мс, принимаем состояние.
50 мс здесь стартовое значение, как в официальном примере Arduino Debounce. Для своей кнопки и нужной скорости реакции интервал стоит проверить. Дребезг бывает и при отпускании, поэтому фильтруем оба направления.
Паузы delay(50) в коде нет. Мы сравниваем время через millis(), и остальные задачи в loop() могут продолжать работу. При этом сам цикл должен часто возвращаться к чтению кнопки: длительная блокирующая операция в другом месте испортит опрос.
4. Код целиком
Загрузите скетч и откройте монитор порта на 9600 бод. Перед первым нажатием вывода не будет; затем появятся строки 1, 2, 3…
// Состояние при запуске принимаем за исходное, не за нажатие. lastRawState = digitalRead(BUTTON_PIN); stableState = lastRawState; lastChangeMs = millis(); }
void loop() { const int rawState = digitalRead(BUTTON_PIN); const unsigned long now = millis();
if (rawState != stableState && now - lastChangeMs >= DEBOUNCE_MS) { stableState = rawState;
if (stableState == LOW) { ++pressCount; Serial.println(pressCount); } }
// Здесь может работать остальная программа без длинных пауз. }
Важны три детали:
• lastRawState хранит последнее сырое чтение, stableState — уже принятое состояние. Смешивать их нельзя: у них разные задачи. • Счётчик увеличивается внутри проверки изменения stableState и только при LOW. Поэтому удержание не создаёт новых событий. • Время хранится в unsigned long, а интервал проверяется вычитанием now - lastChangeMs. Такой способ переносит переход счётчика millis() через ноль при обычном непрерывном опросе. Вариант now >= lastChangeMs + 50 может сломаться на переполнении. Для Uno оно происходит примерно через 49,7 суток.
При запуске текущее чтение принимается за исходное состояние. Если включить плату с уже зажатой кнопкой, это само по себе не добавит единицу. Отпустите её минимум на интервал фильтра, затем нажмите. Это оговорённое поведение этого скетча, а не универсальное требование ко всем кнопочным интерфейсам.
5. Что должно быть на временной диаграмме
Представим учебную последовательность, в миллисекундах после условного начала наблюдения:
• до 100 мс вход HIGH; • в 100 мс LOW, в 104 HIGH, в 108 LOW, в 112 HIGH, в 116 LOW; • дальше вход держится в LOW; • в 166 мс прошло 50 мс после последнего изменения: принимаем LOW и получаем первое нажатие; • при отпускании: в 500 мс HIGH, в 504 LOW, в 508 HIGH; • в 558 мс принимаем HIGH. Счётчик по-прежнему равен 1.
В реальном скетче принятие произойдёт на первом проходе loop(), когда условие времени выполнится. Точные отметки здесь нужны для объяснения алгоритма. Это не осциллограмма реальной кнопки.
6. Проверка на столе
После загрузки проверьте четыре вещи:
1. Нажмите и удерживайте кнопку секунду. Должна появиться одна новая строка. 2. Отпустите и подождите хотя бы 100 мс. Новая строка появляться не должна. 3. Снова нажмите. Счётчик должен увеличиться ещё на единицу. 4. Сделайте десять отдельных нажатий, выдерживая нажатие и отпускание заметно дольше 50 мс. Ожидается десять событий.
Очень короткий импульс, исчезнувший до истечения интервала, будет отброшен. Если между нажатиями вход не успеет подтвердить HIGH, следующего события тоже не будет. Такова цена выбранной фильтрации. Для энкодера, быстрых импульсов и точного измерения времени нужен другой подход.
Если счётчик всё равно скачет, проверьте контакты кнопки, землю, монтаж и отсутствие длинных пауз в программе. Не стоит лечить любую неисправность увеличением задержки до размера обеденного перерыва.
Материал содержит авторскую учебную схему и адаптированный скетч на основе официальных примеров Arduino. Физический макет не собирался и на плате не проверялся. Код прошёл программные проверки с имитацией входа и времени на компьютере; это не заменяет проверку на реальной кнопке. Подготовлено с помощью ИИ.