こんにちは、今日はESP32-C3の超小型マイクロコントローラとクラシックなCD4017 CMOS 10年カウンタを組み合わせて「デジタルルーレット」を作る方法を紹介します。
ボタンを押すと、ESP32はCD4017 ICに「クロックパルス」を送信し、LEDが循環表示されます。ボタンを放すと、現実的な減速効果が発生し、ランダムな結果で停止するまで続き、シリアルモニターやWi-Fiを通じて最終位置が報告されます。
私を信じてください、このプロジェクトにはハードウェアの設計、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 x 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コンデンサ(オプション)
🔗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デカデュアルカウンターを使用してこのLEDルーレットプロジェクトを構築しました。555タイマーはクロック発振器として機能し、4017デカデュアルカウンターを駆動する信号を生成します。IC555のピン3の出力は、IC4017のピン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ボードに簡単にアップロードすることができます。
しかし、このチュートリアルでは、設定のすべての機能をデモンストレーションします。
さて、コードを一つずつ確認していきましょう。
Arduinoのコードでは、ネットワークのSSIDとパスワードを入力し、サーバーのIPとURLを設定する必要があります。これらの設定は、phpファイルが保存されているディレクトリに合わせて行う必要があります。
既存の機能に新しい機能を追加したい場合を除いて、コードの他の部分を変更する必要はありません。
ルーレットを開くと、ESP32はまずWi-Fi経由でサーバーに接続を試みます。接続が確立されると、プレイヤーはゲームを開始することができます。ボタンを押すと、遅延を減らしてLEDシーケンスを高速化できますが、ボタンを放すと、遅延を増やして速度を落とすことができます。これにより、シーケンスが完全に停止する前に、自然な流れが生まれます。
LEDホイールが停止すると、ESP32-C3は勝利位置をリモートサーバーに送信します。プレイヤーがゲームを続ける限り、このプロセスが続きます。
コードのほかに、MySQLサーバーにインポートする必要がある「MySQL_DB.sql」ファイルも含めています。
これを実行するには、phpMyAdminを開き、「インポート」タブに移動し、「ファイルを選択」ボタンをクリックし、「MySQL_DB.sql」ファイルを選択します。 次に、「Go」ボタンをクリックしてテーブルをインポートします。 インポートが成功したかどうかを確認するには、テーブル名をクリックし、テーブル構造が正確に表示されているかどうかを確認します。
ウェブサーバーを設定するには、私のGitHubリポジトリからダウンロードしたPHPファイルにいくつかの変更を加える必要があります。「Connection.php」を開き、ファイル内のホスト名、ユーザー名、パスワード、データベース名を更新します。 次に、ファイルをウェブサーバーのディレクトリにドラッグアンドドロップします。
すべてが正常に機能していることを確認するには、ウェブブラウザで「Player_Results_Display.php」ファイルを開き、ランキングが正確に表示されていることを確認してください。
ブレッドボードのデモンストレーション
これで、ハードウェアの論理が準備され、サーバーが設定されたので、システムの機能を検証するためにブレッドボードで簡単なテストを実行できます。
ボタンを押し続けて、シリアルモニターに押下が記録されたかどうかを確認してみましょう。ご覧のとおり、HTTP 200コードがシリアルモニターに表示され、サーバーとの通信が成功したことを示しています。ランキングページでは、サーバーがボタンの押下を記録したことを確認できます。ウェブページは5秒ごとに自動的に更新され、2人のプレイヤーの最新スコアがリアルタイムで表示
このページには、「プレイヤー1」と「プレイヤー2」の並行スコアカードが含まれており、各プレイヤーのリアルタイムのスコア、勝利、敗北、同点、および総ゲーム数が表示されます。
「新しいゲーム」ボタンをクリックすると、ページがリセットされ、システムは現在のスコアに基づいてプレイヤーの勝利、敗北、または引き分けのカウントを更新します。
3Dプリンティング
マイクロソフトの3Dビルダーを使用して、このプロジェクトの3Dモデルを設計しました。
このデザインは3つの部分で構成されています。
- トップ部。すべてのLEDを収容するために使用されます。 -底部。そこにはすべての電子部品が含まれており、
-小さな部品で、青色のWi-FiインジケーターLED、バッテリー充電モジュール、SPDTオン/オフスイッチ、アンテナケーブル用の穴、ボタンスイッチなどがあります。
私はBambu Studioでモデルをスライスし、新しいBambu A1 3Dプリンタでそれを印刷しました。
最後に、アクリル塗料でプロジェクトの本体を塗装しました。金色の仕上げは、確かに印刷物の外観を向上させます。塗料が乾いた後、私はすべてのLEDを上部に取り付け、それらのネガティブレッグを「10組」ずつ溶接しました。
溶接
さて、すべての電子部品の組み立てを始めましょう。まず、製造されたPCBの品質を確認するために時間をかけましょう。私はPCBWayを6年近く利用してきましたが、彼らが提供する最終製品が本当に気に入っています。
まず、すべての抵抗器を基板に溶接し、それからすべてのトランジスターを溶接しましょう。
私は自分のICやマイクロコントローラに特に注意を払っているので、それらを基板に直接はんだ付けしないようにしています。ICの場合、私は常にICソケットを使用しています。ソケットがない場合は、メス端子を使用します。これにより、直接はんだ付けを避け、交換が容易になります。私はPCBにすべてのコンポーネントを1つずつはんだ付けしています。
基板に電力を供給するには、充電モジュールといくつかの追加コンポーネントが必要です。まず、SPDTスイッチを取り付け、次に青色のWi-FiインジケーターLEDを取り付けます。それから、世界最小のバッテリー充電モジュールをブロックに超強力に固定し、この小さな白色ブロックを使用して固定します。最後に、画面に表示された回路図に従って充電インジケーターを取り
残りの2つの穴には、アンテナとボタンスイッチが収まっています。最後に、すべてのコンポーネントが取り付けられたら、プラスチックブロックをベースの底部の溝に接着します。
これは、LEDに接続されるすべての電線の溶接が完了した後の回路基板の外観です。発光ダイオード1~10には共通のGND2が使用され、発光ダイオード11~20には共通の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
タグ
モデルソース



















