2015年
7月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2015-07-09 ubuntu mate on raspberry pi2で計測

_ ruby2.1とgtkとusb hubに苦しめられたが

数年間計測に使っていたnote PCが遅くなってきたので、制御用のPCを入れ替えることにした。noteは余っていないし、desktopも邪魔なので、raspberry piを使ってはどうかと考えた。しかし、raspbianではusbtmcを使うためにkernelをコンパイルしないといけない。raspberry pi2で動くubuntu mateだと、usbtmcはそのままで使えるというわけで、これを使って測定系を組むことにした。いくつかのハードルはあるとは思っていたが、予想していたよりも、少し苦労させられることになったが、なんとかうまく動くようになった。

まず、最初にはまったのが、rubyのversionによる問題である。それまでのシステムはruby1.8で動いていたのだが、今回はruby2.1で動かしている。version依存の命令は使っていないつもりだったので、そのままで動くと予想していたのだが、考えが甘かった。usb-serialで通信していたのだが、なぜかうまく動かない。オシロを使って信号を読んでみると、送ろうと思っている文字列と違う文字列が送られていることに気がついた。このとき、"%c"%nのような書き方をしていたのだが、このときに、勝手にunicodeに変換されてしまっていた。そこで、[n].unpack("c")としたら、変換されなくなり、通信できるようになった。

次の問題は、ruby/tkである。ubuntuでは、なぜかruby/tkがサポートされなくなってきているようなので、ruby/gtk2に移植する必要があった。少し時間はかかったが、tkとほぼ同じ感じでgtk2も使えるようになった。

しかし、実際に動かしてみると、通信エラーを頻繁に起こすことが分かった。いろいろと原因を考えた結果、usbのhubを疑うことにした。raspberry pi2には四つのusb portがある。ここに、mouseとkeyboardとusbtmcとusb-serial*2の合計五つのusb機器をつないでいる。そのため、usbのhubが必要で、それまでは、測定機器はすべてhubを介して接続されていた。そこで、mouseとkeyboardをhubを介して接続し、残りの三つの装置を直接つなぐようにしたら、通信エラーが起こらなくなった。

これで、測定できるシステムが完成した。あとはftpdを入れて、固定IPにして、ntpの設定をして、keyboardのlocaleを合わせるぐらいかな。ftpは以前使っていたvsftpdを入れればよい。固定IPにするのは、/etc/network/interfacesをいじりたくなるのだが、メニューからネットワーク接続を選んで、設定すればよいようだ。ntpはおそらく/etc/ntp.confをいじるのだと予想している。keyboardもmateのメニューのkeyboardで種類を設定できるようだ。あと、自動起動で不要なものを消しておくと良いかも知れない。