UTF-8にして
このblog内の検索をするために、昔からgoogleを利用していたが、最近は検索がうまくいかなくなっていた。原因の一つは、漢字コードがEUCから UTF-8に変わったからだったが、検索するサイトの指定の仕方も以前とは少し変わった気がする。as_sitesearchという項目を加えたら、うまく動くようになった。これで、また昔の自分の記事を検索できるようになります。
マウス操作の自動化
xautomationとautoclick
何度もマウスで同じ操作をする必要があり、マウスを自動で操作する方法を調べていたら、UNIXではxautomationを使うと良いらしい。
xte 'mousemove 100 100' xte 'mouseclick 1'
などとすると、カーソルを移動させて、クリックなどができる。 しかし、virtualbox上WindowsNTを操作しようとしたらうまく行かなかったので、今度はWindowsのユーティリティを探す必要がでてきた。似たようなソフトはいくつもあるが、古いNTで使えるとなるとかなり限定されたが、AutoClickというソフトが要請を満たすことが分かった。似たような名前のソフトがいくつかあるので、どれなのか分からなくなってしまったが、ac012.lzhというファイルのやつを使った。これで無事にマウスを操作することができ、無事に目的を達成することができた。
2015.1.23追記 使ったAutoClickはhttp://ichisoft.nobody.jp/ac.htmlにありました。
エアーシリンダー
エアーシリンダーで往復運動
往復運動をする装置を作ろうと思って考えていたら、エアーシリンダーが良いのでは無いかと思い付き、エアーシリンダーと電磁バルブを買って、装置を組み上げた。
昔見た装置は、モーターを使って、往復運動を実現していたが、直接往復運動ができるエアーシリンダーの方が、良いだろう。しかし、2ポートの電磁バルブを買ったら、ガスの逃げ場が無くて、すぐに動かなくなってしまった。当たり前のことだが、盲点だった。3ポートを買い直すのも馬鹿馬鹿しいので、いろいろと考えて、配管を工夫したら、うまくいった。
あとは、電磁バルブに電流を供給するためのトランジスタや、それに信号を送るマイコンを組み込んだ回路を作り、待ち時間などを調整したら、完成である。久々に2313を使ったが、この程度のプログラムではバグは出来なかった。
まだ、箱には入れていないが、ほぼ完成したので、明日テストランをしてみよう。
古いlubuntuのインストール
old-releasesで使える
あるPCのHDDが死んだので、HDDを入れ替えて、linuxをインストールした。32bit用のものとしては、手元にはlubuntu11.04しかなかったので、それを使うことにしたが、新たに別のソフトをインストールできるかが不安だった。しかし、aptソースをold-releases.ubuntu.comに書き換えると使えるらしいので、試してみたら、うまくいった。rubyもftpdもインストールできたので、無事にだいたい元通りに使える環境になった。
PCの更新
AMDのAPU
少し前からPCの調子がおかしくなり、その頻度が増してきたので、更新することにした。このところ、CPUはAMDにしているが、最近のはGPUも組み込んで、APUと読んでいるらしい。とりあえず、Debian wheezyを入れて、Rのプログラムを動かしたら、以前のPCよりもそれなりに早くなっているようである。でも、環境をすべて移していないので、完全移行には、もう少し時間がかかりそうである。
pingは通るけどftpにつながらない
netmaskの問題だった
少し前から、あるPCに別のWindowのPCからftpでつなごうとするとつながらないという現象が生じていた。別のPCからはつながるので、ftpサーバーの問題ではないし、pingも通る。しばらくはWindowsが悪さをしているのだろうと思っていた。しかし、Linuxの別のPCからもつながらないことを発見して、何かがおかしいに違い無いということで調べてみた。
pingは通るのに、ftp以外にもsshもつながらない。また、つながるPCとつながらないPCのIPを調べてみたら、64を境にして、つながるかつながらないかが異なっているように感じられた。そこで気がついたのがnetmaskの問題である。
以前、ネットワークの設定が変わって、そのときに固定IPのマシンの設定もすべて変更したのだが、その一台に限ってnetmaskの設定をミスっていたのだ。本当はnetmaskを192から128にしないといけなかったのだが、メモを見ずに設定したために192のままになっていた。その結果64を境にして、内部と外部という判断がされてしまっていたのだ。
ううん。ネットワークは難しい。
FTDIのbitbangでのAVR書き込みの二つのモード
ft245rとdiecimila
以前はプリンタポートを使ったAVR書き込み機を使っていたが、壊れてしまったのを機会に、FTDIの書き込み機に移行した。最初はFT232RLのft232rというものを使ったが、avrdude.confを見ていたら、diecimilaというものもあるようだ。配線は、少し違うが両方共うまく書き込みができる。RESETはそれぞれDTRとRIにつながっている。その結果、通常の状態で前者はリセットがかかり、後者はリセットがかからないという大きな違いがある。つまり、後者は書き込み機を接続すると、電源が供給されて、AVRが動き出すが、前者は動かない。この違いを考えて、両者を使い分けると良いだろう。
Fedoraのavrdudeのインストール
fedoraのavrdudeでftdiのbitbangを使うには
AVRへの書き込みツールとして、avrdudeでftdiのbitbangを使えるということを見つけて、以前debianにインストールした。今度はfedoraで同じことをしようと思ったら、それなりに苦労した。
まず、コンパイルに必要なパッケージを入れるのだが、apt-getの代わりにyumを使えば良いと思ったら、パッケージ名がいろいろと違っていた。まずインストールすべきものとして書かれていたパッケージのうち、patch automake autoconf bison flexは、そのままfedoraにもあったので、そのまま入れた。一方、libusb-devとlibftdi-devは、devをdevelに変えたものを入れた。byaccも必要そうだったので入れたが、これは後の操作で十分だったかも知れない。また、libreadline-devとlibncurses-devはlibを無くしてdevをdevelにしたものを入れた。問題だったのが、build-essentialとbuild-depである。いろいろと調べたら、
yum groupinstall buildsys-build development-tools yum-builddep pidgin
としたら良いようだったので、それらを実行してみた。
あとは、debianと同様にしたらインストールは完了した。うまくpathが通っていなかったので、シンボリックリンクをはっておいた。
しかし、いざ実行してみると、動かない。ftdi_sioとかち合っているのが問題らしい。/etc/modprobe.d/blacklist.confにftdi_sioを加えて、rmmod ftdi_sioしたら、無事に書き込めた。ttyUSB0を使うときには、mosprobe ftdi_sioする必要があるが。
これで、fedoraでもAVRが使えるようになって安心だ。
電圧が正しく読めない
tiny261Vとtiny861Aの違い
ADCをつんだAVRとしては、これまでtiny261を使っていた。その残りが少なくなった時に、秋月で売っていた861を買った。261のADCはこれまで何度も使っていて、それなりに使えるなと感じていた。しかし、プログラムの容量が大きくなって261に入らなくなったので、861にして使ってみたが、電圧の値が大きくなってしまい、うまくいかない。261で動いていたプログラムをそのまま861にしてもおかしいので、ICの方の問題だろうとは思ったのだが、なかなか原因が分からなかった。
よくよく型番を見ると、ATTINY261VとATTINY861Aと書いてある。Vは低電圧用のものだった気がするが、Aは何か分からなかったので、調べてみたら、新しい型のICのようだ。マニュアルも別にあるようだ。いろいろと試してみたのだが、なかなかうまくいかなかった。
マニュアルをよくよく読むと、差動チャネルの場合には安定に時間がかかると書いてある。そこで、150usぐらい待つようにしたら、ようやく電圧がうまくいくようになった。やはり、VとAではいろいろと違うようだ。
ADCの使えない861など価値が無いじゃないかと思っていたが、これで無事に使えるようになった。
AVRを用いた定電力電源
tiny261のADCとtimerを使った電力制御
先週ぐらいから作っていた定電力電源がようやく完成した。定電圧や定電流なら、それほど苦労せずに作ることができるが、定電力はそれほど簡単では無いように感じられる。最初はPWMで制御しようと考えたが、それほど速い制御は必要無いので、0.5秒ごとにON/OFFを繰り返すことにした。
問題はどのようにして定電力にするかであるが、最終的にはtiny261のADCを使って負荷にかかる電圧と、標準抵抗の電圧から電流を測定し、それから電力を計算して、一定時間に加えるべきエネルギーに達したらOFFにするということを繰り返すことにした。
原理的な設計はすぐに終わったのだが、実際に動くようにするには、やはりそれなりに苦労した。ざっとプログラムを書いて動かしてみたが、当然のように動かない。まず、液晶に文字を表示させるまでに、コントラストの調整、RW端子の接続、適切なウェイトの設定などで苦しんだ。以前にも液晶は使ったことがあったのだが、コントラストの調整は毎回忘れて苦しんでいる気がする。ウェイトに関しては、初期化の最後にすぐに表示する場合には必要だったようだが、これまでは表示するまでに別の処理をしていたため、必要なかったようだ。その後でも、いろいろなところでつまずいたが、最後に、ADCを停止しないと、裏で走ってしまうという点と、シフト演算子の結合順序が間違っていることに気がついて、動くようになった。
マイコンでの制御がうまう動くと、それなりにうれしいものである。