Files
mozc-devices/mozc-dial/board/README_ja.md
Shun Ikejima 994d22bb71 Add mozc-dial nine dial edition.
Co-authored-by: Takashi Toyoshima <toyoshim@google.com>
Co-authored-by: Shun Ikejima <ikejima@google.com>
2025-10-28 18:19:10 +09:00

206 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基板組立ガイド
キーボードの組み立て全体については[ビルドガイド](../buildguide_ja.md)を参照してください。
## 各ダイヤル版共通
### センサ基板(1枚あたり)
#### 部品表
参照名 | 内容 | 数 | 備考
-------- | -------------------- | --- | ---
R1,R3,R5 | 抵抗 330Ω | 3 | スルーホール用でも表面実装用でも可
R2,R4,R6 | 未実装 | - |
U1-3 | 反射型フォトセンサ RPR-220 | 3 | (例:[反射型フォトセンサー(フォトリフレクター) RPR-220](https://akizukidenshi.com/catalog/g/g111401/)
J1 | 2.54mmピッチ 1x5 ピンヘッダ | 1 | L字のものが望ましい[ピンヘッダー (オスL型) 1×40 (40P)](https://akizukidenshi.com/catalog/g/g101627/)
#### 実装
この説明では3ビット分全て実装する場合について説明していますが、9ダイヤル版ではセンサによっては1ビットまたは2ビット分の実装で良い場合があります。その場合は、上(U1)から順に必要な数だけ実装してください。詳しくは9ダイヤル版の説明に従ってください。
また、すべて制作する前に、実際にグレイコード板の値が適切に読み取れるか確認し、問題がない事を確認してから作ると万が一の際の手間が軽減できます。うまくいかない場合にはR2,R4,R6に抵抗を実装します。詳しくは[読み取りセンサ調整](#読み取りセンサ調整)を確認してください。
![Sensor RPR-220](../images/sensor_rpr.webp)
まずはU1、U2、U3の印刷が見える方から、フォトセンサを取り付けます。向きに十分気をつけて下さい。右上の角が面取りされているので、印刷面とセンサの形状を見て、同じ向きになるよう設置してください。正しく設置したら、裏側から不要な足を切り取りハンダ付けします。
![Sensor Registors](../images/sensor_regs.webp)
裏面はこの図のように`(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](https://akizukidenshi.com/catalog/g/g113256/):
1個
- [ステッピングモータドライブモジュール [M2003S]](https://www.aitendo.com/product/12366): 1個
- 配線材: 適宜
### 組み立て
#### センサ基板
各ダイヤル版共通で説明したセンサ基板を、3bit実装で2つ組み立てます。 1つを`SENSOR L`、もう1つを`SENSOR H`と呼ぶことにします。
実験時に使用したもので見本としては綺麗なものではありませんが、スルーホール型の抵抗とチップ抵抗それぞれの実装例がこちらになります。
![Sensor PCB Pair](../images/sensor_pair.webp)
それぞれに基板のピンヘッダには`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`は今回接続不要となります。
#### ステッピングモータドライブモジュール
![Motor Driver](../images/motor_driver.webp)
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 - Pin Headers](../images/pico_pinheader.webp)
市販のRaspberry Pi Picoに対して、写真のようにL字のピンヘッダを取り付けます。
写真で下の方にあるDEBUG用のピン3つについては、ファームウェアの開発とデバッグが必要な場合のみで構いませんので、お好みで取り付けてください。
![Raspberry Pi Pico - Pin Out](../images/pico_pinout.webp)
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](https://akizukidenshi.com/catalog/g/g113256/):
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で基板製造と組み立ての発注ができるデータになっています。正しく発注すると、以下のような半完成品の基板が届きます。
![Main PCB Overview](../images/main_pcb_preview.webp)
### 組み立て
`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字型ピンヘッダを取り付けます。
![Main PCB Pin Headers](../images/main_pcb_ph.webp)
表面に、このように外側に向けて取り付けると、配線の時にケーブルの取り回しがしやすくなります。内側のピンは奥まで入れずに、少し浮かせて高さに差がでるようにすると良いでしょう。特にUSBコネクタの上を通す事になる`SENSOR I-H`は注意が必要です。
以下は裏面で作業するとボードの厚みを最小限に抑えると同時に部品とのショートや放熱問題を避けることができます。
![Main PCB Back](../images/main_pcb_back.webp)
`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すると良いでしょう。[ファームウェア開発ガイド](../firmware/README_ja.md)に従いRP2040のpull-upを無効化すると、ここに実装した抵抗がそのままpull-up抵抗になります。無効化しない場合は並列接続での合成抵抗でpull-upする事になります。計算が少し煩雑ですが、より強くpull-upする分にはファームウェアを変えずに追加の抵抗で並列でpull-upする方が簡単かもしれません。