Windows 10 IoT Core for Raspberry Pi2 と周辺機器をシリアル通信(RS232c)でつなぐ

このポストでは、Windows 10 IoT Coreで動くRaspberry Pi2を、大昔からの定番、RS232cシリアル通信で周辺機器と接続する方法を解説します。 ※本ポストは、http://ms-iot.github.io/content/en-US/win10/samples/SerialSample.htm を元に書いています。※本ポストは、2015/10/30現在の情報を元に記載しています。OSの機能サポートの状況など、適宜確認してくださいね。 昔からPCや制御用コンピュータと周辺機器をつないで装置を開発していた皆さんなら全員ご存じのはずのRS232Cによるシリアル通信で、かつ、評価ボード系の周辺デバイスをリード線等でつなぐケースを解説します。 まずはつなぎ方です。 図の様に、 GND ‐ Pin 6 TX – Pin 8 RX – Pin 10 でつなぎます。TXは送信、RXは送信なので、接続先の周辺機器はつなぎ方が逆になります。この接続で、Windows 10 IoT Coreは、URT0というポートでシリアル接続されたと認識します。 ※この投稿を実際に試すには、10/30現在、http://ms-iot.github.io/content/en-US/Downloads.htm から公開中のInsider Previewのほうをダウンロードして作成したOSイメージを使ってくださいね プログラムの大まかな流れは、 シリアルポートを探す シリアルポートを開く データ送信・受信を行う です。アプリケーションは、Windowsのユニバーサルアプリ形式で開発してください。※GPIOやI2Cを使ったアプリを組むのに必要だった、IoT Extensionの参照追加は必要ありません。 シリアルポートを利用するには、Package.appxmanifestファイルにシリアルポート利用の宣言が必要です。プロジェクトが格納されているフォルダーを開き(ソリューションエクスプローラーで、ソリューション、もしくは、プロジェクトを右クリックして、”エクスプローラーでフォルダーを開く”を選択すれば開けます)、あらかじめ起動しておいたメモ帳にファイルエクスプローラーでPackage.appxmanifestを選択しドラッグ&ドロップし、<Capability>…</Capability>を以下の様に修正します。   <Capabilities>    <Capability Name=”internetClient” />    <DeviceCapability Name=”serialcommunication”>      <Device Id=”any”>        <Function Type=”name:serialPort” />      </Device>    </DeviceCapability>  </Capabilities> ※赤字の部分を追加 修正したら保存を忘れずに。 さてプログラムです。まず、シリアルポートを探すロジックですが、         List<DeviceInformation>…

0

IoTハンズオンコンテンツVer2公開中

9月から初めて先週土曜日(10/24)に終わった、IoTハンズオンセミナー、参加された皆さん、お疲れ様でした。 誤字脱字、わかりにくい部分を見直した資料をネット上で公開中です。 https://aka.ms/iotkitholv2on 構成を説明しておくので、参加された皆さんは復習を兼ねて、「え?そんなセミナーやってたの?」とか「時間が合わなくて参加できなかった…」という方は、是非チャレンジしてみてくださいね。 上のURLを開くと、ハンズオンコンテンツ全体を説明した資料が表示されます。このコンテンツは、GR-PEACH+センサーボードのPinKitという、.NET Micro FrameworkでC#でアプリをかけるボードを使っています。現在種々の事情で入手が困難な状況です。PinKitのほかに、Windows 10 IoT Core for Raspberry PI2や、ハードウェアを一切使わないPCだけで実習が可能なコンテンツも用意しています。 Windows 10 IoT Core for Raspberry PI2で実習したい方は、ハンズオンコンテンツ全体を説明した資料と、上のURLを開いたときに左側に表示されている「IoTKitHoLV2_Win10IoTCore for Raspberry PI2」というコンテンツを組み合わせて実習してくださいね。 PCしかない(Windows 7、Windows 8.1、Windows 10で実習可能)方は、ハンズオンコンテンツ全体を説明した資料と、「IoTKitHoLV2_WPFEmulator」というコンテンツを組み合わせて実習してください。まぁ、やっぱり、なんといっても、実際のセンサーで計った値のほうがリアルで面白いんですけどね。 どちらも、ハンズオンコンテンツ全体を説明した資料の、.NET Micro Frameworkの部分を抜き出して置き換えた文書になっています。他に「IoTハンズオン事前準備手順書」というドキュメントも用意したので、実習する場合には、このドキュメントを見て環境のセットアップなど行ってください。 なお、2015/9/30にプレビュー公開されたIoT Hubは、2015/10/26時点の内容では対応していません。Event Hubを使った内容になっております。もう少ししたら、IoT Hub対応を追加する予定です。ん…待てない!!という方は、現在公開中のコンテンツと、http://blogs.msdn.com/b/hirosho/archive/2015/10/22/iot-hub-windows-10-iot-core.aspx  のコンテンツを組み合わせると、とりあえずは、実践できるのでチャレンジしてみてくださいね。他にも、今後は、AllJoynによるローカルネット連携+クラウドや、クラウドからデバイスへのコマンド送信のシナリオも追加予定です。今後、https://aka.ms/IoTKitHoL 側にも反映していく予定です。 このコンテンツを解説する、動画付きのコンテンツも作成して公開予定なので、公開した暁にはよろしくお願いします。 それから、本コンテンツで取り上げているハードウェア、OS、ミドルウェア、言語以外のハードウェアをつなぐ試みも、大歓迎ですので、そんな拡張をされた方は是非ごれんらくくださいませ。

0

.NET Micro Framework 4.4 リリース

.NET Micro Framework の最新バージョン、4.4のRC版がリリースされました http://blogs.msdn.com/b/netmfteam/archive/2015/10/21/net-micro-framework-4-4-is-now-available.aspx ネットワークの安定性向上、いくつかのモダンなCPU向けの参照実装、Windows 10のUWPのAPIに似せたAPI(Device制御系)の追加等が含まれています。対応するVisual Studioは、2015の有償版、Community Editionです。※2015 Expressには対応していないようです。 SDKインストールのためのファイル群(MicroFrameworkSDK.msi、NetMFVS14.vsix)は、https://github.com/NETMF/netmf-interpreter/releases からダウンロードできます。 現状では色々と不具合があるようなので、特にNETMF4.3をインストール済みの皆さんは、使う場合には注意が必要です。https://yseosoft.wordpress.com/2015/10/24/netmf-net-micro-framework-v4-4-%e3%81%8c-rtw-%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%e3%80%82%e3%81%8c%e3%80%81v4-3-%e9%96%8b%e7%99%ba%e8%80%85%e3%81%af-visual-studio-%e3%81%ae%e6%9b%b4%e6%96%b0/に説明があるので、参考にしてください。 特に、Visual Studio 2015で、.NET Micro Framework 4.3を使っている皆さん、Visual Studio 2015からは、VSIXでインストールした機能にアップデートがあった場合、自動的に更新を適用する機能が入っているので、デフォルトではいつの間にか.NET Micro Framework 4.4にバージョンアップされて、コンパイルエラーになったり、デバッグできなかったりするようになるので、上の瀬尾さんの説明を読んで、.NET Micro Framework 4.3の再インストールを行った後、メニューの”ツール”→”拡張機能と更新プログラム”を選択し、 “.NET Micro Framework project system”を選択して、”この拡張機能を自動的に更新する”のチェックボックスのチェックを外してください。 他のトピックスとして、.NET Micro Frameworkではそれ以外にも新しい取組みが始まっています。LLILUMです。http://blogs.msdn.com/b/netmfteam/archive/2015/10/04/llilum-roadmap-and-latest-additions.aspx 既に初期バージョンのLLILUM SDKがVisual Studio向けに出ています。https://github.com/NETMF/llilum を読んでも今一つLLILUMとは何かがよくわからない感じですが、従来の.NET Micro Frameworkより、更に小さく、かつ、ハイパフォーマンスなバイナリを生成する技術と思ってください。現在は、C#ですが、PythonやJavaScriptのサポートやUWPアプリも対応予定のようです。https://github.com/NETMF/llilum/wiki/roadmap もう少し簡単に使えるようになったらまたこのブログで紹介しますね    

0

IoT HubにWindows 10 IoT Coreでつなぐ

さてと… ※この投稿は、2015/10/22現在の公開情報を元に記載しています。最新の情報がないか確認してくださいね。 IoT Hubのプレビューが9/30に公開されました。タイミング的にちょっと遅い気もしますが、Raspberry Pi2で動作するWindows 10 IoT CoreデバイスをIoT Hubに接続する方法を説明します。とりあえず試す方法が、https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-csharp-csharp-getstarted/  に書かれています。この説明は、.NET Framework上でC#を使ったサンプルで、Windows 10 IoT Coreの場合はWindows RT上で動くUniversal Windows Applicationという違いがあって、そのままでは、動かすことができません。更に、プレビュー状態のため、説明通りにいかない部分もあるので、ここで解説しておきます。 ※IoT Hubにつなぐ部分、送受信する部分は、通常のWindows 10のUWAでも利用できます。 折角なので、加速度センサー(ADXL345)、温度センサー(BME280)を使ってIoT Hubに送ってみましょう。基本の部分は、https://doc.co/4dEWrJ を見てください。ハードウェアの構成は、このドキュメントに記載の これに加えて、LEDも追加します。   次に、センサーやLEDをI2CやGPIOで制御するために、IoT Extensionを参照に加えます。 そして、https://doc.co/4dEWrJ に記載に従って、MainPage.xaml.csのProgramクラスにdeviceId(Guid値)と、プロジェクトにSensorクラスを追加してください。 次は、IoT Hubへのアクセス用ライブラリの追加です。本来ならNuGetを使ってインストールできるのですが、本投稿を書いている時点でははうまくいかないので、 ※現在既にNuGetでの組込みが可能になっています。ソリューションエクスプローラーで、プロジェクトの参照を右クリックし、”Nuget”を選択して、Azure Devices Clientで検索を行い、Microsoft.Azure.Devices.Client.PCLを選択してインストールを行ってください。 ブラウザで、 https://github.com/Azure/azure-iot-sdks/ を開き、表示されたページの右横にある、”Download ZIP”をクリックし、どこかにZIPファイルを保存、ZIPファイルのプロパティでブロックを外し(必ずやってくだいね)、適当な場所に保存します。 csharp/Microsoft.Azure.Devices.Client.WinRTに入っているMicrosoft.Azure.Devices.Client.WinRT.csprojをプロジェクトに参照追加します。 ソリューションエクスプローラーで、ソリューションを右クリックし、”追加”→”既存のプロジェクト”を選択し、Microsoft.Azure.Devices.Client.WinRT.csproj を選択し、ソリューションに追加してください。 次に、追加したSDKのプロジェクトを、作成中のプロジェクト参照として追加します。これで、NuGetで組み込んだのと同じ状態になります。 これで、IoT Hubにアクセスする準備は完了です。 後は、Modelsという名前でフォルダーをプロジェクトに作成し、そのフォルダーにSensorReadingという名前でクラスを作成し、 と、コーディングしてください。このクラスを使ってセンサー計測値をJSONに変換します。 さて、MainPage.xaml.csのnamespaceの中身を以下の様に編集します。 コードの中で、deviceId、iotHubUri、deviceKeyという変数がありますが、まずはGuid生成ツールで新規にGuidを作成して設定し、 https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-csharp-csharp-getstarted/ に記載のCreateDeviceEntryアプリでDevice Keyを作成して、deviceKeyの値とし、作成したIoT HubのURLにあわせてiotHubUri変数を編集すれば動きます。チュートリアルと上のコードを見比べてみてください。IoT Hubとの送受信の部分は基本同一です。 1秒ごとにセンサー計測値を貯めて、2分ごとにIoT Hubに貯めたデータを一括送信します。チュートリアルのReadDeviceToCloudMessagesを起動しておくと送信したデータを確認できます。また、…

0

Azure IoT Hub、IoTデベロッパーセンター始まりした

昨年来、AzureにIoTサービスを加えますよ!とアナウンスしておりましたが、ついに2015年9月30日にAzure IoT Suite、及び、IoT Hubのプレビューが公開されました。加えて、IoTデベロッパーセンターというページも出来上がっています。この投稿では、これらの概要を紹介します。 まず皆さん、ブラウザで、http://azure.microsoft.com  を開いてみてください。そして、ドキュメントタブをクリックしてみてください。 はい、”モノのインターネット”、という項目が追加されてます!ここからIoT関連はたどっていってくださいね。先ずは、一番下の”IoT Hub”を選択してみましょうか。https://azure.microsoft.com/ja-jp/documentation/services/iot-hub/ というページが開きます。このページの”チュートリアルの開始”という緑色のボタンを押すと、Windows 7以上のPC、Visual Studio 2013以上で、直ぐにこのIoT Hubを試すプログラミング方法が解説されています。ちょっとね、まだプレビューなんで書かれている通りに動かなかったりする部分もあるのですが、まずは、お試しください。 IoT Hubの中では、既に正式版が公開されている、メッセージを高速に送受信可能なブローカーサービスである、Event Hubが使われています。Event Hubは、IoTと似たような細かいデータがばらばらと高速に飛んでくるようなシステムで利用可能で、Event Hubへの接続数、データ転送量、スループットなどで、性能や金額が管理されるのに対して、IoT Hubは接続する組込み機器を単位として、性能や課金が決められています。IoT Hubの機能紹介を兼ねて、ざっと一般的な利用シナリオを紹介すると、 組込み機器をIoT Hubに登録 組込み機器をIoT Hubに接続 組込み機器からIoT Hubにデータを送信 IoT Hubにサブスクライブしたサービス側でデータを受信 サービス側からIoT Hubを通じて組込み機器にデータを送信 組込み機器がIoT Hubを通じて、コマンドを受信 組込み機器がコマンドを受信したことを、サービス側でAckとして通知を受ける 登録された組込み機器情報の取得 ざっと、こんな感じです。Event Hubと同様、Stream Analyticsにも簡単につなげられるので、例えば、組込み機器に装備されたセンサーデータをIoT Hubで受信してStream Analyticsに連結することが簡単にできて、そのままPowerBIにつないでダッシュボード表示をしたり、定義済みのルールに従ってデータを変換したり、通知を上げたり、バックエンドのWebJobを起動したりといった構成が簡単に組めます。 接続の管理は、Event Hubと同じように、ロールベースのトークンです。あらかじめ管理用、デバイス用、サーバーバックエンド用、デバイス管理用といったロールが定義されていて、それぞれにセキュリティトークンが提供されています。 使えるプロトコルは、HTTPSとAMQPです。最近、MQTTの問い合わせが多いですが、MQTTは今後何らかの形でExtensionとして提供される見込みです。(※あくまでも著者見解ですがMQTTのセキュリティレベルだと、IoT HubやEvent Hubが想定しているセキュリティレベルを満たせないので、IoT HubそのものにMQTTが使えるようになるのはちょっと難しいのかなと感じます)今後、もっと微に入り細に入り、IoT Hubは解説していきますが、まずは、 https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-what-is-iot-hub/ や、https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-devguide/ をご覧くださいね。 IoT Hubに接続する組込み機器向けに、GitHubで、SDKが提供されています。現在提供されているのは、 C# – .NET Framework系…

0