今回のガラクタは、前回に引き続き Windows for IoT with Galileo です。Windows for IoT の良いところは、やはり、Visual Studio で Windows (のコンソール)アプリとして、開発・デバッグが出来るところではないかと思います。ただ、Realtime OS や Arduino のようなOSなしマイコン直接操作 みたいのに比べるとリアルタイム性は無いので、そういった必要性があるところには使えません。逆に言うと、じゃあ、どんなところに使えるんだ?って話で、Raspberry Pi を使うようなネットワークやら、計算・画像処理なんかの重めのところをやらせるのがいいんじゃないでしょうか?まあ、自分の中では、その手の用途は Raspberry Pi + Arduino (Micro) のコンビがデフォルトになっているわけですが、今回は、Windows for IoT で遊ぶということで、Galileo で WinSock (Socket) 通信を試してみようと思います。
基本的には、こちらにあるサンプルの流用となりますが、Galileo側で WinSock Server プログラムを動かして、Windows PC からWinSock Client プログラムで接続して、文字を送信、Galileo 側が受信文字によってAnalogRead()の値をClient側に返すというシンプルなものです。また、ついでに、前回のLCDシールドも使って、応答文字列をLCDにも表示しています。
今回は GroveシールドとLCDシールドをスタックしています。Grove も DigitalWrite() や DigitalRead() などで使える簡単なものは動きますが、超音波距離センサを使おうと思ったところ pulseIn()関数が使えないようでした。
PCのクライアントソフトで接続して、x とか y とか送信すると、AnalogRead() でジョイスティックの値を読み込んで、LCDに表示しつつ、クライアント側に応答送信します。
Galileo側の WinSock Server のソースはこちら、PC側のテスト用クライアントのソースはこちら にあります。
一応、Galileo側のコードだけ以下に掲載。
2015年2月16日月曜日
2015年2月7日土曜日
Raspberry Pi 2 が届きました。 & Galileo で Windows for IoT 。
今回のガラクタは、先日発表された Raspberry Pi 2 Type B です。お値段据え置きでパフォーマンス6倍らしいです。
外観、IOのレイアウトは Raspberry Pi B+ を踏襲しています。
パフォーマンスが6倍になっているかはわかりませんが、体感速度はかなり向上しています。従来モデルでは、Chromiusを立ち上げるとしばらくCPUが100%に張り付いて戻ってこなかったのが、Chromiusと同時に複数アプリを起動しても以前よりレスポンスがいいです。
これは、やはり、CPUの4コア化とメモリの倍増が効いていますね。
Raspberry Pi の公式サイトに 他プラットフォーム との比較表が掲載されていました。
色々と使い道が広がりそう、特にOpenCVなんかは、色抽出とか顔検出とか、今まで処理的にきつかったのが、今後は期待できるんじゃないでしょうか。そのうち、試してみたいところです。ちなみに OpenCVのソースからのビルドを行ったところ、3時間くらいで終わりました。B、B+では半日(寝る前にmakeして、朝まで放置させて6~8時間かかっていたんじゃないでしょうか?)
また、Raspberry Pi 2 に対しては、Microsoft が Windows 10 (Windows IoT) for Raspberry Pi 2 の対応を発表しています。Windows for IoT は、通常の Windows のようなGUIベースのデスクトップOSではなく、コマンドラインベースの組み込み向けOSです。今回(今年後半予定)のRaspberry Pi 2用のWindows for IoT がどのようなもの(GUI付き?)になるかわかりませんが、現状、Galileo に提供されている Windows for IoT を考えると、Visual Studio で組み込み開発ができるOSというイメージではないかという想像でいます。
と、いうわけで、Raspberry Pi 2 → Windows for IoT という話の流れで、以前に入手して、使い道がなく 活用できずに、ホコリをかぶっていた Galileo を引っ張り出してきて、Windows for IoT のお試しをしてみることにしました。
Galileo 用の Windows for IoT のセットアップに関しては、 こちら(KEI SAKAKI'S PAGE) を参考にさせていただきました。Windows Developer Program for IoTへの登録とツールやイメージのダウンロード、Visual Studio 2013 (Express や Communities でもOKなはず) の開発環境が必要になります。
各種準備やセットアップに関しては公式サイトにもありますが、先のこちら(KEI SAKAKI's PAGE さん) が日本語かつ画面入りの丁寧な説明を掲載されているので、こちら を参考にする方が良いです。感謝です。
また、色々試してみた後に見つけたものですが、Microsoftの中の人っぽい方が説明資料を公開してくれています。
上記の2つの日本語サイトの情報を見てもわかるのですが、基本的にはArduinoベースのプログラミングがC++でできます。だったら、Arduinoでいいじゃん・・・っていう話ですが、(Galileoを使うにしたって、元のGalileoのままでArduino IDE使えるし)、しかし、なんと、Visual Studioで開発ができます・・・って、どうでもいいですか?Visual Studio大好きっ子(子じゃねぇし、ジジィだし・・・)の自分としては、結構うれしいし、ただ、Visual Studioでコードが入力出来るだけではありません。通常のVisual Studioで行うWindowsプログラミング(コンソールプログラミングかな?どちらかというと)同様にブレークポイントを設定して、ステップ実行&デバッグができます。これは、嬉しい!Arduino IDEも嫌いじゃないですが、やっぱり、Visual Studioが好き。Raspberry Pi のプログラミングもわざわざお金払ってVisualGDBっていうVisual StudioからRaspberry PiのGDBにリモートデバッグできる有償プラグイン買ったりして、Visual Studio使ってるし。
で、まずは、Windows for IoT をセットアップした Galileo に試しに Telnet 接続してみます。SSHじゃないところが気になりますが、もともとWindowsなのでtelnetサービス(しか)が標準で装備されている(通常のOS利用ではサービスが停めてあるはずですが)ので、Telnet ということなんでしょう。ユーザ:administrator、パスワードはイメージ作成時に指定したパスワードで接続すると、見慣れたコマンドプロンプトが C:\Windows\Sytem32\ みたいに表示されるので、ああ、Windowsなんだなって思います。
実際にはtelnet接続は何かの設定を行う以外は、プログラムを動かす上ではあまり関係なく、開発を行うには、Visual Studio で C++→Windows for IoTプロジェクトを作成して、デバッグの構成で、デバッグ対象のGalileoをネットワーク名かまたはIPアドレスで指定して、Visual Studioから接続できるようにしておきます。
今回は、公式サイトにあったLCDへの表示のプロジェクトを参考に、スイッチサイエンスさんでずっと前に入手したPrototyping Labという書籍に出てくるLCD Shieldの配線に合わせてコードを少し変えたものを作成してみました。
上の写真は「Hello,WinIoT!」を表示した後、1行毎に2行目の数字をカウントアップするスケッチを動かして、途中でブレークポイントを設定して、一時停止させたところです。メインのソースは以下の様な感じ。プロジェクトはこちらにあります。
外観、IOのレイアウトは Raspberry Pi B+ を踏襲しています。
パフォーマンスが6倍になっているかはわかりませんが、体感速度はかなり向上しています。従来モデルでは、Chromiusを立ち上げるとしばらくCPUが100%に張り付いて戻ってこなかったのが、Chromiusと同時に複数アプリを起動しても以前よりレスポンスがいいです。
これは、やはり、CPUの4コア化とメモリの倍増が効いていますね。
Raspberry Pi の公式サイトに 他プラットフォーム との比較表が掲載されていました。
色々と使い道が広がりそう、特にOpenCVなんかは、色抽出とか顔検出とか、今まで処理的にきつかったのが、今後は期待できるんじゃないでしょうか。そのうち、試してみたいところです。ちなみに OpenCVのソースからのビルドを行ったところ、3時間くらいで終わりました。B、B+では半日(寝る前にmakeして、朝まで放置させて6~8時間かかっていたんじゃないでしょうか?)
また、Raspberry Pi 2 に対しては、Microsoft が Windows 10 (Windows IoT) for Raspberry Pi 2 の対応を発表しています。Windows for IoT は、通常の Windows のようなGUIベースのデスクトップOSではなく、コマンドラインベースの組み込み向けOSです。今回(今年後半予定)のRaspberry Pi 2用のWindows for IoT がどのようなもの(GUI付き?)になるかわかりませんが、現状、Galileo に提供されている Windows for IoT を考えると、Visual Studio で組み込み開発ができるOSというイメージではないかという想像でいます。
と、いうわけで、Raspberry Pi 2 → Windows for IoT という話の流れで、以前に入手して、
Galileo 用の Windows for IoT のセットアップに関しては、 こちら(KEI SAKAKI'S PAGE) を参考にさせていただきました。Windows Developer Program for IoTへの登録とツールやイメージのダウンロード、Visual Studio 2013 (Express や Communities でもOKなはず) の開発環境が必要になります。
各種準備やセットアップに関しては公式サイトにもありますが、先のこちら(KEI SAKAKI's PAGE さん) が日本語かつ画面入りの丁寧な説明を掲載されているので、こちら を参考にする方が良いです。感謝です。
また、色々試してみた後に見つけたものですが、Microsoftの中の人っぽい方が説明資料を公開してくれています。
上記の2つの日本語サイトの情報を見てもわかるのですが、基本的にはArduinoベースのプログラミングがC++でできます。だったら、Arduinoでいいじゃん・・・っていう話ですが、(Galileoを使うにしたって、元のGalileoのままでArduino IDE使えるし)、しかし、なんと、Visual Studioで開発ができます・・・って、どうでもいいですか?Visual Studio大好きっ子(子じゃねぇし、ジジィだし・・・)の自分としては、結構うれしいし、ただ、Visual Studioでコードが入力出来るだけではありません。通常のVisual Studioで行うWindowsプログラミング(コンソールプログラミングかな?どちらかというと)同様にブレークポイントを設定して、ステップ実行&デバッグができます。これは、嬉しい!Arduino IDEも嫌いじゃないですが、やっぱり、Visual Studioが好き。Raspberry Pi のプログラミングもわざわざお金払ってVisualGDBっていうVisual StudioからRaspberry PiのGDBにリモートデバッグできる有償プラグイン買ったりして、Visual Studio使ってるし。
で、まずは、Windows for IoT をセットアップした Galileo に試しに Telnet 接続してみます。SSHじゃないところが気になりますが、もともとWindowsなのでtelnetサービス(しか)が標準で装備されている(通常のOS利用ではサービスが停めてあるはずですが)ので、Telnet ということなんでしょう。ユーザ:administrator、パスワードはイメージ作成時に指定したパスワードで接続すると、見慣れたコマンドプロンプトが C:\Windows\Sytem32\ みたいに表示されるので、ああ、Windowsなんだなって思います。
実際にはtelnet接続は何かの設定を行う以外は、プログラムを動かす上ではあまり関係なく、開発を行うには、Visual Studio で C++→Windows for IoTプロジェクトを作成して、デバッグの構成で、デバッグ対象のGalileoをネットワーク名かまたはIPアドレスで指定して、Visual Studioから接続できるようにしておきます。
今回は、公式サイトにあったLCDへの表示のプロジェクトを参考に、スイッチサイエンスさんでずっと前に入手したPrototyping Labという書籍に出てくるLCD Shieldの配線に合わせてコードを少し変えたものを作成してみました。
上の写真は「Hello,WinIoT!」を表示した後、1行毎に2行目の数字をカウントアップするスケッチを動かして、途中でブレークポイントを設定して、一時停止させたところです。メインのソースは以下の様な感じ。プロジェクトはこちらにあります。
2014年1月30日木曜日
Intel Galileo お試し。
スイッチサイエンスさんでIntel Galileoボードの在庫が復活していたので、遊びでいじってみることにしました。とりあえず、ポチッと購入したものの、使い道は全く考えていません。というか、Galileoボードに関しては、「冷やかしでボード自体をちょっといじってみる」くらいしか用途が思いつきません。Linuxで電子工作的なことをやるなら、ハードウェア制御が余り入らなければ、Raspberry Piで、よりハードウェアな制御が欲し(くてLinuxも画像処理やネットワークで使いたい)い場合は、BeagleBone BlackとかRaspberry Pi + Arduino のコンビが自分としては今のところベストソリューションな感じです。
しかし、世間(といってもかなり狭い人々の間の世界ですが・・・)で話題になっている以上、色物として触っておかないわけには行きません。(なんでさ?)
一応、正規のArduinoの一種ですし、HDMIやサウンド入出力がないところからすると、Raspberry PiやBeagleBoneと言うよりは、「超速っのArduino」っていう部分を狙っているんだろうなぁ?という気はするので、もしかすると、RPiとBBBとの使い分けもできるかもしれません。
まずは、Galileo用のArduino IDEをここからDownloadして、展開します。インストールは必要なく、展開してArduino.exeを起動するだけですが、ネットで見た感じだと、フォルダの長さ(階層の深さ)や間にスペースの入ったパス等が問題になるようなので、C:\の直下などに展開しておいたほうが無難なようです。
で、早速、GalileoボードをACアダプタで起動(ACアダプタより先にUSBコネクタを接続すると壊れるかもってさ!Arduinoとかの代わりにホビーMakerを意識しているボードとは思えないんだけど・・・)して、USBに接続しようとした所、USB CllientのコネクタにマイクロUSBコネクタがささりません。よく見ると、コネクタが潰れてる・・・。化粧箱や運送されてきた箱は綺麗だったので、ボード自体の不良です・・・。まったく・・・。今まで、色々なマイコンボードを沢山購入して、使いましたが、こんな、潰れたUSBコネクタがくっついたのが検品通って出荷されるとか、初めてです。Galileoボードのクオリティの低さっていうか・・・そもそも製品としてダメダメなんじゃないの?感がなんだか心配になってきます・・・。
送り返して交換してもらえばいいのですが、悪いのはIntelでスイッチサイエンスさんには非はないですし、なによりも、面倒なので、ラジペンで潰れたUSBコネクタを無理やりこじ開けます。
バキメキゴキボキっガリゴリッ!!
まったく、めんどくさいボードです。で、無理やりUSBコネクタをねじ込んで、電源を入れてもPC側から認識されません。おかしいな?こじり過ぎて、USBコネクタのハンダが剥がれちゃったかな?と色々チェックしていると1分くらいしてから、やっと、「新しいハードウェア・・・、ドライバを・・・」となりました。Galieo側が起動しないとPC(Windowsマシンです)からも認識されないようです。で、ドライバはそのままでは入りません。まあ、これはArduinoでもモデルによってはそうなので、(Galileo専用の)Arduino IDEをダウンロードして解凍しておいたフォルダの「driver」フォルダを指定してドライバーをインストール・・・しようとすると「見つかりません」って言われます。なんでよ?ネットで先人の知恵を借りると、どうも、ドライバは「Arduino(IDEのルートフォルダ)\hardware\arduino\x86\tools」フォルダにある「linux-cdc-acm.inf」のinfoファイルを選択してインストールするらしい。driverフォルダにGalileoってフォルダ作って入れておいてよ・・・。
もうダメ、ここまでで既にテンションが半分くらいに下がって来てる。
デバイスマネージャで見ると「Gadget Serial v2.4」のように見えます。
右クリックして、ドライバの更新で、
手動でインストールするを選択して、
「Arduino(IDEのルートフォルダ)\hardware\arduino\x86\tools」フォルダを指定します。
「Galileo」が見つかるので、選択して、インストールします。
ドライバがインストールされれば、COMポートとして認識されるはずです。
(専用)Arduino IDE のCOMポートを該当のポートに設定しておきます。
さて、出回り始めて、まもないGalileoですが、Firmwareは既に何回かUpdateされているようなので、アップデートをはじめに行っておきます。「ヘルプ」→「Firmware Update」で開始されます。
アップデートは数分かかります。こんな画面が表示されます。
で、とりあえず、アップデートを終えて、改めて、LAN、ACアダプタをつないで、USBコネクタを接続。1分くらいしてPC側にCOMポートが認識されたところで、まずは、Hello,World!!代わりの定番、Lチカ。サンプルプログラム 「ファイル」→「スケッチの例」→「01Basics」→「Blink」を開いて、COMポートが正しく選択されているのを確認して、書込「→」ボタンを押し、虫眼鏡の「シリアルモニタ」ボタンを押してシリアルコンソールを開くとプログラムが実行されて、ボード上(バッテリ用2Pコネクタの近く)のLEDが点滅しました。
次に、以下の様なスケッチを実行。以下のスケッチは、たとえばこれとか、ネットワーク接続の方法やIPアドレスを調べる方法をGoogle先生に質問すると色々見つかるものを簡素化したものです。
IPアドレスが分かれば、SSHDが動いているのでSSHログインできます。ログインは root / パスワード無し で可能です。
ちなみに、Galileo はmicroSDカードスロットがあり、Arduino側からArduino風にmicroSDとして使う他に、こちらから Linux For SD Image をダウンロードして、microSDからの起動も可能です。自分はこちらを使うことにしました。ダウンロードした圧縮ファイルから解凍されたファイル群をFAT32でフォーマットしたmicroSDカードのルートに配置して、カードスロットに挿して電源を入れるだけでOKです。
この辺りまで、ゴニョゴニョとやったところで、こちらのサイトを発見。「ひとりぶろぐ - Intelのx86 CPU搭載「インテルGalileo開発ボード」をMacで試してみた」が参考になります。
それでは、GalileoのLinux部分を触ってみたいと思います。前述のサイトと合わせて、こちらのサイトの情報がピン情報などのリファレンスとして非常に有用です。
ボード上のLEDを光らせてみます。sketchのバイナリファイルがあるとLinux上からの直接IO操作の妨げになる(sketch用のデーモンがIOを掴んでいる)らしいので、/sketch/ 以下にあるファイルを全て rm * してしまい、一旦再起動をかけます。ボード上のLEDはGPIO3につながっているので、
こんな感じで操作すると、
echo -n "3" > /sys/class/gpio/export
echo -n "out" > /sys/class/gpio/gpio3/direction → 入出力方向
echo -n "1" > /sys/class/gpio/gpio3/value → 点灯
echo -n "0" > /sys/class/gpio/gpio3/value → 消灯
echo -n "3" > /sys/class/gpio/unexport → 解放
ボード上のLEDの点灯・消灯が確認できます。
次に、上記のコマンドライン操作をpythonのSimpleHTTPServerを使って、ブラウザ上から操作するというのを試します。これは、ひとりぶろぐさんのサンプルをそのままボードのLEDに置き換えたものです。(感謝)
以下、 HelloGalileoLED.py として /home/root/下に配置。
ブラウザ表示用のHTMLファイルを on.html として /home/root/下に配置。
同様にHTMLファイルを off.html として /home/root/下に配置。
/home/root/ で
python ./HelloGalileoLED.py
として起動します。PCのブラウザから
http:// GalileoのIPアドレス /on → LED点灯
http:// GalileoのIPアドレス /off → LED消灯
の動作が確認できるはずです。起動したコンソールでCntl+Cでプログラムを停止できますが、gpioの開放処理を入れていないので、手動で
echo -n "3" > /sys/class/gpio/unexport → 解放
する必要があります。
とりあえず、今回はここら辺まで。気が向いたらArduino用シールドやセンサを試してみたいと思います。今回はじめていじってみた感想としては、「ラジペンがないとはじめられないようじゃ、Arduinoの手軽さはないなぁ」というところでしょうか。
しかし、世間(といってもかなり狭い人々の間の世界ですが・・・)で話題になっている以上、色物として触っておかないわけには行きません。(なんでさ?)
一応、正規のArduinoの一種ですし、HDMIやサウンド入出力がないところからすると、Raspberry PiやBeagleBoneと言うよりは、「超速っのArduino」っていう部分を狙っているんだろうなぁ?という気はするので、もしかすると、RPiとBBBとの使い分けもできるかもしれません。
まずは、Galileo用のArduino IDEをここからDownloadして、展開します。インストールは必要なく、展開してArduino.exeを起動するだけですが、ネットで見た感じだと、フォルダの長さ(階層の深さ)や間にスペースの入ったパス等が問題になるようなので、C:\の直下などに展開しておいたほうが無難なようです。
で、早速、GalileoボードをACアダプタで起動(ACアダプタより先にUSBコネクタを接続すると壊れるかもってさ!Arduinoとかの代わりにホビーMakerを意識しているボードとは思えないんだけど・・・)して、USBに接続しようとした所、USB CllientのコネクタにマイクロUSBコネクタがささりません。よく見ると、コネクタが潰れてる・・・。化粧箱や運送されてきた箱は綺麗だったので、ボード自体の不良です・・・。まったく・・・。今まで、色々なマイコンボードを沢山購入して、使いましたが、こんな、潰れたUSBコネクタがくっついたのが検品通って出荷されるとか、初めてです。Galileoボードのクオリティの低さっていうか・・・そもそも製品としてダメダメなんじゃないの?感がなんだか心配になってきます・・・。
送り返して交換してもらえばいいのですが、悪いのはIntelでスイッチサイエンスさんには非はないですし、なによりも、面倒なので、ラジペンで潰れたUSBコネクタを無理やりこじ開けます。
バキメキゴキボキっガリゴリッ!!
まったく、めんどくさいボードです。で、無理やりUSBコネクタをねじ込んで、電源を入れてもPC側から認識されません。おかしいな?こじり過ぎて、USBコネクタのハンダが剥がれちゃったかな?と色々チェックしていると1分くらいしてから、やっと、「新しいハードウェア・・・、ドライバを・・・」となりました。Galieo側が起動しないとPC(Windowsマシンです)からも認識されないようです。で、ドライバはそのままでは入りません。まあ、これはArduinoでもモデルによってはそうなので、(Galileo専用の)Arduino IDEをダウンロードして解凍しておいたフォルダの「driver」フォルダを指定してドライバーをインストール・・・しようとすると「見つかりません」って言われます。なんでよ?ネットで先人の知恵を借りると、どうも、ドライバは「Arduino(IDEのルートフォルダ)\hardware\arduino\x86\tools」フォルダにある「linux-cdc-acm.inf」のinfoファイルを選択してインストールするらしい。driverフォルダにGalileoってフォルダ作って入れておいてよ・・・。
もうダメ、ここまでで既にテンションが半分くらいに下がって来てる。
デバイスマネージャで見ると「Gadget Serial v2.4」のように見えます。
右クリックして、ドライバの更新で、
手動でインストールするを選択して、
「Arduino(IDEのルートフォルダ)\hardware\arduino\x86\tools」フォルダを指定します。
「Galileo」が見つかるので、選択して、インストールします。
ドライバがインストールされれば、COMポートとして認識されるはずです。
(専用)Arduino IDE のCOMポートを該当のポートに設定しておきます。
さて、出回り始めて、まもないGalileoですが、Firmwareは既に何回かUpdateされているようなので、アップデートをはじめに行っておきます。「ヘルプ」→「Firmware Update」で開始されます。
アップデートは数分かかります。こんな画面が表示されます。
で、とりあえず、アップデートを終えて、改めて、LAN、ACアダプタをつないで、USBコネクタを接続。1分くらいしてPC側にCOMポートが認識されたところで、まずは、Hello,World!!代わりの定番、Lチカ。サンプルプログラム 「ファイル」→「スケッチの例」→「01Basics」→「Blink」を開いて、COMポートが正しく選択されているのを確認して、書込「→」ボタンを押し、虫眼鏡の「シリアルモニタ」ボタンを押してシリアルコンソールを開くとプログラムが実行されて、ボード上(バッテリ用2Pコネクタの近く)のLEDが点滅しました。
次に、以下の様なスケッチを実行。以下のスケッチは、たとえばこれとか、ネットワーク接続の方法やIPアドレスを調べる方法をGoogle先生に質問すると色々見つかるものを簡素化したものです。
IPアドレスが分かれば、SSHDが動いているのでSSHログインできます。ログインは root / パスワード無し で可能です。
ちなみに、Galileo はmicroSDカードスロットがあり、Arduino側からArduino風にmicroSDとして使う他に、こちらから Linux For SD Image をダウンロードして、microSDからの起動も可能です。自分はこちらを使うことにしました。ダウンロードした圧縮ファイルから解凍されたファイル群をFAT32でフォーマットしたmicroSDカードのルートに配置して、カードスロットに挿して電源を入れるだけでOKです。
この辺りまで、ゴニョゴニョとやったところで、こちらのサイトを発見。「ひとりぶろぐ - Intelのx86 CPU搭載「インテルGalileo開発ボード」をMacで試してみた」が参考になります。
それでは、GalileoのLinux部分を触ってみたいと思います。前述のサイトと合わせて、こちらのサイトの情報がピン情報などのリファレンスとして非常に有用です。
ボード上のLEDを光らせてみます。sketchのバイナリファイルがあるとLinux上からの直接IO操作の妨げになる(sketch用のデーモンがIOを掴んでいる)らしいので、/sketch/ 以下にあるファイルを全て rm * してしまい、一旦再起動をかけます。ボード上のLEDはGPIO3につながっているので、
(上図はこちらのものを頂いています。)
こんな感じで操作すると、
echo -n "3" > /sys/class/gpio/export
echo -n "out" > /sys/class/gpio/gpio3/direction → 入出力方向
echo -n "1" > /sys/class/gpio/gpio3/value → 点灯
echo -n "0" > /sys/class/gpio/gpio3/value → 消灯
echo -n "3" > /sys/class/gpio/unexport → 解放
ボード上のLEDの点灯・消灯が確認できます。
次に、上記のコマンドライン操作をpythonのSimpleHTTPServerを使って、ブラウザ上から操作するというのを試します。これは、ひとりぶろぐさんのサンプルをそのままボードのLEDに置き換えたものです。(感謝)
以下、 HelloGalileoLED.py として /home/root/下に配置。
#!/usr/bin/env python
import SimpleHTTPServer
import SocketServer
import os
os.system('/bin/echo -n "3" > /sys/class/gpio/export')
os.system('/bin/echo -n "out" > /sys/class/gpio/gpio3/direction')
os.system('/bin/echo -n "0" > /sys/class/gpio/gpio3/value')
class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/on':
os.system('/bin/echo -n "1" > /sys/class/gpio/gpio3/value')
self.path = '/on.html'
if self.path == '/off':
os.system('/bin/echo -n "0" > /sys/class/gpio/gpio3/value')
self.path = '/off.html'
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
Handler = MyRequestHandler
server = SocketServer.TCPServer(('0.0.0.0', 8080), Handler)
server.serve_forever()
ブラウザ表示用のHTMLファイルを on.html として /home/root/下に配置。
<html>
<head><title></title></head>
<body>
<h1>ON
</h1>
</body>
</html>
同様にHTMLファイルを off.html として /home/root/下に配置。
<html> <head><title></title></head> <body> <h1>OFF</h1> </body> </html>
/home/root/ で
python ./HelloGalileoLED.py
として起動します。PCのブラウザから
http:// GalileoのIPアドレス /on → LED点灯
http:// GalileoのIPアドレス /off → LED消灯
の動作が確認できるはずです。起動したコンソールでCntl+Cでプログラムを停止できますが、gpioの開放処理を入れていないので、手動で
echo -n "3" > /sys/class/gpio/unexport → 解放
する必要があります。
とりあえず、今回はここら辺まで。気が向いたらArduino用シールドやセンサを試してみたいと思います。今回はじめていじってみた感想としては、「ラジペンがないとはじめられないようじゃ、Arduinoの手軽さはないなぁ」というところでしょうか。
登録:
投稿 (Atom)
















