Clojureで3D-CAD

Posted by YpsilonTAKAI On 2016年12月24日土曜日 1 コメント
これって、 2016 clojure advent calender の記事です。

CAD

Computer Aided Design ということは、コンピューターを使ってデザインをするためのツールですが、基本的には「製図」をするためのツールです。学生時代に製図をしたことが無いとなんのことかわからないかもしれませんが、機械や建造物などの設計図を書くことを製図といいます。

もともと紙とペン・定規・コンパスなどの道具で点や線を書くので、手書きのころは立体物でも2次元の図面だけ作っていました。僕も実は機械工学科だったので、「図学」とか言ってちゃんとした製図の方法を習ったりしたものです。

コンピュータを使うようになると、自由度が広がってこれまでできなかったようなことができるようになりました。
- 3DCGで立体を描画できるので物をイメージしやすくなった
- 曲線を直接扱えるようになって、自由な形が作れるようになった。
などです。 最近の3Dモデラーなども目的は同じではありますが、数値から離れて直感的に物を扱えるようになっています。

自由度を広げるという方向にはまた別のアプローチとして、例えば二次関数や表されるグラフのように数式で表される線や、特定のアルゴリズムによって定義される点や線の集まりで図を作るという方向性に行ったものもあります。
パラメータを含んだ式を使って図面を表すことで、複雑な形でも簡潔に表すことができる可能性があったり、また、そのパラメータを変更するだけで、大きさや比率の違うものが簡単に作れたりするわけです。

OpenSCAD

OpenSCADは、ものの形状を式で表しやすい形状の集まりとして扱うことに特化したCADの一つです。


ようするに、部品があって、それに対する操作があって、列挙したり、繰り返しや条件分岐などで制御したりなどして、目的のものを作っていくわけです。 そして、変数が使えることによって、各属性をパラメータにする(パラメタライズ)ことができるので、カスタマイズが楽にできるということになります。

ClojureでSCAD

LispでCADといえばAutoCADですね。使ったこと無いのですが、製図の図面に現れるオブジェクトとそれに対する操作を簡潔に表現する方法として、Lispが優れているということの証なのだろうと思ってるのですが、SCADの記述は残念ながらLispではありません。
SCADの言語というか表現方法は、ちょっと独特で、そこそこ長いプログラミング経験がある僕としても始めて見る感じの書き方で、かといって使いやすかったり、読みやすかったりするわけでもなさそうです。
そんなわけで、しばらく前に目にしてはいたものの、手は出していませんでした。

最近、久し振りに図面を引くことになり、フリーのCADの状況を調べていたときに再発見しました。 記述方法そのものも以前のより進化しているようですが、なんと、ClojureでDSLを作った人がいるようなのです
ということで、ちょっと調べてみることにしました。

scad-clj

scad-cljに出会ったのがこのサイトです。
http://adereth.github.io/blog/2014/04/09/3d-printing-with-clojure/

筆者がこんなこと書いてます。うん、そのとおりですね。
そして、そんな場合にこそDSLを作ることに意義があるのでしょう。
- Strange function application syntax (parameters in parens after the function name with an expression or block following the closing paren)

奇妙な関数の書式
関数名の後のカッコ内のパラメータに付いている記述やブロックの書式
- Unclear variable binding rules (multiple passes are made over the code and the results of changing a variable may affect things earlier in the code unexpectedly)
不明確な変数の束縛ルール
ソースコード上に変数の経路を複数作ることができ、また、変数の値の変更が予期せず変更以前の場所にも波及したりする。
- No package/namespace management
ネームスペースが無い
- Multiple looping constructs that depend on what you are going to do with the results, not on how you want to loop
いくつかあるループ構文は、どのようにループさせたいかではなく、結果をどのように使うかによって選ばなくてはならない

うんうん。 よさそうですよ。
scad-cljを使ってとりあえず何か作ってみましょう。

scadのセットアップ

本家のGithubはここです。
https://github.com/farrellm/scad-clj

なんともシンプルですね。docディレクトリがあって、中に「intro.md」なるファイルがあるので期待して空けてみると。
TODO: write great documentation
うーん残念。ドキュメントが無いようですから、使うには自力でソースなどを見てみるしかなさそうです。

ともあれ、leiningenでプロジェクトを作成してscad-cljを関連づけます。

:dependencies の ベクターに [scad-clj "0.5.2"] を追加して、lein deps を実施します。
関連パッケージを含めていくつかのパッケージがローカルに転送され、準備OKです。

さて、どこかにあるはずのサンプルを探します。ネットを探しまわるのもありですが、まずは、ソースからです。
testディレクトリがあるのでまずはそこ。テストが書いてあれば、それぞれの関数がどのような入力に対してどのような出力をするのかよくわかるはずです。

が、これも空でした。残念。

となればソースを見るしかなさそうです。
geometry.clj には、 line と lines という関数があります。その通り、線を引く関数のようです。
text.clj には、文字列を生成する text-partsという関数が定義されています。
model.clj には、$f や $fa など、scadで特殊な意味のある変数や、import や use などの指示子、あとは、square や sphere などの基本的な2Dと3Dのパーツが定義されています。
そして、scad.cljには、write-expr というメソッドが定義されていて、たぶん、これが、レンダラーですね。

と、ここまで見てきても、全くイメージが掴めません。

まあ、結局最初のサイトですね。scad-clj を知るきっかけになったサイト

やってみよう


とりあえず、書いてあることをやってみましょう。



立方体(cube)と球(sphere)と円柱(cylinder)を合成(union)したものがprimitiveとしてできあがるはずなんですが、これ、どうしたらいいんでしょう?
write-scad という関数でこのprimitiveを出力できる形にできるようなので、REPLを起動して実行してみます。 ファイル名はとりあえず、 test01.scad とでもしておきます。 できたファイルをscadで開いてみます。



表示されましたねー。

さらにこのscad、開いているファイルが変更されると自動的に読み込むようになっているので、primitiveを変えて関数を呼ぶだけで、scadの中の図形が自動で変更されます。

 ということで、scadの画面を開きながら、REPLでいろいろ試行錯誤しながらあれこれ形を作ることができるということのようです。

なかなか面白そうですよ。



こんな風に、Clojureの制御構文も使うことができます。






ということで、これでちょっと変った物をと思ったのですが、面白そうなものを思いつかず、時間も無くなってしまったので、将来の自分への宿題ということで・・・



READ MORE

Ergodox 総合 (Ergodoxを作ろう)

Posted by YpsilonTAKAI On 2016年12月9日金曜日 0 コメント

この投稿は  ErgoDox Advent Calendar 2016 の 7日目の記事です。

Ergodox作りました



最近のErgodoxの話題というと、Ergodox EZを入手したよとか、Falbatecでそろえたというような記事が多いのですが、もともとErgodoxはオープンハードなプロダクトなので、基板やケースを作って、部品を集めて、自分で組み立ててというのが本来の取り組み方なのではないかと思うのです。

なんてことを言ってハードルを上げていた僕は、Ergodoxを手に入れることなど無いだろうと思っていたのですが、ひょんなことから基板や部品を分けていただくことができたので手に入れることができたのですが、何しろ全部自分で揃えようとしたらどんなことが必要なの? 日本で揃うの? ってあたりを記事にしてみます。

Ergodoxの情報

先ずは本家の情報を入手しないとですよね。
しばらく前は、ergodox.org にサイトがあったのですが、潰れてしまっておりました。
最近以下の場所で復活しています。

https://www.ergodox.io/

ここから入手できるのは。
  • 部品一覧
  • ファームウェアの情報
  • ケースの情報
などです。

部品一覧を見ながら入手方法を考えてみましょう。


基板1組(1x Pair of pcbs (one for each hand))


左右対象のセパレート型のキーボードであるErgodoxですが、その基板は、表裏を使って左右を作り分けるようになっています。 要するに、同じのを2枚用意すればよいのです。
手に入れる方法はいくつかあって、

  • 自作はハードルが高いので買う
    日本のサイトで見たことはありませんが、海外のサイトにはErgodoxの基板を打っているところがあります。
    Falbatech ここはフルセット揃うのであたりまえですが、基板だけでも入手可能ですね。
    MechanicalKeyboards.com メカニカルキーボード関連の情報/物を扱っているサイトです。
    ・ その他 プリント基板は英語で PCB(printed circuit board) と言うので、「ergodox pcb」などのキーワードで検索すると他にもいくつか出てきます。 安いところだとセットで1000円くらい?リスクと計りに掛けて選択ください。
  • だれかが作ったものを入手
    僕のはこれでしたけど、まあ、そんな目に遭うことはなかなか無いかもですね。
    そもそも日本でメカニカルキーボードの話ができるのって、2chぐらいしか知らない。 あとは、ツイッター?
  • 自分で作る
    最近は、データを用意すれば比較的少ない枚数でも基板を作ってくれるサービスを利用することができるので、そういうサービスを利用して自分で作ることもできます。
    そして、自分で作るのであれば改造することもできますね。実際、僕が入手した基板は改造されていて、小指側の1.5xキーが 1xキー2つになっています。
自分で作るのであれば、データとツールが要りますね。

Ergodoxのオリジナルの基板のデータはergodox.orgから行けますが、githubにあります。
https://github.com/bishboria/ErgoDox

このデータは、フリーソフトのKiCadという基板のデータを作るためのCADで作られています。
http://kicad.jp/?page_id=2

データとそれを操作するソフトが手に入るのですから、さあ、どんどん改造しましょう。

改造したら、あとは発注です。たとえばこんなところ
https://www.seeedstudio.com/fusion_pcb.html
http://www.pcbgogo.jp/

さて、これで好きなようにキーの物理配置をいじることができますね!

Teensy 2.0 マイコンボード 1つ(1x Teensy USB Board, Version 2.0)


キーボードのコントローラには、Atmega32U4が載ったTeensy 2.0というマイコンボードが使われています。写真の白いUSBケーブルがささっているやつです。
https://www.pjrc.com/teensy/

Atmega32U4というチップはUSBのインターフェースを供えていて、また、Teensy 2.0は専用のブートローダが書き込まれていて、専用の書き込みソフトを使ってUSB経由で中身を書き換えられるようになっています。特別な装置が無くても書き換えができるので、手軽に開発ができます。



ただ、このTeensy 2.0というボードは日本で取り扱っているところが無くちょっと入手が難しいところが難点です。

基板を改造して、他のAtmega32U4ボードを使うようにしてしまうってのはありだと思いますね。ちょっと調べただけでいくつかみつかります。

Da Vinci
 Arduinoファームが載ったものと、Atmeg32U4オリジナルのブートローダが載ったものがあります。
 全ピン出ていて値段も安く、入手性もいいのですが、オリジナルよりかなり大きいです。

ATmega32U4搭載マイコンボード
 サイズは小さめですが、全ピンは出ていないかも。

Pro Micro
 海外のものですが、前のボードのスイッチサイエンスなど日本の業者が扱っていてそこから入手できます。

 Arduino Micro
 お高いですが、安心感はありますよね。
 サイズは大きいです。

DaVinciを使うように基板を改変してみるのもいいかもと、今思った。


IOエキスパンダー MCP23018-E/SP 1つ(1x MCP23018-E/SP I/O expander)

左右分離という形状はErgodoxの大きな特徴の一つです。
この実現方法として、左右それぞれを独立したキーボードとしてしまうという手があって、たとえばInfinity Ergodoxなどはその方式を取っています(いるはず)。

オリジナルのErgodoxは、右手側にTeensyを載せてマスターとして左手側には簡単なICの載ったスレーブとするという構成になっています。
左手側に載っているのは、IOエキスパンダーというICで、TeensyとはI2C接続なので、たった2本の信号線で16本入出力をコントロールできます。

このあたりの電子部品は、日本でも老舗のお店があったりして、最近なら通販もやっていてそこにあれば入手は比較的容易です。

昔から電気・電子工作とか好きだったので、秋葉原のパーツやさんは知っていて、実店舗でお世話になっているのは、秋月電子さんとかマルツさんとか千石さんとかですね。 通販もやってます。

海外の図面を使う場合、同等パーツだとフットプリントが違ってだめなので同じパーツが必要になりますが、下のところも探すとあったりします。
https://www.digikey.jp/
http://jp.rs-online.com/web/

最悪海外で発注ですけど、100円のパーツの送料が2000円とか笑えないとこになったりします。

チェリー MXスイッチ 76〜80個(76-80x Cherry MX switches, (depending on your layout))

しばらくく前まで、ほぼ唯一のキーボード用メカニカルスイッチのメーカだったのがチェリー(現ZFエレクトロニクス)ですが、特許が切れていくつかの中国のメーカーが互換のスイッチを製造しています。

Gateron, Kailh, Outemu, Greentech あたりが有名です。
チェリーのものがそうだったように、押下に必要な力が違っていたりクリック感があったりなど、いろいろな仕様のものがあり、また、最近はメーカによる違いなどもあり、選択肢はかなり広くなっています。

僕は、Gateronという中国のメーカーの茶軸と呼ばれるスイッチを入手しました。

入手先ですが、日本だとここでしょうか
https://www.jw-shop.com/

海外だと、ちょっと検索するだけでいくつかみつかりますね
https://mechanicalkeyboards.com/
https://1upkeyboards.com/

僕が入手したのはMassdrop
http://www.massdrop.com

マスドロップって何?って人は検索してみてください。 共同購入サイトみたいなものです。

WM17115 USB ミニB コネクタ (1x USB mini B connector WM17115)

基盤用のUSB ミニB用のコネクタ。 WM17115というのは、Digikeyの型番で、たぶん、モレックスの54819-0519と同じもの。 これなら日本でもみつかる。

3.5mm 4極(TRRS)プラグソケット (2x 3.5 mm TRRS sockets, CP-43514. FC68129 will also work if its extra pins are snipped off)

あまりみかけない、4極の3.5mmソケットです。 右と左は4線で接続するI2C通信でつなぐのですが、これを接続するためのものです。

Digikeyにしかないみたい

以下のパーツは秋月とかマルツとかで入手可能

Teensy用 ヘッダーピン (24x Teensy header pins, male (unless pre-installed))
1N4148 もしくは DO-35ダイオード 76〜80個 (76-80x 1N4148 diodes, SOD-123 package (Surface mount) or DO-35,(0.3” pitch) (through hole))
2.2KΩ 抵抗 2つ (2x 2.2k Ω resistors (red, red, red))
3mm T1 LED 3つ (3x 3mm T1 LEDs)
220Ω 抵抗 3つ (3x 220 Ω resistors, or match to LED. (red, red, brown))
0.1µF セラミックコンデンサ (1x 0.1 µF ceramic capacitor (marked “104” for 10*104 picofarad). Not strictly necessary but suggested)
USBミニBプラグ (1x USB mini B plug with short cable (such as H2955))
 分解して中身だけ使うのでなんでもOKですかね。
USBケーブル オスA-オスミニB (1x USB cable male A to male mini B)
 キーボードとPCの接続用
3.5mm 4極(TRRS)プラグ (1x Cable with two 3.5 mm TRRS plugs)


でも、4極のソケットがDigikeyにしか無いので、全部Digikeyで揃えるってことになるかも。


ケース (1x Ergodox Keyboard case)

ケースは自作をするのでなければ、日本で入手するのは難しいですね。


ケースの図面も2種類入手可能で、1つは、3Dプリンタで出力するもの。かなりすっきりした外観のケースが作れます。 もう1つは、アクリルなどの板をカットして積み上げて作るものです。
僕のは基板が改造されていることもあり、自分で図面を加工してアクリル板で作りました。



加工については、図面さえ用意できれば、加工を頼むことができる所をみつけるのはそれほど難しくありません。また、最近は、DMM.MAKEなどの加工機械や場所を提供してくれるサービースが利用できたりして、レーザーカットや3Dプリンタの出力を自分でやることもできるようになっています。
いずれにしても、かなりコストかかりますけどね。

僕は知り合いにレーザー加工している人がいるので頼んで作ってもらいました。

板をカットしてつくる方法で、MDF材などを使えば手で加工することもできなくはないし、とても安くできますね。

キーキャップ (76-80x MX Keycaps)

意外なことに、多分、この、キーキャップを入手するのが一番大変で、場合によってはコストの半分以上がこのキーキャップのため、というようなことにもなります。
まあ、直接指が触る部分でもあり、一番目に付くわけですから、こだわるのも悪くないでしょう。

日本で入手できるキーキャップとしては、ダイヤテックのやつがあります。

ところが、これを入手しても、Ergodoxの一部のキーは合うものが含まれていません。
特に、

  • 両小指のところのちょっと大きいやつ
  • 人差し指のところのちょっと大きいやつ
  • 親指のところの 大きいやつ

がそうなります。

これを単体で入手するとなると、もう、日本ではだめで、

Pimp My Keyboard の DSA PBT/ABS のErgodoxモディファイアーセット

か、

WASDキーボードでバラのキーを必要数だけ入手する

のいずれかになるでしょう。
となれば、もう、全部そこで揃えたほうがいいですね。


自分はというと、ジャンクなメカニカルキーボードを倉庫からみつけてきて、そこから外したキーキャップを使っています。基板が改造されているおかげで、小指のところのキーが標準サイズなので、致命的に足りないキーというのは人差し指のところの2つだけです。

あ、僕はDvorak配列使いなので、配列はもうめちゃくちゃです。






とまあ、こんな感じで、部品を集めたり作ったりするのもなかなか大変なわけですが、そういう苦労もまあ、楽しみの一つなわけです。

おまけ Massdrop

Massdropというのは、海外の共同購入サイトです。
とあるものについて、xx人集ればxx円で入手できますよー、みたいなことをやっていて、参加者を募るわけです。Ergodox EZやInfinity Ergodoxもここに何度もDropされています。

また、キースイッチや、キーキャップもしばしばDropされています。

12/7現在でもこんなキーキャップがDropされています。
https://www.massdrop.com/buy/max-keyboard-keycap-set

過去にあったやつについては、投票が行なわれていて、どんなのがあったのか見てみることができます。
https://www.massdrop.com/vote/Ergodox-Keycaps

再登場するかどうかはわかりませんが、興味があればWatchしておくといいですね。

Cherryのスイッチもあります。
https://www.massdrop.com/vote/Cherry-MX-Keyswitches-110-Pack-Plate-Mount

僕のキースイッチはここで入手しました。
https://www.massdrop.com/buy/gateron-switches



READ MORE

Ergodox ソフトウェアシリーズ (ディスプレー1)

Posted by YpsilonTAKAI On 2016年11月20日日曜日 0 コメント

キーボードにディスプレー

Ergodox、というかキーボードにはたいていディスプレーなど付いていません。
ですが、今回のErgodoxの基板はオリジナルからちょっと変更されていて、ファームウェアに修正が必要になっています。バグが発生することもあるだろうし、原因の切り分けなんんかをするために内部の状態をわかるようにディスプレーを付けおくと役に立つでだろうと、基板を譲っていただいた方からアドバイスを貰っていました。



取り付けたディスプレーですが、前にも書きましたが、Seeed Studioというところが出しているものです。

https://www.seeedstudio.com/Grove---OLED-Display-0.96%26quot%3B-p-781.html#


手頃なサイズで表示も64x128で十分な広さで、接続方式はI2Cです。Ergodoxは分離した左右の通信にI2Cを使っていますので、追加の仕組み不要で場所に余裕のありそうな左側にディスプレーを付けることができます。

ディスプレーの動き

今のところ、ディスプレーには

  • どのモディファイアキー(シフトなど)が押されているか
  • CapsLock, NumLockの状態
  • USBで送信されるキーコード
  • キーボードの状態の変化
  • レイヤーの状態

が表示されるようになっています。






モディファイアやCapsLockの状態は一番下の行の四角いマークで表示しています。
左から、NumLock, CapsLock, Ctrl, Shift, Alt の順にならんでいます。動画では見にくいのですが、一応、種別ごとのマークになっています。

下から2行目はキーコードの列で、キーが押されたところだけキーコードが入るようになっています。
USBのメッセージに入る、6つのキーのデータが表示されています。動画の音と変化を見ていただけるとわかると思いますが、現在のファームはロールオーバしていなくて、7キー目は無視されてしまいます。

下から3行目はレイヤーの状態表示で、一番左が現在のレイヤーになっていて、下のレイヤーが右に続いています。
最初の表示はキーボードの状態が変化するごとに月が満ち欠けするようになっています。


上半分は、ロゴマークです。




このディスプレーにいろいろ表示させる方法を研究しているときに大きめの画像を表示させたりしたのですが、そのときにちょっと作ってみたのがこのロゴで、なかなかよかったので、そのまま使うことにしたものです。

キーボードはパソコンにつないだままにしておくことが多いので、スクリーンセーバのつもりで、だいたい4分くらいするとスクロールして、そのまま10分くらい使わないでいると、消灯するようになっています。



READ MORE

Ergodox ハードウェアシリーズ (ケース 1)

Posted by YpsilonTAKAI On 2016年11月3日木曜日 0 コメント

ケース

Ergodoxのケースは、専用のできあがっているものが何種類か入手可能です



が、自作するのであれば、

  • カットした板を積層して作る
  • 3Dプリンタで作る


のいずれかになります。

3Dプリンタで作る方がそれらしくて無駄の無いものができそうです。 最近は、3Dプリンタも表面かかなりなめらかで強度のあるものが作れるみたいですよ。そのうち挑戦してみたいですね。

ですが、今回は、以下のような理由でカットした板を積層する方式を選びました。

  • 基板がカスタムされているので、図面をいじる必要がある。
  • 3D CADをいじった経験あまり無し。
  • 2D CADならそこそこ使えるはず。
  • 知り合いにレーザーカットを仕事にしている人がいる。



ということで図面が必要です。
機械に読み込ませるデータは、Adobi Illustrator(ai)形式のものが必要になるとのこと。
以前レーザーカットで物を作ってもらったときに、途中から図面の加工までお願いしていたのですが、調整で手間をかけさせてしまうなどしました。
今回は、形も複雑で種類も多いので、自前でaiファイルまで作りたいと思います。

CAD

まずは、CADソフトの選択です。
ラジコングライダーの自作をやっていて、自分でCADを使って図面を書いたりしていたのですが、小さなパーツなどの図面を書いて、紙に出力して、材料に貼って、手で切り出す程度のことしかしてなくて、そのときに使いやすいものを使ってました。 主にJW_CADを使ってました。
ただ、JW_CADは、Windowsじゃないと動かないとか、dxf形式がものによってはうまく読めないとか、操作性が今一肌に合わないとかいろいろ不満がありました。 なので今回、dxfがちゃんと扱えるということを基準にFreeのCADを調べてみました。


結果としてこの2つがよさそうで、今回はDraftSightを使うことにしました。

FreeCADの方はどちらかというと3Dデータを作る作業に向いている感じで、2Dデータを作るならDraftSightのほうが直感的な感じです。

図面を引く

CADの練習をちょっとして、実際の図面を作っていきます。

図面作成でキーになるのは、スイッチをはめ込む穴がたくさん開いたプレートです。ここにはめ込んだスイッチが基板にちゃんとはまらなければなりません。
基板を分けていただいた方が、JW_CADの図面を作っていただいていたのでその部分は使わせていただきました。
残りの部分については、基本的に全面書き直しました。
- レーザーカットを効率的にやるには、繋った線はポリラインにする必要がある。
- ポリラインにするためには、全ての線がちゃんとつながっていないとだめ。
ということ。
あと、元データそのものがこれまでいろいろな人がいじったものであるためか、
- 余計な線などのゴミデータがあちこちにある
というのが理由です。

慣れないCADでの作業なので、何度もはじめからやり直したり、途中で効率的なやりかたを発見したりなどしましたが、なんとか作ることができました。



  • つながっているところはちゃんとつながっている。
  • ポリラインにする。
  • スケールの調整のために流さがわかっているキリのいい長さの線を入れておく。

aiファイル

さて、aiファイルです。
基本的に、Adobe illustratorが無いと作ることができません。できたとしても互換性に心配があります。
ただ、上記のDXFができていれば調整はすぐできるはずなので、こちらで用意しなくてもよかったのですが、なんと、CS2であれば手に入るという情報があり、ちょっと試してみることにしました。

ここでは詳しく書きませんが、調べてみると黒に近いグレーということで、おすすめできる方法ではありませんでした。
ですが、たしかに使うことができて、aiファイルを作ることができました。

Illustratorでやった作業は以下のことです。


  • dxfファイルを読み込む。
  • 縮尺がおかしいので、入れておいた長さのわかる線、今回は3cmのものを使って縮小率を計算して全体を縮小する。
  • 線を消す。

これだけ。

カット!

持ち込んでカットします。カットの様子。



カットした部品です。



コスト削減のため、加工で出た端材を使ってもらったので、保護のための紙がない状態でのカットだったので、表面が曇っていたりしますが、使うのに支障はありません。

タップを立てる。

組み立てるためには、底面の板の穴に3mmのネジを切り(=タップを立て)ます。



今回はここまで。

READ MORE

Ergodox ハードウェアシリーズ (キーキャップ 1)

Posted by YpsilonTAKAI On 2016年10月30日日曜日 0 コメント

キーキャップ

キーボードを自作するとき、どんなキーキャップにするかはデザイン上・実用上大事なポイントになるわけですが、今回Ergodoxを作ってみると、最もコストのかかる部分でもあることが判明しております。へたすると、コストの5割以上になってしまいます。

使ったもの

今回は、ジャンクのキーボードを入手して、そこから取ったものを使いました。
ジャンクといっても、メカニカルキーボードのジャンクはなかなか手に入りませんよ。



これです。 そこそこ古いものなので、なんと2色成形のしっかりしたものです。
外したものを段ごとに仕訳して並べています。


そしてこれを、キーボードにはめていくわけですが、ここで問題が一つ。
前にも書きましたが、日頃Dvorak配列を使っています。

なので、入手したキーボードとキーの印字の並びが異なるわけです。では、思ったとおりに並び変えればいいかというとそういうわけにもいきません。 ノートパソコンのキーボードでなければ大抵のキーボードは、段ごとにキーの形が異なります。これは、打ちやすようにという配慮のためなのですが、このために、段をまたいだキーの入れ替えはできないのです。手元にあるキーキャップでDvorak配列に並べることはできないということになるのですが、実はあまり困りません。 キーボードを使うときに、キーの印字などは見ていないからです。

ということで、キーキャップは好きなように並べてみました。




- 最上段の数字と記号の列は、Dvorakでも変りないので、そのまま。
- 右手のアルファベットの部分は、レイヤー2のNumPadの並び。ただし、4と5は、5のポッチを生かすために入れ替えてある。
- 左手のアルファベットの部分は基本ばらばら。名前が入れてみたりしてます。 ZXCVBの行はそのままにしてありますが、このようなアサインにはなっていませんし、ショートカットにも使っていません。 ただのきまぐれです。
- 親指にある2uのキーは、Kinesisにあるような角度のついたものがちょうど2つあったので、それを配置しています。

Kinesisと比較


さて、組みたててみたわけですが、普段使っているKinesisと較べてみると大きなところでは2つ違いがあります。

親指クラスターが1キー分くらい遠い感じがする

親指の部分はKinesiseだと、ホームポジションに手を置いたときに、親指が一番内側のキーに乗るくらいの感じなのですが、Ergodoxだと、その内側の何もないところに親指が来る感じになります。
基本的なキーアサインをKinesisと同じにしていので、ちょっと誤爆します。
そんなとこもあって、角度の付いているキーを場所はKinesisと違って一番内側にしてあります。

親指と残りに段差がない

4本指がわが掘れていないので、Kinesisと較べて親指でキーを押しながら他のキーを押すときに、ちょっと蒸りな曲げ方になってしまう。 親指と薬指を両方上げるような曲げ方です。
だいぶ慣れてきましたが、手の甲に違和感がありました。


どちらも、もう少し使って慣れてくるとちょっと変るかもしれません。
また、今のとこキーボードは傾けずに使っていますので、調整していくと変るかもしれません。


READ MORE

Ergodox ハードウェアシリーズ (できた)

Posted by YpsilonTAKAI On 2016年10月10日月曜日 0 コメント
唐突ですがErgodoxできました。

土曜日にケースのアクリルをカットして、夕方組み立てました。
この記事もそのErgodoxで書いています。

現状の仕上がりはこんな感じです。



キーキャップの詳しい話はそのうちするつもりですが、アルファベット部分の配列がぐちゃぐちゃなのは、僕がDvorak使いであって、しかも、とりあえず入手したキーキャップがビンテージもののCherryプロファイルでダブルショットのQWERTY配列のものだったので、QWERTYに並べるのが負けのような気がしたためです。

左手側は、プロファイルが崩れない範囲で組み変えてますが、各段の右手側は、レイヤー2に入っているNumパッドの配列をベースにしています。  

感想

普段仕事場ではKINESISのAdvantageを使っているので、ほぼ同じ配列になっている
Ergodoxであればそれほど違和感無く使えるんじゃないかと思っていましたが、
そうでもなさそうです。

親指のキー群の感覚がちょっと違う

親指のキー群が感覚的に1キー分位遠い。
普通の感覚で右のエンターキーを押そうとすると、スペースが押せてしまう感じです。
慣れるのには少し時間かかかるかもしれません。

上段の2つのキーは普通のキーだと打ちにくい。

親指の上にある2つのキーは、標準の一番大きなキーでも高さが足りず、とても打ちにくいです。
写真のように、手元にあったKINESISの入れ替え用のキーにーしてみるといい感じです。


打鍵感は気持いい

Gateronの茶軸はとてもスムーズな感じで、普段使使っているCherryのものと
遜色無いと思います。 ただ、まだ、並べて比較したわけではないのです。
逆に言えば、並べて比較しないと別らなような違いしかないということでしょう。


キーマッピング

キーのマッピングは、現在KINESISで使っているものそのままを移植してある。

今後詰めていくことになると思うけれど、
  • 親指のキーがちょっと遠い
  • 人差し指の内側に増設されているキーを活用する
  • 小指外側のキーを活用する
あたりをキーにして、最適解をみつけたいと思う


全体的には気にいった

作ってみてちょっと使ってみたレベルではかなり良いと言える。

これまで自宅用で使っていたTypematryxの替わりにしばらく使ってみます。


READ MORE

Ergodox ハードウェアシリーズ (石たち2)

Posted by YpsilonTAKAI On 2016年10月2日日曜日 0 コメント

ディスプレイ改造

付けることにしたディスプレーは、Seeed Studioってところのものです。

この会社、今回始めて知ったんですが、基板そのものとか、基板に何か実装したものとか、そういうものを請け負って作っているところのようです。

また、製品として、Arduinoの周辺機器とかも作っているのですが、その流れで、Groveという共通規格を打ち出して、それに沿ったセンサーボードとか、モータードライバーとかいろいろ出しています。

今回のディスプレーもそのGrove規格のもので、生のディスプレーとコントローラだけだと面倒な電源回りとかを処理してI2CだけつなげればOKなようにしてあるので、簡単に使うことができます。
ただ、そのGroveのコネクタは、プロトタイピングにはいいのでしょうが、組み込んで使うにはちょっと大きいなぁと思ったので、いきなり外してしまいました。

下にあるのが、付いていたコネクタ。
端子の付いていたところにコードを直付けしてホットボンドで固定しました。



ちょっとスッキリ
裏の養生は組み込むときに考えます。

READ MORE

Ergodox ハードウェアシリーズ (キースイッチ2)

Posted by YpsilonTAKAI On 0 コメント

届いた

Massdropで頼んだGateronの茶軸のスイッチが届きました。
9/22に発送されて、9/29に自宅に到着なので、想像以上に早かったですね。

パッケージの下のほうがへこんでいますが、海外からの荷物だとこれくらいは普通ですね。


中には緩衝材があってこんなサイズの箱がいきなり入っていて、中にはぎっしりスイッチが入っています。
いきなりなので、ちょっとびっくりしましたが、これで十分ですね。

Gateronのスイッチは見るのもはじめてですが、しっかりした感じです。
10個くらい出して押しくらべてみましたが、そういうレベルでの品質のばらつきは無いようです。
本家Cherryの茶軸と較べて..と言いたいところですが、Cherryの単体のスイッチは持ってないし、キーボードに付いているものと較べられません。

ということで、使った感触は付けてから評価しましょう。

Massdropの配送

問題の無かかった配送について。

Massdropは普通のネットショッピングと違って、注文数によって価格が異なり、また、注文数が確定してから販売者/製造者に発注するという形式なので、注文してから入手できるまでに時間がかかります。
今回は 8/12 に注文してます。
そのあと募集の締切があって、以降は週一ペースで状況のレポートがメールで届きます。

最終的に発送されたというメールに、トラッキングの情報があったので、アクセスしてみると、発送はDHLのglobal mailでした。
調べてみると、global mailは日本国内をヤマト運輸が配送する場合と、日本郵便で配送される場合があるようですが、今回は、日本郵便経由でした。

トラッキング情報はそこそこ詳しくて、僕の場合最終的にこんな感じでした。

アメリカのNJから、一旦DHLの本拠地ドイツに渡って、ドイツ郵便から、日本に渡ったことがわかります。

日本国内の方は、郵便かヤマトか不明でしたが、川崎に到着してしばらくしてから検索してみるとヒットしました。
検索したのは、検索したのは通常の郵便追跡のサイトです。

検索する番号は、DHLのトラッキング情報にある「Delivery by Postal provider」の番号を使います。 「RX」で始まって「DE」で終わるIDでした。











READ MORE

Ergodox ハードウェアシリーズ (キースイッチ1)

Posted by YpsilonTAKAI On 2016年9月23日金曜日 0 コメント

キースイッチ

キーボードというのは、キーを押してその押したキーに対応する情報を本体に送る装置で、キーは1つ1つがスイッチになっています。最近の一般的なキーボードは、スイッチが一体成形されたものになっていることが多いのですが、自作の場合は1つのキーに1つのスイッチを使うのが一般的です。そこに使われているスイッチは、昔は日本のメーカも出していましたが、今では、スタンダードなチェリーブランドのものか、それのコピー品を使うのが一般的です。 このあたりのことは、書ききれないほどの情報がありますので、興味のある方は検索してみてください。

さて、Ergodoxのキースイッチは左右で80個ぐらい必要で、日本で買うと1こ80円くらい。まあ、予備もいくらかあればいいなぁと思っていたのですが、ちょうどいいタイミングで、MassdropGateronのスイッチが出ました。軸が選べて120個で25ドル。送料は9.25ドルまあ、だいたい3600円程度でスイッチが手に入りました。
Massdropというのは、共同購入サイトで、商品に特定の数の買い手が付くと安く買えるという仕組み。
Gateronというのは、チェリーのコピースイッチを作っている中国のメーカーで、品質の評価はそこそこ良い。

茶軸


チェリーのスイッチには押した感触の違いによっていくつか種類があります。
職場で使っているKinesisのAdvantageは、チェリーの茶軸と呼ばれるスイッチを使っています。このスイッチは、Advantageに使うために開発されたという説があるようなスイッチで、軽めの感触で、ONの場所が感触でわかるような仕様になっています。
チェリーのコピー品を作っているメーカーもだいたい同じようなラインナップを揃えていて、Gateronにもほぼ同じ性質を持つ茶軸のスイッチがあって、今回はこれを頼みました。



手に入りましたと書きましたが、まだ届いていなくて、9/22にUSのNJから発送されたようです。
着くのにまだしばらくかかりそうです。
READ MORE

Ergodox ハードウェアシリーズ (石たち1)

Posted by YpsilonTAKAI On 2016年9月22日木曜日 0 コメント


メインの石

ハード寄りで石って言えば、普通(昔?)は裸のICを指しましたが、時代は変ったんですよ。今では小型のマイコンボードが昔の石の代わりをしています。
Arduino の Mini とか Microダ・ヴィンチ32Uとか、こういうマイコンボードはハードウェアのアーキテクチャも公開されていて、豊富なサンプルも手に入る。

さらに、マイコンと言えばちょっと前まで専用のライター(Writer)が無いと中のプログラムを書き換えられないし、石によってライターが違ったりで、なかなか手が出しにくいものだったけれど、これらのマイコンボードは、USBのインターフェースを持ってる上に、内蔵メモリが大きくなったのもあってか、ブートローダを内蔵していて、パソコンとUSBてつないでライター無しで直接ファームを書き込むことができるようになっている。

時代は変った。

Ergodoxの基板には、コントローラとして、Teensy2.0(https://www.pjrc.com/teensy/)っていうマイコンボードを使うようになっています。(このPJRCっていう会社?もすごいんだけど、まあいずれ)
Teensy2.0 には AtmelのAVRマイコンAtmega32U4が載ってます。この石、Arduinoとかにも使われているくらいポピュラーな石なので、いろいろなファームウェアが手に入るのですが、そのなかには、キーボード用のもありまして、好きなのを選ぶことができます。
さらに、その中の、いくつかのキーボード用のファームウェアは、Ergodoxにも対応していて、標準の設定で満足できるのであれば、そのまま使うこともできます。

気に入らなければ、自分で書くこともできますよ。

時代は変った。


サブの石 (I/Oエキスパンダー)

マイコンはだいたい足(端子)に掛っている電圧で外の状態を知るわけです。対してキーボードは、いずれにしても沢山のスイッチを並べて、On/Offで入力する装置で、だいたい100個くらいのスイッチが並んでいます。 マトリクスを使うなどの工夫をしても1つの石だけでチェックできるスイッチの数には限りがあるので、足を追加する石を使うことが多いです。I/Oエキスパンダーってやつです。

Ergodoxでは、MCP23018というI/Oエキスパンダーを使います。Teensyとの間は、I2C接続なので、4本の線をつなぐだけで住むので、Ergodoxではこれを利用して左右を分離しています。

右の基板には頭脳であるTeensy、左の基板にはI/Oエキスパンダーを載せ、その間を4本の線(物理的には1本に見えますが)でつないでます。

ディスプレイ

Ergodoxにはディスプレイなど付いていない。

でも、基板をいただいた方から、「ディスプレイに情報を表示されるようにすると、デバッグに役立つよ」との情報をいただき、なにそれかっこいいってことで僕も付けることにしたのでした。

付けたのは、紹介してもらった、Seeedが出している有機ELのディスプレイです。

このディスプレイもI/Oエキスパンダと同じI2Cのインターフェースを持っているので、線を引き出すところさえ見つければ特に改造などしなくても付けられるはずです。

つなげてみる

ブレッドボードに並べて、接続してみました。

PCに開発環境を調えて、サンプルとかいろいろ書き込んで、とりあえず、目的のファームでの基本的な動作は確認できました。今はいろいろいじくっています。
画面に何を表示するかとか、マクロとかの機能追加をどうしようとか、いろいろ考え中です。

光っているのは、CapsLockとかを表示するLEDです。が、多分他の用途に使うことになるでしょう。














READ MORE

Ergodox ハードウェアシリーズ (基板1)

Posted by YpsilonTAKAI On 2016年9月21日水曜日 0 コメント
入手した基板は、作った人が手を入れていて、オリジナルとはキー配列が少し違います。

違い

Ergodoxの小指の外側のキーは、通常のキーの1.5倍(1.5uと表現されます)のものが4段になっています。
この上側の3段分のキーを普通のサイズのキー2個にしてあります。あと、一番下の段の一番外側のキーが無くなっています。

意図は変更した本人に聞いていないのでわからないのですが、
- そもそもErgodoxの標準のファームウェアだとあと2個キーを増やす余裕がある
- 小指の外にわりあてちゃえ
- 一番下の外って打ちにくそうだから、これも移動しちゃえ
ってな感じなのではないかと。

また、標準サイズのキーを使っている場所を増やすことで、コストのかかるキーキャップの調達を容易にするという目的もあるかもしれません。

実物

Ergodoxは左右別れているので基板は2枚になります。

 

で、すごいのは、これ、左右の基板は同じものなんです。右用と左用はひっくり返すだけ。配線を工夫してどちらでも使えるようにしてあるのです。ここがErgodoxのハイライトですね!




写真の基板はすでに各スイッチに対応するダイオードや、コネクタ類をハンダ付けした後のものです

READ MORE

ErgoDox やばいもの入手

Posted by YpsilonTAKAI On 0 コメント

エルゴ系のキーボードについて関心があるので、比較的早い時期からErgoDoxのことは知っていたのですが、手を出していませんでした。

状況

- 職場は Kinesis Advantage、 自宅や移動用は Typematrix

この組み合わせで一応満足はしている。 ただ、Typematrixの物理配列はいいのですが、単体でのリマップ機能が無いので論理配列がいじれない。これがすごく残念。
Davinciを使ってファーム部分を入れ変えてしまうプロジェクトは進行中だがいろいろあって、あまり進んでいない。この件はそのうち公開する(たぶん)。

- Ergodox自作なのに意外とコストがかかるのがわかっていた

自作=安く済むと思っているわけではありません。 ラジコンにしても、オーディオにしても、それなりにいいものを作るとなると、コストがかかります。 オーディオなどのように、一般消費者向けの大量生産品があるようなものであればなおさらです。

- TEKがあるじゃないか。

Truly Ergonomic Keyboard (https://www.trulyergonomic.com/store/index.php) です。
開発中からマークしていたんだが、リマップもできるし、これいい。 自宅用に買うつもりだった。
ただ、リマップ機能がどんなものか発売になってもよくわからなかったりして、あーだこーだしていて、
「まだ買ってない」状態が今でも続いている感じ。
ただ、これ、やっぱりちょっと持って歩くにはでかいかな。

- Kinesis Advantageをもう一つ買うという選択もある

発売からだいぶ経つし、なくなるんじゃないかなんて話も出ていたりしたので、もう一つ買うという選択もあった。だが、最近 Advantage2 が出たので、まだしばらくは新品が入手できそうなので、放っておく。

- planck いい!

Massdropでplanck(http://olkb.com/planck/)っていうキーボードを知った。これいい。 40%。完全に格子配列。ミニマム。これ持ち運びによさそうだよねー。


状況が変った

日本でキーボードの情報ってあまり手に入らないんだけど、こういう情報の常として、「2ch」にはいくつかのキーボード関連のスレが立っていまして、いちおうチェックしていたりするわけです。

また、去年の秋ごろあたりから、海外の共同購入サイト(ちょっと毛色が違うけど)のMassdrop(https://www.massdrop.com)で、Ergodoxの完成品が売られるようになったりして、日本でも局所的なブームが訪れていました。

そんなとき、2chのスレに、突如Ergodoxの基板を作っている人が現れ、日本でもいるんだなーと思っていたら、なんと余ってるやつを1組500円で売るという。

500円ですよ。

とりあえず買うでしょ。

コンタクトしてみると、スイッチとキーキャップとケース意外の部品もだいたいあって一緒に譲ってくれるとのこと。基板だけ入手してあとはぼちぼち考えようと思っていたのですが、いきなりゴールに近いところに。

作りはじめましたよ。

ということで、作り始めたのですが、完成の目処が立ったので、ブログ記事にしようかということになりました。


以降、過去の内容も含めて、つらつら記事にしていきます。
READ MORE