Raspberry Pi 日記 (part2)
長嶋 洋一
2013年6月25日(火)
このところ早起きが快調に続いている。 昨日も今日も、朝06:15にはもう研究室で仕事開始である。 1限に「サウンドデザイン」が、4-5限に「企画立案演習」があるが、Raspberry Pi関係でもやりたい事がどんどん浮かんできて、来月に迫ったSketchingを前に、いよいよ佳境なのである(^_^)。 まずは朝イチで、以下のように、Raspberry PiのGPIOコネクタ上に空中配線していた15個のLEDの根元を、接触とか断線とかしないように、硬化型の充填接着剤で固めた。
その裏で同時に、実験してきた63号機のRaspberry PiのSDカードイメージの現状バージョンを「Blink_IP_63.img」として吸い出し、61号機と62号機のSDカードに書き出して、いったん単体のIPアドレス「63」となったものをVNCからそれぞれの固定IPに変更する、という作業も進めた。 これに先立って、どうやら「枯れていない」というPythonでのBlink(1)制御はとりあえず見捨てて(^_^;)、コマンドラインからのツール「blink1-tool」でも、モニタ出力をnullにリダイレクトすれば十分なことを、以下のように確認した。
そして、GPIOポートの実験のために63号機のSDカードを挿して実験してきたRaspberry Piから、以下のように、また3枚タンデムのRaspberry Piシステムに戻した。 この状態で、しばらくはプログラミングを行うことになる。Last login: Tue Jun 25 06:15:12 on console nagasm-Mac-mini:~ nagasm$ ls Desktop Downloads Movies Pictures Sites Documents Library Music Public nagasm-Mac-mini:~ nagasm$ cd Desktop nagasm-Mac-mini:Desktop nagasm$ ssh pi@172.16.65.63 pi@172.16.65.63's password: Linux raspberrypi 3.6.11+ #456 PREEMPT Mon May 20 17:42:15 BST 2013 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Jun 22 05:30:39 2013 pi@raspberrypi ~ $ ls Desktop blink1-ctypes.py mess2.txt pyusb-1.0.0a3 RPi.GPIO-0.1.0 blink1-tool ocr_pi.png test.c a.out blink1.git python_games test.py bliPy.py blink1hid-demo.py pyusb-1.0.0-a1 twilight.png pi@raspberrypi ~ $ rm mess2.txt pi@raspberrypi ~ $ ls Desktop bliPy.py blink1.git python_games test.c RPi.GPIO-0.1.0 blink1-ctypes.py blink1hid-demo.py pyusb-1.0.0-a1 test.py a.out blink1-tool ocr_pi.png pyusb-1.0.0a3 twilight.png pi@raspberrypi ~ $ ls *.py bliPy.py blink1-ctypes.py blink1hid-demo.py test.py pi@raspberrypi ~ $ rm *.py pi@raspberrypi ~ $ ls Desktop a.out blink1.git python_games pyusb-1.0.0a3 twilight.png RPi.GPIO-0.1.0 blink1-tool ocr_pi.png pyusb-1.0.0-a1 test.c pi@raspberrypi ~ $ sudo ./blink1-tool -t 2000 --random 100 random 100 times: 0: 0/1 : f4,4b,4b 1: 0/1 : 10,e3,9a 2: 0/1 : f5,af,be 3: 0/1 : 36,1e,7c 4: 0/1 : c5,dd,a5 5: 0/1 : f3,e5,19 6: 0/1 : a3,f5,bb 7: 0/1 : d2,45,24 ^Z [1]+ 停止 sudo ./blink1-tool -t 2000 --random 100 pi@raspberrypi ~ $ sudo ./blink1-tool -t 2000 --random 10 > null pi@raspberrypi ~ $ ls Desktop a.out blink1.git ocr_pi.png pyusb-1.0.0-a1 test.c RPi.GPIO-0.1.0 blink1-tool null python_games pyusb-1.0.0a3 twilight.png pi@raspberrypi ~ $ sudo halt Broadcast message from root@raspberrypi (pts/0) (Sat Jun 22 05:37:37 2013): The system is going down for system halt NOW! pi@raspberrypi ~ $ Connection to 172.16.65.63 closed by remote host. Connection to 172.16.65.63 closed. nagasm-Mac-mini:Desktop nagasm$
そして、ここで3枚のRaspberry Piに、「起動時にBlink(1)を自動ランダム点灯させるプログラムを仕込む」という作業にとりかかった。 まずは以下のような、「1000msecごとにランダムな色でBlink(1)を100回発光させる」というblink1-toolのコマンドを無限ループで呼び出す、という超カンタンなCブログラム「test.c」を作った。
これをRaspberry Piに転送して、「cc test.c -o blink_autorun」としてカレントディレクトリに置いた。 この「./blink_autorun」が動くことを確認して、次に6月3日に行った手順に従って、以下のように続けた。#include <stdio.h> int main() { while (1) { system("./blink1-tool -t 1000 --random 100 > null"); } }ちなみに、せっかくなので61号機では1000msecだった変化間隔を、62号機では800msecに、63号機では700msecにしてみた(^_^;)。 これでそれぞれを再起動すると、以下のように見事に、3台のRaspberry Piがカラフルな自動発光をするようになった。 なお、このプロセスを止めるには「ps ax」してPIDを捜して、例えばPIDが2201であれば「kill -9 2201」で止まる。 これを改めて起動したい場合には「./blink_autorun」とするとコマンドラインに戻らないので、「./blink_autorun &」とすれば、バックグラウントで起動するのでコマンドラインに戻る。
- (Macのターミナルからsshでログインしたまま)
- 「nano /.profile」として設定ファイルを開く
- いちばん下にある以下の3行の部分
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
tightvncserver
fi- に1行加えて以下のようにする
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
tightvncserver
./blink_autorun
fi- [ctrl+O]で書き出す
- [ctrl+X]で終了
YouTube ここまで出来たところで、昨日はちゃんと実行できていた最後のCブログラムを転送・コンパイル・実行させてみると、何故か15個のLEDが全て沈黙した(^_^;)。 朝イチの接着剤が問題か・・・と思ったが、昨日の C言語でシェルコマンドを実行するプログラム は、ちゃんと転送・コンパイル・実行がOK(LEDは全てきちんと点滅)、ということで、ハードの問題ではなさそうである。 今日はC言語であれこれLED点灯に芸をさせよう・・・と思っていたのに、出鼻をくじかれた(^_^;)。
またroot権限かと、sudoを入れたり、「sudo chown root ./a.out」「sudo chmod 4755 ./a.out」などとやっても駄目である。 昨日、実行できたRaspberry Piに戻したり、61号機・62号機・63号機のハードとSDカードを交換しても現象は同じで、シェルプログラムはOK、シェルコマンドを送るC言語プログラムもOK、ただしC言語でGPIOデバイスドライバを叩くもの(昨日はOKでちゃんと走って点滅)だけが、全て駄目だった。 午後の合間にあれこれ悩んだが解決せず、悩んでいるうちにこの日が終わった。(^_^;)
「Raspberry Pi日記」トップに戻る