Esta es una máquina que lanza 3 dados en una bandeja, con un motor paso a paso, y luego lee los resultados usando OpenCV. Toda la programación se hace en Python, el código se copia principalmente de proyectos anteriores y de ChatGPT.
El código funciona utilizando la detección de Blobs para encontrar puntos en los dados, y dbscan para agruparlos en dados separados. Los "separadores" en la bandeja son necesarios para que esto funcione.
El hardware utilizado es un motor paso a paso ordinario y un circuito de controlador DRV8825. Un Raspberry Pi 4 y una cámara Pi 3. Aparte de un par de tornillos M4/M2.5, la mayoría de las otras piezas se imprimen en 3D utilizando PLA y PETG.
Motor paso a paso
Estoy usando un motor paso a paso bipolar, NEMA 17. Está clasificado para 1,5 A, pero lo estoy limitando a 500 mA con el DRV8825. El circuito de accionamiento está alimentado con 12 V.
Construcción.
Elijo esta versión como la máquina final, ya que es más rápida y ofrece mejores resultados que otras máquinas que he construido. No requiere ninguna pieza especial como vidrio o rodamientos.
La máquina se ensambla con pegamento CA y adhesivo de fusión en caliente sobre una pieza de tablero de estantería.
Mejoras que se deben hacer.
-
La cámara necesita un ángulo un poco más amplio, como la Pi Camera 3 Wide.
-
Para reducir los niveles de ruido, se debe usar un fondo de goma en la bandeja.
-
La lista indica en qué carril se encuentra ubicado.
Generación de números aleatorios.
Para obtener buenos números aleatorios de lanzamientos de dados que den un valor de 1-6, puedes usar el módulo, pero hay cosas que debes evitar. Si necesitas un valor aleatorio de 0 a 27, debes lanzar tres dados (d1-d3) en un orden, y hacer lo siguiente:
(d1 - 1) * 36 + (d2 - 1) * 6 + (d3 -1) * 1Si el valor está por encima de 196, vuelve a lanzar los dados y elimina los números, de lo contrario, habrá un sesgo de módulo en los resultados. Después de eso, modulas el número con 28. Ejemplo:
-
Primera tirada de dados: 4
-
Segundo dado lanzado: 3
-
Tercera dado lanzado: 2
121 módulo 28 = 9
Tags
Source du modèle
