自作Bonnetの回路図を描けるようになる教材

Spotifyマトリクス用の基板を、電気の基本から一つずつ組み立てます。各章の問題に正解すると、下の基板のブロックが銅色に埋まっていきます。全部埋まったら、KiCadで回路図を描く準備ができています。

基板の完成度0 / 10 章
入力回路2・3・4章 XIAO まわり5・9章 HUB75 信号7・8章 電源と保護6章 電気の基本1章 回路図に統合10章

1電気の基本:電圧・電流・抵抗

この章のゴール:オームの法則で、回路のどこに何V・何mAがかかるかを計算できる。

3つの量

電圧(V、ボルト)は「押す力」です。いつも2点の差として測ります。「このピンは3.3V」と言うときは、GNDを0Vとしたときの差のことです。電流(A、アンペア)は実際に流れる量、抵抗(Ω、オーム)は流れにくさです。

3つは V = I × R でつながっています。2つわかれば残り1つが出せます。

V = I × R 電圧 = 電流 × 抵抗 I = V ÷ R 電流 = 電圧 ÷ 抵抗 R = V ÷ I 抵抗 = 電圧 ÷ 電流

単位の接頭辞がいちばんの落とし穴

記号意味例
k× 1,00010kΩ = 10,000Ω
m÷ 1,0000.33mA = 0.00033A
µ÷ 1,000,0000.1µF = 0.0000001F

計算する前に、全部をV・A・Ωに直す。これだけで桁ずれはほぼ防げます。

近道:mA × kΩ = V。mの「÷1000」とkの「×1000」が打ち消し合うので、数字だけ掛ければ電圧が出ます。0.1mA × 10kΩ = 1V。逆に V ÷ kΩ = mA も使えます。

5Vを1kΩの抵抗にかけると、何mA流れますか?

mA

4.7kΩの抵抗に2mA流れています。抵抗の両端の電圧は何Vですか?

V

0.33mAをA(アンペア)で表すと?

A

2デジタル入力:ボタンとプルアップ

この章のゴール:ボタンをマイコンに正しくつなぐ回路を描ける。

入力ピンは電圧を見ている

XIAOの入力ピンは、電圧が3.3Vに近ければH(1)、0Vに近ければL(0)と読みます。電流ではなく電圧を見ている、というのが大事な点です。

フローティング

ボタンの片側をピン、もう片側をGNDにつなぐだけだと、離したときピンがどこにもつながっていない状態になります。電圧が決まらず、ノイズや指の接近でHとLがランダムに変わります。これをフローティングと呼びます。

プルアップ抵抗

ピンと3.3Vの間に10kΩを入れると、離しているときは抵抗を通して3.3Vに引き上げられ、Hに決まります。押すとGNDに直結されてLになります。押すとLになる形が、一番よく使われます。

回路図ピース:ボタン

3V3 R1 10kΩ XIAO D8 SW1

ボタンは2個使うので、このピースを D8 と D9 に1つずつ描きます。

上の回路で、ボタンを離しているとき D8 は何と読まれますか?

ボタンを押しているとき、R1に流れる電流は何mAですか?

mA

R1をなくして3.3Vを直接ボタンにつなぐと、押した瞬間どうなりますか?

補足:RP2040には内蔵プルアップもあります。今回は仕組みを理解するために外付けで描きます。

3アナログ入力:フォトトランジスタで明るさを測る

この章のゴール:光の強さを電圧に変えてADCで読む回路を描き、抵抗値を選べる。

電流を電圧に変える

フォトトランジスタは、光が当たるほど電流をたくさん流す部品です。光で開き具合が変わる蛇口だと考えてください。マイコンが読めるのは電圧なので、下に抵抗を置いて、流れた電流を V = I × R で電圧に変えます。抵抗の下端はGNDなので、その電圧がそのままADCピンの電圧になります。

回路図ピース:明るさセンサー

3V3 Q1 フォトトランジスタ 上:コレクタ 下:エミッタ XIAO A0 R2 10kΩ

明るい部屋でQ1に0.1mA流れています。R2は10kΩです。A0の電圧は何Vですか?

V

直射日光でQ1が1mA流そうとしました。計算上は1mA × 10kΩ = 10V。実際のA0はどうなりますか?

抵抗値の選び方

抵抗が大きいほど、少しの光でも電圧が大きく変わる(感度が高い)代わりに、明るい所ですぐ頭打ちになります。小さいとその逆です。実際に置く場所で、一番明るいときの電流を測り、そのとき3V弱になる抵抗を選ぶのが基本です。仮の値として10kΩで描いておき、来週の製作時にテスターで測ってから決めても大丈夫です。

RP2040のADCは12ビットで、0〜3.3Vを0〜4095の数値にします。A0が1Vのとき、読める値はおよそいくつですか?(整数で)

4出力:状態表示LED

この章のゴール:LEDの電流制限抵抗を計算して選べる。来週のテストで「動いている」ことを目で確かめる用のLEDです。

LEDは抵抗なしでつないではいけない

LEDは、一定の電圧(順方向電圧 Vf、赤で約2V。必ずデータシートで確認)を超えると急に電流を流し始めます。抵抗なしだと電流が制限されず、LEDかマイコンのピンを傷めます。直列に抵抗を入れて電流を決めます。

抵抗にかかる電圧 = ピンの電圧 − Vf 電流 = (3.3V − Vf) ÷ R

回路図ピース:状態LED

XIAO D10 R3 1kΩ D1 赤LED

三角の向きが電流の向きです。三角の底(アノード)が+側、横棒(カソード)がGND側。基板では向きを間違えやすいので、シルクにも印を入れます。

Vf = 2.0V、R3 = 1kΩのとき、LEDに流れる電流は何mAですか?

mA

棚にある100Ωを使うと、何mAになりますか?

mA

状態表示LEDの抵抗として一番いいのはどれですか?

5XIAO RP2040 のまわり:電源・GND・パスコン

この章のゴール:マイコンを動かすための電源まわりの約束を守って描ける。

XIAOの電源ピン

XIAOには 5V、3V3、GND のピンがあります。5Vを入れると、XIAO内部のレギュレータが3.3Vを作って 3V3 ピンに出します。2章・3章のプルアップ抵抗やフォトトランジスタは、この 3V3 から取ります。

GNDは全部つなぐ

電圧は2点の差でした。XIAO、Pi、74AHCT245、マトリクスがそれぞれ違うGNDを基準にしていたら、「3.3V」の意味がそろいません。基板上のGNDはすべて一つにつなぎます。

パスコン(バイパスコンデンサ)

ICは動作の瞬間に電流を急に欲しがります。電源から遠いと配線を通って届くまでに電圧が一瞬下がり、誤動作の原因になります。各ICの電源ピンのすぐ横に0.1µFを置いて、小さな貯金箱の役目をさせます。XIAOはモジュール内にパスコンが載っているので、自分で足すのは74AHCT245の2個ぶんです。

XIAOの5Vにダイオードを入れる

XIAOの5VピンはUSBの5Vとつながっています。プログラムを書き込むためにUSBを挿したまま基板にも5Vが来ていると、パソコンのUSBから基板側(Piを含む)へ電流が流れ込むおそれがあります。基板の5VからXIAOの5Vへ向けてショットキーダイオードを1個入れると、逆向きの流れを止められます。XIAOの5Vピンの扱いは、SeeedのXIAO RP2040の資料でも確認してください。

XIAOとPiのGNDをつながないと、何が困りますか?

74AHCT245のパスコン0.1µFは、どこに置きますか?

Piの3.3V(Piのピン1・17)と、XIAOの3V3ピンはつなぎますか?

6電源入力と逆接保護

この章のゴール:どこに大きな電流が流れるかを決め、逆接保護回路を描ける。

4Aを基板に通さない

64x64のマトリクスは明るい画像で数Aを使います。この大電流は、電源から付属の電源ケーブルでマトリクスへ直接送ります。基板に来る5Vは、Pi・XIAO・74AHCT245のぶんだけです。基板の配線を太くする心配や、保護部品の電流上限の心配がぐっと減ります。

逆接保護:PチャネルMOSFET

電源の+と−を逆に挿すと、ICは一瞬で壊れます。一番簡単な対策はダイオードを直列に入れることですが、ダイオードは常に0.3〜0.4Vほど電圧を食います。5Vが4.6Vになると、Piが不安定になることがあります。

そこでPチャネルMOSFETをスイッチとして使います。ゲートをGNDにつないでおくと、正しく挿したときはゲートがソースより約5V低くなり、MOSFETがオンになって電流が通ります。逆に挿すとゲートの方が高くなり、オフのまま電流を止めます。オンのときの抵抗 Rds(on) はとても小さいので、電圧のロスもわずかです。

回路図ピース:電源入力

J1 +5V Q2 Pch DSG +5V C1 47µF +5V D2 ショットキー XIAO 5V +5V の行き先 ・Pi ピン2・4 ・U1/U2 VCC(20番) ・D2 経由で XIAO 5V

CBAの棚のPチャネルMOSFETのデータシートで、ゲート電圧4.5V前後でのRds(on)、ドレイン電流の上限、ピン配置(G・D・S)を必ず確認してください。部品によってピンの並びが違います。

Rds(on) = 0.05Ωのとき、1A流れるとQ2での電圧ロスは何mVですか?

mV

代わりに電圧降下0.4Vのダイオードを使うと、基板の5Vは何Vになりますか?

V

マトリクスが使う数Aの電流は、どこを通しますか?

注意:Piを基板から5Vピン経由で給電するときは、PiのUSB電源は挿さないでください。2つの電源がぶつかります。

7ロジックレベル:3.3Vの信号を5Vにする

この章のゴール:なぜレベルシフタが要るか説明でき、74AHCT245の固定ピンを正しく描ける。

Hと読まれる電圧には下限がある

入力がHと読まれるには、電圧が VIH(High入力の最低電圧)以上である必要があります。Piの出力は3.3V。マトリクスの中のICは5Vで動いていて、3.3Vが確実にHと読まれる保証がありません。そこで間に74AHCT245を入れ、3.3Vの信号を5Vで出し直します。

IC(5Vで動作)VIH の目安3.3V入力
74HC245約3.5VHと保証されない
74HCT245 / 74AHCT2452.0V確実にH

名前の「T」は、入力の閾値が低い(TTL互換)という意味です。部品を選ぶとき、ここが一文字違うだけで動かなくなります。正確な値はデータシートの VIH の行で確認します。

74AHCT245のピン

ピン名前つなぎ方
1DIR+5V。A側からB側への向きに固定
2〜9A1〜A8入力。Piから来る3.3V信号
10GNDGND
11〜18B8〜B1出力。5V信号がHUB75へ(18番がB1、11番がB8と逆順)
19OE#GND。#は「Lで有効」の意味
20VCC+5V と 0.1µF パスコン

実際の部品のピン配置は、使うICのデータシートで必ず確認してください。

5Vで動く74HC245(Tなし)に、Piの3.3V信号を入れるとどうなりますか?

DIRとOE#はどうつなぎますか?

2個目の245で使わない入力(A7、A8)はどうしますか?

8HUB75:マトリクスの仕組みと配線表

この章のゴール:HUB75の各信号の役割がわかり、Pi → 245 → HUB75 の配線表を完成できる。

4096個を同時には光らせていない

64x64のマトリクスは、上半分と下半分から1行ずつ、合計2行だけを同時に光らせています。その2行を高速に切り替えて、目の残像で全体を見せています。

  • R1 G1 B1:上半分の行の色データ。R2 G2 B2:下半分の行の色データ。
  • CLK:1回パルスを送るごとに、色データが1ピクセル分シフトレジスタへ送り込まれます。
  • LAT:1行ぶん送り終わったら、その内容を表示用に確定(ラッチ)させます。
  • OE:表示のオンオフ。行を切り替える間だけ消して、残像のにじみを防ぎます。
  • A B C D E:今どの行を光らせるかの番号(行アドレス)。

上下の半分から1行ずつ同時に光らせます。64行全部を表示するには、何回切り替えが必要ですか?

回

32通りの行を、H/Lの組み合わせで指定します。アドレス線は何本必要ですか?

本

色6本、アドレス5本、CLK・LAT・OE。HUB75の信号線は全部で何本ですか?

本

74AHCT245は1個で8本を変換できます。何個必要ですか?

個

配線表

Piのピンは、参考プロジェクトで使う adafruit-hat マッピング(hzeller/rpi-rgb-led-matrix のソースで確認済み)に合わせています。こうしておけば、ソフトを書き換えずにそのまま動きます。

信号Pi GPIOPi ピン245HUB75 ピン
R1GPIO529U1 A1→B11
G1GPIO1333U1 A2→B22
B1GPIO631U1 A3→B33
R2GPIO1232U1 A4→B45
G2GPIO1636U1 A5→B56
B2GPIO2316U1 A6→B67
AGPIO2215U1 A7→B79
BGPIO2637U1 A8→B810
CGPIO2713U2 A1→B111
DGPIO2038U2 A2→B212
EGPIO2418U2 A3→B38
CLKGPIO1711U2 A4→B413
LATGPIO2140U2 A5→B514
OEGPIO47U2 A6→B615
GND—6, 9 ほか—4, 16
配線のコツ:245の8チャンネルはどれも同じ働きです。片面基板で配線が交差したら、どの信号をどのチャンネルに通すかを入れ替えて構いません。A1に入れたものがB1から出る、という対応さえ守れば大丈夫です。HUB75のピン番号は、パネル裏のシルク印刷とも照合してください。

9XIAO と Pi の通信:UART

この章のゴール:空いているピンを選び、UARTを正しく交差させて描ける。

空きピンを探す

8章の表で、Piの14本のGPIOがマトリクスに使われています。UART用の GPIO14(ピン8、TXD)と GPIO15(ピン10、RXD)は表に入っていないので、そのまま使えます。

TXとRXは交差させる

TXは送信、RXは受信です。片方の「送信」は、もう片方の「受信」につながないと届きません。そしてGNDを共通にします(5章)。XIAOもPiも3.3Vで動いているので、7章のようなレベル変換は要りません。

XIAOPi
D6(TX)→GPIO15 RXD(ピン10)
D7(RX)←GPIO14 TXD(ピン8)
GND—GND(ピン6など)

XIAOのピン割り当てまとめ

XIAO ピンつなぐもの章
A0(D0)フォトトランジスタと R23
D8SW1(曲送り)と R1 プルアップ2
D9SW2(一時停止)と R4 プルアップ2
D10R3 と状態LED4
D6 / D7UART TX / RX9
5VD2 経由で +5V5・6
3V3R1・R4 プルアップ、Q1 コレクタ2・3
GND共通 GND5

ピン名はSeeed公式のXIAO RP2040ピン配置図と照合してから回路図に描いてください。

XIAOのD6(TX)は、Piのどこにつなぎますか?

XIAOとPiのUARTに、レベルシフタは必要ですか?

ソフト側のメモ:Piはこのピンを標準でシリアルコンソールに使っています。使う前に設定で、コンソールを無効にしてシリアルポートを有効にします。

10回路図に統合する(KiCad)

この章のゴール:ここまでのピースを1枚の回路図にまとめ、ERCとDRCを通す。

部品リスト

記号部品章
J15V入力(DCジャックかネジ端子)6
Q2PチャネルMOSFET(逆接保護)6
C1電解コンデンサ 47µF前後6
D2ショットキーダイオード(XIAO 5V用)5
M1XIAO RP20405・9
U1, U274AHCT2457・8
C2, C30.1µF(U1・U2のパスコン)5
J22x20 ソケット(Pi)8
J32x8 ヘッダ(HUB75)8
SW1, SW2 / R1, R4ボタンと10kΩプルアップ2
Q1 / R2フォトトランジスタと10kΩ3
D1 / R3赤LEDと1kΩ4

授業のKiCadライブラリ(Fab用の部品ライブラリ)に、XIAOやインベントリ部品のシンボルとフットプリントが入っているか、最初に確認してください。インベントリにない部品は、TAに代わりを聞いてから描きます。

KiCadで描くときのコツ

  • 長い配線を引き回す代わりに、ネットラベル(例:R1_PI、CLK_5V)を使うと読みやすくなります。Pi側は3.3V、245の後は5Vなので、名前で区別しておくと間違いにくいです。
  • 電源は +5V、GND、+3V3 の電源シンボルで描きます。ERCで「電源が駆動されていない」と出たら、電源入力のネットに PWR_FLAG を付けます。
  • 各ブロック(入力・XIAO・電源・245・コネクタ)を、紙面上でまとまった場所に置きます。この教材の基板マップと同じ配置にすると、自分でも追いやすくなります。

完成チェックリスト

回路図で確認できたものにチェックを入れてください。全部埋まったら、基板マップの最後のブロックに銅が入ります。