sako_DIY が 2022年01月18日09時03分29秒 に編集
コメント無し
本文の変更
# 概要 Google日本語入力が毎年エイプリルフールにユニークなキーボードを公開しているのはご存知でしょうか? 今までには、スプーン曲げキーボード、物理フリックキーボード等があり、すべて実際に制作が可能なオープンソースな設計図を公開していることで話題となっていましたが、2020年以降このご時世の関係かエイプリルフールネタを公開していませんでした。 2021年もエイプリルフールには、公開されませんでしたが、10月1日の「北野大茶湯」が開かれた日として湯呑み型キーボードが公開され、それと同時に設計図が公開されました。 https://landing.google.co.jp/yunomi/ @[youtube](https://www.youtube.com/watch?v=20pC05yisRM) 最近PCBの発注をちょうど覚えたので、制作に挑戦しました。 # 準備 公開された設計図はこちらです。 [https://github.com/google/mozc-devices/tree/master/mozc-yunomi/](https://github.com/google/mozc-devices/tree/master/mozc-yunomi/)  表面実装部品を使用したものとArduino Pro Microを使用したものの2種類があり、今回は、はんだ付け難易度低いProMicro版を使用しました。 ## 基板発注 公開された設計図のboardフォルダにKiCAD基板のデータが入っています。  この内2つをPCB業者に発注する必要があり、 promicro版を作成するためにはbase基板がpro microの方になります。 | ファイル名 | 必要数 | |:---:|:---| | base-promicro | 1枚 | | key | 12枚 | KiCADのデータからガーバーデータを出力し、PCB業者に発注しました。 今回はALLPCBさんにお願いしました。 [https://www.allpcb.com/](https://www.allpcb.com/) base基板が1ドル/枚、key基板が0.3ドル/枚ぐらいの単価で作っていただきました。(送料別) 発注して2日で製造完了、1週間ほどで手元に届きました。  ## 部品発注 部品で必要なものは以下のとおりです。 | 部品名 | 個数 | 購入先 URL | |:---:|:---:|:---| | Kailh choc V1 | 60 | [Kailhロープロファイルスイッチ(遊舎工房)](https://shop.yushakobo.jp/products/pg1350?_pos=12&_sid=dfd21a719&_ss=r)| | ダイオード(1N4148) | 60 | [ダイオード(遊舎工房)](https://shop.yushakobo.jp/products/a0800di-01-100?_pos=1&_sid=a87d5a7d3&_ss=r)| | Arduino Pro Micro | 1 | [Pro Micro(遊舎工房)](https://shop.yushakobo.jp/products/pro-micro?_pos=1&_sid=d6478d6c5&_ss=r&variant=42225070801127)| 注意する点としては、Kailh chocにはV1とV2がありますが、互換性はないので間違えてV2を買わないようにすることです。 それとは別に、Kailh choc V1用のキーキャップを60個用意する必要があります。刻印サービス等を利用して、好きな文字を印刷したものを用意しましょう。私はとりあえず無地のものを60個用意しました。 [キーキャップレーザー刻印サービス(遊舎工房)](https://yushakobo.jp/keycap-laser-marking/) [Kailhロープロ無刻印キーキャップ1U(遊舎工房)](https://shop.yushakobo.jp/products/pg1350cap-blank?_pos=18&_sid=c1151f395&_ss=r)  ## その他(治具等) その他作成に必要な治具のSTLデータが配布されていますので3Dプリンタで印刷しました。   # 制作 組み立ては、[組立説明](https://github.com/google/mozc-devices/blob/master/mozc-yunomi/README_promicro.md)を参考にして組み立てました。わかりにくかった点、躓いた点等を書き残しておこうと思います。 ## はんだ付け ### ダイオード key基板12枚に1枚あたり5個のダイオードをはんだ付けしました。  ダイオードには向きがあるので、注意してはんだ付けしますが、 ==半分の6枚は基板に書いてあるシルクとは逆向きにはんだ付けを行います。(同じ面に左右逆)==  シルク通りが6枚、逆向きが6枚出来上がりました。  ++この時カットしたダイオードの足を捨てずに残しておくと、後の基板同士の接続に使用できました。++ ### キースイッチ 続いて12枚のkey基板に対してダイオードとは反対の面にキースイッチをはんだ付けしました。 これは、決まった向きにしか刺さらないので間違えないかと思います。   ### Arduino Pro Micro base基板に対して、Pro Microをはんだ付けしました。 ==向きはシルクのPro Microの字の方へUSBコネクタがきます。==  ### key基板同士の接続 3Dプリンターで印刷した治具を使用して基板同士をはんだで繋げていきます。  2つの基板の間に6箇所はんだ付けする場所があるので、さっき捨てずに残しておいたダイオードの足を使用して基板同士接続していきます。    ダイオードの向きごとに分けて6枚づつハンダ付けします。 半円状のものが2つ出来上がります。 ==ダイオードの向きが混在しないように注意しましょう==  ※青矢印はダイオードの向きです ※この画像は上下の端がはんだ付けされていませんが忘れているだけです。 次に半円状のものを合体させますが、ダイオードが向かいあう方向につなぎ合わせ、その部分は6箇所全てはんだ付けを行います。 少し手で広げてやるとはんだ付けしやすかったです。(画像参照)  ※青矢印はダイオードの向きです
6箇所はんだ付けが終わったら裏返して、反対もはんだ付けを行いますが、**ここはbase基板に接続されない側の端1箇所のみで大丈夫です。**
6箇所はんだ付けが終わったら裏返して、反対もはんだ付けを行いますが、 ==ここはbase基板に接続されない側の端1箇所のみで大丈夫です。==
(画像参照)  ※青矢印はダイオードの向きです ここまで終われば、組立説明の模式図通りの接続が完了しているはずです。  引用(https://github.com/google/mozc-devices/blob/master/mozc-yunomi/README_promicro.md) ### base基板との接続 base基板と円筒状のkey基板を接続します。 ==これにも向きがあり、base基板上の矢印が、先程最後に接続した、1箇所しかはんだ付けしていない部分に来ます。==  ※青矢印はダイオードの向きです ※赤丸は未ハンダ部分 各key基板ごとに2箇所計24箇所はんだ付けを行いました。 このときもダイオードのカットした足を曲げて使用しました。  ==この時注意しなければならないのが、あまり接続用ワイヤを長くしてしまうと内側でダイオードの足等と接触してショートしてしまう可能性があります。== 差し込む長さは必要最低限としましょう。  ここまでくればはんだ付け作業終了です。 ## その他部品の取り付け このままだとArduinoが邪魔をして真っ直ぐ立てることができないので、あらかじめ用意しておいた治具を固定します。  キーキャップを取り付けました。 私の場合は、無地なので特に何も考えず取り付けしましたが、 刻印サービス等でキーキャップを用意した場合は、のちのプログラムの書き込みの手順を先に行い、どのキーでどの文字が入力されるのか確認しながら取り付けを行ったほうが確実です。  ## プログラム書き込み プログラムは、公開されているfirmwareに入っているfirmware.inoを使用し、ArduinoIDEで書き込みを行います。  ArduinoにUSBケーブルを差し込み、Arduino IDEのツール→シリアルポートで認識されていることを確認しましょう。 複数のポートが有る場合は、デバイスマネージャー等で接続先が合ってることを確認しましょう。 ツール→ボードより、Arduino Microを選択します。  存在しない場合は、ArduinoIDEのバージョンが古い可能性があります。 アップデート行うか、Arduino Leonardoでも使用可能な場合があります。 プログラムを1箇所修正します。 Pro Microを使用しているため、2行目をコメントアウトします。 //#define PRO_MICRO ↓ #define PRO_MICRO ```arduino:firmware.ino // Uncomment next line if you use ProMicro #define PRO_MICRO // Uncomment next line if your PC thinks this is US keyboard. //#define JP_KEYBOARD #include "Keyboard.h" #ifdef PRO_MICRO // COLS = 9,8,7,6,5,4 // ROWS = 18,15,14,16,10 ``` また、キーを押されたときに入力される文字を変更したい場合は、132行目からの配列を入力したい文字のUnicodeに変更します。 [unicode検索](https://rakko.tools/tools/89/) ```arduino:firmware.ino uint16_t chars[5][12] = { { 0x0040, // @ 0x002b, // + 0x9c19, // 鰙 0x9c73, // 鱳 0x9c25, // 鰥 0x9baa, // 鮪 0x9c30, // 鰰 0x9c60, // 鱠 0x9bdb, // 鯛 0x9bd6, // 鯖 0x9c39, // 鰹 0x9bf5, // 鯵 }, { 0x0020, // 0x002d, // - 0x0021, // ! 0x9bda, // 鯚 0x002c, // , 0x9bab, // 鮫 0x9c2d, // 鰭 0x9c0a, // 鰊 0x9c58, // 鱘 0x9bf1, // 鯱 0x9c5a, // 鱚 0x9c2f, // 鰯 }, { 0x005f, // _ 0x002a, // * 0x9b5a, // 魚 0x9bcd, // 鯍 0x9b77, // 魷 0x9be5, // 鯥 0x9c24, // 鰤 0x9c56, // 鱖 0x9c41, // 鱁 0x9c78, // 鱸 0x9be8, // 鯨 0x9c3b, // 鰻 }, { 0x003d, // = 0x002f, // / 0x003f, // ? 0x9c7a, // 鱺 0x002e, // . 0x9bb4, // 鮴 0x9b83, // 鮃 0x9bf0, // 鯰 0x9bf3, // 鯳 0x9bac, // 鮬 0x9b5d, // 魝 0x9c4f, // 鱏 }, { 0x9ba8, // 鮨 0x8336, // 茶 0x9c77, // 鱷 0x9b6f, // 魯 0x9c29, // 鰩 0x9b79, // 魹 0x9bd4, // 鯔 0x9b76, // 魶 0x9c0c, // 鰌 0x9bfc, // 鯼 0x9bc9, // 鯉 0x9c27, // 鰧 }, }; ``` 書き込みボタンを押し、コンパイル後書き込みが完了しましたと表示されれば完了です。  # 動作確認 正常にプログラムが書き込みができている場合に、USB接続をすると、入力デバイス欄に新しいキーボードが表示されるはずです。  PCに[google日本語入力](https://www.google.co.jp/ime/)をインストールします。 IMEをgoogle日本語入力に切り替えて、かな入力モードにします。  この状態でメモ帳等を開き、キースイッチを押すと魚漢字が入力されているはずです。  U~で始まる英数列が入力された場合は、USキーボードとして認識されてしまっている可能性があります。  その場合はプログラムの6行目をコメントアウトして再度書き込みを行いましょう。 //#define JP_KEYBOARD ↓ #define JP_KEYBOARD ```arduino:firmware.ino // Uncomment next line if you use ProMicro #define PRO_MICRO // Uncomment next line if your PC thinks this is US keyboard. #define JP_KEYBOARD #include "Keyboard.h" #ifdef PRO_MICRO // COLS = 9,8,7,6,5,4 // ROWS = 18,15,14,16,10 ``` u+で始まる英数列や全角の英数列が入力される場合は、IMEの設定が間違っている可能性が高いです。google日本語入力になっているか、かな入力になっているかを確認してください。  そもそも文字が表示されない場合は、回路の作成やプログラムの書き込みに失敗している場合があります。 # 完成  はんだ付けに作業、プログラム書き込み等でだいたい4時間ほどかかりました。 キーボードとしての実用性は皆無ですが、はんだ付け箇所が多くとても達成感がありました。 次年度以降も、もし公開されたら挑戦してみたいです。 ++本投稿の情報の利用、内容によって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします++