Raspberry Pi Picoを使ってみました!
全国大会で使うぞ~!
ロボカップジュニアのチームの回路設計を担当しているたびとです。私たちのチームではブロック大会まで主なメインマイコンをSeed xiaoとしていました。しかし全国大会に向けて新しい機能など導入する中で、現在使用中のマイコンではピン数が足りず、また、処理するのに十分な機能を持っていないことが分かったため、マイコンを変えることにしました。具体的にいうと、UARTの本数が足らなくなりました。ということでピン数が十分にあり、UARTの本数も十分にあるRaspberry Pi pico(これ以降Picoと呼ぶ)を使用することにしました。いままでマイコンボードは自作してきましたが、リスクが高く、作業が進まなくなる可能性があるため既製品にしました。
前から導入してみたかったマイコン
Picoは前から目をつけていたもので、載せてみたいと思っていました。わたしがひかれたポイントは、PWMの使用できるピンが多いこと、I2cやUART, SPIのピンが多いこと、2コアでそれぞれ別の処理が行えることです。さっそく買って試してみました。UART
TWELITE UARTでの外部からの変数(2種類)の値変更指令がうまく飛んでる☺️試しにLEDの明るさを外部からの無線で操作してみた pic.twitter.com/tCmrrYY4tj
— たびと!! (@tabito1419) February 20, 2023
UARTでLEDの明るさの値を受け取り、正常にLEDの明るさを調整することができました。また、このほかにもカメラとの通信処理と同時並行でジャイロと通信して角度を受け取るなどして、うまく動きました。さっそく基盤を作って発注してロボットに載せたいと思います
基板設計
いつも通りKicadを使って基板設計をしていきます。
マイコンが少なくスマートな仕上がりになる予定です。カメラ基盤の統合などにより、配線が楽になり、メンテナンス性が向上しそうです。また、ブロック大会までは各マイコンにそれぞれ電力供給用のコネクタを設置していましたが、カメラも、マイコンも3.3Vを使用することから、電源を一か所にしました。電源基板の三端子レギュレータの出力電流の定格を超えないか心配です。
基板の注文
今回もJLCPCBに注文しました。全国大会までロボットの基板をすべてここで作ってもらいました。
簡単に注文方法を説明すると、まずJLCPCBのアカウントを作り、Oder nowをおしてガーバーファイルを出力します。何も変更を加えなくても標準的な基板を製造してもらえます。色を変えたかったので色を、標準の緑から黒色に変えました。これで基板の注文の準備は完了!青い「SAVE TO CART」をおしてカートに入れたのち、「Secure checkout」をクリックして手続きをして注文完了です。
基板の到着
今回は、いろいろ諸事情により基板の製造が遅れましたが、チャット等ですぐに対応してもらえて、とても助かりました。
とってもかっこいい仕上がりだと思っています!基板の種類ごとにしっかり包装されてきます。
基板の組み立て
基板にいろいろ詰め込んだら、なんか大変なことになってました。とてもコンパクトになりました。配線も少なくて済むのも特徴です。
今後について&まとめ
今回の基板は間違っていないと思うので多分動きます。動作確認をしっかりして全国大会に備えたいと思います。カメラ以外にも通信用のモジュールやジャイロセンサも載る予定です。今回の発注でもしかしたら、基板の注文も最後になるのかなと思います。ロボットの基板はすべてJLCPCBに製造していただいたもので、とてもつよい支えになりました。全国大会でもどうぞよろしくお願いいたします。
JLCPCBでラズベリーパイ小型ボード制作チャレンジ
RP2040の魅力
ラズベリーパイ ピコとして使用されているマイコンRP2040をロボカップジュニアのロボットのマイコンに使用したい。実際に使っているチームもあるようで、私も挑戦してみようと思いました。私の調べた情報ですので、間違いがあるかもしれませんが、わたしが、このRP2040に魅力を感じている理由は、このマイコンは2つの処理を同時に実行することができるという情報を聞きつけたからです。私は、「ジャイロセンサ」、「カメラとの通信」、「ラインセンサ調整」、「モーターの制御」に各それぞれにマイコンを用意し動かしています。仮に、RP2040を使用できれば、回路を大きく小型化できることが期待できます。
オープンリーグで使うには小型化が必要
ロボットの直径が18cmとするとルールが変更されたオープンリーグですが、RP2040が使用されているラズベリーパイ ピコを載せるという手がありましたがロボットの直径が小さすぎて載せる隙間がありません。また、自作全方位カメラの死角を減らしたいからというものも載せれない理由の一つです。必要最小限の機能を載せ、必要最小限の動作に必要な電子部品を載せたオリジナルのマイコンボードを作る必要があります。
基板設計
RP2040なんて使ったことがなく、どんな電子部品が必要なのかなど全く分からなかったので、実際に公開されている資料見ながら作りました。
参考資料➡Hardware design with RP2040 (raspberrypi.com)
回路図は複雑そうに見えますが一つ一つを見ればどこまでありません。
表面実装はJLCPCBにしていただくので、この時点で、使用部品の在庫(LCSC)を調べておきましょう。そうしないと筆者みたいに、基板の設計が完成してから、在庫がないのを見つけてしまうことになります。
JLCPCBで注文!
JLCPCBで基板および表面実装の注文を行います。今回のボードの値段は、1~2か月前に作ったArduino Leonardo互換ボードよりもちょっとだけ値段がこっちの方が高かったです。注文方法はすでに紹介されているのでそちらをご覧ください。
➡JLCPCBの実装サービスの利用方法 (jh4vaj.com)
回路到着!完璧な表面実装!
さすが機械で表面実装されているのでとてもきれいで、ブリッジもなかったです。自分は手先が不器用なのでとてもありがたいです。
こんなに小さなボタンまで、LCSCには多くの部品があり、そこから選んで、実装を依頼できるのでJLCPCBの表面実装の強いところです。さっそく動作確認です.....
あれ、動かない、、、、
電源を入れると、LEDが点灯し、これは完成か?とおもったところでした。USBケーブルをPCと接続しても認識されませんでした。その原因として自分が可能性があると思っているのは、水晶発振器のクロック数を間違ったことです。本当は12MHzの予定でしたが、Arduino Leonardoの互換ボートが16MHzだったので、いつもの癖で間違ってしまいました。次回は、その修正を行い、動作するか挑戦してみたいと思います。
おわりに
今回は失敗しましたが、次回の動作を期待しています。全国大会までにはRP2040をロボットに搭載したいと思っています。
今回基板を発注したのは中国の基板制作企業の「JLCPCB」です。2層基盤は2$から注文できるのでぜひ利用してみてください。
自作MPU6050!
MPU6050を自作
ジャイロセンサとしてロボカッパーの皆様の多くは1度は使ったことはあるのではないでしょうか。自分は、今年度初めて使うのですが、以前まで使っていたジャイロセンサよりも、プログラム次第では、正確でとても使いやすいなと思っています。MPU6050を設計し、今回も基板をJLCPCBに作っていただきました。
意外とシンプルな回路図
Amazonなどでは同じような見た目でBNO055というジャイロセンサのモジュールも販売されています。自分も以前まで使っていました。しかし、そのモジュールは出力用のマイコンが搭載されており、部品数もとても多いモジュールでした。その一方で、上の写真を見るとわかると思いますが、とても部品数が少なく、MPU6050のマイコン単体で、I2Cでの出力が可能で、とても設計しやすいように感じたため、作ってみることにしました。回路図はインターネット上で見つけました。参考にしたページはこちら
回路図とPCBの設計
回路図がぐちゃぐちゃなのは置いといて、上記のホームページの回路図を参考に、Kicadに作りました。回路図は複雑そうに見えますが、そうでもなく、こんなもんかって感じでした。
製品と全く同じように配置しても、なんかおかしい。まあ、今回は別に小さくすることは意識してないので、チップ抵抗のサイズが大きくてもまあいいでしょう。”ほぼ”表配線だけでできました。
基板の注文
表面実装を含めた基板の注文は何回か行ってきましたが、今回はMPU6050のIC自体の値段が高かったため、MPU60501枚あたりの値段は少し高くなってしまいました。
表面実装の部品をJLCPCBのホームページで選べるのですが、「MPU6050」ももちろん当たり前のように在庫がありました。結構多くの部品がそろっているなっという印象です。いままでは、Amazonで買ったモジュールを使っていたのですが、MPU6050の表面実装にも対応していることから、「制御基板に直接2個載せ」とか妄想が........
届いた!
今回も約1週間ほどで届きました。ロボット制作ピンチに追い込まれている民にとってはとても助かりました💦
表面実装された基板は、ぷちぷちと柔らかい緩衝材に包まれた状態でJLCPCBの箱に入って届きます。
運命の動作確認!
やっぱり動作確認のときが一番緊張します。最初はArduino Nanoで動作確認したのですが、なぜかうまくいかなかったので、前回作ったArduino Leonardo互換ボードを使いたいと思います。
しっかり動きました。電源を入れた瞬間、エメラルド色に輝くLEDを見たときまずはほっとしました。ピン配置ももちろん従来のモジュールと同じです。
しっかりシリアル通信で角度をとれた!角度もしっかり出力されたので、これをMPU6050として使えることがほぼ確定しました。回路をまねて作っただけなので、動くだろうと思っていましたが実際に動いてくれると嬉しいものです。
感想
こんかいの基板がうまくいってほっとしています。いろんなジャイロセンサを比較するためほかのICのモジュールもどんどん作っていきたいと思います。最後まで読んでいただきありがとうございました。
極小のArduino Leonardo互換ボードを作った
自分でマイコンボードを作りたい!
そんな無謀なことを言い出したことから始まった物語です。もともとロボットにはATmegaの全ピンを2.54ピッチに変換するボードにはんだ付けし、使用する予定でした。
しかし、どこかで不具合が起きたとき、ほかの場所にまで影響が出ないように、使用するマイコンを機能ごとに分けたほうがいいなと思いました。
そこで、どこの部分で使っても、都合のいい場所にピンがあるような、マイコンボードを作ろうとしたことで、この計画は始動しました。
使用マイコンの選定
今回のボードにはATmega32U4が搭載されています。このマイコンを選んだ理由は以下の通りです。
・Arduino Leonardoの互換機として使える。
・USBシリアル変換ICが不要なので、作りやすい
・Arduino Leonardoという既製品の回路図が公開されている
などがあげられます。一番重要視したのは、小さい範囲に、いかに回路を小さく収めれるか、動くことが保証されている回路図があるかということです。見も知らぬマイコンを短期間で、動作できる回路を、お手本なしに作るのはとても時間がかかるものです。なので、回路図の公開されているもののいらない部分を省いて、動作できる最小限の回路にしました。
回路図作成
上の写真の当初使用予定であった基板には、ATmegaを動かすための、クロック回路、USB書き込み用回路が主に載っています。とくに難しい回路はなく、個人的には非常に扱いやすい! 動作するために必要な回路がとてもすくないこともあり、順調に制作を行えました。相変わらず、いつも通りKicadを使って制作しています。
自動配線降伏!? 地獄の配線作業
個人的にはいつもPCBの配線作業はとても楽しいと感じています。ここを通そうかなとか、こうすると見栄えがいいかなとか、いろいろ考えているときがとても楽しく感じます。しかし、今回は、それどころではありません。制御基板に複数個載せるためには、とても小さく作る必要があります。
初めて2層で「限界かも」と思いました。ビヤをあまり使いたくないと思っていましたが、そんなこといっていたら配線できないというレベルでした。なお、自動配線でさえ、配線することができませんでした。やっぱり手作業の方が大変信頼はできるなと思いました。いつも「楽しい~」といってすぐおわりますが、今回はルート決めや、ビヤの配置などの計画に時間を費やしたため、3日ぐらいかかりました。
JLCPCBで表面実装を初発注!
基板の製造を行ってくれるJLCPCBですが、表面実装のサービスも行っています。今回の基板の表面実装の値段は$40ほどと表面実装の値段としてはとても安くなっています。されに、注文した枚数すべてに表面実装だけでなく、数枚だけ表面実装するということもできます。自分のときは、5枚注文でしたが、2枚だけ表面実装するということができました。試験用の基板であるとか、そういうときに、全部表面実装するときよりも、値段を抑えて注文できます。
Kicadから表面実装をしてもらうためのファイルを出力できます。自分はすべてこのページを参考にしたので、もしも表面実装を注文したいという方は、ぜひご覧ください。
➡JLCPCBの実装サービスの利用方法 (jh4vaj.com)
自分の環境では、部品リストの出力がうまくいかず、コマンドプロンプトで無理やり出力しています。
そして使用部品の在庫は十分に確認しましょう。上のURL先のサイトで、JLCPCBのページで部品を検索する方法が紹介されているのですが、自分の使っている「ATmega32U4」は人気なのかすぐに在庫がなくなります。(すぐに補充されました)部品の在庫がなかったら、注文できないので、しっかり確認してください。
基板が届いた
待ちに待った到着!どんな出来具合なのか、届くまでKicadの3Dのモデルをニヤニヤしながら見ていましたが、自分の思っている以上、とてもかっこいいものが届きました。これは既製品ですではありません。自分で設計したものだと考えると、とてもワクワクするものです。こんなのどう頑張っても手はんだでは無理なので、とても助かりました。
マイコンボードのスペック
とはいってもArduino Leonardoの互換機なので、Seeeduino XIAOほどの性能はありませんが、都合のいいピンを8×2のピンに割り当てました。
ロボットのジャイロの値や、その他の部分の制御用、制御マイコンへの送信用としてはちょうどいいくらいかなって感じです。
自分で設計し、製造を依頼している形なので、既製品のSeeeduino XIAOなどのボードと比べると高くはなってしまいますが、個人的には、自分で作ることこそ面白味があり、とてもいい経験になったなと思います。
さっそく動作確認!
マイコンボードに命吹き込み中 pic.twitter.com/zAZ1ctM7Mk
— たびとのTabi ソフト制作中 (@tabito1419) 2022年9月2日
まずは、ブートローダーの書き込みです。Arduino ISPを使って、今回はArduino NanoからSPIでボードに書き込みLeonardo化をおこないます。書き込み一回目では、ブートローダーの書き込みがうまくいかず、USBでPCと接続しても、うまく認識されませんでしたが、再書き込みしてうまくいきました。Arduino UNOでもしたことがあるのですが、よくインターネット上には、「同じATmegaのボード同士でないとうまくいかない」とありますが、いままで、してきてそんなことはありませんでした。いままでは外部に水晶発振子などをつけていましたが、このボードにはすでに水晶発振子が内蔵されているので、ただつなぐだけで書き込み出来ました。参考にしたページはこちらです。
➡Monday Experiment: Bootloading an ATmega32u4 with Arduino | Murchlabs
このマイコンボードはロボットでジャイロセンサとして活躍してもらう予定なので、さっそくMPU6050と接続してみました。
ちゃんと値が取れました。いや~まさかあの小さいやつでしっかり動いてくれるとは思いませんでした(動いてくれないと困ったのですが)。ジャイロセンサ用としてしっかり機能することがわかったので、さっそく使っていこうと思います。その一方で、このボードは5Vで動きます。そのため、カメラ(OpenMV)などとシリアル通信を行う際、レベル変換が必要です。外部にレベル変換回路を設置したのですが、シリアル通信がうまくいかなかったので、あきらめてカメラとの通信用にはSeeeduino Xiaoを使うことにしました。(大事なところには信頼できる製品を....💦)
今回の感想
最高にかっこいいボードが完成してとても満足しています。
一回目の試験機としてはすでに十分な性能を発揮してくれました。余っているディジタルピンをLEDようにするとか、LEDの色を変えるとか、すこし改良しながら、ロボット用として使っていこうと思います。自分で作った新しいデバイスで電子工作するのはきっと楽しいですよ。ぜひしてみてください!
また今回利用したJLCPCBでは、表面実装用のクーポンや、新規ユーザーには$54相当のクーポンの配布を行っています。急ぎで基板を準備したいとか、安く基板を注文したいとかそいういことがあればぜひ、JLCPCBを利用してみてください!
読んでいただきありがとうございました。
ロボットの基板が到着しました!(1)
注文していたロボットような基板が届いたので、さっそく、はんだ付けして動作確認しました。
基板の価格
基板は全部で9種類。JLCPCBをいう中国のプリント基板会社に発注しました。
JLCPCBでは、プリント基板100x100mm 1種類5枚を$2から注文できます。わたしの基板は2層の基板で5枚ずつ、9種類の基板を注文しました。
最初は$2、いっしょに2種類以上の注文からは$4で注文できます。
わたしは9種類なので、$2+$4x8=$34で注文できました。
基板ファイルのチェック
JLCPCBは製造前に製造ファイルのチェックをしてくれて、間違えなどがあった場合通知してくれるそうですが、わたしはとくになにもなく、チェックが終わりました。ガーバーファイルをチェックできるガーバービューで基板に穴が開いていないなどのトラブル等もありましたが、ホームページのチャットで、スタッフの方に、基板にちゃんと穴が開くかどうか確認してもらえました。
到着まで
今回はすぐに届くように送料は高いDHLを利用しました。JLCPCBではさまざまな輸送会社から選ぶことができます。7月24日から製造がはじまり、到着したのは7月31日。約一週間ぐらいで到着してくれました。
JLCPCBから基盤が来た。さすがに1週間で来るとは思わんかった。ロボットの作業が進みそう。 pic.twitter.com/3VyRtVFEgF
— たびとのTabi ソフト制作中 (@tabito1419) July 31, 2022
注文した基板の種類
- 制御用電源基板左側(保護回路、降圧回路)
- 制御用電源基板右側(保護回路、降圧回路)
- 駆動用電源基板(保護回路)
- ラインセンサの基板左側
- ラインセンサの基板右側
- ラインセンサ基板からの信号受け取り基板左側
- ラインセンサ基板からの信号受け取り基板右側
- メイン基板(TJ3B)
- メイン基板(ATmega)
夏休み中に作業が進むようにたくさんの基板を注文しました。
基板の動作状況
制御基板いいね。SPIのピン間違えてて謎の黒い線が飛び出してしまっていることと、
— たびとのTabi ソフト制作中 (@tabito1419) August 1, 2022
≫USB端子がもげた≪
≫ATmegaが取れなくなった≪
以外、ちゃんと動いてます。ミスったな~、発注しなおしですね(;^_^A pic.twitter.com/l984d8ZDhx
うごいた!かっこいい! pic.twitter.com/zejkwAJLv6
— たびとのTabi ソフト制作中 (@tabito1419) August 2, 2022
マイコンが載っているメイン基板は片方はUSBコネクタが取れたり、配線が間違っていたりしたので、発注しなおそうと思います。
その他の基板は、致命的なミスはなく、使うことができました。
今回の感想
ラインセンサが美しい!ロボットのすきまぎりぎりに載ってるのがたまらん!なかなかいいものできました。基板が自分の思っていたよりもとても速く到着してくれてとてもよかったです。とくにぎりぎりの個所などもあったので、プリント基板を製作できるCNCを利用せず、プリント基板会社に発注しました。設計図通りにしっかり製造していただき、ロボットにしっかり乗せることができました。自分の設計ミスとはんだ付けの下手さで、失敗することもありました。次回は、表面実装なども利用したいなと思っています。
最後に、今回利用したJLCPCBでは現在新規ユーザーに$54クーポンを配布しています。興味がある方はぜひ、利用してみてください↓