이 기계는 스테퍼 모터를 이용해 트레이에 3개의 주사위를 던져넣고, OpenCV를 통해 결과를 읽는 장치입니다. 모든 프로그래밍은 파이썬으로 이루어졌으며, 코드는 대부분 오래된 프로젝트와 채트GPT에서 복사한 것입니다.
코드는 블로브 디텍션을 사용하여 주사위의 점들을 찾고, dbscan을 사용하여 그들을 별도의 주사위로 분류합니다. 이것이 작동하려면 트레이에 '분리기'가 필요합니다.
사용된 하드웨어는 일반적인 스테퍼 모터와 DRV8825 드라이버 회로입니다. Raspberry Pi 4와 Pi Camera 3도 있습니다. 몇몇 M4/M2.5 나사를 제외하고, 대부분의 다른 부품은 PLA와 PETG를 사용하여 3D 인쇄되었습니다.
스테퍼 모터.
저는 바이폴라르 스테퍼 모터인 NEMA 17을 사용하고 있습니다. 이 모터는 1.5A로 등급이 지정되어 있지만, 저는 DRV8825를 사용하여 500mA로 제한하고 있습니다. 드라이브 회로는 12V로 공급됩니다.
건설
저는 다른 기계들보다 더 빠르고 나은 결과를 제공하기 때문에 이 버전을 최종 기계로 선택했습니다. 그것은 유리나 베어링 같은 특수 부품이 필요 없습니다.
이 기계는 책장 판자 위에 CA 접착제와 열용접 접착제로 조립되어 있습니다.
개선할 점이 있습니다.
-
카메라는 πι Camera 3 Wide 같이 조금 더 넓은 각도가 필요합니다.
-
소음 수준을 줄이려면, 트레이에 고무 바닥을 사용해야 합니다.
-
그것이 어떤 레인에 배치되어 있는지 나열하세요.
랜덤 숫자 생성
1-6의 값을 내는 주사위 던지기에서 좋은 랜덤 숫자를 얻으려면 모듈로를 사용할 수 있지만, 피해야 할 점이 있습니다. 0에서 27 사이의 랜덤 값이 필요한 경우 세 개의 주사위(d1-d3)를 순서대로 던져야 하며, 다음과 같은 방법을 따라야 합니다.
(d1 - 1) * 36 + (d2 - 1) * 6 + (d3 - 1) * 1만약 그 값이 196 이상이면, 다시 주사위를 던져서 숫자들을 제거하세요. 그렇지 않으면 결과에 모듈러 편향이 있을 거예요. 그 후, 28으로 수를 나누세요. 예시:
-
던져진 첫 번째 주사위: 4
-
두 번째 주사위 던지기: 3
-
던져진 세 번째 주사위: 2
121 대 28의 나머지는 9입니다.
Etiketler
Model Kaynağı
