これは、ステッパーモーターでトレイに3つのダイスを投げ、OpenCVを使って結果を読み取る機械です。すべてのプログラミングはPythonで行われ、コードはほとんどが古いプロジェクトやChatGPTからコピーされています。
このコードは、Blobdetectionを使用してダイスの上にある点を検出し、dbscanを使用して別々のダイスに分類するように動作します。これが正常に機能するためには、トレイ内の「セパレーター」が必要です。
使用されているハードウェアは、通常のステッピングモーターとDRV8825ドライバー回路、Raspberry Pi 4、およびPi Camera 3です。M4/M2.5ネジを除くほとんどの部品は、PLAおよびPETGを使用して3D印刷されています。
ステッピングモーター
私はバイポーラルステッパーモーター、NEMA 17を使用しています。それは1.5Aで定格されていますが、DRV8825で500mAに制限されています。ドライブ回路は12Vで給電されています。
建設工事
私はこのバージョンを最終的なマシンとして選んだのですが、それは私が作った他のマシンよりも速く、より良い結果を提供するからです。ガラスやベアリングなどの特殊部品は必要ありません。
この機械は、本棚の板にCA接着創とホットメルト接着創で組み立てられています。
改善すべきこと
-
カメラはもう少し広い角度が必要です、Pi Camera 3 Wideのように。
-
騒音レベルを下げるために、トレイにゴム製の底を使用する必要があります。
-
それがどのレーンに配置されているかをリストにしてください。
ランダムな数字の生成
ダイスの投げ方で1~6の値を与える良いランダムな数字を得るには、モジュロを使用することができますが、避けるべきこともあります。0~27のランダムな値が必要な場合は、3つのダイス(d1~d3)を順番に投げて、以下の操作を行う必要があります。
(d1 - 1) * 36 + (d2 - 1) * 6 + (d3 - 1) * 1もし値が196を超える場合は、もう一度サイコロを投げて数字を削除してください。そうしないと、結果にモジュロ偏差が生じる可能性があります。その後、28で数字を割ります。例:
-
最初に投げたダイス: 4
-
2つ目のダイスが投げられた:3
-
投げた3つ目のダイス: 2
121を28で割ると9になります。
Tags
Model Source
