11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【電子工作 / PCB】初めてのRP2040を使った基板設計。テスト回路を組む際に使える最小構成で組んだRP2040ブレークアウトボードの製作!

以前書いたこちらの記事の追記となります。

【電子工作 / 自作PCB】RP2040が動く最小構成で組むブレークアウトボードの製作を考えています!

電子工作で自作基板(PCB)の製作を始めて1年ほどが経ちました。
ATmega328PやATtinyといったArduino・AVR関係の基板やESP32やESP8266といったESP系のMCU(マイコンチップ)を使った自作基板などを製作してきました。

普段ArduinoやESP32といった開発ボードはよく使っているのですが、マイコンボードやモジュールといったパッケージ化されたものを使う時は内部の細かいところまで理解しにくかったのですが、PCBを自分で製作するようになるとそのあたりの理解も深まり面白くなってきます。

そしてRP2040を使った自作基板の製作も今後考えているのですが・・・
RP2040と言えばRaspberry Pi Picoに使われているMUCで有名でね。

RP2040は7mm角と非常に小さなチップ(QFN-56)なのでこのサイズのチップを実装することが出来るかな?という不安がこれまであったのですが、この1年でこれよりもさらに小さなチップの実装にも慣れてきたのでRP2040の回路構成や基板設計のテストも兼ねて最小構成で組むRP2040ブレークアウトボードを製作してみました。

最小構成で組むRP2040ブレークアウトボードの製作!

RP2040を動かすにはどのような回路構成で組めばいいのか?
まずここからのスタートだったのですが、Raspberry Pi公式サイトには多くの資料が公開されています。

Raspberry Pi公式サイト『Raspberry Pi Datasheets』にはRP2040を使ったサンプル基板がいくつか公開されており、回路図やKiCadの基板設計データなどを見ることが出来ます。
これは非常に参考になりました!

初めてのRP2040を使った基板設計だったので、これを参考に最小構成で組むRP2040ブレークアウトボードを製作してみることにしました。
RP2040の全てのI/O端子を引き出し最小限の電源回路だけ組み込んだシンプルな構成のボードです。

今後RP2040を使ったPCBを製作する際にこれをベースにテスト回路を組むのに使おうかと考えています。

rp2040/Minimal-KiCAD.zip

まずRP2040を動かすための回路構成ですが、Raspberry Pi公式サイト『Raspberry Pi Datasheets』に回路図や構成、KiCadの基板データなどが公開されているのでこれを参考に製作してみることに。

Raspberry Pi Datasheetsのサイトにいくと様々なデータシートが公開されています。
その中にある『rp2040/Minimal-KiCad.zip』には、RP2040を動作させるのに必要な最小構成で組んだボードのKiCadデータが含まれており無料でダウンロードすることが出来ます。

参考 Raspberry Pi DatasheetsRaspberry Pi

このデータを参考に今回製作したRP2040ブレークアウトボードの設計を進めていきました。

ダウンロードした『rp2040/Minimal-KiCad.zip』をKiCadで開いたものがこちらです。
RP2040にはフラッシュメモリが内蔵されていないので外部メモリとの接続やクリスタル(発振回路)、またRP2040を駆動するための3.3Vレギュレータ回路やUSB端子(microUSB)といったRP2040を動かすのに必要な最低限の回路構成となったボードです。

RP2040のI/O端子を引き出しテスト等で使えるボードの製作を考えていたので、私の用途としてはこのデータをそのまま使い基板発注して製作してもよかったのですが・・・

手を加えたい箇所がいくつかあり、またKiCadのデータを見ているとCAD設計のテクニックやRP2040まわりのパーツ配置のことなど非常に参考になったので、今回一から自分で設計して製作してみることにしました。

ダウンロードしたKiCadデータ(rp2040/Minimal-KiCad.zip)と『RP2040を使用したハードウエア設計』という資料を照らし合わせながら設計を進めていくと、初めてRP2040を使った回路や基板設計を行う際に非常に参考になると思います。

RP2040チップ周辺にはバイパスコンデンサなど比較的多くのパーツが使われているのですが、その配置や使われているパーツの定数なども参考になると思います。

参考 RP2040を使用したハードウエア設計Raspberry Pi

回路設計(rp2040/Minimalからの変更点)

[rp2040/Minimal]をベースとして[RP2040を使用したハードウエア設計]と照らし合わせながら回路設計を進めていきました。

私の使用用途によりrp2040/Minimalから変更した箇所がいくつかあるので見ていきます。

RP2040まわりの回路構成

まずコアとなるRP2040まわりの回路構成は、rp2040/Minimalから変更せずそのまま使いました。
多くのバイパスコンデンサやUSBデータライン(D+ / D-)に接続されている抵抗など、なるべくRP2040チップの近くに配置するように指示されています。

これらパーツの配置や定数などは、[RP2040を使用したハードウエア設計]を読みながら進めていくと分かりやすいと思います。

またフラッシュメモリとの接続部分もrp2040/Minimalからそのまま使っています。
SPI接続のフラッシュメモリとなりSSピン(CS)のプルアップ抵抗R3はrp2040/MinimalではDNF(Do not Fit)と書かれている理由やR2 1kΩの接続のことなど資料を読むと分かりやすいと思います。

USB端子はType-Cに変更

rp2040/MinimalではUSB端子にmicroUSBが使われていますが、これはType-C端子に変更した方が使いやすいですね!

電圧レギュレータチップの変更

RP2040駆動電源となる3.3Vレギュレータチップは手持ちでたくさんあるAMS1117-3.3に変更しました。

今後このボードを使い実際にRP2040まわりのテスト回路を組む際は電圧レギュレータ(LDO)は別のものを使いたい場合も出てくると思います。
その際は3.3V端子に直接接続した外部レギュレータを使う予定です。
このようなLDOテストボードの製作も考えています。

【電子工作 / PCB】テスト回路を組む際に使える電圧レギュレータ(LDO)テストボードの製作を考えています。

またテストボードなので通電確認用のLEDも追加しています。

[BOOT] [RESET] スイッチの追加

Raspberry Pi Picoには[BOOTSEL]スイッチが付いています。
スイッチを押しながらUSB接続し起動するとUSBマスストレージデバイスとしてRP2040が認識されるというものです。

テストボードとしてはこの[BOOT]スイッチ、そして[RESET]スイッチがあると便利なので追加しました。

またRaspberry Pi PicoにはGPIO25にオンボードLEDが接続されています。
テストボードとしてはこれもあると便利なのでGPIO25にLEDを追加しました。

I2Cプルアップ抵抗の追加

通常GPIOピンとして使う場合は必要ありませんが、I2Cで使う場合にGPIO16(SDA ) / GPIO17(SCL)にプルアップ抵抗を付けることが出来るように変更しました。

I/O端子

rp2040/Minimalでは片側2列で内1列は全てGNDポートという配置で作られています。

ブレークアウトボードなので全てのI/O端子をピンヘッダーとピンソケットで接続できる構成に変更し、USB端子のデータライン(D+/D-)、VBUS(5V)、3.3V、GND端子を配置して合計20ピン×2のI/O端子としました。

以上rp2040/MinimalをベースにしてRP2040が動く最小構成、テスト等で使いやすくなるようなブレークアウトボードとして製作しました。
今回製作したボードの全体回路構成はこのようになります。

基板設計

パーツ点数はそれほど多くないのでブレッドボードに直接挿せるボードサイズにしようかとも考えたのですが、ブレークアウトボードとなりテストで使用する際にI/Oラベルが見やすくなるよう極力大きくしたかったので、20ピンのピンヘッダーが収まる最小サイズ(52mm×53mm)のボードにしました。

rp2040/MinimalではRP2040まわりのバイパスコンデンサ等に一部0402サイズのパーツが使われていますが、このサイズのパーツ実装は結構大変なので0603サイズのパーツをベースにしています。

バイパスコンデンサなどRP2040まわりのパーツの配置は上記資料が非常に参考になりました!

またKiCadの設計というか操作方法で私は知らなかったのですが、複数のゾーンを重ねて各ゾーンに優先順位を割り当ててベタ領域を作るといったことが出来るんですね!
rp2040/Minimalではそのようにベタ塗りしたGNDや3.3Vラインが作られています。

ベタ領域の作成や修正はこれまで手間や時間が結構かかる面倒な作業だったのですが、ベタ領域内に他のベタ領域を作り優先順位を割り当てて作っていく・・・CADの操作・テクニックみたいなものも非常に参考になりました。

さすが公式さんが公開している資料ですね!

JLCPCBに基板発注

基板の発注はJLCPCBを使いました。
今回RP2040の実装が初めてだったのでステンシルも一緒に発注しています。

ステンシルサイズは通常発注すると結構大きくなり、その分送料が高くなってしまいます。
また実装の際も作業しにくいと思います。

JLCPCBではステンシルサイズを無料でカスタムサイズに変更することが出来ます。
今回製作した基板サイズは52mm×53mmなので、その2倍くらいのサイズ100mm×100mmに指定して製作してもらえば実装時使いやすく送料も少しお安く製作することが出来ます。

JLCPCBでのステンシル発注方法やステンシルを使ったパーツ実装に関してはこちらの記事も参考にして下さい!

【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

またJLCPCBの基本的な基板発注方法に関しては、こちらの記事で詳しく解説しているのであわせて見て頂ければと思います。

【電子工作】はじめての基板製作!JLCPCBさんに基板を発注してみました。ユーザー登録・データ納品・基板到着までの一連の流れをご紹介!

今回このように発注しました。
製造時に任意の位置に入ってしまう基板製造番号(発注番号)が基板裏の目立たない位置に入るように指定したのみです。(基板裏に入るように基板データに指定を入れています)
JLCPCBではこのオプションも無料となります。

あとステンシルサイズをカスタムしたのみで、他の項目はデフォルトの設定で問題ありません。(文字彫刻のオプションを入れてみました!)

今回製作したボードの基板データ(ガーバーファイル)をダウンロードできるようにしておきます。
何かの参考になればと思います。

パーツの実装

送料区分はOCS Expressを選択し発注から8日で手元に届きました。
基板とステンシルの同時発注ですが、JLCPCBはお安くてほんと毎回早いですね!

今回製作した基板では0603サイズのパーツをベース(一部0805も使っています)にしているのでこれらパーツの実装は問題ないと思いますが、難しくなるのはRP2040の実装です。
7mm角のチップに56本ものパッドがあり・・・、RP2040の実装は今回初めてだったのでこれがメインとなります。

実装のコツをつかみ問題なければ、これからRP2040を使った自作基板の製作に発展していけそうです。

ステンシルを使いはんだペーストを塗布、パッド部分に適切な量のはんだペーストを綺麗に塗布することが出来ました。

パーツの実装はミニリフロー装置MHP50を使いました。
MHP30からホットプレートサイズが大きくなったMiniwareさんの新製品です。(2023年末に発売)

リフロー装置としての安全設計などMHP30の良い所がすべて引き継がれ、ホットプレートサイズが大きくなりカラーディスプレイ搭載、操作性も大きく向上した非常に使いやすいミニリフロー装置です。

MHP50の詳しいレビューはMHP30の記事に後日追記しておきます。

【電子工作】コンパクトボディーで安全設計!ミニリフロー装置『Miniware MHP30』を使ってみる!

ステンシルを使っているので全体的に綺麗に実装出来ましたが、RP2040はいくつかブリッジしている箇所がありました。

リフロー後ブリッジした箇所をコテで修正、ペーストフラックスで汚くなっていますが・・・

動作確認後、IPAを使い基板洗浄を行うと非常に綺麗に実装出来ているのが分かります。
完璧です!

【電子工作】基板のフラックス汚れを強力に洗浄。IPA(イソプロピルアルコール)を使ってみる!

RP2040の実装は今回始めてだったのですが、このような小さなチップの実装はリフローという手段が非常に有効的です。
おそらく慣れれば手はんだでの実装も可能だと思いますが、はんだ付けの難しさというよりは位置合わせが非常に難しくなってきます。

上下、または左右に0.◯mmズレただけで反対側のパッドが接触しないというサイズのチップなので、これを手作業で位置合わせするのは結構大変だと思います。

リフローではセルフアライメントという、溶けたはんだの表面張力によってパーツのリード線をPCBの正規の位置に戻す(接続するパッド部分へ)ことが出来ます。

適切な位置にさえチップを固定することが出来れば、あとは手はんだでブリッジ等の修正をするのは比較的簡単になります。
便利な方法ですね!

今後RP2040を使った基板実装は問題なく出来そうです。

動作確認

各所動作チェックを行いました。
簡単にその様子もご紹介しておきます。

RP2040はSPI接続されたフラッシュメモリのCSピン(SS)をGNDに落とした状態でリセットをかける(RUNピンをGNDに落とす)とUSBマスストレージデバイスとしてPCに認識されます。
Raspberry Pi Picoではおなじみの動作ですね。

今回製作した基板では[BOOT][RESET]スイッチを付けているので、[BOOT]スイッチを押した状態で[RESET]スイッチを押して離すとPCにドライブ(マスストレージ)として認識されるはずです。
問題ないようです!

MicroPythonではドラッグアンドドロップすることでプログラムを書き込むことができます。

次にArduinoとしてLチカスケッチを書き込んでみます。
Arduino IDEから書き込む場合、Raspberry Pi Pico(RP2040等)のボードパッケージのインストールが必要となってきます。

こちらの記事も参考にして下さい!

Arduinoの開発環境を構築する。Arduino IDEのインストール方法!

ArduinoスケッチをRP2040に初めて書き込む際は手動でブートローダーモードに入る必要があります
先程の[BOOT]スイッチを押した状態で[RESET]を押す動作です。

MacとWindowsでポートの表示が違うかもしれませんが、Mac環境ではブートローダーモードで起動するとArduino IDEのシリアルポートに[UF2 Board]と表示されます。

あとはボードに[Raspberry Pi Pico]、シリアルポートは[UF2 Board]を選択し通常の書き込み手順[アップロード]ボタンをクリックして書き込みます。

今回製作したボードではGPIO25にオンボードLEDを付けているのでスケッチはこんな感じですね。

無事Lチカも成功しました。

以降Arduino IDEに接続するとシリアルポートは[/cu.usbmodem◯◯◯]といった感じで表示されるので、これを選択して書き込むことになります。
通常のArduinoを扱うときと同じです!

MEMO
手動でブートローダーモードに入る必要があるのは、ArduinoスケッチをRP2040に初めて書き込む時だけです!

一通りの動作確認をやりましたが特に問題なさそうです!
自作のRP2040ブレークアウトボードの完成です。

最小構成で組んでいるので、これからRP2040関係の自作基板製作のテスト回路を組む際に使えそうです。

今回使用したパーツ一覧

今回使用したパーツの一覧です。

パーツ定数入手先
コンデンサ
(0805)
C1/C2 10μFAliExpress
コンデンサ
(0603)
C3/C6/C7/C10/C11/C12/C13/C14/C15/C16 0.1μF
C4/C5 15pF
AliExpress
抵抗
(0603)
R1/R5 5.1kΩ
R2/R4/R/6/R7 1kΩ
R3/R8 10kΩ
R9/R10 27Ω
R11/R12 2.2kΩ
AliExpress
LED
(0603)
LED1/LED2AliExpress
スイッチSW1/SW2 SMDスイッチ(3×4mm)AliExpress
チップU1 AMS1117-3.3AliExpress
U2 W25Q128JVSAliExpress
U3 RP2040AliExpress / 秋月電子
U4 12MHzクリスタル(3.2×2.5mm)AliExpress
端子J1 Type-CコネクタAliExpress / 秋月電子
J2/J5 1×20P ピンソケット
(2.54mmピッチ)
J3/J4 1×20P ピンヘッダー
(2.54mmピッチ)
ーーー

最後に!

RP2040を使った自作基板の製作を今後考えているのですが、RP2040のピッチ変換基板などテスト出来る環境が無かったので自作のブレークアウトボードを製作してみました。
最小構成で組み全てのI/Oピンも引き出しているので、RP2040を使ったテスト回路を組む際に便利に使えそうです。

Raspberry Pi Picoを使ってテスト回路を組むという手もありますが、ラズピコではGPIO25がオンボードLEDに接続されているというのは先述の通りですが、他にもGPIO23,24,29といったピンもボードの内部機能として使われています。
自作基板を作る際のテスト回路ではこれら余計な部分を排除した、なるべく実基板で組むものと同じ回路構成で組むことが出来れば予期せぬトラブルなども避けることが出来ると思います。

そしてカスタムした自作Raspberry Pi PicoのイメージもCAD上では出来上がっているのですが、実回路を使ってテスト出来る環境がなかったため今回ご紹介したRP2040ブレークアウトボードを先に製作しました。
これで動作確認することができ、必要なら回路修正等を行い製作することが出来そうです!

自作キーボードを製作されている方でRaspberry Pi PicoやPro Micro RP2040といった既存ボードではなく、スペースやレイアウト等の問題でRP2040をPCBに直実装したいとお考えの方も多いと思います。
そのような方にも今回ご紹介したRaspberry Pi公式さんが公開している資料は非常に参考になると思います。

何かの参考になればと思います・・・。

1 COMMENT

ullah

素晴らしい記事ありがとうございます。大変参考になりました。
公開いただいているガーバーデータを拝借し、実際にJCLPCBに発注して同じボードを作ってみました。
結果、うまく動作させることができました。

SMD、しかも0.5mmと狭いピッチなので、技術も機材も不十分な素人では無理だと諦めていましたが、やってみればできるものだと感動しました。
リフローはAmazonの安い100V220℃のPTCヒーターでもなんとかなりました。
半田クリームを塗りすぎてRP2040やtype Cの端子がブリッジして困りましたが、銅編み込みタイプの半田吸い取り線でも十分リカバリーできました。

今度は自分で回路・アートワークの設計からチャレンジしてみようと思います!

返信する

コメントを残す