2015年12月18日金曜日

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

はじめに

秋月電子通商を始めとする様々なショップでSHARPのIGZO液晶の取り扱いが開始されました(2018年4月時点ではどの店でも売り切れですが、本ページ末尾で類似商品を紹介します)。
実は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=1 for upside down)
display_rotate=3
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」が必要なようです。こちらの解説によると、カスタムモードを作るための設定のようですね。
また、上記設定にある「display_rotate=3」は、HDMI端子やUSB端子がディプレイの上側にある場合の設定です。これらの端子をディスプレイの下側に配置したい場合、「display_rotate=1」としてください。

なお、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パネルエンクロージャ」というアクリルケースを購入してうまれかわりました。これ、すごく良いですよ。お勧めです。


オチ3

そんなわけで、emerge+さんのエンクロージャで満足度の上がったIGZO液晶ですが、IGZO液晶の1920x1200という解像度では、文字が小さすぎて読むことが難しく、実用には難があるというのが正直なところでした。

2018年4月時点で最新のRaspbianを用いると、GUIの設定アプリケーションに「Pixel Doubling」という、解像度を半分にするための設定が追加されています。Retinaディスプレイのように高解像度のディスプレイを用いるための設定のようです。
これを有効にすると、下図のようにIGZO液晶が960x600という実用的な(文字が読める)解像度で使えるようになります。

なお、2022年7月現在、Raspberry Pi OS Bullseye には、この Pixel Doubling の設定はないようです。代わりに、デスクトップ上で右クリックし、「デスクトップの設定」→「デフォルト」タブ→「大きな画面向け」の設定、を行うと似た効果を得ることができます。

オチ4

「オチ2」と「オチ3」でemerge+さんのIGZOパネルエンクロージャをお勧めしましたが、IGZO液晶同様、こちらも2018年4月の時点では入手不可能ですね。

代替として、下記の組み合わせをお勧めしておきます。
こちらは、本ページで紹介したIGZO液晶よりも一回り小さいのですが、emerge+さんのエンクロージャが美しいので満足度が高いです。


なお、上記の写真で用いている短いHDMIケーブルはこちらです。

また、電源は下記の組み合わせのもの用いており、これによりACアダプターが一個で済むので良い感じです。
こちらの液晶の場合、config.txtの末尾に追加する設定は下記のようになります。
# SHARP 5.5" Settings
hdmi_pixel_freq_limit=400000000
hdmi_timings=1080 0 60 10 35 1920 0 4 4 2 0 0 0 50 0 114352500 0
hdmi_drive=2
disable_overscan=1
max_framebuffer_width=1080
max_framebuffer_height=1920

# Landscape
display_rotate=1
framebuffer_width=1920
framebuffer_height=1080

hdmi_group=2
hdmi_mode=87
dmi_force_hotplug=1
なお、2022年7月現在、Raspberry Pi OS Bullseye では上の設定では画面が縦向きになります。設定中の「# Landscape」の項目が機能していない、ということでしょう。その場合、画面左上のメニューから「設定」→「Screen Configuration」→「Configure」→「Screens」→「HDMI-1」→「向き」を「right」または「left」に設定すると画面が横向きになるでしょう。



「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。

2015年11月30日月曜日

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

はじめに

(注)こちらのページは、2015年に発売されたpi-topの旧バージョンについての記事です。2017年に発売された新バージョンについての記事はこちらになります。

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にこの程度近づきました。


こちらもどうぞ




「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。

2015年11月27日金曜日

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

はじめに

(注)こちらのページは、2015年に発売されたpi-topの旧バージョンについての記事です。2017年に発売された新バージョンについての記事はこちらになります。

前回のエントリ
にて、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でも良いかもしれません。

こちらもどうぞ




「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。

2015年11月5日木曜日

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

はじめに

(注)こちらのページは、2015年に発売されたpi-topの旧バージョンについての記事です。2017年に発売された新バージョンについての記事はこちらになります。

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を使ってみようと思います。


こちらもどうぞ





「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。

2015年9月2日水曜日

Raspberry Pi + kernel 4.1 / 4.4 / 4.9 / 4.14 / 4.19系列で5GHz対応WifiドングルGW-450D/GW-450D2/Archer T1U/WI-U2-433DMを動かした

本ページで目指すもの

(注:本ページの内容はkernel 5.X 系では動作しません)

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

そこで、本ページではRaspberry Piを5GHz帯のネットワークに接続することを目標にします。必要なものは下記のどれかの無線LAN USBアダプタです。
これらは、USBにさしただけでは認識されず、ドライバを別途インストールする必要があります。

ただし、2018年6月に日本で発売になったRaspberry Pi 3 Model B+では、基板上に実装されているネットワークデバイスを用いてデフォルトで5GHz帯のネットワークにつなぐことができるのですよね。

ですので、上記の無線LAN USBアダプタを使う理由はなくなりつつあるのですが、当面本ページメンテナンスは続けます。

解説は、下記の順で行います。
  1. Planex製GW-450D / GW-450D2 /tp-link製Archer T1U 用ドライバのインストール
  2. Buffalo製WI-U2-433DM 用ドライバのインストール
以前はカーネルの再構築が必要な方法で書いていましたが、カーネル再構築が不要な方法に改訂しました。


カーネルヘッダをインストール

まず、ドライバのインストールに必要なカーネルヘッダをインストールします。ターミナルで下記のコマンドを実行します。
$ sudo apt-get update
$ sudo apt-get install raspberrypi-kernel-headers
これが終わったら、インストールしたカーネルヘッダディレクトリを/usr/src/linuxとしてリンクを張ります。
$ cd /usr/src
$ sudo ln -s linux-headers-4.19.50-v7+ linux
ここで、「linux-headers-4.19.50-v7+」の部分は皆さんの手元の環境のディレクトリ名に読み替えて実行します。用いているのがPi 2およびPi 3らば末尾が「数字-v7+」のディレクトリを、 Pi 1やPi Zeroでは「数字+」のディレクトリを選ぶようにしてください。これらは自分の用いているカーネルのバージョン番号になっています。

自分が用いているカーネルのバージョンの調べ方も知っておきましょう。下記のコマンドを実行します。
$ uname -r
結果として、例えば「4.19.50-v7+」と表示されれば、「4.19系列」を用いていることになります。他には「4.14」、「4.9」、「4.4」、「4.1」などがあり得ると思います。 また、末尾に「-v7+」とつくのがPi 2およびPi 3です。Pi 1やPi Zeroでは末尾が「-v7+」ではなく「+」となっているはずです。
ここから、各Wifiデバイスのドライバーのインストールに入ります。

Planex製GW-450D / GW-450D2 /tp-link製Archer T1U 用ドライバのインストール

ここから解説するのは、GW-450D / GW-450D2 / Archer T1U 用ドライバのインストールの方法です。
まず、http://www.planex.co.jp/support/download/gw-450d/driver_linux.shtml
より、gw-450d_driver_linux_v3002.zipをダウンロードし、/home/piに置いておきます。

そして、ドライバを下記のように展開します。
$ cd /usr/src
$ sudo su
# unzip /home/pi/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
展開が終わったら、パッチをダウンロードして適用します。このとき、用いているカーネルが4.14~4.19系か、4.1~4.9系かで実行するコマンドが異なります。

まず、4.14~4.19系を用いている方は、次の2コマンドを実行してください。
# wget https://raw.githubusercontent.com/neuralassembly/raspi/master/gw-450d/gw-450d-rpi-kernel414.patch
# patch -p0 < gw-450d-rpi-kernel414.patch
4.1~4.9系を用いている方は、次の2コマンドです。
# 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、4.14、4.19でGW-450Dを動かす上で重要です。

以上が終わったら、コンパイルを行います。
# make
コンパイルが終わったら、モジュールをインストールします。kernelのバージョン(「4.19.50-v7+」の部分)は自分の環境に応じて読み替えてください。
# cp -p os/linux/mt7650u_sta.ko /lib/modules/4.19.50-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を開いていますが、もちろんここはお好みのテキストエディタを用いて構いません。
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。その場合のコマンドは「mousepad /etc/network/interfaces」です。
また、your-ssidの部分はお使いのWifiルーターのネットワーク名、your-passwdの部分はそのネットワークパスワードを記してください。
# leafpad /etc/network/interfaces
(末尾に以下を記述)
allow-hotplug ra0
auto ra0
iface ra0 inet manual
wpa-ssid "your-ssid"
wpa-psk "your-passwd"
以上が終わったら、GW-450D / GW-450D2 / Archer T1U のどれかをさし、Raspberry Pi を再起動します。

さしたネットワークデバイスでネットワークにつながっていると思います。Raspberry Pi 3のボード上のWifiデバイスを無効にしたい場合、デスクトップ右上のメニューから「Turn Off Wifi」を選択して下さい。

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

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

ここで、I-O DATA製WN-AC433UKについての注意を記します。上記の方法でドライバをインストールすることにより、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
kernel 4.19以降を用いている方はさらに以下の2命令を実行してください。
# wget https://raw.githubusercontent.com/neuralassembly/raspi/master/rtl8812-rpi-kernel419.patch
# patch -p0 < rtl8812-rpi-kernel419.patch
ここで、このディレクトリにあるMakefileを下記のように2箇所変更します。
...
CONFIG_PLATFORM_I386_PC = n
...
CONFIG_PLATFORM_ARM_RPI = y
すなわち、CONFIG_PLATFORM_I386_PCの値を「n」に、CONFIG_PLATFORM_ARM_RPIの値を「y」にするだけです。あとは下記のように作業を進めます。kernelのバージョン(「4.19.50-v7+」の部分)は各自読み替えてください。
# make
# cp 8812au.ko /lib/modules/4.19.50-v7+/kernel/drivers/net/wireless
# depmod -a
以上で、Buffalo製WI-U2-433DMを差すとネットワークインターフェースがwlan0かwlan1の状態で認識されます。このままでは、Raspberry Pi 3で用いる場合下記の問題があります。
  • オンボードのWifiデバイスとWI-U2-433DMに対してwlan0とwlan1のように同じデバイス名が使われ、さらにこの番号が変わることがある
これを解消し、オンボードのWifiデバイスをwlan0、WI-U2-433DMがwlan1と固定されるよう設定が必要となります。
以下では、Raspbianが「StretchまたはBuster」の場合とJessieの場合とにわけて解説しましょう。

Stretch / BusterでのWI-U2-433DMの設定

下記のコマンドにより、/etc/udev/rules.d/70-persistent-net.rules というファイルを新規に開きます。
$ sudo leafpad /etc/udev/rules.d/70-persistent-net.rules
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ sudo mousepad /etc/udev/rules.d/70-persistent-net.rules
leafpadはテキストエディタですので、お好みのものを用いて構いません。 この空のファイルに下記の内容を書き込みます。
# 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"
ここで、2箇所ある「xx:xx:xx:xx:xx:xx」の部分には、二つのネットワークデバイスのMACアドレスを記さねばなりません。

まず、オンボードのWifiデバイスのMACアドレスを調べるには、Raspberry PiからWI-U2-433DMを抜いた状態で下記のコマンドを実行します。
$ ifconfig 
wlan0またはwlan1のところに「ether xx:xx:xx:xx:xx:xx」という項目が見つかるでしょう。これがオンボードのWifiデバイスのMACアドレスです。 これを/etc/udev/rules.d/70-persistent-net.rules の一つ目の設定項目に記します。

同様に、WI-U2-433DMを差してからifconfigコマンドを実行します。wlan0またはwlan1のうち新たに追加された方のMACアドレスを/etc/udev/rules.d/70-persistent-net.rules の二つ目の設定項目に記します。

以上で、「オンボードのWifiデバイスがwlan0、WI-U2-433DMがwlan1」と固定されます。
次に、/etc/network/interfaces を管理者権限のテキストエディタで開きます。
$ sudo leafpad /etc/network/interfaces
なお、NOOBS 3.2.1以降ではテキストエディタとしてleafpadではなくmousepadを用います。
$ sudo mousepad /etc/network/interfaces
このファイルの末尾に、下記の内容を追加して保存します。
allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
これは、「オンボードのWifiデバイス(wlan0)と同じ設定ファイルをWI-U2-433DM(wlan1)でも用いる」という設定です。

以上の設定を行った後、デスクトップの右上のアイコンから「Turn Off Wifi」を選択し、オンボードのWifiデバイス(wlan0)だけを無効にします。 その状態でRaspberry Piを再起動すると、WI-U2-433DM(wlan1)で/etc/wpa_supplicant/wpa_supplicant.confの情報に基づいてWifi接続が行われます。 必要に応じてwpa_supplicant.confをテキストエディタで編集すると良いでしょう。

JessieでのWI-U2-433DMの設定

同様の内容をJessieで行う方法を記します。
設定ファイル /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 3のボード上のWifiデバイスを無効にしたい場合、デスクトップ右上のメニューから「Turn Off Wifi」を選択して下さい。USBデバイスのみが有効になるはずです。



「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶ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にインストールされ、冒頭の写真のように実行されます。

お疲れ様でした。



「ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作」、「実例で学ぶRaspberry Pi電子工作」、「Raspberry Piではじめる機械学習」を執筆しました。