キーボード修理

イメージ
前回 調子が悪くなったと書きましたが、部品が手配できて時間が取れたので直しました。 茶軸のスイッチを購入 Cherryの茶軸は 10個で1,399- ということで購入。 本当は1個で充分なんだけど、仕方なく残りは予備部品として保管。 作業手順 キーボードの裏側ネジを3箇所外します。 左右と中央の丸シールの下。 左右はパッドを貼っているので、少しめくって外します。 (あとで綺麗に戻るので心配なしです) ケーブルが出ている方は、スッと外れ、手前(下側)は、内部に爪が有るので、ピックやカード、マイナスドライバなどで少し隙間を開けるようにして広げれば外れます。 自分は親指の爪で空きました。 今回は「E」が調子悪いので、該当のピン2箇所をハンダ吸いで綺麗に取り除いて、裏側から引き抜いて完了。 基板にしっかりとどのキーかがプリントされているので分かりやすいですねぇ 入手した新品の茶軸を差し込んでハンダ付けします。 この時点で動作確認が可能になるので、直したキーとその周辺が正しく入力できるのをチェック。 問題なく、無事に動作しました。 最後にカバーを取り付けて完了! 残ったのは9個の茶軸…。 今回の費用 Cherryの茶軸10個セット :1,399- キーキャップ引き抜き工具 : 475-  ちなみに10個セットには、簡易引き抜きがついてきますが、ちゃんとしたもののほうが楽に作業できます。(昔買ったのに、どこかに行ってしまったので再購入)  ということで、1900円ほどで完治しました。  手間賃考えると買ったほうが安いかも(笑)

ERROR: Failed to build gem native extension.

arduinoでfirmata

とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。
しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。

基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。

じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。
avrdude: stk500v2_ReceiveMessage(): timeout
が繰り返し出力されて、上手くいかない。
随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。

どれもダメだった。

ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。
こちらからの書き込みは問題なく完了した。

arduio_firmataのインストール

動作テストをしなければ、始まらないので、Linux上でテストする。
$ sudo gem install arduino_firmata
とこれだけですね。
Fetching: args_parser-0.1.4.gem (100%)
Fetching: event_emitter-0.2.2.gem (100%)
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed args_parser-0.1.4
Successfully installed event_emitter-0.2.2
Successfully installed arduino_firmata-0.2.3
3 gems installed
Installing ri documentation for args_parser-0.1.4...
Installing ri documentation for event_emitter-0.2.2...
Installing ri documentation for arduino_firmata-0.2.3...
Installing RDoc documentation for args_parser-0.1.4...
Installing RDoc documentation for event_emitter-0.2.2...
Installing RDoc documentation for arduino_firmata-0.2.3...
無事完了です。

さて動作テストを行なってみる。
$ arduino_firmata analog_read 1
Resource temporarily unavailable
ふむ。上手くいかない。
ちなみに各バージョンは
ruby -v #=> ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
arduino_firmata -v #=> ArduinoFirmata v0.2.3
怪しいなぁ。
しゃあない。これはVirtualBoxからUSB接続するという荒業のせいかもしれない。ということで、HostのMac上で再度テストして見ることに。

$ sudo gem install arduino_firmata
Building native extensions.  This could take a while...
ERROR:  Error installing arduino_firmata:
ERROR: Failed to build gem native extension.
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/serialport-1.1.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/serialport-1.1.0/ext/native/gem_make.out
ありゃりゃ。こんどはgemで失敗している。
調べてみると、Xcodeのツール(Command line Tools)を自分でインストールしてやらないと、デフォルトでは入れない仕様に変更になっているらしい

ということで、Xcode -> Preferences -> Downloadsから入れる必要あり。
早速いれて、再度gemからinstallを実行する。
$ sudo gem install arduino_firmata
Building native extensions.  This could take a while...
Successfully installed serialport-1.1.0
Fetching: args_parser-0.1.4.gem (100%)
Successfully installed args_parser-0.1.4
Fetching: event_emitter-0.2.2.gem (100%)
Successfully installed event_emitter-0.2.2
Fetching: arduino_firmata-0.2.3.gem (100%)
Successfully installed arduino_firmata-0.2.3
Installing ri documentation for serialport-1.1.0
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for args_parser-0.1.4
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for event_emitter-0.2.2
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Installing ri documentation for arduino_firmata-0.2.3
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:280: warning: conflicting chdir during another chdir block
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rdoc/rdoc.rb:287: warning: conflicting chdir during another chdir block
Done installing documentation for serialport, args_parser, event_emitter, arduino_firmata (1 sec).
4 gems installed
今度は、問題なくインストール終了。
さて、arduinoをMac側に認識させて、テストしてみる。
$ arduino_firmata analog_read 1
295
うまくいった。
これで、ruby上で操作ができるようになりそうだ。

さて、問題はLinux上で動作できるかだけれども…。
引き続き、Tryしてみよう…。

一向に進まぬ開発に、ちょっと気が遠くなってきたど…。

コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ