안녕하세요, 오늘은 ESP32-C3 수퍼 미니 마이크로컨트롤러와 클래식 CD4017 CMOS 10년 카운터를 결합하여 '디지털 루룰레트'를 만드는 방법을 보여드리겠습니다.
버튼을 누르면, ESP32는 CD4017 IC에게 '클록 펄스'를 보내서 LED가 반복적으로 켜집니다. 버튼을 풀면 실제 속도 감소 효과가 발생하며, 결국 랜덤한 결과에 정지한 후 시리얼 모니터나 와이파이를 통해 최종 위치를 보고합니다.
저를 믿으세요, 이 프로젝트에는 하드웨어 설계, Arduino 코딩, PHP, 데이터베이스, 3D디자인과 인쇄 등이 많이 있습니다.
비디오:
https:// youtu.be/5jVFR7KSNmg전체 블로그 글:
https:// diyfactory007.blogspot.com/2026/05/Roulette.html
구성 요소 요구 사항
이 프로젝트를 위해 우리는 다음과 같은 것들이 필요합니다:
🔗1개의 ESP32-C3 수퍼 미니 플러스 마이크로컨트롤러:
https://s.click.aliexpress.com/e/_ c2zUTvyj
🔗 2개의 CD4017 CMOS 10진수 카운터:
https://s.click.aliexpress.com/e/_ c33qzzRt🔗 2개의 2N2222 NPN 트랜지스터:
https://s.click.aliexpress.com/e/_ c4OwNvnZ🔗3x220 오메가 저항기:https://s.click.aliexpress.com/e/_ c41SucJd
🔗1개의 10kΩ 저항기:https:// s.click.aliexpress.com/e/_c41SucJd
🔗1개의 버튼 스위치:
https://s.click.aliexpress.com/e/_ c3cfuN6J🔗1개의 SPDT 스위치:
https://s.click.aliexpress.com/e/_ c4FRHRaX 🔗18 x 5 mm 빨간색 LED:https://s.click.aliexpress.com/e/_ c2RpNzh9
🔗2개의 5mm 그린 LED:https:// s.click.aliexpress.com/e/_c2RpNzh9
🔗1개의 3mm 파란색 LED:
https://s.click.aliexpress.com/e/_ c306Pzbh🔗1개의 10mfd 커패시터(선택 사항)
🔗https://s.click.aliexpress.com/e/_ c4okFfef:1개의 LiPo 배터리
🔗1개의 배터리 충전 모듈(선택 사항):
https://s.click.aliexpress.com/e/_ c3EJLcZh🔗1개의 배터리 전력 표시기:
https://s.click.aliexpress.com/e/_ c4KGEDh53D 프린터로 케이스 인쇄하기
회로 도면
이 프로젝트의 배선은 정말 간단합니다!
* ESP32의 핀 8을 IC #1의 리셋 핀(핀 15)에 연결합니다.
* ESP32의 핀 10을 IC #1의 클록 핀(핀 14)에 연결합니다.
* ESP32의 핀 9를 업 드로우 저항이 있는 버튼 스위치에 연결하세요.
* ESP32의 핀 0을 제한 전류 저항이 있는 Wi-Fi 표시등 LED에 연결합니다.
나머지 배선은 화면 상의 회로도를 확인해 주십시오.
일을 더 쉽게 하기 위해, 저는 당신을 위해 사용자 정의 PCB를 디자인했습니다.
핵심 기능
나는 이 자동 로터리 게임 프로젝트를 위해 처음에 555타이머 IC와 몇몇 CD4017 CMOS 10년 카운터를 사용했습니다. 555타이머는 클로ック 오실레이터로 사용되어 4017 10진수 카운터를 구동하는 신호를 생성합니다. IC555의 피ن 3의 출력은 IC4017의 피ن 14에 공급됩니다. IC4017이 각 펄스를 받
집적회로
이 초기 디자인의 주요 단점은 내가 수동으로 카운트를 해야 했다는 것입니다. 나는 숫자를 자동으로 추가하는 시스템을 원했고, 승자는 시스템 자체에 의해 결정되어야 했습니다. 제 목표는 도박 게임을 만드는 것이 아니고, 제 아들과 함께 할 수 있는 간단한 룰렛 게임을 만들는 것입니다.
이 목표를 달성하기 위해, ESP32-C3 Super Mini는 완벽한 선택입니다. 그것은 소형이며, 내장된 Wi-Fi 기능을 가지고 있습니다.
그렇습니다, 저는 555타이머 IC를 사용하지 않았고, CD4017 IC 중 하나에게 '클록 펄스'를 생성하기 위해 ESP32-C3 보드로 전환했습니다. 버튼을 누르면, 펄스가 점점 더 빠르게 됩니다. 빛이 원을 따라 회전하며, '회전' 느낌을 만들어 냅니다. 버튼을 풀면 회전이 즉시 중단되지 않습니다. 오히려,
코드
자, 이제 전체 프로그램을 구동하는 논리를 살펴보자.
위에서 언급했듯이, 이 시스템은 여러 구성 요소, 아두이노 코드, PHP, MySQL 데이터베이스 등에 의존합니다. 제 GitHub 리포지토리에는 두 버전의 코드가 포함되어 있습니다. 하나는 서버가 있고, 다른 하나는 없습니다. 서버에 결과를 저장할 필요가 없는 경우에는 'Code_No _wi-fi'를 당신의 ESP32 보드
그러나, 이 자습서에서는 설정의 모든 기능을 보여드리겠습니다.
자, 이제 코드를 하나하나 검토해 봅시다.
아두이노 코드에서는 네트워크의 SSID와 암호를 입력해야 하며, 서버 IP와 URL을 설정해서 php 파일이 있는 디렉토리와 일치하게 해야 합니다.
기존 기능에 새 기능을 추가하지 않는 한 코드의 다른 부분을 수정할 필요가 없습니다.
루렛을 열면, ESP32가 먼저 Wi-Fi를 통해 서버에 연결을 시도합니다. 연결이 되면 플레이어는 게임을 시작할 수 있습니다. 버튼을 누르면 지연 시간을 줄여서 LED 시퀀스를 더 빠르게 진행할 수 있고, 버튼을 풀면 지연 시간을 늘려서 LED 시퀀스를 더 천천히 진행할 수 있습니다. 이때 시퀀스가 완전히 중단되기 전에 자
LED 휠이 정지되면, ESP32-C3은 승리 위치를 원격 서버로 전송합니다. 플레이어가 계속 게임을 하고 있는 한 이 과정은 계속 되어야 합니다.
코드 외에도, MySQL 서버에 임포트해야 하는 'MySQL_DB.sql' 파일도 포함되어 있습니다.
이 작업을 수행하려면 phpMyAdmin을 열고 '임포트' 탭으로 이동하고 '파일 선택' 버튼을 클릭한 후 'MySQL_DB.sql' 파일을 선택하십시오. 그런 다음 '이동' 버튼을 클릭하여 테이블을 가져옵니다. 가져오기가 성공되었는지 확인하려면 테이블 이름을 클릭하고 테이블 구조가 올바르게 표시되는지
웹 서버를 설정하려면 내 GitHub 리포지토리에서 다운로드한 PHP 파일을 조금 변경해야 합니다. 'Connection.php'를 열고 파일 내의 호스트명, 사용자명, 비밀번호 및 데이터베이스 이름을 업데이트한 후 파일을 웹 서버의 디렉토리에 드래그하십시오.
모든 것이 제대로 작동하는지 확인하려면, 'Player_Results_Display.php' 파일을 웹 브라우저에서 열고 순위표가 올바르게 표시되는지 확인하십시오.
브레드보드 데모
지금 하드웨어 로직이 준비되었고, 서버도 설정되었으므로 우리는 시스템의 기능을 확인하기 위해 브레드보드에서 빠른 테스트를 실시할 수 있습니다.
버튼을 계속 누른 상태에서 시리얼 모니터가 버튼 누른 것을 기록했는지 확인해 봅시다. 우리가 볼 수 있듯이, HTTP 200코드가 시리얼 모니터에 표시되어 서버와의 통신이 성공했음을 나타냅니다. 순위 페이지에서 서버가 버튼을 누른 것을 기록했다는 것을 확인할 수 있습니다. 웹 페이지는 5초마다 자동
이 페이지에는 '플레이어 1'과 '플레이어 2'의 나란히 배열된 스코어카드가 포함되어 있으며, 각 플레이어가 실시간으로 받은 점수, 승리, 패배, 무승부 및 총 게임 수를 표시합니다.
당신이 '새 게임' 버튼을 클릭할 때, 페이지가 재설정되며, 시스템은 현재 점수에 따라 플레이어의 승리, 패배 또는 무승부 카운트를 업데이트합니다.
3D 프린팅
마이크로소프트 3D Builder를 사용하여, 저는 이 프로젝트의 3D 모형을 디자인했습니다.
이 디자인은 3개의 부분으로 구성되어 있습니다:
- 상부에는 모든 LED를 수용할 수 있도록 설계되었습니다. - 하단부에는 모든 전자 부품이 포함되어 있고,
- 작은 一块에는 파란색 Wi-Fi 표시등 LED, 배터리 충전 모듈, SPDT 온/오프 스위치, 그리고 안테나 케이블과 버튼 스위치를 위한 구멍이 있습니다.
저는 반부 스튜디오에서 모형을 자르고, 제 새로운 반부 A1 3D프린터를 사용하여 그것을 인쇄했습니다.
마지막으로, 아크릴 색상을 사용하여 프로젝트의 주요 부분을 그렸습니다. 금색 마감은 실제로 인쇄물의 모습을 향상시켰습니다. 페인트가 마르면, 모든 LED를 상단에 설치하고 이들의 네거티브 레그을 '10쌍'의 형태로 서로 연결할 것입니다.
용접
자, 이제 모든 전자 부품을 조립하기 시작하자. 우선 제작된 PCB의 품질을 확인하자. PCBWay를 거의 6년 동안 사용했는데, 그들이 제공하는 최종 제품이 정말 마음에 들어요.
먼저 모든 저항을 보드에 용접한 다음 모든 트랜지스터를 용접하자.
저는 제 IC와 마이크로컨트롤러를 특히 주의를 기울여 다루기 때문에, 그것들을 보드에 직접 납땜하는 것은 절대로 하지 않습니다. 저는 IC 베이스를 항상 사용하며, 베이스가 없는 경우에는 암 핀 헤더를 사용합니다. 이는 직접 납땜을 하지 않아도 되고, 교체하기도 쉽습니다. 저는 모든 구성 요소를 PCB에
회로판에 전원을 공급하려면 충전 모듈과 몇몇 추가 구성 요소를 통합해야 합니다. 저는 먼저 SPDT 스위치를 설치한 다음, 파란색 Wi-Fi 표시등 LED를 설치했습니다. 그런 다음, 세계에서 가장 작은 배터리 충전 모듈을 모듈에 직접 부착하고, 이 작은 하얀 모듈을 사용하여 고정했습니다. 마지막으로
남은 두 개의 구멍은 안테나와 버튼 스위치를 수용합니다. 마지막으로, 모든 구성 요소가 배치되면, 저는 플라스틱 조각을 베이스의 바닥 구멍에 붙습니다.
LED에 연결될 모든 전선을 용접한 후 회로판의 모습입니다. 1부터 10까지의 LED는 공용 GND2를 사용하며, 11부터 20까지의 LED는 공용 GND1을 사용합니다.
LED를 보드에 용접할 때는 서버에 전송된 코드와 물리적 LED 번호가 일치하지 않는 경우를 방지하기 위해 올바른 순서로 용접해야 합니다. 화면의 지시사항에 따라 올바른 순서를 따르십시오. 만일 LED를 잘못 용접했다면, Arduino 코드의 배열을 수정하여 변경사항을 적용할 수 있습니다.제 설정에서는
저는 모든 것에 3.7V 재충전 배터리를 사용하고 있습니다. 하지만 원하는 경우에는 220V에서 5V로 전압을 변환하는 컨버터나 USB 케이블을 +5V와 -VE 구멍에 연결할 수도 있습니다.
모든 것이 준비되면, 남은 것은 바닥을 위에 붙이는 것입니다.
최종 데모
하드웨어가 준비되었으면, 이제 즐길 시간입니다! 장치의 전원을 켜고 파란색 LED가 켜지는 것을 기다리세요. LED가 켜지면 서버와의 Wi-Fi 연결이 확인되었다는 것을 의미합니다. 버튼을 누르면 LED 추적이 시작됩니다. 당신의 점수는 같은 네트워크에 연결된 모든 장치(PC나 모바일 장치)에서 확인
감사합니다.
제 게시물을 확인해 주셔서 다시 한번 감사합니다. 제 게시물이 여러분에게 도움이 되었으면 좋겠습니다.
전체 블로그 글: https:// diyfactory007.blogspot.com/2026/05/Roulette.html
태그
모델 소스



















