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にリダイレクトすれば十分なことを、以下のように確認した。

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$ 
そして、GPIOポートの実験のために63号機のSDカードを挿して実験してきたRaspberry Piから、以下のように、また3枚タンデムのRaspberry Piシステムに戻した。 この状態で、しばらくはプログラミングを行うことになる。

そして、ここで3枚のRaspberry Piに、「起動時にBlink(1)を自動ランダム点灯させるプログラムを仕込む」という作業にとりかかった。 まずは以下のような、「1000msecごとにランダムな色でBlink(1)を100回発光させる」というblink1-toolのコマンドを無限ループで呼び出す、という超カンタンなCブログラム「test.c」を作った。

#include <stdio.h>

int main()
{
	while (1) {
    		system("./blink1-tool -t 1000 --random 100 > null");
     	}
}
これをRaspberry Piに転送して、「cc test.c -o blink_autorun」としてカレントディレクトリに置いた。 この「./blink_autorun」が動くことを確認して、次に6月3日に行った手順に従って、以下のように続けた。 ちなみに、せっかくなので61号機では1000msecだった変化間隔を、62号機では800msecに、63号機では700msecにしてみた(^_^;)。 これでそれぞれを再起動すると、以下のように見事に、3台のRaspberry Piがカラフルな自動発光をするようになった。 なお、このプロセスを止めるには「ps ax」してPIDを捜して、例えばPIDが2201であれば「kill -9 2201」で止まる。 これを改めて起動したい場合には「./blink_autorun」とするとコマンドラインに戻らないので、「./blink_autorun &」とすれば、バックグラウントで起動するのでコマンドラインに戻る。

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日記」トップに戻る