RaspberryPi2とWindows10 IoT CoreとAzureでWebカメラを使った家庭用見守りロボットを作ります。
Webカメラで撮影した画像を家族と認識して挨拶をしたり、不審な人がいると警告をするロボットです。
余裕があれば今日の天気やゴミ捨ての日をお知らせしてくれる機能も追加していこうと思います。
最終的には笑顔の時は元気だねとか、悲しい顔をしてたらどうしたの?とか子どもと会話できるロボットを低コストで作ってみたいです。
我が家ではPepperには手を出せないので、頭脳戦で勝負します 笑。
家族の顔認識はAzure Machine Larningの派生サービスであるMicrosoft Project Oxfordを使うことにしました。
今回はラズパイのセットアップとWindows10アプリの開発環境の構築をします。
ラズパイとWindowsアプリの開発は初心者でしたので、構築にあたってこちらの書籍を参考にさせていただきました。
とても参考になりました!
Raspberry Pi 2とWindows 10ではじめるIoTプログラミング(Amazon)
#事前に揃えたもの
Windows10(MacbookPro13-inchi,Mid2010 Bootcamp)
※古いMac使ってます。
最新のBootcamp6に対応していないので、いろいろと問題が発生しますので、古いMacはお勧めしません 笑。
Raspberry Pi2 Model B ボード&ケースセット
※旧式のRaspberry PiにはWindows10 IoT Coreはインストールできないようです。
LOGICOOL Webカメラ C210・・・人の認識をするために静止画を撮影します。
※カメラの写りが良くなかったので、別のカメラを動作確認済みリストから再選定中です。
KP-IR412 PIRセンサーモジュール・・・人を検知するために使います。
ELECOM microSDHCカード Class4 16GB・・・Windows10 IoT Coreのセットアップに使います。
ELECOM WiFi 無線LANルーター WRH-300BK2-S・・・RaspBerry Pi2をWi-Fiで接続させるために使います。
Micro USBケーブル・・・Raspberry Pi2の電源用ケーブル。
電源アダプタ(5V2A)・・・Raspberry Pi2の電源アダプタ。
HDMIケーブル・・・Raspberry Pi2の初回の起動確認のために使います。
HDMI接続対応ディスプレイ・・・Raspberry Pi2の起動確認のために使います。
USBマウス・・・Raspberry Pi2の初期設定用
USBキーボード・・・Raspberry Pi2の初期設定用
LANケーブル・・・Raspberry Pi2の初期設定用
小型スピーカー(アナログ端子)・・・挨拶や警告を発するときに使います。100円ショップで購入しました。
ロボットのボディ・・・予算削減のためダンボールで作る予定です 笑。
#1.Windows 10 IoT Core SDカードへのインストール
1.下記のサイトから「Windows10 IoT Core for Raspberry Pi2」をダウンロードします。
http://ms-iot.github.io/content/en-US/Downloads.htm
以下のようなISOファイルがダウンロードされます。
10586.0.151029-1700.TH2_Release_IOTCoreRPi_armFRE.ISO
2.ISOファイルをダブルクリックすると、ISOファイルがマウントされてインストーラー「Windows_10_IoT_Core_RPi2.msi」が表示されますので、ダブルクリックしてインストールを実行します。
3.インストール完了後、Windows IoT Core Image Helper Applicationが自動的で起動します。
※スタートメニューでは、
以下のメニューが追加されます。
「Microsoft 」-「WindowsIoTImageHelper」
「Microsoft 」-「WindowsIoTCoreWatcher」
4.SDカードをPCに接続して、SDカードとOSイメージ(.ffu)の選択をします。
OSイメージは以下のパスにあります。
C:\Program Files\Microsoft IoT\FFU\RaspberryPi2\flash.ffu
5.「Flash」をクリックして、確認画面が表示されますので、「Continue」をクリックして実行します。
6.コマンドプロンプトが起動して、100%になればインストール完了です。
#2. Windows 10 IoT Core の初期設定
1.Raspberry Pi2にマウス、キーボード、LANケーブルHDMOケーブルを接続した状態で、microUSBから電源を共有すると、しばらくして起動画面が表示されます。
2.起動画面右上の設定ボタンをクリックして、基本設定画面に遷移し、「言語」を日本語に選択します。
![言語設定.jpg](https://qiita-image-store.s3.amazonaws.c
om/0/33021/f8da7df9-cbff-f272-039f-81a4c78843fc.jpeg)
3.スタートメニューから「Microsoft 」-「WindowsIoTCoreWatcher」をクリックして起動すると、
「minwinpc」が表示されることを確認します。
4.「minwinpc」を右クリックして、「Web Browser Here」をクリックします。
5.ブラウザが起動して「Microsoft Edge」ページが表示されますので、「ユーザー名:Administrator」、「パスワード:p@ssw0rd」と入力、「資格情報を記憶する」にチェックして「OK」をクリックします。
6.「サイトからのメッセージ」が表示されますので「OK」をクリックします。
7.Preferences画面が表示されますので、パスワードを変更します。
Old passwordとNew Password Confirm passwordに入力してSaveをクリックします。
8.変更後のパスワードで再度ログインします。
9.同じくPreferences画面で、デバイス名も変更します。
今回は「Change your device name」に「RaspberryPi2」と入力してSaveをクリックします。
再起動をして、デバイス名が更新されます。
10.サイドメニューのProcesssをクリックすると、Processesページが開いて、プロセスの監視ができます。
ShutdownボタンやRestartボタンをクリックすると、Raspeberry Piのシャットボタンや再起動をすることもできます。
11.ファイル共有にアクセスするため、IoT Core Wacher上で右クリック-「Open Network Share」をクリックします。
※私の環境の場合「指定されたネットワークパスワードが間違っています。」と出てファイル共有にアクセスできませんでした。
この場合は、下記でファイル共有ができました。
Ⅰ.エクスプローラを起動します。
Ⅱ.「コンピューター」タブを開いて「ネットワークの場所の追加」をクリックし、「ネットワークの場所の追加ウィザードの開始」を開き、「次へ」をクリックします。
Ⅲ.「カスタムのネットワークの場所を選択」を選択して、「次へ」をクリックします。
Ⅳ.「インターネットまたはネットワークのアドレス」にて「\\RaspberryPi2\C$」を入力して、「次へ」をクリック。
認証画面が出るので、ユーザー名/パスワードを入力
ユーザー名は「RaspberryPi2\Administrator」
Ⅴ.以上により、エクスプローラ上で共有フォルダが確認できます。
共有フォルダからWindows\System32\winevt\Logsを確認すると、イベントログも確認することができます。
#3.PowerShellを使ってIPアドレスの固定化をする。
ブラウザのGUI上から設定を中心にしていましたが、細かい設定をするためにPowerShellを使います。
今回はIPアドレスの固定化の設定をします。
1.スタートメニューから、PowerShellを入力して、PowerShellを検索します。
2.管理者権限で実行するため、PowerShellを右クリック-「管理者として実行」で実行します。
3.pingを実行して、RaspberryPi2からの応答があるか確認します。
PS C:\WINDOWS\system32> ping RaspberryPi2
RaspberryPi2 [fe80::5c51:1e:c0d:a666%8]に ping を送信しています 32 バイトのデータ:
fe80::5c51:1e:c0d:a666%8 からの応答: 時間 =10ms
fe80::5c51:1e:c0d:a666%8 からの応答: 時間 =17ms
fe80::5c51:1e:c0d:a666%8 からの応答: 時間 =7ms
fe80::5c51:1e:c0d:a666%8 からの応答: 時間 =5ms
4.以下のコマンドを実行して、Windows 10 IoT Coreへリモート接続します。
※次回からは「Enter-PsSession」コマンドで接続できます。
net start WinRM
Set-Item WSMan:\localhost\Client\TrustedHosts -Value RaspberryPi2
Enter-PsSession -ComputerName RaspberryPi2 -Credential RaspberryPi2\Administrator
5.ipconfigを実行して、ipアドレスの設定を確認します。
[RaspberryPi2]: PS C:\Data\Users\Administrator\Documents> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::5c51:1e:c0d:a666%3
IPv4 Address. . . . . . . . . . . : 192.168.11.10
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.11.1
6.netshを実行して、Ethernetがあることを確認します。
[RaspberryPi2]: PS C:\Data\Users\Administrator\Documents> netsh interface ip show config
Configuration for interface "Ethernet"
DHCP enabled: Yes
IP Address: 192.168.11.10
Subnet Prefix: 192.168.11.0/24 (mask 255.255.255.0)
Default Gateway: 192.168.11.1
Gateway Metric: 0
InterfaceMetric: 20
DNS servers configured through DHCP: 192.168.11.1
Register with which suffix: Primary only
WINS servers configured through DHCP: None
7.インタフェース"Ethernet"に対して、IPアドレスの固定化をします。
netsh interface ip set address "Ethernet" static <IPV4> <Subnet Mask> <Default Gateway>
[RaspberryPi2]: PS C:\Data\Users\Administrator\Documents> netsh interface ip set address "Ethernet" static 192.168.11.10 255.255.255.0 192.168.11
.1
[RaspberryPi2]: PS C:\Data\Users\Administrator\Documents>
#4 開発環境の構築
1.開発環境(IDE)のVisual Stadio Comunity2015をダウンロードします。
https://www.visualstudio.com/downloads/download-visual-studio-vs
2.ダウンロードしたvs_communty.exeをダブルクリックして、インストーラを起動します。
3.インストーラの種類を[標準]を選択してインストールします。
4.開発キットのWindows10 SDKをダウンロードします。
https://dev.windows.com/ja-jp/downloads/windows-10-sdk
5.ダウンロードしたSdksetupをダブルクリックして、インストーラを起動します。
6.Install the Windows Software Development Kit -WIndows10.XXX to this computerを選択して「Next」をクリックします。
7.Windows Kits Privacyという画面が出ます。
品質向上のためにご利用のPCの情報が送ってもいいですか?
という感じの内容です。
どちらか選択して「NEXT」をクリックします。
8.License Agreementの画面です。
内容に同意しているかを確認した上で「Accept」をクリックします。
9.最後にインストールの確認画面が出ますので、デフォルトのチェック状態のまま「install」をクリックするとインストールが開始されます。
10.インストールが完了すると「Welcome to the Windows Software Development Kit」画面が表示されますので、「Close」をクリックします。
環境構築は以上です。
次回はWebAPIと連携してみたり、人認識センサーやWebカメラを使います。