2015年12月18日金曜日

SHARPのIGZO液晶用のスタンドをタミヤの楽しい工作キットで作り、Raspberry Piで使ってみた

はじめに


秋月電子通商を始めとする様々なショップでSHARPのIGZO液晶の取り扱いが開始されました。


実は2015年8月のMaker Faire Tokyoで参考出展されていたようなのですが、私は今回初めて知りましたので、早速購入して試してみました。

あまり深く考えずに購入したのですが、なかなか骨のある商品でした。

タミヤの楽しい工作シリーズでスタンドを作成して表示している様子がこちら。


組み立てから電源投入まで

組み立ては詳細な説明書がついてくるので、流れ自体は難しくありません。

ただし、フレキシブルケーブルを基板に取り付けるの作業がかなり繊細なので、慎重に行なう必要があります。また、このフレキシブルケーブルは非常に断線しやすい(後述)ので、注意する必要があります。

Raspberry Piで用いる場合、/boot/config.txtにLCDの解像度に関する設定を追加する必要があります。/boot/config.txtの冒頭に、下記を追加します。KSYさんのページを参考にしました。
# SHARP 7" Settings: (KSY)
hdmi_pixel_freq_limit=200000000
hdmi_timings=1200 0 164 8 32 1920 0 12 2 6 0 0 0 60 0 163430000 0
hdmi_drive=2
disable_overscan=1
max_framebuffer_width=1200
max_framebuffer_height=1920

# Landscape (display_rotate=3 for upside down)
display_rotate=1
framebuffer_width=1920
framebuffer_height=1200
# Test
hdmi_group=2
hdmi_mode=87
hdmi_force_hotplug=1
なお、上記の秋月電子通商の商品ページで公開されているconfig.txtでは、2016-02-03以降のRaspbianで横向き表示ができないので注意しましょう。上記の設定の「hdmi_mode=87」が必要なようです。こちらの解説によると、カスタムモードを作るための設定のようですね。

なお、2015年12月頃のRaspbianでは「NOOBSでインストールしたRaspbian」で映像が表示されず、イメージ書き込みである必要がある」ようでしたが、2016年5月現在、上記の設定を用いればNOOBSでインストールしたRaspbianでも表示可能でした。


2015年12月当時、NOOBSでは画面が映らないと気づくまでの数日間、「組み立て時に破損してしまったのではないか?」と思い、二個目の液晶を購入してしまいましたが、その心配は不要でした(少なくともこの時点では)。


スタンドの作成

このままでは液晶を机にベタ置きで使う羽目になるので、スタンドを作成する必要があります。

既に、フォトフレームを流用する方法を紹介されている方や、きれいなスタンドを自作している方がいらっしゃるのですが、私はタミヤの楽しい工作シリーズのキットが手元で余っているので、これを使うことにしました。

それが冒頭の写真です。


どのようなパーツを使っているのかを解説すると、まず、前面側は下図のようになっており、

  • ユニバーサルプレートL
  • ユニバーサルアームセットのアームを2本
  • ユニバーサルアームセットのパイプ材(小)をスペーサーとして6個(ニッパなどで多少細らせる必要がある)
  • 3mmのビスとナットを6組

が使われています。


背面側は下図のようになっており、
  • ユニバーサルアームセットのL型アーム2個
  • ユニバーサルアームを長さ10でカットしたものを2つ
  • 3mmプッシュリベットを1つ(オレンジ色の部分)
  • 3mmのビスとナットを適宜
が使われています。

ユニバーサルプレートの穴と基板の穴の間隔が合わないため、ユニバーサルプレートへの固定は一箇所だけプッシュリベットを取りつけ、さらにタミヤのマスキングテープを貼って仮止めしています(これについては後述)。


ひとまずはこれで使えるようになりました。このIGZO液晶(1920x1200)(左)と公式タッチパネル(800x480)(右)を比較したのが下図です。

IGZO液晶の方が解像度が高いのですが、プログラムを書くなどのように文字を読み書きするためには、フォントを大きくするなどの設定が必須でしょう。


オチ

そのようなわけで、IGZO液晶をRaspberry Piで使えるようになってめでたい、で締めようと思っていました。

しかし、ブログにまとめるにあたって、基板とユニバーサルプレートをマスキングテープで仮止めたままではカッコ悪いかなあと思い、うまい固定方法を考えることにしました。

そのためにいろいろと試行錯誤している際、ビリッ、という異音がし、フレキシブルケーブルが下図のように断線してしまいました。


上述のようにIGZO液晶を2個購入していたので、2個目を使って復活させることはできましたが、断線に気づいたときはかなり落ち込みました。

そんなわけで、私のIGZO液晶の基板はマスキングテープでユニバーサルプレートに仮止めされたままです。

使いやすかったら常用しようかな、と考えていたのですが、また壊すと落ち込みそうなので、棚にしまっておくことにしました。

オチ2

そんなわけで棚で眠っていたIGZO液晶なのですが、emerge+さんの「IGZOパネルエンクロージャ」というアクリルケースを購入してうまれかわりました。これ、すごく良いですよ。お勧めです。




「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。


2015年11月30日月曜日

Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた

はじめに

Raspberry PiをノートPC化するPi-Topが届いた」にて、Pi-Topに触って見ましたが、Pi-Top OSと呼ばれるOSを用いており、ログイン時にPi-Topサイトのアカウントでログインしなければならないことが不満でした。その主な理由は下記の通りです。
  • ログインした後は普通のユーザーpiなので、Pi-Topアカウントでログインする必然性がないこと(CEED universeというものと連携させたいのでしょうが)
  • ログイン時にインターネットに接続していなければならないこと
  • ログイン時に相手側サーバーがダウンしていたらログインできないこと
  • インターネット接続にProxy接続は許されないこと
そのようなわけで、通常のRaspbianのようにユーザーpiでログインできるようにしてみます。さらに、このPi-Top OSを通常のRaspbianに近い外観で使用できるようにもしてみましょう。

グラフィカルログイン方式、およびコンソールにログインしてstartxコマンドでXを起動する方式の両方でできました。


手順

LXterminalを起動し、.xinitrcを無効にします。
$ mv .xinitrc .xinitrc.bak
さらに、X起動時に自動でdashboardというアプリケーションが起動してしまうのを以下で抑制します。
$ mv .config/lxsession/LXDE-pi/autostart .config/lxsession/LXDE-pi/autostart.bak
最後に、下記のコマンドでスプラッシュスクリーンを無効にしましょう。後で解説しますが、これは45秒間の動画を流しているだけです。
$ sudo mv /etc/rcS.d/S01nasplashscreen /etc/rcS.d/K01nasplashscreen
あとは再起動すれば、ユーザーpiのデスクトップで起動すると思います。

バッテリー残量表示のアイコンがありませんが、以下のコマンドで残量が表示できるのでそれほど問題にはならないかなと思います。
$ battery
コンソールログインが良いという方は次の作業も行なってください。なお、このページの末尾にはこのPi-Top OSを普通のRaspbian風に用いる方法も記していますので、必要に応じて最後までご覧ください。

コンソールログインしたい場合

コンソールにログインしたいという方は、下記に従います。

まず、ユーザーpiのパスワードを念のため確認しておきましょう。 Pi-Top OSにログインし、LXTerminalを起動して、
$ su - pi
というコマンドによりユーザーpiにログインしてみてください。パスワードは「raspberry」ではなく「pi-top」であると思います。そのことを確認できたら次に進みましょう。

再びLXTerminalを起動して下記のコマンドを実行します。
sudo raspi-config
そこで「3 Enable Boot To Desktop/Scrach」→「Console Text console, requiring login (default)」を選択して再起動しましょう。これでコンソールへログインする形式になります。

このとき、ユーザーのIDとパスワードは先ほど確かめた通り、
  • ID: pi
  • パスワード: pi-top
です。

ログイン完了時に
Cannot open display "default display"
というエラーがでますが、これは気にしないことにします。多分.bash_profile内に書かれたコマンドのせいだと思うのですが、これを消すと別のエラーが出るためです。 あとは必要に応じてstartxコマンドでXを起動してください。

何をしたのか?

上の設定で何をしたのかですが、基本的には「ユーザーpiのログイン時にdashboardというアプリケーションが起動されるのを抑制した」だけです。

dashboardを通常通り起動すると、「ユーザーpiのデスクトップが起動→dashboardというアプリケーション(Pi-Top OSのログイン画面)が起動」という流れが見えてしまうので、Pi-Top OSでは45秒間の動画(/home/pi/.pi-top/media/splash.mp4)を流してそれを隠している、というわけです。しかし、45秒間待たされるというのはユーザーにとってはメリットは何もないわけで、ちょっとお粗末だなと思います。

通常のRaspbianのように使ってみる

以下、このPi-Top OSを通常のRaspbian風にする設定を列挙します。

LXTerminalが最大化されて起動されるのを防ぐ

.config/openbox/lxde-pi-rc.xmlをleafpadなどのテキストエディタで開き、下記の部分を見つけます。
  <application name="lxterminal">
    <maximized>yes</maximized>
  </application>
この「yes」の部分を「no」に変更してからXを再起動すると、LXTerminalが最大化された状態で開くのを抑制することができます。なお、leafpadも最大化されてい開くかもしれませんが、こちらは、一度小さくしてから終了するとそのサイズが保存されます。

パネルの位置を上に

パネル上で右クリックして「パネルの設定」を開き、「ジオメトリ」→「位置」→「端」→「上」

タスクバーのアイコンに文字を出す

タスクバー上で右クリックして「タスクバー(ウインドウのリスト)Settings」→「アイコンのみ」のチェックを外す

メニューボタンのアイコンをRaspbianのものに

メニューボタン上で右クリックして「メニューSettings」→「アイコン」を/usr/share/raspberrypi-artwork/raspitr.pngに

壁紙をRaspbianのものに

壁紙上で右クリックして「デスクトップの設定」→「外観」で「壁紙のモード」を「原寸大のまま中央に配置する」に、「壁紙」を/usr/share/raspberrypi-artwork/raspberry-pi-logo-small.pngに、「背景色」を赤214、緑211、青222に。

以上で、Pi-Top OSが通常のRaspbianにこの程度近づきました。


こちらもどうぞ



「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。


2015年11月27日金曜日

Raspberry PiをノートPC化するPi-Topで電子工作(LチカとI2C通信)してみた

はじめに

前回のエントリ
にて、Pi-TopではRaspberry PiのGPIOが全てふさがれている、と述べました。そのままではRaspberry Piの特徴の一つである電子工作との親和性の高さが失われてしまいます。

ただし、内部の左側にあるHubという基板にはGPIOから引き出されたと思われるメスピンがあり、その仕様がわかれば電子工作ができると思われました。

その仕様はいずれ公式に発表されるだろうと考えて放置していましたが、どうにも公開される雰囲気がないので、テスターを用いて自分でピン配置を調べ、実際に簡単な電子工作を行なってみました。

下図は定番のLチカを行なっている様子です。


ピン配置

※注:ここから先の情報を試す場合、操作を誤るとPi-Topが破壊される恐れがありますので、全て自己責任でお願いします。

まず、下図のようにfront/back/upper/lowerを定義します。



そうしたとき、Pi-TopのHub基板のピン配置は以下のようになっていました。各GPIOとGNDはRaspberry Piと直結されています。

3.3V/5V/16Vのピンは、Pi-Topの電源やバッテリー側から供給されています。どれくらいの電流を流すことができるかわかりませんので、あまり負荷をかけないほうがよいでしょう。


Raspberry PiのGPIOのピン配置と注意深く比較すると、全てのピンが引き出されていることがわかります。重複しているGNDは一つのみ引き出されています。

注意点を以下に述べます。
  • SPIに関わるピンは既にPi-Topに使われています。具体的には、.pi-top/sys/hub-controller.pyというPythonスクリプト内で、HUBとの通信(スクリーンの明るさ制御、シャットダウンボタンの命令受信)に使われています。動作検証の際、SPI CE1 (GPIO 7)でLチカしてみたところ、Pi-Topが強制的に再起動され、冷や汗をかきました
  • 試していませんが、UART RXD/TXDのピンはシリアルコンソール用に使われているはずです
  • ID_SDとID_SCはRaspberry Piにもあるピンですが、使ったことはありません
  • I2Cのピンは、下図のように0x0bのアドレスを持つPi-Top Hub基板上のデバイスによってバッテリー状態の取得に使われています。具体的には、/usr/local/bin/batteryというシェルスクリプトがそれを実行します。ただし、I2Cは複数のデバイスを接続できるので、問題にはなりません


そのようなわけで、SPIとUARTのピンを使わなければ一般的な電子工作は行なえそうです。

Lチカ

まずは定番のLチカから試してみます。 冒頭のLチカの図を再掲します。上のピン配置でGPIO番号を持っているピンのうち、UART/SPI/I2Cに関わるピン以外の全てでLチカができることを確認しました。下図はGNDピンとGPIO 4を使っています。


用いた回路とプログラムは「Raspberry Piで学ぶ電子工作」の4章で紹介したものを流用しています。

まず、回路はこちら。

そしてプログラムがこちら。
import RPi.GPIO as GPIO
from time import sleep

LED = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT)

try:
    while True:
        GPIO.output(LED, GPIO.HIGH)
        sleep(0.5)
        GPIO.output(LED, GPIO.LOW)
        sleep(0.5)

except KeyboardInterrupt:
    pass

GPIO.cleanup()
これをled.pyという名前で保存した場合、ターミナルで下記のコマンドにより実行できます。
sudo python led.py

I2C通信によるLCDの利用

次に、I2C通信によりLCDに文字を表示してみました。下図のようになります。3.3V/GND/I2C SDA/I2C SCLの4ピンを使っています。


LCDをより大きく撮影した様子がこちら。


これは、「Raspberry Piで学ぶ電子工作」の7章で紹介したプログラムを以下のコマンドで実行した様子です。詳細は書籍をご参照ください。
sudo python 07-02-LCD.py 'Hello,  Pi-Top!'

おわりに

そのようなわけで、SPI通信以外のピンは通常のRaspberry Piと同様に利用できることがわかりました。

なお、本エントリを記述した後にRaspberry Piのピン配置を復活させるためのpi-topPROTOという商品が発売されたので、これを購入すると、実は本ページの内容は不要だったりします。下図は、pi-topPROTOとpi-topSPEAKERを接続した様子です。


では、このPi-Topは電子工作に向いているかというと、「ちょっと怖い」というのが正直なところです。

例えば、手がすべるなどしてジャンパーワイヤをPi-TopのHub基板に落としてしまうと、なんらかのショートがおこり基板を壊してしまうことがあり得ます。写真を見ていただくとわかりますが、いかにも何かを落としてしまいそうな位置に基板があるのです。

壊れたのがRaspberry Piならば交換できますが、Pi-TopのHub基板となると交換はちょっと厄介そうです。決して安いものではありませんので。

そういう意味では、Raspberry Pi公式タッチディスプレイの方が、壊しにくい位置に基板があるという点で電子工作向きかな、と思います。あるいは、Pi-Topに続き資金調達に成功したpi-topCEEDでも良いかもしれません。

こちらもどうぞ



「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。


2015年11月5日木曜日

Raspberry PiをノートPC化するPi-Topが届いた

はじめに

2014年10月頃、Raspberry PiをノートPC化するPi-Topがクラウドファンディングで資金を調達するというので話題となりました(参考:Techcrunch)。

その後、資金調達に成功し、2015年2月頃には一般向けに販売を開始しました(参考:fabcross)。

当時は2015年5月頃の発送を予定していたようですが、延期が重なり、2015年11月に実際に送られて来ましたので組み立てて使ってみました。

こちらが通常のRaspbianが動作している様子です。

価格

価格は下記の通りです。

  • Raspberry Pi 2 込みで299.99ドル
  • Raspberry Pi 2 なしで264.99ドル

さらに、日本までの送料が85ドルかかります。価格が高すぎるということはクラウドファンディング時から言われていましたね。
(追記:さらにFedExから関税として3,500円の請求がありました)

なお、Raspberry Pi 2は筐体の中に固定され、取り外しも面倒なので、Pi-Top専用のRaspberry Pi 2を用意するのが無難だと思います。私はPi 2込みのものを注文しました。

開封から組み立てまで

箱がこちら。結構大きいです。


箱を開けた瞬間、緑の天板が目につき、その予想外の大きさに圧倒されました。内容物は何段かにわかれて収納されています。


組み立てに必要なパーツを全て取り出したのが下図です。緑色のUSBのドングルはWifiデバイスですが、技適は通っていないと思われるので、お手持ちのものを利用するのが良いと思います。

また、Pi-Top OSと呼ばれる独自OSが入ったmicroSDも付属します。後述するように、通常のRaspbianでも制限はありますが動作します。

なお、短くて柔らかいHDMIケーブルが付属するのですが(下図で上から3番目のケーブル)、これ単体で売って欲しいと思いました。


組立自体は説明書の通りに行えば難しくないのですが、細いケーブルを取り扱う部分があるので、注意は必要です。

なお、下図のStep 3-3はスクリューを付属の六角レンチで回すのですが、どこかにねじ込んでいるわけでもなく、意味があるのか疑問でした。


また、Step 8-5でキーボードをBall Head Screwsにはめ込むのですが、ここでキーボードの下に来るケーブルをうまくまとめないと、キーボードが上に盛り上がって非常に不格好になります。

それを直すためにキーボードをBall Head Screwsから外すのはそこそこ大変なので、ここは組立中で最もストレスを感じました。

なお、このキーボードの盛り上がりを完全になくすのは難しいのでは?という気がしています。組み立てた方ならわかると思いますが、本ページのPi-Topの写真は、キーボードの中央部が若干盛り上がっています。


起動

組み立て終わったら、付属のPi-Top OSの入ったmicroSDで起動してみます。


起動画面の後、ログイン画面になるのですが、ここでできるのは、下記の通りです。
  • Wifiのセットアップ(Viewでパスワード入力可)
  • ネットワークログイン(Pi-Topサイトのアカウントでログインできるらしい)
  • ユーザーの作成
  • ゲストアカウントでのログイン(Read Onlyで、設定ファイル等変更できない)
Pi-Topサイトのアカウントでログインできるようなのですが、実際にログインしようとすると、下図のように「logging in」の状態のまま先に進みません。

なお、ネットワークに接続していない状態では、Read Onlyなゲストアカウントでの作業になりますので、実用的ではありません。Raspbian wheezyベースであることはわかるのですが、いつものユーザーpiでのログインはできませんでした。


色々試行錯誤した結果、以下の方法でPi-Topサイトのアカウントでログインできるようになりました。あらかじめPi-Topサイトのアカウントを持っていることが条件です。
  • まず、Wifiに接続します。Viewボタンをクリックするとパスワードを入力できたと思います
  • 右下の設定アイコンをクリックし、Create Accountにより、アカウントを作成します。その際、ユーザーネーム、パスワード、メールアドレスは適当に設定します(このアカウントは最終的には使われなくなります)
  • すると一時的にログインできますが、そのまま再起動すると、またログインできなくなってしまいますので、再起動はしないようにしましょう
  • そこで、ターミナルを起動し、下記のコマンドを実行し、OSを更新します
  • curl -sL https://www.pi-top.com/download/patch1 | sudo bash -
  • コマンドを実行すると、自動的にログアウトされ、もう一度ログインを求められます。この段階で、Pi-Topのアカウントでログインできるようになっています
ログインしてみるとわかるのですが、Pi-Topのアカウントは認証に使われるだけで、ログインすると普通のRaspbianと同様、ユーザーpiなのですね。ですので、OS更新前に一時的に作成したアカウントのデスクトップがそのまま引き継がれていたりします。

それなら最初からユーザーpiでログインさせてくれれば良いのに、と思いました。

そこで、実際にユーザーpiでログインできるよう設定した結果をこちらのエントリにまとめました→「Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた」。Pi-Top OSを普通のRaspbianに近い状態で使う方法も記しております。

なお、このPi-Top OSを用いるメリットは下記の通りです。
  • バッテリーの残量がわかる
  • キーボードでディスプレイ輝度を調節できる
  • 電源ボタンの長押しでシャットダウンコマンドが実行された後に電源が切れる

通常のRaspbianで使うには?

Pi-Top OSが付属するからといって、通常のRaspbianで使えないわけではありません。以下、Pi-Topを通常のRaspbianで使う際の注意を記していきます。NOOBS 1.4.1 (wheezy)とNOOBS 1.4.2 (jessie)で試しました。

まず、デフォルトでは画面端に黒い帯が現れて画面の広さが狭くなってしまいます。Overscanの設定をDisableに設定すると改善することができます。以前からあるraspi-configを用いる場合は「8 Advanced Options」→「A1 Overscan」から、NOOBS 1.4.2 (Jessie)からの新設定アプリケーションでは「System→Overscan」からDisableに設定できます。

なお、通常のRaspbianを用いると、
  • バッテリーの残量がわからない
  • キーボードでディスプレイ輝度を調節できない
  • 電源ボタンを長押しするといきなり電源が落ちる
という問題があります。Pi-Top OSからこれらの機能を移植することも可能でしょうが、どちらかというと、Pi-Top OSをRaspbian風にするほうが簡単かもしれません。「Raspberry PiをノートPC化するPi-Topにユーザーpiでログインしてみた」にその方法を記しております。

なお、通常のRaspianを終了するときは
  • 「sudo poweroff」を実行→シャットダウンプロセスが終わったら電源ボタン長押し
として電源を切るのが良さそうです。

感想など

Raspberry PiをノートPC風に使うということに関し、以前「Lapdock for Motorola Atrixを使ってRaspberry Pi 2をモバイルPCにしてみた」というエントリを書きました。その方法に比べると余計なケーブルが必要なく、とてもシンプルなのは良いと思います。

ただ、気になる点もいくつかあります。

まず、サイズがおよそ340mm×210mm×47mm (最厚部)程度と大きく、実際に目にするとかなりの迫力です。

また、キーボードのクオリティがやや低いです。押しても反応しにくいキーがあり、私の場合、「k」キーを押した際に 7/10 くらいの確率でしか入力されませんでした。まあこれは慣れである程度はカバーできるだろうとは思います。


また、下図のようにRaspberry Piの40ピンのGPIOが全て塞がってしまうのが気になります。下図の左側の基板から、34ピンだけ引き出せそうなのですが、現時点ではその仕様が公式には公開されていないようです。この点はかなり気になったので自分で調べてみました。結果を以下のエントリにまとめました→「Raspberry PiをノートPC化するPi-Topで電子工作(LチカとI2C通信)してみた」。


個人的には、Pi-Top OSと名乗って、ログイン法を通常のRaspbianから大きく変えてしまったのは残念でした。通常のRaspbianにボード制御用アプリケーションを追加インストールする形式で十分だったように思います。

とは言え、触っていくほど愛着の湧く面白いおもちゃであるとも思います。やや高価な価格に納得できる方なら試してみても良いでしょう。

なお、Pi-Topからキーボード、タッチパッドを取り除いた、pi-topCEEDと呼ばれるものも資金調達に成功しており、こちらは送料等を除いて99ドルとお得になっています。今ならこちらの方が良いかもしれませんね。

追記(2016.1.14)

…と、2015年11月に上記のエントリを書いたのですが、実際のところ、私のPi-Topはほとんど使われることなく積まれた状態でした。何が問題かというと、やはりキーボードの性能が低すぎるのが致命的です。

ブラウジングメインで用いるためのパワーが足りないのはRapsberry Pi 2の現状での限界なので仕方ありませんが、サーバーにリモートで接続するための端末として用いようとしても、Ctrlキーの押下が認識されたりされなかったりでは使い物になりません。

どうにかならないかと考え、ロジクールのワイヤレスキーボード&マウスであるMK240を購入したところ、Pi-Topが非常に快適に使えるようになりました。キーボードの足を起こしてPi-Topに載せると、Pi-Topのキーボードに干渉しないので良い感じです。唯一の不満はキーボードに電源スイッチがないことですが、まあこれはしょうがないかな。

そのようなわけで、今度こそPi-Topを使ってみようと思います。


こちらもどうぞ




「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。


2015年9月2日水曜日

Raspberry Pi + kernel 4.1 / 4.4 / 4.9 系列で5GHz対応WifiドングルGW-450Dを動かした

本ページで目指すもの

本ページでは、Raspberry Piを5GHz帯のネットワークに接続することを目標にします。必要なものは下記のどれかの無線LAN USBアダプタです。

はじめに

Raspberry PiなどのLinuxボードをAndroid Bazaar and ConferenceやMaker Faireなどで展示する際、Wifiの混線を避けるために5GHz対応のWifiドングルPlanex製GW-450Dを使うことがよくありました。

kernelの再構築が必要な場合が多いなど面倒ではありますが、ネットを探せばその方法はたくさん見つかりますので、それほどハードルは高くありません。

しかし、Jessie以降 (NOOBS 1.4.2以降) のRaspbianで用いられているkernel 4.1や4.4系列でPlanex製GW-450Dを動かそうとしたところ、これまで知られた方法ではうまく動作しない部分があったので対処法をメモします。

解説は、下記の順で行います。
  1. Raspberry Pi用のカーネルの再構築
  2. Planex製GW-450Dのドライバのインストール
  3. I-O DATA製WN-AC433UKについての注意
  4. Buffalo製WI-U2-433DMのドライバのインストール
最初に行うカーネルの再構築は全ての無線LAN USBアダプタで必要となりますのでご注意ください。

なお、本ページの解説は「Sionの日記 | RaspberryPi:GW-450Dを使う」で解説されている手法に準拠しています。Sionさんに感謝します。

私が検証に用いたのはRaspberry Pi 2 および 3ですが、ページ中の読み替えの指示に従えばRaspberry Pi Model B+でも可能なはずです。


必要なパッケージをインストール

まず、kernel再構築に必要なパッケージをインストールします。
$ sudo apt-get update
$ sudo apt-get install gcc make bc screen ncurses-dev
お好みで、下記のコマンドによりkernelも最新にしておきます。なお、2017年5月現在、kernelを最新にすると4.9系列にアップデートされます。
$ sudo rpi-update
$ sudo reboot

カーネルのソースを入手

次に、kernelのソースをダウンロードします。まず、Raspberry Piで動作しているkernelのバージョンをあらかじめ知るために、ターミナル上で下記のコマンドを実行しましょう。
$ uname -r
Jessie系列では「4.1.X-v7+」、「4.4.X-v7+」、「4.9.X-v7+」などとなるでしょう(「-v7+」はRaspberry Pi 2 / 3用のkernelであることを表す)。

次に、以下のコマンドでkernelのソースをダウンロードします。3つ目のコマンドでkernelのブランチをrpi-4.1.yと指定していますが、これは、ビルドしたいkernelが4.1系列である場合です。上のkernelのバージョンチェックでkernel 4.4や4.9系列が用いられていた場合はそれぞれrpi-4.4.y、rpi-4.9.yとしてください。こちらのページの「Branch:」の部分で得られるkernelソースの選択肢を見ることができます。

(ビルド方法はなるべく公式準拠になるようにしています)
$ cd /usr/src
$ sudo su
# git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.1.y
# git clone --depth 1 https://github.com/raspberrypi/firmware.git
# cd linux
# modprobe configs
# zcat /proc/config.gz > .config
# cp ../firmware/extra/Module7.symvers Module.symvers
(Model B+の場合、Module7.symversをModule.symversに読み替えます)

カーネルのコンパイルから再起動まで

kernelのビルド、インストールは下記のようにします。make oldconfigの際に、新しい設定項目をどうするか聞かれた場合は、yかMを指定しました。

ビルドには数時間かかるので気長に待ちます。最後に再起動しています。
# make oldconfig
# make -j 4 zImage modules dtbs
# make modules_install
# cp arch/arm/boot/dts/*.dtb /boot/
# cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
# cp arch/arm/boot/dts/overlays/README /boot/overlays/
# cp /boot/kernel7.img /boot/kernel7.img.old
# scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img
# reboot
(Model B+の場合、kernel7.imgをkernel.imgに読み替えます)
以上で自前ビルドのkernelでRaspberry Pi が動作するようになりました。ここから、Planex製GW-450Dのドライバーのインストールに入ります。

Planex製GW-450Dのドライバの入手

http://www.planex.co.jp/support/download/gw-450d/driver_linux.shtml
より、gw-450d_driver_linux_v3002.zipをダウンロードし、/usr/srcに移動しておきます。

そして、ドライバを下記のように展開します。
$ cd /usr/src
$ sudo su
# unzip gw-450d_driver_linux_v3002.zip
# cd gw-450d_driver_linux_v3002
# tar xf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
# cd mt7610u_wifi_sta_v3002_dpo_20130916
展開が終わったら、パッチをダウンロードして適用します。パッチが何をやっているのか見たい方はこちらのリンク先がわかりやすいでしょう。
# wget https://raw.githubusercontent.com/neuralassembly/raspi/master/gw-450d/gw-450d-rpi-kernel41.patch
# patch -p0 < gw-450d-rpi-kernel41.patch
このパッチ当てがkernel 4.1、4.4、4.9でGW-450Dを動かす上で重要なのですが、解説はページ末尾で行い、まずは手順の解説を全て終わらせます。

以上が終わったら、コンパイルを行います。
# make
コンパイルが終わったら、モジュールをインストールします。kernelのバージョン(「4.1.21-v7+」の部分)は自分の環境に応じて読み替えてください。
# cp -p os/linux/mt7650u_sta.ko /lib/modules/4.1.21-v7+/kernel/drivers/net/wireless
# depmod -a
次に、設定ファイルのコピーを行います。
# mkdir -p /etc/Wireless/RT2870STA
# cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat
最後に、ネットワークの設定を記述します。1つ目の命令はテキストエディタleafpadで/etc/network/interfacesを開いていますが、もちろんここはお好みのテキストエディタを用いて構いません。
# leafpad /etc/network/interfaces
(末尾に以下を記述)
allow-hotplug ra0
auto ra0
iface ra0 inet manual
wpa-ssid "your-ssid"
wpa-psk "your-passwd"
以上が終わったら、Planex製GW-450Dをさし、Raspberry Pi を再起動します。

Planex製GW-450Dでネットワークにつながっていると思います。

なお、割り当てられるIPアドレスを固定したい場合、「Raspberry PiのIPアドレスを固定する | 「Raspberry Piで学ぶ電子工作」補足情報」で紹介した方法が使えますので必要な方はご参照ください。

Planex製GW-450Dのドライバ用パッチの解説

ここで、用いたパッチgw-450d-rpi-kernel41.patchの解説を簡単にしておきます。

変更されるファイルは下記の6つです。
common/rtusb_dev_id.c
os/linux/config.mk
include/os/rt_linux.h
os/linux/rt_linux.c
sta/sta_cfg.c
common/cmm_info.c

順に見ていきます。

common/rtusb_dev_id.c

Planex製GW-450Dの情報を追加する変更です。これはどのバージョンのkernelでも行います。実はI-O DATA製WN-AC433UK用の変更も加えています。
@@ -36,6 +36,8 @@
 /* module table */
 USB_DEVICE_ID rtusb_dev_id[] = {
 #ifdef MT76x0
+ {USB_DEVICE(0x2019,0xab31)}, /* GW-450D */
+ {USB_DEVICE(0x04bb,0x0951)}, /* WN-AC433UK */
  {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
  {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
  {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */

os/linux/config.mk

これは、HAS_WPA_SUPPLICANTやHAS_NATIVE_WPA_SUPPLICANT_SUPPORTを有効にしています。これもどのバージョンでも行う変更です。
@@ -23,12 +23,12 @@
 
 # Support Wpa_Supplicant
 # i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y
 
 
 # Support Native WpaSupplicant for Network Maganger
 # i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
 
 #Support Net interface block while Tx-Sw queue full
 HAS_BLOCK_NET_IF=n

include/os/rt_linux.h

これは、fsuidとfsgidの型を変更しています。これはkernel 3.18.xでも必要な変更です。こちらを参考にしました。
@@ -277,8 +277,8 @@
 
 typedef struct _OS_FS_INFO_
 {
- int    fsuid;
- int    fsgid;
+ kuid_t    fsuid;
+ kgid_t    fsgid;
  mm_segment_t fs;
 } OS_FS_INFO;
 

os/linux/rt_linux.c

次は、kernel 4.1.x でPlanex製GW-450Dを動かす変更です。長くなるので全てを引用することはしませんが、典型的な変更点は下記の通りです。

関数ポインタ f_op->read がNULLを返すようになったので、かわりに __vfs_read を用いるように変更しています。この変更を行わないと、/etc/Wireless/RT2870STA/RT2870STA.dat の読み込みなどに失敗します。
他にも、f_op->writeを__vfs_writeに変更していますので、詳細はパッチgw-450d-rpi-kernel41.patchを見てください。

こちらこちらを参考にしました。
@@ -1082,9 +1082,8 @@
 
 int RtmpOSFileRead(RTMP_OS_FD osfd, char *pDataPtr, int readLen)
 {
- /* The object must have a read method */
- if (osfd->f_op && osfd->f_op->read) {
-  return osfd->f_op->read(osfd, pDataPtr, readLen, &osfd->f_pos);
+ if (osfd->f_op) {
+  return __vfs_read(osfd, pDataPtr, readLen, &osfd->f_pos);
  } else {
   DBGPRINT(RT_DEBUG_ERROR, ("no file read method\n"));
   return -1;

sta/sta_cfg.cおよびcommon/cmm_info.c

次はgcc4.9で__DATE__マクロと__TIME__マクロを使用するとエラーになることの対策です。2つのファイルを変更しています。
--- sta/sta_cfg.c.orig  2015-10-16 10:51:29.744391038 +0900
+++ sta/sta_cfg.c       2015-10-16 10:52:03.414417321 +0900
@@ -5398,7 +5398,7 @@
             wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
             break;
         case SHOW_DRVIER_VERION:
-            snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
+            snprintf(extra, size, "Driver version-%s\n", STA_DRIVER_VERSION);
             wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
             break;
 #ifdef DOT11_N_SUPPORT
--- common/cmm_info.c.orig      2015-10-16 10:51:43.974402146 +0900
+++ common/cmm_info.c   2015-10-16 10:53:08.554468170 +0900
@@ -44,7 +44,7 @@

 #ifdef CONFIG_STA_SUPPORT
        IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
-               DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__));
+               DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s\n", STA_DRIVER_VERSION));
 #endif /* CONFIG_STA_SUPPORT */

     return TRUE;

I-O DATA製WN-AC433UKについての注意

次に、I-O DATA製WN-AC433UKについての注意を記します。上記のPlanex製GW-450D用の手順を行うことで、この無線LAN USBアダプタを動作させることができます。筆者の場合、Raspberry Pi 3で動作を確認することができました。ただし、過去にRaspberry Pi 2で試したところ、下記のように非常に安定性が悪いことがありました。
  • 流せる電流の大きな電源と、高品質な電源ケーブルを用いないと動作しないことが多い
  • Raspberry Piの起動前にI-O DATA製WN-AC433UKを差しておいても、認識に失敗することがある
  • Raspberry Pi起動後にI-O DATA製WN-AC433UKを抜き差しすると、認識に成功するときとしないときとがある。
Pi 3で安定動作したので今となってはあまり気にしていませんが、似たような状況の方はご参考ください。

Buffalo製WI-U2-433DMのドライバのインストール

Buffalo製WI-U2-433DMについても動作を確認してみました。こちらについては、本ページのカーネル再構築までは共通手順で、ドライバのインストールからが異なります。

以下の作業は「Raspberry Pi 2でWiFiドングル BUFFALO WI-U2-433DMを使う」を参考にしました。

まず、カーネルのコンパイルから再起動までを行なってください。その後、 下記の手順で作業を進めます。
$ cd /usr/src
$ sudo su
# git clone https://github.com/gnab/rtl8812au.git
# cd rtl8812au
ここで、このディレクトリにあるMakefileを下記のように2箇所変更します。
...
CONFIG_PLATFORM_I386_PC = n
...
CONFIG_PLATFORM_ARM_RPI = y
すなわち、CONFIG_PLATFORM_I386_PCの値を「n」に、CONFIG_PLATFORM_ARM_RPIの値を「y」にするだけです。あとは下記のように作業を進めます。kernelのバージョン(「4.1.21-v7+」の部分)は各自読み替えてください。
# make
# cp 8812au.ko /lib/modules/4.1.21-v7+/kernel/drivers/net/wireless
# depmod -a
以上で、Buffalo製WI-U2-433DMを差すと認識されネットワークにつながります。まだあまり使っていませんが、結構安定しているように思えます。

Planex製GW-450Dと比較した場合、Raspberry Pi 2の場合は無線LANのインターフェイスとしてwlan0が使われるため、通常のWifi設定法がそのまま使えるのが良いですね。

なお、Raspbedrry Pi 3の場合、下記の点が厄介です。
  • オンボードのWifiデバイスとWI-U2-433DMに対してwlan0とwlan1のように同じデバイス名が使われ、さらにこの番号が変わることがある
  • wlan0とwlan1に対して、同じ設定ファイル (/etc/wpa_supplicant/wpa_supplicant.conf) が使われるので、2.4GHzのルーターに接続しようとすると、両方のデバイスがつながってしまう
この問題に対しては、恐らく下記で対処できると思います(簡略化して書きます) 設定ファイル /lib/udev/rules.d/75-persistent-net-generator.rules を管理者権限のテキストエディタで開き、下記の太字部を追加して保存します。さらにRaspberry Piを再起動します。
# device name whitelist
 KERNEL!="ath*|msh*|ra*|sta*|ctc*|lcs*|hsi*|wlan*", \
                                         GOTO="persistent_net_generator_end"
再起動が終わると、/etc/udev/rules.d/70-persistent-net.rules というファイルが生成されています。 これを管理者権限のテキストエディタで開くと、下記のようになっています。
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# Unknown net device (/devices/platform/soc/3f300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0) (brcmfmac)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# USB device 0x:0x (rtl8812au)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"
ATTR{address}の部分は人により異なるので伏字にしました。 「# Unknown net device」に対応するNAMEがwlan0、「# USB device 0x:0x (rtl8812au)」に対応するNAMEがwlan1となっていることがポイントで、前者がRaspberry Piのボード上のWifiデバイス、後者がWI-U2-433DMを指し、それぞれwlan0とwlan1に指定されています。この/etc/udev/rules.d/70-persistent-net.rules が存在することで、以後デバイスの名前が固定されます。wlan0とwlan1の名前を入れ替えたい場合は適切に編集して保存してください。

以上で、デバイス名の固定が完了しました。後は、二つのデバイスでネットワークの設定ファイルを分けるとよいでしょう。管理者権限のテキストエディタで /etc/network/interfaces を開きます。wlan0とwlan1とで同一の設定ファイル「/etc/wpa_supplicant/wpa_supplicant.conf」が指定されていることがわかります。この設定ファイルを二つのデバイスで別のものにするとか、あるいはボード上の無線LANデバイスwlan0についての設定3行をコメントアウトするなどが良いでしょう。
allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf



「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。


2015年5月1日金曜日

Windows 10 IoTが載ったRaspberry Pi 2でLチカサンプルを動かしてみた

1. はじめに


4/30に、Raspberry Pi 2用のWindows 10 IoTが公開されました。インストールしてLチカサンプルを動かすところまで試してみましたので、手順をメモします。公開されているチュートリアルに書かれた通りに解説します。

下図が最終的に動かしたサンプルですが、LEDの点滅と連動して画面上の丸も点灯し、その下のスクロールバーを動かすことで点滅の速さも変更できました。


2. Raspberry Pi 2用マイクロSDカードへのWindows 10 IoTのインストール


手順→「Windows IoT - SetupBoard

必要なもの

  • Windows 10 Insider Preview(build 10074)以降を搭載したPC(マイクロSDカードの読み書きができること)

    実機が必要です。私は古いLet's Note (CF-W8) にインストールしましたが、後にVisual Studio Community 2015 RCを入れることを考えると、パワーのあるPCの方が良いかもしれません。なお、このLet's Noteではタッチパッドに触れるとブルースクリーンになるなど、Windows 10にはまだ問題は多そうでした。なお、「Windows IoT - SetupBoard」では「build 10069以降」と書かれているのですが、後にインストールするVisual Studio Community 2015 RCではbuild 10074以降が要求されています。

  • Raspberry Pi 2およびHDMIディスプレイ

    有線LANでネットワークに接続します。マイクロSDカードは8GB以上。キーボードとマウスは特にささなくても問題なさそうです。

Windows 10 IoTをマイクロSDカードに書き込む


PC上のWindows 10で下記の手順でマイクロSDカードを準備します。
  1. こちらから、Windows_IoT_Core_RPI2_BUILD.zipをダウンロードし、展開します
  2. 展開したフォルダにFlash.ffuというファイルがあることを確認します
  3. PCに8GB以上のマイクロSDカードを接続します(私は16GBのものを用いました)
  4. 管理者権限でコマンドプロンプトを起動し、Flash.ffuがあるフォルダまでcdコマンドで移動します
  5. 移動先で、diskpartコマンドを実行し、DiskPartを起動します
    > diskpart
    
  6. DiskPart上でlist diskコマンドを実行し、マイクロSDカードのディスク番号を調べます(下図では3)
    DISKPART> list disk
    
  7. exitコマンドでDiskPartを終了します。
    DISKPART> exit
    
  8. 調べたディスク番号を使って、Flash.ffuをマイクロSDカードに書き込みます。下の図の赤丸で示されている通り、「ディスク3」だったら「PhysicalDrive3」を指定する、という要領です。
    > dism.exe /Apply-Image /ImageFile:flash.ffu /ApplyDrive:\\.\PhysicalDrive3 /SkipPlatformCheck
  9. 書き込みが100%に達したら、Windowsの安全な取り外しを行ってからマイクロSDカードを抜き、Raspberry Pi 2にセットします。


3. Raspberry Pi 2の起動とWindows 10からの接続


手順→「Windows IoT - SetupBoard」および「Using PowerShell to connect and configure a device running Windows IoT Core

Raspberry Pi 2にマイクロSDカードをセットしたら、有線LAN、HDMIディスプレイを接続した上で電源を投入します。数分待つと、最終的に手順のページでも見られる下記のページまでたどりつきます。なお、相性の悪いディスプレイでは画面が乱れるということがあったため、相性の良いディスプレイに変更することで対処しました。


なお、画面右上に見える電源ボタン、右下に見える設定ボタンは、Raspberry Pi 2に接続したマウスでクリックすることができるのですが、マウスにも相性があるようで、手持ちのマウスで操作できるものは多くはありませんでした。

下図左側がRaspberry Pi 2を操作できなかったマウス、右側が操作できたマウスです。メーカーによる傾向などはあまりありません。


ただし、マウスで操作できなくても、Lチカ自体は行えますので先に進みます。

さて、この状態のRaspberry Pi 2に、Windows 10 PCからリモート接続してみることにします。

  1. PowerShellを管理者権限で起動します(検索窓にPowerShellと入力すると現れます)
  2. PowerShell上で下記を実行し、WinRMを起動します。
    > net start WinRM
    
  3. PowerShell上で下記を実行します。Raspberry Pi 2のIPアドレスはディスプレイに表示されています。確認には「Y」と答えます
    > Set-Item WSMan:\localhost\Client\TrustedHosts -Value (Raspberry Pi 2のIPアドレス)
    
  4. PowerShell上で下記を実行すると、Raspberry Pi 2上のWindows 10 IoTにログインできます。デフォルトパスワードは「p@ssw0rd」です。
    > Enter-PsSession -ComputerName (Raspberry Pi 2のIPアドレス) -Credential (Raspberry Pi 2のIPアドレス)\Administrator
    

この状態でRaspberry Pi 2に対して様々な設定が行えますので、「Using PowerShell to connect and configure a device running Windows IoT Core」を参考にしてみてください。

ここでは、Windows 10 PCに対するVisual Studio Community 2015 RCのインストールに入っていきます。

4. Visual Studio Community 2015 RCのインストールと設定


手順→「Windows IoT - Setup your PC for Raspberry Pi 2」および「Enable your device for development

Windows 10がインストールされたPCに、Visual Studio Community 2015 RCをインストールしていきます。
  1. Steps to install Windows 10 development tools for Visual Studio 2015 RC」の左下にある「Get the tools」ボタンをクリックします。VSToolsForWindows.exeがダウンロードされますので、インストールします。Community版がインストールされますが、Professional版が良い場合は、リンク先の解説に従ってください。

    なお、「Universal Windows App Development Tools」というものをインストールしなければならないのですが、VSToolsForWindows.exeを「typical」でインストールしたら自動的にインストールされました。インストール後にコントロールパネルの「プログラムのアンインストールまたは変更」で「Microsoft Visual Studio Community 2015 RC」のインストール項目を調べてみると、 下図のように確かに「Universal Windows App Development Tools」がインストールされていました。


  2. 次に、Windows appの開発用にWindows 10をアンロックします。まず、検索ウインドウでGpedit.mscと入力し、現れたローカルグループポリシーエディターを管理者権限で起動します(エラーがでますが気にせず先に進みました)。そして 「ローカルコンピュータポリシー」→「コンピューターの構成」→「管理用テンプレート」→「Windowsコンポーネント」→「アプリパッケージの展開」と辿り、中にある「Allows development of Windows Store applications and installing(略)」と「信頼できるすべてのアプリのインストールを許可する」を有効にします


  3. 最後に、Windows_IoT_Core_RPI2_BUILD.zipに含まれていたWindowsDeveloperProgramForIoT.msiをインストールします。なお、これにより「Windows IoT Core Watcher」というアプリケーションがインストールされ、自動起動するはずなのですが(スナップショットが「Windows IoT - Setup your PC for Raspberry Pi 2」にあります)、私の環境では起動しませんでした。それでもVisual StudioからRaspberry Pi 2へのアプリケーションのインストールはできましたので、ここでは気にせず先に進むことにします。

5. サンプルアプリケーションのダウンロードと実行


手順→「Blinky Sample」および「‘Hello, World!’ Sample

Lチカのサンプル「Blinky」のC#版を試してみます。「Blinky」ページに作るべき回路が示されているので、あらかじめ作成しておきます。3.3VピンとGPIO 5でLEDと抵抗の直列接続をはさむ回路になっており、GPIO 5がLOWのときにLEDが点灯する回路です。

ファイルは、「ms-iot/samples」の「Download ZIP」ボタンにより全てのサンプルをダウンロードしてしまうのが簡単でしょう。

展開後に現れる「samples/Blinky/CS/Blinky.csproj」がVisutal Studio Community 2015 RCで開くべきプロジェクトファイルになります。

開いたときの様子が下図です。図のように、MainPage.xaml.csにメインの処理が記述されています。


これをRasbperry Pi 2で実行するには、「‘Hello, World!’ Sample」に示されているように、ターゲットを設定する必要があります。

下図のように、「Device」を「Remote Machine」に変更します。


すると、下記のようなダイアログが現れるので、

  • Address:Raspberry Pi 2のIPアドレス
  • Authentification Mode:None
と変更して、Selectをクリックします。



その状態でアプリケーションを実行すると、それなりの時間待たされた後、アプリケーションがRaspberry Pi 2にインストールされ、冒頭の写真のように実行されます。

お疲れ様でした。

「カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」を執筆しました。