ルービックキューブを解くロボットを作ろう！4 ハードウェア編

# この記事はなに？
この記事は連載している**ルービックキューブを解くロボットを作ろう！**という記事集の一部です。全貌はこちら
1. [概要編](https://qiita.com/Nyanyan_Cube/items/a1b6e6bc7e4ac832b3d0)
2. [アルゴリズム編](https://qiita.com/Nyanyan_Cube/items/60f3699db96dba4a4bf5)
3. [ソフトウェア編](https://qiita.com/Nyanyan_Cube/items/94bfa7b56c8ff69d94cd)
4. ハードウェア編(本記事)

GitHubは[こちら](https://github.com/Nyanyan/soltvvo)。

プロモーションビデオは[こちら](https://youtu.be/Fok7bAn-NSs)です。
[![Soltvvo](http://img.youtube.com/vi/Fok7bAn-NSs/0.jpg)](https://youtu.be/Fok7bAn-NSs)

この記事集に関する動画集は[こちら](http://www.youtube.com/watch?v=9wuyo1KsjrM&list=PLwkf5JRsfk8OEn085444C6q4WWcrxCFgA)です。
[![ルービックキューブを解くロボットを作ろう！](http://img.youtube.com/vi/xl9qaEfAsIs/0.jpg)](http://www.youtube.com/watch?v=9wuyo1KsjrM&list=PLwkf5JRsfk8OEn085444C6q4WWcrxCFgA)


# 今回の記事の内容
今回の記事では、私が作った2x2x2ルービックキューブを解くロボットSoltvvoのハードウェアの解説をします。

# 全体
全体の写真をお見せします。
![IMG_3188.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/9b86faad-940c-02fe-6498-c60af994a368.jpeg)


# アーム
最初に一番重要なところをお見せしましょう。まず動いている様子をご覧ください。これは私のツイートです。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/2x2x2solver_nyanyan?src=hash&amp;ref_src=twsrc%5Etfw">#2x2x2solver_nyanyan</a><br>このロボットはどんなぐちゃぐちゃなルービックキューブも自動で揃えてくれます。その様子をお見せしましょう。 <a href="https://t.co/3AiXDi2tXL">pic.twitter.com/3AiXDi2tXL</a></p>&mdash; にゃにゃん (@Nyanyan_Cube) <a href="https://twitter.com/Nyanyan_Cube/status/1275809653335552002?ref_src=twsrc%5Etfw">June 24, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

このアームは前後に動くことでキューブを掴んだり離したりします。ステンレス棒をガイドとして、サーボモーターを使って原始的な方法で前後させます(図)。
![IMG_3183.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/d437d133-b896-8ada-6d0e-64c4ee3d0881.jpeg)
また、銀色と黒色の四角いものはステッピングモーターと呼ばれ、角度と角速度を自由に設定して回せるモーターです。

アームのキューブに触れる部分は1mm厚のアルミ板を削って曲げて作りました(図)。部品の加工にはCNCフライス盤を使いました。
![IMG_3136.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/a011b7c3-2239-0a30-fb31-57f28a6c1ced.jpeg)

# カメラ
キューブの状態はカメラを使って認識します。カメラはとても安いwebカメラを仕入れたのでそれを分解し、基板の状態で使いました。また、カメラの周りにはLEDを大量に設置し、照明としました(図(Soltvvo1号機製作中、真ん中にあるのがカメラを載せた基板))。
![IMG_2986.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/1923a0d7-fda6-eba2-89e5-76e823fe9cdc.jpeg)

# 回路
回路を紹介します。
## 構成
まずロボットの構成をお見せしましょう。
![構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/dc88de74-7629-2e5c-1420-073b16df2667.png)
ここで、Raspberry PiはRaspberry Pi 4(2GBRAM)というシングルボードコンピュータ(つまり普通の(?)コンピュータ)、ATMEGA328Pは有名なマイコン(マイクロコントローラ)で、Arduinoというマイコンボードに使われているものです。今回はArduino Unoとして使います。

## ステッピングモーター周り
ステッピングモーターを回すには専用のドライバが必要です。今回はA4988というドライバを使いました。このドライバの使い方は[こちら](https://iot.keicode.com/arduino/arduino-stepper-motor-a4988.php)のサイトに詳しく書いてあります。基板(図)上の赤い4つついているものがステッピングモータードライバです。
![IMG_3157.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/d72dab12-8a43-06f7-b989-817ede4dc930.jpeg)

## サーボモーター周り
サーボモーターはATMEGA328P1つあたり2つしかつけないので、特にIC(PCA9685等)を介した接続はしませんでした。ArduinoのServoライブラリを使って動かします。

## 電源
このロボットでは大本の電源を[秋月の12VACアダプター](http://akizukidenshi.com/catalog/g/gM-00510/)で取ります。ここから5V3Aを2つ作ります。降圧には[こちら](http://akizukidenshi.com/catalog/g/gM-02038/)を使いました。電源基板は写真の通りです。
![Image from iOS(9).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494375/9281f9f0-58dc-70f6-88ca-048c3e61194e.jpeg)

# まとめ
今回の記事ではハードウェアについて軽くご説明しました。もしわからないことがございましたらコメントをください。

長い記事集でしたが今回で「ルービックキューブを解くロボットを作ろう！」も終わりです。ここまで読んでくださりありがとうございました。