Привет всем, сегодня я собираюсь показать вам, как я сделал "Цифровое колесо рулетки", объединив микроконтроллер ESP32-C3 Super Mini с классическими десятичными счетчиками CD4017 CMOS.
Когда кнопка нажимается, ESP32 отправляет "импульсы тактового сигнала" на микросхему CD4017, заставляя светодиоды мигать. Отпускание кнопки вызывает эффект реалистичного замедления, пока она не остановится на случайном результате и не сообщит о конечной позиции с помощью последовательного монитора или через Wi-Fi.
Поверьте мне, с этим проектом связано много всего: разработка аппаратного обеспечения, программирование на Arduino, PHP, базы данных, 3D-дизайн и печать, и многое другое.
Видео:https://youtu.be/5jVFR7KSNmg
Полный пост в блоге:https://diyfactory007.blogspot.com/2026/05/Roulette.html
Требуемые компоненты.
Для этого проекта нам понадобится:
🔗 1 x микроконтроллер ESP32-C3 Super Mini Plus:https://s.click.aliexpress.com/e/_c2zUTvyj
🔗 2 x счетчики десятилетий CD4017 CMOS:https://s.click.aliexpress.com/e/_c33qzzRt
🔗 2 x 2N2222 NPN транзисторы:https://s.click.aliexpress.com/e/_c4OwNvnZ
🔗 3 резистора по 220 Ом:https://s.click.aliexpress.com/e/_c41SucJd
🔗 1 резистор 10 кОм:https://s.click.aliexpress.com/e/_c41SucJd
🔗 1 x выключатель с кнопкой:https://s.click.aliexpress.com/e/_c3cfuN6J
🔗 1 x переключатель SPDT:https://s.click.aliexpress.com/e/_c4FRHRaX
🔗 Красные светодиоды 18 х 5 мм:https://s.click.aliexpress.com/e/_c2RpNzh9
🔗 2 зелёных светодиода размером 5 мм:https://s.click.aliexpress.com/e/_c2RpNzh9
🔗 1 x 3мм синий светодиод:https://s.click.aliexpress.com/e/_c306Pzbh
🔗 1 конденсатор на 10 МФ (опционально)
🔗 1 x литий-полимерная батарея:https://s.click.aliexpress.com/e/_c4okFfef
🔗 1 x Модуль зарядки батареи (опционально):https://s.click.aliexpress.com/e/_c3EJLcZh
🔗 1 x Индикатор уровня батареи:https://s.click.aliexpress.com/e/_c4KGEDh5
И 3D-принтер для печати корпуса.
Схема электрической цепи.
Проводка этого проекта действительно простая!
* Подключите вывод Pin-8 ESP32 к выводу Reset (Pin 15) микросхемы IC#1.
* Подключите вывод 10 ESP32 к выводу часов (выводу 14) IC#1.
* Подключите вывод 9 ESP32 к кнопке с переключателем с подтягивающим резистором.
* Подключите вывод Pin-0 ESP32 к светодиоду индикатора Wi-Fi с ограничителем тока.
Для остальной части проводки ознакомьтесь с электрической схемой на экране.
Чтобы сделать всё ещё проще, я разработал для вас специальную печатную плату.
Основная функциональность.
Изначально я создал этот проект светодиодной рулетки, используя микросхему таймера 555 и пару десятичных счетчиков CD4017 CMOS. Таймер 555 функционирует как генератор тактового сигнала, вырабатывающий сигнал, управляющий счетчиком 4017. Выходной сигнал с вывода 3 микросхемы 555 подается на вывод 14 микросхемы 4017.
Чтобы узнать больше об интегральных схемах, пожалуйста, ознакомьтесь с моим учебником № 26 "Модуль генератора импульсов 555, как он работает", ссылка на который находится в описании ниже.
Главный недостаток этого первоначального дизайна заключается в том, что мне приходилось считать вручную. Я хотел систему, в которой числа добавлялись бы автоматически, а победитель определялся бы самой системой. Моя цель - не создать колесо азартных игр, а скорее простую игру в рулетку, в которую я мог бы с удовольствием играть со своим сыном.
Чтобы добиться этого, ESP32-C3 Super Mini оказался идеальным выбором. Он компактен и оснащен встроенной функцией Wi-Fi.
Итак, вместо использования таймера 555 я переключился на плату ESP32-C3, чтобы генерировать "импульсы часов" для одного из микросхем CD4017. Когда кнопка нажимается, импульсы становятся все быстрее и быстрее. Свет бежит по кругу, создавая ощущение "вращения". Когда кнопка отпускается, вращение не останавливается сразу. Вместо этого оно по
Кодекс.
Теперь давайте взглянем на логику, лежащую в основе всего шоу.
Как уже упоминалось ранее, система опирается на множество компонентов, код Arduino, PHP, базу данных MySQL и многое другое. В моём репозитории GitHub содержатся две версии кода: одна с сервером, а другая без него. Если вам не нужно сохранять результаты на сервере, вы можете просто загрузить "Code_No_Wi-Fi" на свою плату ESP32.
Однако для этого руководства я продемонстрирую полную функциональность настройки.
Теперь давайте рассмотрим коды один за одним.
В коде Arduino вам потребуется ввести SSID и пароль вашей сети, а также установить IP-адрес и URL сервера, чтобы они соответствовали каталогу, в котором будут находиться ваши PHP-файлы.
Никакие другие части кода не нужно изменять, если только вы не хотите добавить новые функции к существующему функционалу.
Когда вы включаете рулетку, ESP32 сначала пытается подключиться к серверу через Wi-Fi. После установления соединения игроки могут начать игру. Нажатие кнопки ускоряет последовательность светодиодов, уменьшая задержку, а отпускание кнопки замедляет её, увеличивая задержку - до тех пор, пока она не превысит порог остановки. Это создаёт есте
Как только колесо со светодиодами останавливается, ESP32-C3 отправляет выигрышную позицию на удаленный сервер. Этот процесс продолжается до тех пор, пока игроки продолжают играть.
В дополнение к коду я включил файл "MySQL_DB.sql", который необходимо импортировать на ваш сервер MySQL.
Чтобы сделать это, откройте phpMyAdmin, перейдите на вкладку "Импорт", нажмите кнопку "Выбрать файл" и выберите файл "MySQL_DB.sql". Затем нажмите кнопку "Перейти", чтобы импортировать таблицы. Чтобы проверить, был ли импорт успешным, нажмите на названия таблиц и убедитесь, что структуры табли
Чтобы настроить веб-сервер, нам необходимо внести некоторые изменения в загруженные PHP-файлы из моего репозитория GitHub. Откройте "Connection.php" и обновите в файле имя хоста, имя пользователя, пароль и название базы данных. Затем перетащите файлы в каталог на вашем веб-сервере.
Чтобы убедиться, что всё работает правильно, откройте файл "Player_Results_Display.php" в веб-браузере и проверьте, правильно ли отображается таблица лидеров.
Демонстрация на хлебной доске.
Теперь, когда аппаратная логика готова и сервер настроен, мы можем провести быстрое тестирование на печатной плате, чтобы проверить функциональность системы.
Давайте продолжим и нажмем на кнопку, чтобы увидеть, регистрирует ли последовательный монитор нажатие. Как мы видим, в последовательном мониторе отображается код HTTP 200, указывающий на успешную связь с сервером. На странице таблицы лидеров мы можем подтвердить, что сервер зарегистрировал нажатие кнопки. Веб-страница автоматически обновля
Страница включает в себя сравнительные таблицы результатов для "Игрока 1" и "Игрока 2", показывающие текущие результаты, победы, поражения, ничьи и общее количество игр, сыгранных каждым игроком.
Когда вы нажимаете кнопку "Новая игра", страница обновляется, и система обновляет счет побед, поражений или ничьих игрока на основе текущего счета.
3D-печать.
Используя Microsoft 3D Builder, я разработал 3D-модель этого проекта.
Дизайн состоит из трех частей:
- Верхняя секция, в которой расположены все светодиоды,
- Нижняя секция, которая содержит все электронные компоненты и
- Небольшой блок, в котором находится синий светодиод индикатора Wi-Fi, модуль зарядки батареи, переключатель включения/выключения SPDT, а также отверстия для антенного кабеля и кнопочного переключателя.
Я разрезал модель в Bambu Studio и напечатал её с помощью моего нового 3D-принтера Bambu A1.
Наконец, используя акриловые краски, я покрасил корпус проекта. Золотое покрытие действительно улучшило внешний вид принта. После того, как краска высохла, я установил все светодиоды в верхнюю часть и спаял их отрицательные выводы "парами по десять".
Пайка.
Теперь давайте приступим к сборке всех электронных компонентов. Сначала уделите минуту, чтобы проверить качество изготовленной печатной платы. Я пользуюсь услугами PCBWay уже почти шесть лет и очень доволен конечным продуктом, который они предоставляют.
Давай начнем с того, что припаяем все резисторы к плате, а затем все транзисторы.
Поскольку я особенно тщательно обращаюсь со своими интегральными схемами и микроконтроллерами, я никогда не паяю их непосредственно на плату. Для интегральных схем я всегда использую основание для микросхем, а если основание недоступно, я использую разъёмы с гнездом для выводов. Это позволяет избежать прямого пайки и облегчает замену
Чтобы питать плату, нам нужно интегрировать модуль зарядки и некоторые дополнительные компоненты. Я начал с установки переключателя SPDT, затем синего светодиода индикатора Wi-Fi. Затем я приклеил самый маленький в мире модуль зарядки батареи к блоку и закрепил его с помощью этого маленького белого блока. Наконец, я приклеил индика
Оставшиеся два отверстия предназначены для антенны и кнопочного переключателя. Наконец, после того как все компоненты были установлены на свои места, я приклеил пластиковый блок в пазу на дне основания.
Вот как выглядит плата после того, как я закончил пайку всех проводов, которые будут подключены к светодиодам. Для светодиодов с 1 по 10 используйте общий GND2, а для светодиодов с 11 по 20 используйте общий GND1.
При пайке светодиодов на плату обязательно паяйте их в правильном порядке, чтобы избежать несовпадения физических номеров светодиодов с тем, что код отправляет на сервер. Следуйте инструкциям на экране для правильного порядка. Если вы случайно неправильно припаяете светодиоды, вы можете изменить массив в коде Arduino, чтобы учесть это изменение
В моей сборке я питаю всё от перезаряжаемой батареи 3,7 В. Однако, если вы предпочитаете, вы можете припаять либо понижающий преобразователь 220 В до 5 В, либо USB-кабель к отверстиям +5 В и -VE на плате.
Как только всё будет на месте, всё, что останется, это приклеить нижнюю часть к верхней части.
Финальная демоверсия.
Когда оборудование готово, пришло время повеселиться! Включите устройство и дождитесь, когда загорится синий светодиод. Когда он загорится, это будет означать, что установлено Wi-Fi-соединение с сервером. Нажмите на кнопку, чтобы запустить мигание светодиода. Ваш счёт можно просмотреть на любом устройстве (ПК или мобильном), подключенном
Спасибо.
Ещё раз спасибо, что проверили мой пост. Надеюсь, что он вам поможет.
Полный пост в блоге:https://diyfactory007.blogspot.com/2026/05/Roulette.html
Теги
Источник модели



















