Co-authored-by: Takashi Toyoshima <toyoshim@google.com> Co-authored-by: Shun Ikejima <ikejima@google.com>
14 KiB
基板組立ガイド
キーボードの組み立て全体についてはビルドガイドを参照してください。
各ダイヤル版共通
センサ基板(1枚あたり)
部品表
| 参照名 | 内容 | 数 | 備考 |
|---|---|---|---|
| R1,R3,R5 | 抵抗 330Ω | 3 | スルーホール用でも表面実装用でも可 |
| R2,R4,R6 | 未実装 | - | |
| U1-3 | 反射型フォトセンサ RPR-220 | 3 | (例:反射型フォトセンサー(フォトリフレクター) RPR-220) |
| J1 | 2.54mmピッチ 1x5 ピンヘッダ | 1 | L字のものが望ましい(例:ピンヘッダー (オスL型) 1×40 (40P)) |
実装
この説明では3ビット分全て実装する場合について説明していますが、9ダイヤル版ではセンサによっては1ビットまたは2ビット分の実装で良い場合があります。その場合は、上(U1)から順に必要な数だけ実装してください。詳しくは9ダイヤル版の説明に従ってください。
また、すべて制作する前に、実際にグレイコード板の値が適切に読み取れるか確認し、問題がない事を確認してから作ると万が一の際の手間が軽減できます。うまくいかない場合にはR2,R4,R6に抵抗を実装します。詳しくは読み取りセンサ調整を確認してください。
まずはU1、U2、U3の印刷が見える方から、フォトセンサを取り付けます。向きに十分気をつけて下さい。右上の角が面取りされているので、印刷面とセンサの形状を見て、同じ向きになるよう設置してください。正しく設置したら、裏側から不要な足を切り取りハンダ付けします。
裏面はこの図のように(SENSOR)側に3つ、(LED)側に3つの抵抗を取り付けられるようになっています。抵抗はスルーホール用のものと、チップ抵抗と、いずれのタイプでも取り付けられるようになっているので、お好みいのパーツを使って取り付けてください。ただし、スルーホール用の物でも、穴には通さずに取り付けた方がダイヤル取り付け時に安定します。
抵抗については前述の通り調整に依存します。標準では内部抵抗を用いて、(SENSOR)側は未実装、(LED)側に330Ωの抵抗を取り付ける事を推奨していましたが、内部抵抗値は個体によりバラツキが大きいようなので、no_pull版のファームウェアを用いて、(SENSOR)側は33KΩ、(LED)側は330Ωを推奨します。
また、1x5のピンヘッダについては、L字の物を使うとケースにうまく収まります。
組立時には⇧Centerマークに注意してください。ダイヤル内周側が矢印の方向になります。
1ダイヤル版
センサ基板以外は市販の汎用部品を使う入門版です。
部品
- Raspberry Pi Pico: 1個
- センサ基板(3bit実装): 2個
- ユニポーラー ステッピングモーター 28BYJ-48 5V: 1個
- ステッピングモータドライブモジュール [M2003S]: 1個
- 配線材: 適宜
組み立て
センサ基板
各ダイヤル版共通で説明したセンサ基板を、3bit実装で2つ組み立てます。 1つをSENSOR L、もう1つをSENSOR Hと呼ぶことにします。
実験時に使用したもので見本としては綺麗なものではありませんが、スルーホール型の抵抗とチップ抵抗それぞれの実装例がこちらになります。
それぞれに基板のピンヘッダにはV、1、2、3、Gの5つの端子があります。
このうちVは3.3V電源へ繋ぐのですが、今回利用するRaspberry Pi
Picoには3.3V出力端子は1つしかありませんので、写真の赤い配線のように基板上でVが通っている端子ペアを接続します。
センサ基板の説明で上げた図においてVと書かれた長方形の内側にある端子、つまり抵抗用パターンのうち外側の6箇所がVになっています。
上側のセンサ基板がSENSOR Lで内周側、下側のセンサ基板がSENSOR Hで外周側になります。
Vを相互接続したので、一番上の最も内側にあたる端子のVは今回接続不要となります。
ステッピングモータドライブモジュール
Raspberry Pi PicoのGPIOでは直接モータをドライブできないため、1ダイヤル版では市販のドライブモジュールを流用します。シンクタイプのドライバなら今回指定したもの以外でも構いませんし、9ダイヤル版の回路を参考に自作する事も可能です。
今回参考に上げた物を例にすると、緑で囲んだIN1〜IN4がRaspberry Pi
Picoからの出力の1〜4を受ける端子になります。黒で囲んだGNDと赤で囲んだVCCがそれぞれGとVです。
モータの方はUSBバスから5Vの電源をRaspberry Pi
Pico経由で引き込みます。0.3Aくらい必要となるため、1ダイヤル版のファームウェアではUSB microでの上限である0.5Aを要求しています。
白い端子はステッピングモータとの接続に使います。
Raspberry Pi Pico
市販のRaspberry Pi Picoに対して、写真のようにL字のピンヘッダを取り付けます。 写真で下の方にあるDEBUG用のピン3つについては、ファームウェアの開発とデバッグが必要な場合のみで構いませんので、お好みで取り付けてください。
1ダイヤル版で使うピンについては、図のような割り当てになっています。この図に従って、SENSOR L、SENSOR H、MOTORと接続します。デバッグ時の標準出力をUARTから出力する場合はTXから出力されます。
ファームウェア書き込み
Raspberry Pi Picoの一般的な方法に従います。Raspberry Pi
Pico基板上のBOOTボタンを押しながらPCに接続するとRPI-RP2という名前のドライブが出現するので、firmware/prebuilt/one_dial.uf2をこのドライブの中にコピーします。正しく書き込みができた場合ドライブが消えます。OSによって警告が表示されますが問題ありません。これ以降、このデバイスをBOOTボタンを押さずにPCに接続した場合は、USBキーボードとして認識されるようになります。
9ダイヤル版
部品
- メイン基板: 1個
- センサ基板(3bit実装): 6個
- センサ基板(2bit実装): 4個
- センサ基板(1bit実装): 1個
- ユニポーラー ステッピングモーター 28BYJ-48 5V: 9個
- 配線材: 適宜
メイン基板
部品表
| 参照名 | 内容 | 数 |
|---|---|---|
| C101 | コンデンサ 10uF | 1 |
| C102-121,C202-208,C212,C302-308,C312 | コンデンサ 100nF | 36 |
| C201,C209,C301,C309 | コンデンサ 1uF | 4 |
| C210,C211,C310,C311 | コンデンサ 20pF | 4 |
| J102-103 | 2.54mmピッチ 1x3 ピンヘッダ | 2 |
| J106-J125 | 2.54mmピッチ 1x5 ピンヘッダ | 20 |
| J201,J301 | USB TYPE C Receptacle | 2 |
| R201-202,R301-302 | 抵抗 27.4Ω | 4 |
| R203-204,R303-304 | 抵抗 5.1KΩ | 4 |
| R205,R207,R305,R307 | 抵抗 1KΩ | 4 |
| R206,R306 | 抵抗 10KΩ | 2 |
| SW101,SW201,SW301 | スイッチ | 3 |
| U101 | AMS1117 3.3V レギュレータ | 1 |
| U102-103,U105,U107,U109 | TBD62083AFNG | 5 |
| U104,U106,U108,U110 | 74HC238 | 4 |
| U201,U301 | RP2040 | 2 |
| U202,U302 | W25Q128JVS | 2 |
| Y201,Y301 | 12MHz Crystal Oscilator | 2 |
| N/A | ジャンパーピン | 2 |
実装
メイン基板のガーバーデータは board/gerber/main.zip にあります。main_bom.csvとmain_positions.csvと合わせて、JLCPCBで基板製造と組み立ての発注ができるデータになっています。正しく発注すると、以下のような半完成品の基板が届きます。
組み立て
SENSOR A-L、SENSOR A-H、SENSOR B、SENSOR C、SENSOR D、SENSOR E、SENSOR F、SENSOR G、SENSOR H、SENSOR I-L、SENSOR I-Hそれぞれに、センサ基板との接続に用いる1x5のL字型ピンヘッダを取り付けます。
MOTOR A、MOTOR B、MOTOR C、MOTOR D、MOTOR E、MOTOR F、MOTOR G、MOTOR H、MOTOR Iについてはモータとの接続に用いる1x5のL字型ピンヘッダを取り付けます。
表面に、このように外側に向けて取り付けると、配線の時にケーブルの取り回しがしやすくなります。内側のピンは奥まで入れずに、少し浮かせて高さに差がでるようにすると良いでしょう。特にUSBコネクタの上を通す事になるSENSOR I-Hは注意が必要です。
以下は裏面で作業するとボードの厚みを最小限に抑えると同時に部品とのショートや放熱問題を避けることができます。
U1 PWR U2と書かれた箇所に1x3のピンヘッダを取り付け、ジャンパーピンでU1とPWRの位置をショートします。
USB V_MTR ALTと書かれた箇所に1x3のピンヘッダと取り付け、ジャンパーピンでUSBとV_MTRの位置をショートします。
センサ基板
各ダイヤル版共通の説明を参照して、合計11個のセンサ基板をそれぞれ以下の実装ビット幅で用意します。多めに実装する分には待機時消費電力の増加以外は問題ないので、全てを3ビット幅で用意してしまっても問題はありません。
| 参照名 | 実装ビット幅 |
|---|---|
| SENSOR A-L | 3 |
| SENSOR A-H | 3 |
| SENSOR B | 2 |
| SENSOR C | 3 |
| SENSOR D | 2 |
| SENSOR E | 3 |
| SENSOR F | 3 |
| SENSOR G | 2 |
| SENSOR H | 2 |
| SENSOR I-L | 3 |
| SENSOR I-H | 1 |
ファームウェア書き込み
この専用ボードもRaspberry Pi Picoの一般的な方法に従いますが、ボード上に2つのRP2040が搭載されているため、2つのファームウェアをそれぞれに書き込む必要があります。
まずはUSB 2と書かれたUSB Type-C端子を用いてサブチップに書き込みます。U1 PWR U2と書かれたジャンパーは通常U1とPWRをショートしてあります。これはボード上の電源はUSB 1端子からとるような設定です。これを一時的にPWRとU2をショートするようにします。
この状態でBOOT 2を押しながらUSB 2端子とPCを接続します。この状態でPC上に現れたRPI-RP2という名前のドライブにsub.uf2またはsub_no_pull.uf2をコピーします。正しく書き込みができた場合ドライブが消えます。
一旦PCとの接続を解除し、続けてメインのファームウェアを書き込みます。ジャンパー設定をU1とPWRのショートに戻し、BOOT 1を押しながらUSB 1端子とPCを接続します。同様にしてmain.uf2またはmain_no_pull.uf2をコピーします。同じくドライブが消えたら書き込み完了です。
フォトセンサの調整について
フォトセンサの読み取り値は、ケース内での読み取りになるため大きな差は出にくいはずですが、3Dプリント素材の明るさの違いや、グレイコードを印刷した紙の質などによって違いが出てくる可能性があります。ダイヤルの読み取りが安定しない、回転が止まらないなどの症状が出ている場合にはセンサ値の変化範囲が想定内に収まっていない可能性がありますので、以下の点に注意してセンサの調整をしてください。
RP2040での読み取り
センサの値はGPIOでデジタル値として処理しています。そのため、3.3V稼働時にHIGHは2.0 - 3.3[V]、LOWは0.0 - 0.3[V]の範囲に収まるよう調整されている必要があります。
LEDセンサ調整
LEDに流れる電流が少ないと発光も弱くなり、センサで読み取る光量も不足します。そのため、読み取り値が高くなり、白と黒で電圧差がはっきりとでなくなってきます。その場合、(LED)と書かれた側にある3つの抵抗を弱いものに変えてみてください。標準では330Ωで調整していますが、今回用いているフォトセンサRPR-220では40Ωくらいまで下げても定格内に収まります。ただし、待機時の消費電力に大きく影響しますので、可能なら読み取りセンサ側の抵抗で調整してください。
読み取りセンサ調整
読み取りセンサのpull-up抵抗値を変える事で、読み取る電圧値をシフトさせる事ができます。ただし、大きく変えすぎるとやはり白と黒の電圧差が出にくくなります。(SENSOR)と書かれた側にある3つの抵抗を実装する事で調整できます。標準のファームウェアではRP2040のpull-upにより、およそ50-80KΩでpull-upされる事を期待しています。黒で十分に電圧が上がらない場合は、追加の抵抗でより強くpull-upすると良いでしょう。ファームウェア開発ガイドに従いRP2040のpull-upを無効化すると、ここに実装した抵抗がそのままpull-up抵抗になります。無効化しない場合は並列接続での合成抵抗でpull-upする事になります。計算が少し煩雑ですが、より強くpull-upする分にはファームウェアを変えずに追加の抵抗で並列でpull-upする方が簡単かもしれません。








