arduino nanoのVin

ステッピングモーターをマイコンで動かそうとして,どのマイコンを使うか迷ったが,小型のarduino nanoを使うことにした. モーターのドライバーには,GNDと信号と電源を供給する必要があるが,ピンの順番の関係で,RSTの配線をカッターで切断して,そこに電源をつなぐことにした. Vinという端子があったので,それがUSBから電源として入力された信号を出す端子だろうと思って,それを電源として使ったら,モーターのトルクが非常に小さくなってしまった. 電圧を測ると,2Vぐらいしか出ていない. 調べてみると,Vinという端子は,そこに外部電源をつなぐための端子であることが分かった. つまり,arduino unoでは,ACアダプターをつなぐ端子があるが,その代わりに使う端子のようだ. 結局,5VがUSBの電源に対応するようなので,それを使ったら無事に動いた.

こういった単純な作業に使うマイコンボードとしては,小型で安いnanoが楽かなと思う. 小型のマイコンボードとしては,arduino pro microやesp8266ボードやesp32ボードに加えて,ch552ボードなどを使って来た. UIAPduinoなんかも安くて良さそうだけど.

Read more...

localhostと127.0.1.1

127.0.0.1は自分自身を表すIPだが,debianでマシン名に対応するIPは127.0.1.1となっている. つまり,自分自身には,127.0.0.1と127.0.1.1と割り当てられているIPが対応している. サーバーを立てているPCから,そのサーバーにアクセスしたときには,上記のどのIPを使うかによって,サーバーから見た接続先が異なっている.

例えば,rubyでserve側で

require "socket"
s=TCPServer.new(3030)
p s.accept.peeraddr

としてから,client側で

require "socket"
s=TCPSocket.open('localhost',3030)

とすると,serve側には

["AF_INET", 37666, "127.0.0.1", "127.0.0.1"]

などと表示される. 一方,localhostの代わりに,割り当てられたIPを指定すると,割り当てられたIPが表示される.

今回苦しんだのが,127.0.1.1にアクセスした場合の振る舞いである. 私の2009/1/16のブログを見るとその時のrubyでは,127.0.1.1と表示されたようである. しかし,最近のrubyでは,127.0.0.1と表示されるように変わったようである. 昔書いたプログラムを新しいPCで動かそうとして,がなかなか思ったように動かなかったが,これが原因だったようである.

Read more...

Python-FuでGimpのFilter

Gimpで画像を処理させるときに,以前はScript-Fuを使っていてscheme言語で書くのが難しかったが,最近はPython-Fuを使えるようになって,楽になった. ちなみに私がpythonを使うのは,micropythonかPython-Fuが主な気がする. 少しは慣れて来たのだが,Filterなどの高度な処理をPython-Fuから行う方法が分からなかった. Gimp3.0になったし,新たに調べてみたら,やり方が分かったので,書いておきたい.

まず,画像の一部を選択した状態にする. Filters - Development - Python-Fu - Python Consoleからコンソールを開いて,以下のコマンドを実行すると,medianフィルターが適用される.

img=Gimp.get_images()[0]
lyr=Gimp.Image.get_layers(img)
chl=Gimp.Selection.save(img) #unselect layer
Gimp.Image.set_selected_layers(img,lyr)
drw=Gimp.Image.get_selected_drawables(img)[0]
flt = Gimp.DrawableFilter.new(drw, "gegl:median-blur", "")
fc = flt.get_config()
fc.set_property("radius", 10)
drw.append_filter(flt)

filterやそのpropertyの名前は,GEGLのサイトで調べることができる. get_configで作ったものに対してset_propertyをするという少し回りくどい設定をしてから,適用する. append_filterでは元の画像を保持したままfilterが非破壊に適用されますが,元の画像を保持する必要が無いときにはmerge_filterを使って下さい.

Read more...