PocketCHIP : 2回目のLチカ

前回、「Lチカキター!」とは言ってみたものの、書いてある通りやってみただけなので、なにをしたのかをもう少し詳しく見てみます。

STEP 3で、必要なファイルのインストールをしていますね。

sudo ntpdate pool.ntp.org

時刻合わせですね。普段から自動で合ってる気がするので(設定はUTC標準時刻だけど)、必要ないかも?pool.ntp.org は、安定した時刻サーバを提供するプロジェクトです。
日本語の説明ページもあった。

sudo apt-get update
sudo apt-get install git build-essential python-dev python-pip -y

一覧を更新して、必要なアプリを取得。
・build-essential(開発に必要な物。make/gcc/g++/Cライブラリ・ヘッダ など)
・python-dev(Python実行に必要な物)
・python-pip(Pythonパッケージ管理システム)

git clone git://github.com/xtacocorex/CHIP_IO.git

ソースファイルをGitHubからダウンロード
CHIP IOは、CHIP用に作られたGPIOライブラリですね。

cd CHIP_IO
sudo python setup.py install

ダウンロード先のフォルダに移動して、Pythonで書かれたインストーラを起動。
*.dtsファイルから*.dtbo を作成、/lib/firmware/chip_io/ に入れる。
Cで書かれた外部モジュールをコンパイル

cd ..
sudo rm -rf CHIP_IO

インストール完了したら、取ってきたソースファイルは必要なくなるので削除。

うーん、/lib/firmware/chip_io/ あたりが関係してるってことが分かったぐらいであった…。

次に、Lチカスクリプトの blink.py も見てみる。

import CHIP_IO.GPIO as GPIO
import time
GPIO.cleanup()
GPIO.setup("XIO-P2", GPIO.OUT)
print "Toggling XIO-P1 10 times..."
for i in range(0,10):
  GPIO.output("XIO-P2", GPIO.LOW)
  time.sleep(0.1)
  GPIO.output("XIO-P2", GPIO.HIGH)
  time.sleep(0.1)
GPIO.cleanup()

CHIP_IO.GPIOと、sleepに使う time をインポート。
GPIOはcleanup(初期化?)後に、”XIO-P2″をアウトプットで設定。

その後、以下を10回繰り返す。

・XIO-P2に LOW を出力
・0.1秒待つ。
・XIO-P2に HIGH を出力
・0.1秒待つ

最後にcleanupして終了。

メッセージでは”XIO-P1″と書いてるのに実際に触っているのは”XIO-P2″?よくわからん…。
ドキュメントによれば、”XIO-P2″指定で”GPIO1″ に対応するらしい。メッセージコメントが”GPIO1″の間違いってことか。

最後、HIGH出力で終わっているということは、HIGHがLED消灯かな。


LED点滅回路のキットにはLEDが2個入ってたので、2つ繋げて確かめてみよう。

import CHIP_IO.GPIO as GPIO
import time
GPIO.cleanup()
GPIO.setup("XIO-P2", GPIO.OUT)
GPIO.setup("XIO-P3", GPIO.OUT)
print "Toggling GPIO-1 10 times..."
for i in range(0,10):
  GPIO.output("XIO-P2", GPIO.LOW)
  GPIO.output("XIO-P3", GPIO.HIGH)
  time.sleep(0.5)
  GPIO.output("XIO-P2", GPIO.HIGH)
  GPIO.output("XIO-P3", GPIO.LOW)
  time.sleep(0.5)
GPIO.output("XIO-P3", GPIO.HIGH)
GPIO.cleanup()

XIO-P3を追加。そして、片方が点灯している時は片方を消灯。最後にLOWになっている側には、HIGHをセット。待つ時間は0.5秒にしました。

配線もこのとおり。

LED_24

両側に LED + 抵抗を付けて「GPIO 1」と「GPIO 2」に接続。

これでどうかな?

想定通りでしたー。(こんなことやっていいのかわからんままにやっていますけども。)

非安定マルチバイブレータ回路を使わず、ニセの方法でLED点滅を実現させてしまった。サンハヤトのキットには申し訳ない気持ち。