皆さんこんにちは、今日はESP32-C3スーパーミニマイクロコントローラとクラシックなCD4017 CMOSデカデカウンタを組み合わせて「デジタルルーレットホイール」を作った方法を紹介していきます。
ボタンを押すと、ESP32はCD4017 ICに「クロックパルス」を送信し、LEDが点滅します。ボタンを放すと、ランダムな結果で停止するまで現実的な減速効果が発生し、シリアルモニターやWi-Fiを経由して最終位置が報告されます。
私を信じてください、このプロジェクトではハードウェアの設計、Arduinoのコーディング、PHP、データベース、3Dデザインと印刷など、さまざまなことが行われています。
動画:https://youtu.be/5jVFR7KSNmg
フルブログ記事:https://diyfactory007.blogspot.com/2026/05/Roulette.html
必要なコンポーネント
このプロジェクトでは、以下が必要です。
🔗 1台のESP32-C3 Super Mini Plusマイクロコントローラ:https://s.click.aliexpress.com/e/_c2zUTvyj
🔗 2つのCD4017 CMOSデカードカウンタ:https://s.click.aliexpress.com/e/_c33qzzRt
🔗 2つの2N2222 NPNトランジスター:https://s.click.aliexpress.com/e/_c4OwNvnZ
🔗 3つの220Ω抵抗器: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×5 mmの赤いLED:https://s.click.aliexpress.com/e/_c2RpNzh9
🔗 2つの5 mmのグリーンLED:https://s.click.aliexpress.com/e/_c2RpNzh9
🔗 1個の3 mm青色LED:https://s.click.aliexpress.com/e/_c306Pzbh
🔗 1個の10mfdコンデンサ(オプション)
🔗 1つのLiPoバッテリー:https://s.click.aliexpress.com/e/_c4okFfef
🔗 1つのバッテリー充電モジュール(オプション):https://s.click.aliexpress.com/e/_c3EJLcZh
🔗 1つのバッテリーレベルインジケーター:https://s.click.aliexpress.com/e/_c4KGEDh5
そして、エンクロージャを印刷するための3Dプリンタ。
回路図
このプロジェクトの配線は本当に簡単ですね!
* ESP32のピン8をIC#1のリセットピン(ピン15)に接続します。
* ESP32のピン10をIC#1のクロックピン(ピン14)に接続します。
* ESP32のピン9を、プルアップ抵抗器を使用してプッシュボタンスイッチに接続します。
* ESP32のピン0を、電流制限抵抗器を使用してWi-FiインジケーターLEDに接続します。
配線の残りの部分については、画面に表示されている回路図をご覧ください。
さらに簡単にするために、私はあなたのためにカスタムPCBを設計しました。
コア機能
私は当初、このLEDルーレットプロジェクトを555タイマーICと2つのCD4017 CMOSデカダーカウンタで構築しました。555タイマーはクロック発振器として機能し、4017デカダーカウンタを駆動する信号を生成します。IC555のPIN-3からの出力は、IC4017のPIN-14に供給されます。IC4017がパルスを受信するたびに、カウントがインクリメントされ
このICについてもっと知りたい方は、私のチュートリアル第26号「555パルスジェネレータモジュール、その仕組み」をご覧ください。リンクは下記の説明にあります。
この当初のデザインの主な欠点は、カウントを手動で行わなければならないことでした。私は数字が自動的に追加され、勝者がシステム自身によって決定されるシステムが欲しかったのです。私の目的はギャンブル用のホイールを作ることではなく、息子と一緒に楽しめるシンプルなルーレットゲームを作りたかったのです。
そのためには、ESP32-C3 Super Miniが最適な選択肢であることがわかりました。これはコンパクトで、内蔵のWi-Fi機能を備えています。
それで、555タイマーICを使用する代わりに、ESP32-C3ボードを使用してCD4017 ICの1つに「クロックパルス」を生成しました。ボタンを押すと、パルスがどんどん速くなります。光が円を回って「回転」する感覚を生み出します。ボタンを放すと、回転はすぐに止まりません。代わりに、パルス間の時間が徐々に長くなり、光が徐々に遅
コード
さて、この番組全体を支えている論理を見てみましょう。
先に述べたように、このシステムは多くのコンポーネント、Arduinoコード、PHP、MySQLデータベースなどに依存しています。私のGitHubリポジトリには、サーバーを使用したバージョンと使用しないバージョンの2つのコードが含まれています。サーバーに保存された結果が不要な場合は、「Code_No_Wi-Fi」をESP32ボードにアップロードするだけです。
しかし、このチュートリアルでは、セットアップのすべての機能を示します。
さて、コードを一つずつ確認していきましょう。
アルデュイノのコードでは、ネットワークのSSIDとパスワードを入力する必要があります。また、サーバーのIPとURLを設定して、PHPファイルが保存されるディレクトリに合わせる必要があります。
既存の機能に新しい機能を追加しない限り、コードの他の部分を変更する必要はありません。
ルーレットを電源オンにすると、ESP32はまずWi-Fi経由でサーバーに接続を試みます。接続が確立されると、プレイヤーはゲームを開始することができます。ボタンを長押しすると、遅延を短くして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ビルダーを使用して、このプロジェクトの3Dモデルを設計しました。
このデザインは3つのパーツで構成されています。
- すべてのLEDを保持する最上部セクション、
- すべての電子部品が含まれる下部セクション、そして
- 青いWi-FiインジケーターLED、バッテリー充電モジュール、SPDTオン/オフスイッチ、そしてアンテナケーブルとプッシュボタンスイッチ用の穴が収まる小さなブロックです。
私はBambu Studioでモデルを切り分け、 新しいBambu A1 3Dプリンタで印刷しました。
最後に、アクリル塗料を使ってプロジェクトの本体を塗装しました。金色の仕上げがプリントの見た目を本当に引き立てました。塗料が乾いた後、すべてのLEDをトップセクションに取り付け、それらのネガティブレッグを「10個ずつ」のペアで接合しました。
はんだ付け
さて、すべての電子部品の組み立てを始めましょう。まず、製造されたPCBの品質を検査するために少し時間をかけてみましょう。私はこれまで6年近くPCBWayを利用してきましたが、彼らが提供する最終製品には本当に満足しています。
まず、すべての抵抗器を基板に半田付けし、次にすべてのトランジスターを半田付けしましょう。
私はICやマイクロコントローラを特に大切にしているので、それらを基板に直接はんだ付けしないようにしています。ICの場合、私は常にICベースを使用し、ベースがない場合にはメス型ピンヘッダーを使用します。これにより、直接はんだ付けを避けながらも、交換が簡単にできます。私は1つずつ、すべてのコンポーネントをPCBにはんだ付けしました。
ボードに電力を供給するには、充電モジュールと一部の追加コンポーネントを統合する必要があります。まず、SPDTスイッチを取り付け、続いて青色のWi-FiインジケーターLEDを取り付けました。そして、世界最小のバッテリー充電モジュールをブロックに接着し、この小さな白いブロックを使用して固定しました。最後に、オンスクリーンの回路図に従って充電インジケー
残りの2つの穴には、アンテナとプッシュボタンスイッチが収まっています。最後に、すべてのコンポーネントが所定の位置にあることを確認し、ベースの底部にある溝にプラスチックブロックを接着しました。
これが私がLEDに接続するすべてのワイヤーの半田付けを終えた後の基板の見た目です。LED 1から10までは、Common GND2を使用し、LED 11から20までは、Common GND1を使用します。
基板にLEDをはんだ付けするときは、コードがサーバーに送信するものと実際のLED番号が一致しないように、正しい順序ではんだ付けしてください。正しい順序については画面の指示に従ってください。誤ってLEDをはんだ付けした場合は、Arduinoコードの配列を変更して対応することができます。
私のセットアップでは、すべてを3.7Vの充電式バッテリーで給電しています。しかし、ご希望の場合は、220Vから5Vへの降圧コンバータや、USBケーブルをボードの+5Vと-VEホールに半田で接続することもできます。
すべてが所定の位置にある場合、残っているのは底の部分と上の部分を接着するだけです。
最終デモ
ハードウェアが準備できたので、楽しみましょう!デバイスの電源をオンにし、青いLEDが点灯するまで待ちます。点灯したら、サーバーへのWi-Fiリンクが確認されます。プッシュボタンを押すと、LEDが点滅を開始します。スコアは、同じネットワークに接続された任意のデバイス(PCやモバイル)で表示されます。
ありがとう
私の投稿をチェックしてくれてありがとうございます。あなたの役に立てれば幸いです。
フルブログ記事:https://diyfactory007.blogspot.com/2026/05/Roulette.html
タグ
モデルソース



















