WordClock своими руками: что это вообще за штука?
Привет, Пикабу!
Мой друг недавно загорелся идеей собрать себе WordClock — часы, где время отображается не цифрами, а словами. Он нашёл проект в интернете, попросил меня помочь с электрикой. Он шарит в моделировании и имеет какой-то крутой 3d-принтер, но схемотехника для него дремучий лес.
Я, как и положено зануде, посмотрел на схему, поковырял код... и честно сказал:
"Ну, такое. Схема мне не нравится, код... страшно открыть. Короче, давай я лучше сам спроектирую— с блэкджеком и микроконтроллером".
Так я и начал делать свой прототип WordClock'ов. Пока что всё довольно грубо, но уже работает в эмуляторе — показывает время словами с помощью адресной ленты и микроконтроллера.
Лучше свой кривой код, чем чужой кривой код )))
Проект на стадии «пишу код, рисую схему», и я думаю сделать пост (или серию) с:
качественным дизайном, без соплей из термоклея и пауком из проводов,
рассуждением по коду и логике,
и вообще рассказать, как сделать такую штуку самому, чтобы сборка была простой, в удовольствие.
Но перед тем как писать текст, снимать фото и рисовать схемы — хотел бы узнать, такой контент здесь интересен? Я уже публиковал здесь несколько DIY статей, реакция была разной. В этот раз решил поинтересоваться заранее)
Если здесь такое интересно, сделаю нормальный пост с фотками, пайкой, фейлами и не совсем.
Для тех кто дочитал, небольшое видео с тестовым запуском чужого проекта
В поисках лучшей антенны для ESP32 ZERO
Проверяем на практике: работают ли советы из интернета про проволочные антенны
Начав работать с ESP32 S3 Zero, заметил что там антенна не встроенная в плату, а в виде SMD элемента. И оказалось что WI-FI на ней слабее. Начитавшись в инете про улучшение связи «проволочкой», решил сделать и себе.. Потратил несколько дней на этот DIY-цирк, сделал кучу тестов и хочу поделиться результатами.
Что я узнал (коротко)
Проволочка даёт +5.2 dBm RSSI — на обычных открытых платах
В корпусе антенны-проволочки работают… как захотят. SMD чуть стабильнее.
Питание и окружение портит WiFi сильнее, чем слабая антенна
Качество ground plane критично (особенно у модулей ESP32 S3 Zero)
Интернет-советы работают, но только в идеальных условиях
Начнем издалека
Давно занимаюсь светодиодными приборами и только недавно решил оснастить их удаленным управлением. И вообще сделать красивое веб-приложение (впрочем, это уже совсем другая история). По образованию программист, электронику изучал сам с нуля.
Недавно была коллаборация по крафту мечей Кратоса. В них мы установили esp8266 модуль, простой модуль повербанка и светодиодную ленту. Было очень важно сделать компактную систему электроники.
После этого проекта решил сделать свои компактные модули для подобных будущих проектов. Раньше всегда работал с ESP32 Devkit, но они достаточно большие. Нашел в инете новые очень маленькие ESP32 S3 Zero.. Спроектировал и собрал с ними модули, назвав Minis 1.
Модуль Minis 1
Идея в макcимальной компактности и «автономности» - припаял батареи, кнопки, ленту - и готово.
Что на борту:
ESP32-S3 Zero
Система PowerBank на IP5310 (5В 3А)
2 разъема под адресные ленты
2 разъема под кнопки
1 разъем под кнопку включения
1 разъем под батареи
Разъемы = отверстия под пайку проводов
Поверив в магию советов из инета, впаял во все модули эти проводки, собрал лампы.. А потом решил проверить, как работает WI-FI. А он не заработал. Решил разобраться в чем дело, что всё таки лучше, сделал разные тесты. Из этого всего родилась эта статья.
Как оказалось, но именно данный мод (31мм, петля 16мм) на моем Zero как-то не заработал. Условно рабочим оказался вариант 62мм без петли.
Как тестировал.
Было 14 тестов:
ESP32 #1 (испытуемый в разных конфигурациях) :
Создаёт WiFi-сеть
Сам выбирает наименее нагруженный канал
Запускает веб-сервер
Перед началом каждого замера модуль автоматически выбирает наименее загруженный канал из 1/6/11, основываясь на сигнале окружающих сетей выше −80 dBm. Это позволило минимизировать влияние сильных помех.
ESP32 #2 (логгер):
Замеряет RSSI (сети ESP32 #1) каждые 2 секунды
90 замеров за 3 минуты
Телефон (измеритель):
Подключается к ESP32 #1
Отправляет 240 HTTP-запросов с интервалом 500мс
Что нас интересует из замеров
Время отклика (чем меньше, тем лучше)
Джиттер (как сильно плавают значения)
RSSI (уровень сигнала)
Стабильность (процент времени когда сигнал не скачет. 100% = связь ровная, 50% = то работает, то тормозит)
Стабильность сигнала рассчитывалась как процент замеров RSSI, оказавшихся в диапазоне ±3 dBm от среднего значения. Чем выше процент — тем более “ровная” и предсказуемая связь.
По окончанию замеров каждый ESP32 выдавал данные для копирования и исследования.
Условия тестов
Расстояние — ~10 метров через длинный коридор квартиры и комнаты
Помехи — 4-5 соседских WiFi
Время — Суббота, 15-17; Воскресенье, 10-11.
Результаты (суббота):
Тест 1: Не модифицированный ESP32, адаптер питания 5V (БП)
Проволочка лучше по RSSI. По по времени отклика — в пределах погрешности.
Тест 2: Влияние питания на ESP32 S3 Zero без проволоки.
Источники питания: БП, PowerBank, Батареи через IP5310
При питании от модуля с батареями сигнал ухудшается, его не только шатает (джиттер), но и мощность падает.
Тест 3: ESP S3 Zero (Minis 1) в сборе с лампой
Заметил, что прямая проволока глушит сеть, если окружить её батареями. Если батареи отнести на небольшое расстояние - прямая проволока работает. Так же не глушит сеть проволока параллельно лампе и батареям.
Бонус: графики Ping и RSSI для разных конфигураций
Стабильность замеров между днями.
Замеры в субботу показались странными, и решил перемерить на утро следующего дня. Результаты меня удивили..
Что показали таблицы:
ESP32 DevKit - единственный стабильный
Ping и джиттер в пределах погрешности измерений.
RSSI стабилен
Единственный модуль который остался предсказуемым
S3 модули нестабильны
Тесты S3 модулей показали изменения RSSI
S3 модули оказались чувствительнее к условиям
Проволочные антенны = рулетка
Могут резко улучшиться или ухудшиться
Результат непредсказуем
SMD антенны чуть стабильнее
Большинство изменений в небольших пределах
Более предсказуемое поведение чем проволочки
Влияние времени и условий
Возможно в воскресенье утром эфир был другой
Компактные модули чувствительнее к внешним факторам
Питание влияет на стабильность
Разные источники питания дают разные результаты между днями
IP5310 показывает нестабильные результаты
PowerBank стабильнее встроенного питания
Главный вывод
"Чуть изменились условия - и результаты другие"
Проволочные антенны могут выстрелить или провалиться по связи. SMD антенны более менее предсказуемые. Качественные модули (DevKit) устойчивы к изменениям, дешевые (S3) чувствительны к любым факторам.
Что у нас в итоге:
DevKit — чемпион стабильности.
Почти не реагировал на смену условий, всегда показывал отличную стабильность и минимальный разброс.
S3 модули скачут независимо от антенны — и с SMD, и с проволочными результаты менялись день ото дня. Дешево, но непредсказуемо.
SMD — скучно, но стабильно.
Там, где использовались SMD-антенны без проволочек и внешних воздействий,
связь оказалась наиболее предсказуемой — метрики менялись в пределах погрешности даже между разными днями.
Проволочки = лотерея — сегодня работает отлично, завтра хуже. Чуть повернул — и связи нет. Долго подбирать длину и ориентацию. Классические 31мм в корпусе могут вообще не работать.
Питание и окружение влияют сильнее антенн.
В корпусе - Minis 1, батареи, длинные провода, корпус - похоже всё это может “прибить” даже идеальную антенну.
Особенно в компактных модулях, где почти нет ground plane.
Магия “31 мм проволочки” из форумов — работает только на открытых платах.
В корпусе проволочная антенна вела себя непредсказуемо: в лучшем случае не помогала, в худшем — глушила связь.
Еще немного о модуле Minis 1 и лампах.
Получается железо работает, адрески светятся, но вот стабильность WI-FI, видимо не только моя вина. Как я понимаю, в текущих лампах рядом с процом металлический профиль, батареи, куча проводов и тд. Возможно, с моей стороны не идеальная разводка материнской платы влияет на результат. Ну и сам модуль S3 Zero с его мини антенной тоже влияет на связь. Похоже еще повезло взять самый не удачный Зеро, с малым полигоном земли для антенны.
Но всё равно, такой модуль можно использовать:
Косплей и декоративные проекты
Автономные светильники
Локальные проекты где связь нужна редко (или управление не далеко)
Видео, откуда я и взял идею про антенны:
Сделать компактный модуль для управления чем-либо (ленты, моторы, экранчики и т.д.) не так сложно, но когда сталкиваешься со радиосвязью, там вылезают вот такие всякие особенности..
Исходные данные: Excel таблицы с результатами всех тестов и код для ESP32 могу прислать если кому нужно будет =)
P.S. На всякий случай повторю, что я самоучка в плане электроники, и могу не знать каких-то нюансов, особенно про радиосвязь.
Давняя хотелка из 2007 (4) add-on
Здрасьте.
Несколько месяцев назад я поведал о своей детской хотелке в виде портальной пушки из игры PORTAL.
И в комментариях мне задали занятный вопрос:
«А чё, она, кроме как включать свет, больше ничего не может?»
После этого я удумал небольшую модернизацию.
Оказалось, ничего сложного: приделал DFPlayer Mini с флешкой и динамик на 8 Ом. НО, по незнанию, просто загрузил звуковые файлы на кнопки прописал в коде пару переменных — система заработала, но были проблемы с таймингом.
В итоге DeepSeek помог адаптировать код. А когда я ввёл в промт, что это портальная пушка из Portal, нейросеть даже предложила добавить анимации и пару фишек! Немного изменила мне схема подключения — в целом всё осталось так же, но пара пинов поменялись местами.
Первый пробный запуск. С меня улыбка минут 10 не сходила....
И полная сборка.
я добавил акб на 10000мач что бы по дольше держало заряд так как эта штука вышла прожорлива судя по расчётам нейронки.
Вот что вышло.
ИТОГ:
Анимация включения со стартовым звуком.
3 рандомных звука на каждую кнопку с соответствующей цветовой индикацией.
"Скрытый режим" так называемый, включается одновременным нажатием двух кнопок.
Звуковое оповещение о разряде батареи голосом ГЛаДОС.
Улучшенная динамическая анимация выстрела.
Может в будущем еще приделаю виброотклик на нажатие но это будет когда ни будь потом.
пока что помните.
Русские ардуины: простые же платы, что там проверять?
Когда мы разработали первые Arduino-совместимые изделия на MIK32 Амур - ELBEAR ACE-UNO, и они завелись без «волшебного дыма» - мы воодушевились. После нескольких правок и пары итераций запустили небольшую серию – и поняли: «Хьюстон, у нас проблемы»… Далеко не все платы заводились сразу – сказывались особенности монтажа микроконтроллера (потребовалось определенное время, чтобы набить на этом шишек и наладить тех процессы и в нанесении пасты, и в ее оплавлении, и в самом выборе пасты), и иногда ошибки при монтаже на любой из стадий - авторастановщик/печь/отмывка/ручной монтаж... Как мы поняли довольно быстро - визуальный контроль не панацея, далеко не все получалось отследить «глазками»…
В итоге проверка плат после монтажа производилась вручную – в ход шли осциллограф, мультиметр и знания о том, как это должно работать. Проверялись напряжения на основных тестпоинтах, загрузка прошивки и работа самого микроконтроллера, связь по интерфейсу USB.


И делали это на первых порах не ребята на производстве, а высококвалифицированные инженеры, что конечно было в целом «из пушки по воробьям».
По мере наращивания производства стало понятно, что нужно более тщательно проверять монтаж элементов на плате и желательно так, чтобы это занимало поменьше времени.
Попытки улучшить и ускорить проверку
Для упрощения проверки плат ELBEAR ACE-UNO на MIK32 Амур была создана специальная тестовая плата. Предварительно перед ее использованием всё так же проверялись уровни напряжений на тестпоинтах и отсутствие коротких замыканий на плате по питанию.
Сначала это была просто плата со светодиодами (как на самой первой фотографии сверху), позже уже был разработана специальная тестовая плата.
Тестовая плата при использовании с проверочной прошивкой позволяла проверить и цифровую, и аналоговую части платы. На ней находился набор светодиодов для каждого вывода проверяемой платы, переключатели для перемычек BOOT, некоторые дополнительные кнопки и светодиоды. Проверочная прошивка загружалась в проверяемую плату UNO (вместе с ней загружался и начальный загрузчик), а после тестовая плата надевалась сверху на проверяемую. Для проведения проверки проверяемая плата подключалась к ПК по интерфейсу USB, а на ПК открывалась программа монитора последовательного порта.


В прошивке на первом этапе все цифровые выводы платы по очереди выставлялись в 1, при этом на тестовой плате рядом с каждым выводом должен был зажигаться свой (только один) светодиод. Эта проверка позволяла выявить непропаи или закорачивания цифровых выводов платы.
На втором этапе проверялась работа АЦП и ЦАП – на двух каналах ЦАП формировались изменяющиеся в разные стороны уровни напряжений – один на увеличение, другой на уменьшение. Формируемые аналоговые сигналы подавались на светодиоды SDA, SCL на тестовой плате, а ожидаемые значения выводились в монитор порта. По итогам сравнения ожидаемых значений с яркостью свечения соответствующих светодиодов делался вывод о корректности работы каналов ЦАП.
Для проверки каналов АЦП в монитор порта на втором этапе выводились значения, измеренные на каждом канале. По умолчанию эти значения должны быть относительно маленькими. На тестовой плате есть кнопка, по нажатию которой на аналоговые выводы проверяемой платы подается высокий уровень напряжения. В процессе проверки платы данная кнопка нажималась, а проверяющий контролировал значения, выводимые в монитор порта – все они должны значительно увеличиться. Таким образом проверялась корректность работы каналов АЦП.
Помимо этого, в процессе проверялась работа встроенных на плату светодиода и кнопки.
После выхода пакета поддержки плат ELBEAR в ArduinoIDE к проверке добавился еще один этап – загрузка проверочного скетча на проверяемую плату в ArduinoIDE по интерфейсу USB и проверка работы интерфейса UART (при получении любых сообщений микроконтроллер эхом отправлял их обратно в порт).
Автоматизированная проверка плат
С появлением плат ELBEAR ACE-NANO на MIK32 Амур появилось и желание еще как-то ускорить и улучшить проверку плат после монтажа. Хотелось использовать для проверки не светодиоды и глаза проверяющего, а другой микроконтроллер, который сам будет принимать решение об успешности прохождения проверки. И почему бы для этого не использовать микроконтроллер с точно такой же платы с точно таким же набором выводов? И специальную тестовую плату делать не придется. Так родилась наша автоматизированная насколько это возможно проверка плат. Начали мы с платы ACE-NANO.
Для проверки нужна одна уже проверенная, заведомо рабочая плата NANO – она будет платой-мастером. В эту плату загружается специальная прошивка, которая управляет процессом проверки. Проверяемая плата изначально проверяется на наличие коротких замыканий, после чего в нее загружается проверочная прошивка (а вместе с ней и начальный загрузчик), которая слушает команды от платы-мастера и выполняет их. После загрузки прошивок проверяемая плата и плата-мастер соединяются друг с другом pin-to-pin в этакий «бутерброд», и плата-мастер подключается к ПК по интерфейсу USB.


Проверка состоит из нескольких этапов:
• Stage MISO: проверяемая плата по очереди изменяет состояние цифровых выводов, а плата-мастер считывает состояние выводов и анализирует результаты.
• Stage MOSI: плата-мастер по очереди изменяет состояние цифровых выводов, проверяемая плата считывает состояние выводов, отправляет результаты мастеру, а тот их анализирует.
• Stage Analog: плата-мастер по очереди подает высокий уровень на все аналоговые выводы, а проверяемая плата каждый раз измеряет напряжение на всех своих выводах и отправляет результаты мастеру, а тот их анализирует. Проверяются и прямые каналы АЦП, и переключаемые.
• Stage OTP content: проверяемая плата считывает из OTP памяти тестовую строку и результат отправляет плате-мастеру. Если память не запитана, плата-мастер получит пустую строку, а проверяющему придется проверить плату вручную.
• Stage End Time: на этом этапе проверятся точность работы часов реального времени на проверяемой плате – при старте проверки по команде время заводится на обеих платах, а на данном этапе проверяемая плата присылает свое текущее время. Если оно близко к времени платы-мастера – с трактом часового кварца все в порядке.
На этапах MISO, MOSI, Analog в каждый момент времени активен только один вывод. Если это так – этапы проверки пройдены успешно. Если нет – в монитор порта выводится информация о «лишних» сработавших выводах – это повод проверить указанные выводы вручную.
После успешной автоматизированной проверки проводится проверка в ArduinoIDE – по интерфейсу USB в проверяемую плату загружается проверочный скетч, в котором проверяется работа встроенного светодиода и интерфейса UART – все сообщения, полученные от ПК, микроконтроллер отправляет обратно в порт. Этот этап остался неизменным.
Такая проверка для плат ACE-NANO нам понравилась, поэтому было решено сделать аналогичную проверку для плат ACE-UNO. Проверка производится точно так же, как с платами ACE-NANO. Единственное отличие – платы ACE-UNO не получается соединять «бутербродом» из-за некоторых разъемом, поэтому платы соединяются pin-to-pin проводами.
С этого момента все стали предельно довольными - все платы без исключения проходят проверку, пропустить ошибку или не заметить из-за того, что устал, просто невозможно - практически все происходит автоматически, ну а сама скорость проверки существенно выросла.
Ссылка на проект: https://elron.tech/russian-arduino-compatible-board/
Ответ на пост «Отдам в ЗАИНТЕРЕСОВАННЫЕ ручки)))»1
Я заинтересован и готов оплатить пересылку! Планирую организовать кружок программирования для детей в доме творчества. Предпочитаю использовать платы STM32 вместо Arduino, так как считаю, что это даст детям больше шансов найти работу в будущем. Я бы взял все, кроме плат Arduino! (Отдайте их в подобные кружки для детей которые используют arduino.)
Если необходимо, могу подтвердить свои намерения и предоставить любые доказательства, чтобы показать, что мои действия не обусловлены корыстью.
В подтверждение своих знаний в области stm32 ниже мой открытый проект для электриков которые не умеют программировать, но хотят реализовывать умные дома/теплицы и т.п. автоматизацию.
Zagotovka - M Zagotovka - M
Обновление "HTTPS" для проекта "Zagotovka_M" Обновление "HTTPS" для проекта "Zagotovka_M"
PS - Еще даже не разговаривал с директором детского дома творчества по этому поводу!