Raspberry Pi 日記 (part2)
長嶋 洋一
2013年6月14日(金)
この日は2-3限に、4回生の「メディア造形総合演習」の中間進捗報告会があったが、それを挟んで1限と3限で、遂に「しゃみーず」のためのシステムの部分が完成してしまった(^_^)。 写真だけでなく、今後の活用のために、技術的な情報を全てまとめて、わざわざこのために、何もなく作っていた回路図も描いてスキャンした。 これである。そしてYouTube動画まで上げた後でまだ5限の時間が余っていたので、昨日到着した これ を開梱してみることにした。 以下のようにアッサリとした基板とコネクタだけだが、これによってRaspberry Piは現実世界と結びつく、まさに「Raspberry Pi物理コンピューティング」のインターフェースなのである。
まぁ、Raspberry Pi用の汎用インターフェース基板というだけでこの基板だけでは何もしないのだが、いきなりコネクタをはんだ付けする前に、せっかくなので このサイト のリンクをチェックする事にした。 とりあえずこの拡張基板は「Slice_Pi基板」と呼ぶことにしよう。
するとさっそく、ページの下の方の「Documentation」のところから、 Slice_Piマニュアル(PDF) をゲットしたので印刷した。 さらにリンクとして、以下ようなページがある事が判明した。
長期的な展望としては、Raspberry Piで物理コンピューティングをするのに、Pythonだけでプログラミングするつもりは無いが、とりあえずはPythonでやることになるのだろう、とここまで(山口往復の新幹線内とかで)Pythonを勉強してきたので、まさに絶好のタイミングである(^_^)。 とりあえず、今日はあと1時間ほどなので、上記の5つのリンク先をざっと眺めてメモとして残すことにした。 重要そうなところを後回しにしているので、順不動である。
- Build document
- Getting started with Raspberry Pi GPIO and Python
- Raspberry Pi GPIO Inputs in Python
- Uploading firmware from a Pi
- review of the board
Build document のページは、単に「Slice_Pi基板」のアップ写真が並び、あとは 回路図 が置かれているだけのPRページだった。 ちゃんとDIP間隔のユニバーサル基板パターンだけでなくて、XBeeの2mm間隔のパターンも載っているので、ここは「Raspberry PiでXBee」が超カンタンに実現できるのだ。
review of the board のページは、「Slice_Pi基板」にXBeeを載せて、ここからRaspberry PiのファームウェアをWiFiでアップロードする、という流れを紹介していた。 しかし、既に研究室のRaspberry Piは固定IPアドレスを割り振り、VNC経由で自在にファームウェアを吸い上げることも出来るので、ここでの記事で参考になるとすれば、XBeeとのやりとり部分ぐらいになるだろう。
review of the board のページはこのメーカのWebではなくて、Raspberry Piの拡張基板のいろいろを紹介しているプログであり、その最初の例として「Slice_Pi基板」が挙げられている、というだけである。 以下の写真でコネクタの取り付け方向が判る、という以外にメリットは無いので、今後ここをアクセスする事は無いだろう。
そして残りの2つのWebページは重要である。 Getting started with Raspberry Pi GPIO and Python ではまず、「Installing RPi.GPIO」で、「apt-get」でなく、Unixのtar.gzファイルをゲットして、これを解凍して、「sudo python setup.py install」ということでPythonで記述されたセットアッププログラムでRPi.GPIOがインストールできるらしい。 これはなかなか楽しそうである。(^_^)
Raspberry Pi GPIO Inputs in Python のページはその続きのようで、PythonでLEDを点滅させ、入力について解説して、入出力のPythonサンプルまで行くようである。 しかし、既にPythonを見慣れているので(まだ全くプログラミングしていないが(^_^;))、最後にあった以下のプログラムはとても良く読める。 この程度のプログラムではまだ何も出来ないのだが、入口としてはこれでほぼ完備、ということのようだ。
この週末は、明日はいよいよ「40虎」(オープンキャンパスに向けた新入生プロジェクト)の勉強会「SUAC探検」などがあり、晩にもお楽しみの予定があるので進めないが、来週から、ぼちぼちRaspberry Piに戻ることにしよう。#!/usr/bin/env python from time import sleep # get the GPIO Library import RPi.GPIO as GPIO # setup some names references to the LED's and buttons # red = pin 18 # yellow = pin 16 # green = pin 15 # blue = pin 13 # using an list to hold the led numbers leds = [13, 15, 16, 18] # the input buttons up = 12 down = 11 # setup the pins as output and input as needed # looping over the list for n in leds: GPIO.setup(n, GPIO.OUT) GPIO.setup(up, GPIO.IN) GPIO.setup(down, GPIO.IN) # turn off all but the blue LED GPIO.output(leds[3], True) GPIO.output(leds[2], True) GPIO.output(leds[1], True) GPIO.output(leds[0], False) #state trackers level = 0 oldlevel = level while 1: if GPIO.input(up): #up button pressed if level < 3: level += 1 elif GPIO.input(down): #down button pressed if level > 0: level -= 1 if oldlevel != level: # turn off last led and turn on next one GPIO.output(leds[oldlevel], True) GPIO.output(leds[level], False) # update state tracker oldlevel = level # sleep for a bit so button press is counted only once sleep(1)
「Raspberry Pi日記」トップに戻る