RCJ全国大会の基板紹介 その1

こんにちは。燈 ―Tomoshibi Technology―のねこです。燈のロボットの基板をつくっています。完全に回路専門なので、メカも設計できないしプログラムも書けません。基本的に色々雑ですがお手柔らかにお願いします。

この記事は、2024年のRCJ OnStageに向けて開発した基板たちの紹介記事です。

## まえがき
記念すべき？初投稿にどんな記事を書こうかちょっと迷ったのですが、とりあえず基板紹介記事を書いてみることにしました。

今回は、今年3月に開催されたロボカップジュニアの全国大会に向けて、1月〜3月にかけて開発した基板たちについて紹介していきたいと思います。こいつらは2023年度の活動の集大成として、それまでの基板の完全上位互換みたいな存在になるように作りたかったので、だいぶ気合い入れました。
![IMG20240315134655.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3787396/5c722f1c-e38e-5fbf-bdff-9c189df7d891.jpeg)
ちなみに、今回紹介する基板も含めて、これまで作った基板のデータはすべて[GitHub](https://github.com/Tomoshibi-technology/Japan2024-Circuit "RCj全国大会の基板")で公開しているので、ぜひ見てみてください。あまり参考にはならないかもしれませんが。

## ロボットたち
初めに軽くロボットたちの紹介をしようと思います。
私達は、この大会に向けて3種類のロボットを開発しました。それが

+ Moving Display(Ver.2)
+ LED Pole
+ Robot Arm

の3種類です。全国大会では、Moving Displayを1台、LED Poleを8台、Robot Armを5台動かしました。
実際に動いているところは、下の動画でご覧ください。

<iframe width="916" height="515" src="https://www.youtube.com/embed/sfEVmlThWUo" title="RoboCupJuniorJapanOpen2024 本番パフォーマンス" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

また、LED Poleに関しては、[うちのチームリーダーが詳しく書いてくれている](https://qiita.com/Jun_robot/items/119ef779dac3e1f1d493#%E3%83%8F%E3%83%BC%E3%83%89 "高校の文化祭で音と光のインスタレーションを自作した話")ので、そちらもぜひ見てみてください。
このロボットたちについてはこの記事では本当に軽く触れる程度ですが、いつかこのロボットたちについて詳しく書いた記事も出ると思います。多分。

## 全体的な話
### 基板構成
さて、ここからが本編です。
まず、各基板の詳しい話の前に基板全体の話を書こうと思います。
各ロボットのハード構成は次のような感じになっています。
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3787396/c1261539-f647-0c9f-e098-33312e5f1269.png)
この図を見ると、合計9種類の基板が使われていることがわかると思います。それぞれのロボットについて列挙してみるとこんな感じです。

**Moving Display**
・Mother
・LargeMD
・LargePW
・Encoder
・Panel
**LED Pole**
・Mother
・Pole
**Robot Arm**
・Mother
・SmallMD
・SmallPW
・IR

最終的に、これら9種類で約60枚の基板を作りました。9種類の基板を設計して、60枚にはんだ付けするというのを2ヶ月でやったわけです。大変でした。

### 設計思想
この基板たちを作るうえで特に意識したことは、主に2つあります。
1つ目は、**拡張性と統一性を持たせること。** 2つ目は、**設計者でなくても楽に開発できるようにすること**です。

　

1つ目の拡張性と統一性については、各基板をモジュール化した、というような感じです。

具体的には、基板間の接続を数珠繋ぎ可能な通信規格に統一し、電源線も数珠繋ぎできるようにしています。
こうすることで、通信線と電源線をつなぐだけで、基板を何枚でも追加したり自由に組み替えたりできるようになっています。

　

これは、**ロボットに後々改造を加えやすいようにしたかった** というのが大きな目的です。
例えば、新たな機能を実装したくなって、新しい基板を作ることになった時に、それをもともとあったシステムに無理やりねじ込むのは大変です。
しかし今回の基板のように規格を統一して拡張性を持たせておけば、数珠つなぎで基板を増やしていくことができます。

燈のロボットは台数が多いので、新しい機能を追加するたびに大幅な改造を加えないといけないというのは、手間もお金もとんでもなくかかります。
各基板をモジュール化して、それを組み合わせていくような形でロボットを作れれば、いちいち手間もかからず開発期間も短縮できるだろう、という感じです。

正直、ノイズ対策的には微妙なところがあると思いますが、それよりも開発のしやすさや設計変更のしやすさを優先しました。

　

2つ目については、基板についてあまり知らなくても簡単に使えるようにしたということです。

各コネクタの機能をシルクで書いたり、マイコンのピン割り当てを空きスペースに書いたりしています。こうすることで、いちいち回路図を確認したりしなくても開発を進められるようにしています。

![IMG20240309141557.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3787396/af665394-55fd-982b-3a65-dd5cd1c15e2f.jpeg)


これはかなり便利なんじゃないでしょうか。ロボット開発の時だけに限らず、普段使いにもよくなったと思います。

ふとマイコンを使って何かしたいと思ったときでも、基板があればわざわざ回路図を探してくる必要がなくなります。

思い立った時に、回路図を読むというわりと面倒な手順を挟まずに気楽に使えるというのは結構いいんじゃないかなと思います。

### 基板間の接続
設計思想でも少し触れましたが、この基板たちは基本的に、通信のコネクタと電源のコネクタをどちらも2つずつ設けることで数珠繋ぎできるようにしています。

ロボット内の基板同士での通信規格は**2線式のRS485**で統一しています。

RS485を選んだ理由としては、差動通信でノイズに強く、デイジーチェーンで複数接続ができること、UARTとの変換ICが秋月などで比較的手に入れやすいことなどが挙げられます。
ロボット内の接続は有線ですが、ロボット間は無線で通信しています。無線モジュールには**TweLite**を使っています。

## 各基板の紹介
概要は説明できたと思うので、次は各基板について紹介していきます。

紹介していくんですが、すでにここまでで意外と文量が多いことに気がついたので、何回かに分けようと思います。
とりあえず、今回はMother基板について話そうと思います。

### Mother基板
![DSC_6798.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3787396/03824cc8-0eb3-e7c8-da7f-30fade50df67.jpeg)

名前の通り、各ロボットの頭脳のような基板です。基板構成の図を見るとわかりますが、この基板はすべてのロボットに乗っています。

ロボット内の各基板に対して指示を出すと同時に、ロボット間での無線通信もこの基板で行っています。かなり機能てんこもりな基板です。
フルで実装した状態の仕様を書き出してみると、こんな感じになります。

**制御関連**
・STM32F446RE
・TweLite
・BNO055

**UI**
・OLEDディスプレイ
・スピーカー
・ボリューム
・タクトスイッチ×3
・スライドスイッチ×2
・5PDIPスイッチ

**コネクタ**
・RS485：2ポート×2系統
・サーボモーターへの出力：2系統
・アナログ入力：4ポート
・NeoPixel：4ポート
・5V出力：2ポート
・イヤホンジャック(アナログ出力)
・USB-C
・書き込み用ボックスヘッダ

だいぶてんこもりなのが分かると思います。

また、この基板には2通りの電源供給方法があります。1つ目は他の基板と同様の12Vの電源入力、2つ目はUSBからの電源供給です。
通常の電源供給だけでなくUSBを刺すだけで動かせるようにしたため、手軽に使えるようになっています。

　

この2つの電源ラインの間には、同時につなげた際にも安全なように**電源切り替え回路**が入っており、二電源間でショートすることがないような保護回路を組んであります。
この回路についても、いつか記事を書きたいですね。

　

さらに、この基板最大の特徴は、**全体が2層になっている**ことです。
上層(UI層)と下層(Ctrl層)に分かれており、2枚の基板はピンヘッダで接続されています。UI層は脱着可能で、UI層を外してもCtrl層単体で動作させることができます。

基板を二層に分割することで、多機能性を保ちながらも、100mm×60mmという比較的コンパクトなサイズに収まっています。

サイズを抑えたことで持ち運びがしやすくなったうえに、パソコンからUSBで接続すれば動かせるということで、おてがる開発ボードとして使えます。
OLEDディスプレイをはじめとした各種UIがそろっている上、BNO055が搭載されていたり、アナログ入力コネクタに各種センサーを接続できたりと、汎用性も抜群です。

拡張性と使いやすさという点で、今回作った基板の中でもっとも設計思想に忠実な基板だと思っています。その代わり一枚当たりのコストがえぐいことになってますが。

## まとめ
今回は全国大会の基板について、全体的な構成の話とMother基板に関する記事でした。

全国大会では優勝することができ、7月の世界大会に出場します。これらの基板をより使いこなして、パフォーマンスしてきます。

次の記事は他の基板の紹介になると思うので、楽しみにしていてください。

## 最後にちょっと広報

世界大会の渡航費を集めるために、クラウドファンディングを実施しているので、ぜひ見にきてください！
他のロボットの説明やチームについてまとまっています！！

[<img width = 400 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3154550/8d40f59f-e993-e464-e0a9-7a5f3a4bf6da.png">](https://camp-fire.jp/projects/762605/preview?token=3vwc4gil&utm_campaign=cp_po_share_c_msg_mypage_projects_show)