Stream Analytics Tips – 配列で送られてきたデータの統計処理

メモ的に。 例えば、 {“timestamp”:”2018-07-09T15:15:06″,”items”:[ {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:0.27201866510883843,”y”:2.9749924982781488}, {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:3.3017625395682466,”y”:4.79066008925003}, {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:3.9475029771903083,”y”:2.6145762776092516}, {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:0.90333345621048167,”y”:1.6385073129267}, {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:3.1385963517886566,”y”:3.7381303583915022}, {“uid”:”097e3730-7f9e-45df-8473-7d029da18d07″,”tick”:636667461063351598,”x”:2.3104054305285242,”y”:3.1593682305698136}]}, {“timestamp”:”2018-07-09T15:16:29″,”items”:[ {“uid”:”0d59cbb6-7955-415d-b725-f4155ba048cd”,”tick”:636667461895922282,”x”:0.15601237311773578,”y”:1.4404155297393051}, {“uid”:”0d59cbb6-7955-415d-b725-f4155ba048cd”,”tick”:636667461895922282,”x”:1.2746048165832669,”y”:4.9212264851300169}, {“uid”:”0d59cbb6-7955-415d-b725-f4155ba048cd”,”tick”:636667461895922282,”x”:3.1073283139184715,”y”:2.2427159395267795}, {“uid”:”0d59cbb6-7955-415d-b725-f4155ba048cd”,”tick”:636667461895922282,”x”:3.4007428276356046,”y”:4.9929921235856565}]} こんな配列形式でIoT Hubを通じてStream Analyticsにデータが送られてくる(配列の要素は可変)場合の統計処理方法を書いておきます。ちなみに、uid、tickは同一配列内では同じ値でかつ、全般にわたってユニークとします。※実用的にはuid、tickのどちらかあれば十分でござる。 具体的には、配列毎のxの合計値、yの平均を求めます。 クエリーはこんな感じ WITH expanded AS ( SELECT msg.IoTHub.ConnectionDeviceId as deviceId, msg.timestamp, arrayElement.ArrayIndex, arrayElement.ArrayValue as item FROM [iothub] as msg CROSS APPLY GetArrayElements(msg.items) AS arrayElement ) SELECT     deviceId, item.tick, SUM(item.x) as sumOfX, AVG(item.y) as avgOfY, Count(item.x) as…

0

Azure IoT Edge SDK Ver2対応 C/C++ Edge ModuleのBuild方法

超久しぶりの投稿。 もっといい方法があるかもしれないのですが、C/C++で書かれたソースコードをEdge Module化できたので、備忘録的に紹介。 サンプルとして、Preview的に公開されている、http://github.com/azure/azure-iot-sdk-cのmodules-previewブランチを使います。 https://github.com/Azure/azure-iot-sdk-c/tree/modules-preview の、iothub_client/samplesの、iothub_client_sample_module_senderとiothub_client_sample_module_filterにサンプルとして公開されています。前者はDockerfileもありますが、使い方がわからないので、試した方法を解説。後者はそのままだと、不完全な感じです。 ※ 2018/6/7現在の公開情報をもとに書いてます。もしかすると、もっと別の良い方法がどこか別の場所で公開されているかも。 実行環境はRaspberry Pi 3以上のRaspbianです。まずは、http://matsujirushi.hatenablog.jp/entry/2018/04/15/214721 を参考に、Edge Runtimeをインストールしてください。ModuleをBuildするのも、実行するのも、Raspbian上です。2セット用意して一個は開発環境用、もう一個は実行環境用にしておくと便利。 先ずは、azure-iot-sdk-cをclone $ git clone -b modules-preview -r https://github.com/Azure/azure-iot-sdk-c.git cloneが終わったら、https://github.com/Azure/azure-iot-sdk-c/blob/modules-preview/doc/devbox_setup.md#linux に従って、ビルドします。 cloneしたディレクトリには、azure-iot-sdk-cというディレクトリができているので、それに並べて、以下の内容のDockerfileを作成します。 FROM resin/rpi-raspbian:jessie as builder run sudo apt-get update run sudo apt-get install -y cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev WORKDIR /home/pi/azure-iot-sdk-c run pwd; ls ADD ./azure-iot-sdk-c . run pwd; ls WORKDIR cmake/iothub_client/samples/iothub_client_sample_module_sender…

0

MACからでもデバイス登録可能だよ。IoTHub-Explorer紹介

テストや実証実験目的で、Azure IoT Hubにデバイスを追加したりセンサーデータをモニタリングしたりデバイスにコマンドを送ったりするのに、Device Explorerというツールが用意されています。このツールは、http://github.com/Azure/azure-iot-sdks/releases に記載のリンク、SetupDeviceExplorer.msi をクリックしてダウンロード&インストール可能です。このツール、超便利…なのですが、Windows PCにしかインストールできません。 私はMACなんだよね…って方。大丈夫です。コマンドラインUIなので、ちょっと使いにくいですが、Node.js上で動く、iothub-explorerというツールが別途公開されているので、それを使えば、MACだけでなく、LINUX等でも、IoT Hubへのデバイス登録や送信データのモニタリングができます。 まず、https://nodejs.org/en/download/current/ から、Node.jsの環境をダウンロードしてインストールしてください。インストールが終わったらNode.jsのシェルを立ち上げて、https://github.com/Azure/azure-iot-sdks/tree/master/tools/iothub-explorer に記載に従って、以下を実行します。 npm install -g iothub-explorer このコマンドでiothub-explorerに関する必要ファイルがインストールされます。インストールが終わったら、同じシェル上で iothub-explorer login [connection string] を実行します。”[connection string]”の部分は、http://portal.azure.comで作成したIoT Hubの共有アクセスポリシーのiothubownerの接続文字列に置き換えます。 HostName=IoTHubName.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=Base64EncodingString こんな感じの文字列です。管理ポータルのコピーボタン(紙が二枚重なっている感じのアイコン)でコピー可能です。 次に iothub-explorer create [deviceId] を実行すると、IoT Hubに指定したデバイスIDが登録され、接続に必要なセキュリティ文字列が表示されます。 複数登録されたデバイスの一覧を表示したい場合は、 iothub-explorer list を実行すると、既に登録されたデバイスIDの一覧と、それぞれのセキュリティ文字列が表示されます。この情報を使って、デバイス側のIoT Hubへの接続・送信アプリを完成することができます。 IoT Hubの作成等、基本的な手順は、http://aka.ms/IoTKitHoLV3On のStep2を参照してくださいね。

0

Windows 10 IoT CoreをはじめとするUWPアプリでBLEデバイスを扱う

先ずは、IoT Kitハンズオントレーニング のデバイス側で、Windows 10 IoT CoreのUWPアプリ(Windows 10 PCでも実施可能)とTexas InstrumentsのSensor Tag(CC2541、CC2650)の組合せを追加したことをお知らせします。https://github.com/ms-iotkithol-jp/IoTKitHoLV3 のWinIoTCoreTIIoTHubAppフォルダーに入っているソリューション一式がそれです。TI Sensor TagをデバイスやPCとペアリングすれば、あとは、WpfEmuIoTHubAppと同じ要領で自学自習可能ですので、TI Sensor Tag持っている人は是非試してみてください。一般のPC、Raspberry Pi3やDragonBoardなどBLE対応のデバイスであれば特にBLEのドングルなどなくても実習可能です。 さて本題です。このアプリを作っている過程で、BLEデバイスにアクセスするためのWindows Runtime APIの使い方でてこずりました。ライブラリー群は、非同期メソッドなので、await 句を付けてコールすれば通常は問題なく使えるのですが、HandsOn.csファイルの中で、普通のやり方をやっても実行がブロックされて戻ってきません。では、Taskのまま受けて、Wait()で待って、結果をResultで受け取って…を試してみたら、デバッガーで一行一行ステップバイステップで動かすと、一応動くのですが、一気通貫で実行しようとすると、Wait()から帰ってこない!最悪のパターンだ…どうしよう、ってな状況になってしまいました。しかしなぁ…サンプルでは動いてるしなぁ…何が違うの? と考えて動くものと動かないものを比較した結果、解が得られました。どうやら、UWPアプリとして作ったプロジェクトの中ではawaitやWait()がうまく動かないらしく、UWPアプリプロジェクトを作った時に出来上がるソリューションに、別途UWPクラスライブラリプロジェクトを作って追加、そのクラスライブラリ上にBLEデバイスにアクセスするFindAllAsyncやらなんやらをコールするコードを置くとうまく動くんですな。Gitに挙げているサンプルもそういう作りになっています。 ってことで、await機能しないじゃん、なにこれ?…と首をかしげてる皆さん、この方法試してみてください。 ではでは

0

あらら、EdisonのYokuto LinuxもVisual Studio 2015で…

ふと思ったわけです。「あれ?Raspbianのアプリがあれだけ簡単にリモートビルド&デバッグできるなら、Edison Yokutoも一緒じゃね?」 やってみました。 あっけなくできました。 なんだよ~クロスプラットフォーム用のWindows上のもろもろのインストールとか設定とか必要ないじゃん …という嘆きはどうでもいいです。それはそれで色々使い道もあるんで。 では、早速、Visual Studio 2015を起動して、「ファイル」→「新規作成」→「新しいプロジェクト」を選択して Visual C++のクロスプラットフォームのLinuxを選択して、”Empty Project(Linux)”でプロジェクトを作成。 プロジェクトに、main.cppを追加して、鉄板の #include <stdio.h> int main(int ac, char** av) { printf(“Hello World!\n”); } と書いて、CPUをx86に変えて(Edisonなんで) ”▶ Remote GDB Debugger”をクリック。すると、https://blogs.msdn.microsoft.com/hirosho/2016/06/01/visual-studio-2015-update2-cross-platform-development-for-example-intel-Edison/ をやっている人なら、何も設定しなくても、EdisonのYokuto Linux上にソースコード一式リモートコピーされ、リモートビルドされ、リモートデバッグが開始されます。Wow やってない人は、 こんなダイアログが表示されるので、Host name:に、EdisonのIPアドレスを、User name:に開発用に使っているユーザーアカウントを、Password:にそのユーザーのパスワードを入力すれば、つながります。 以上!

0

IoT Hub Device Management Preview 2016/7/4現在

ちょっと時間たってしまいましたが、4月のBuildでIoT Hubの機能強化が発表されました。現在、PreviewとしてDevice Managementの機能がSDKも含め公開されだしています。SDKの成熟を待って、そろそろいいかなという状況になってきたみたいなので、いやぁ、まだまだ、幾つか問題あるなと、いう感じですが、2016年7月4日現在でhttp://azure.microsoft.comのドキュメント→モノのインターネット→IoT Hubから公開されている内容を元に、試す際の注意点を記載しておきます。 まずは、 https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-device-management-device-twin/ https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-device-management-get-started/ をじっくり読んでください。ここに書いてある通りにやると、動いた!というのが理想なのですが、幾つか嵌りポイントありました。それを以下に説明します。 まず、CMakeのインストールについて 私が試したときは、PATHの追加を選択したにもかかわらず、PATH設定されなかったので、PATHが追加されなかった場合(コマンドプロンプトでcmakeと入力したときにコマンドがないと表示される)、コントロールパネル→システム→システムの詳細設定でPATH設定を編集して追加しましょう。 コマンドプロンプト コマンドプロンプトは、Windowsデスクトップの左下のWindowアイコン→すべてのアプリで、”Visual Studio 2015”→”開発者コマンドプロンプト for VS20…”を使います。念のため、管理者権限で起動しておきましょう。 setup.batによるビルド実行 私の場合、見事に途中でビルドが失敗しました。理由は不明ですが、失敗したら、Visual Studioで、以下の二つのSLNファイルを開いて、ビルドしてください。どうも、Nugetから必要なSDKがダウンロードされていないようです。Visual Studioでビルドすると、きちんとNugetから必要ライブラリを持ってくるようです。 GetStartedWithIoTHubDM.sln iothub_charp_serviceclient.sln IoTHubのiothubownerの接続文字列を引数として指定することを忘れずに nodeのインストール Device ManagementのUIについては、nodeの6.1以上が必要ですが、どうも、Chakraのnodeが6.0の場合それが邪魔して上手くビルドできません。私のVisual StudioのWindows SDKが古い可能性がありますが。そんな場合は、nodeをhttp://nodejs.orgでダウンロード&インストールした後、c:\Program Files\nodejsのPATH設定を先頭に設定しなおしてください。設定後すぐには有効にはならないので、再起動等必要です。 この状態で、 npm install npm run build npm run start と実行すれば、無事、 起動。Node.jsで動いているので、例えば、IoT Hands-on V3のStep 3、Mobile Appsに組み込めば、動くはず。    

0

IoT ハンズオンコンテンツVer3のMachine Learning

未だに、Ver2を実践されている方もいらっしゃるようですが・・・ http://aka.ms/IoTKitHoL から公開しているIoTの要素を一通り学ぶ自学自習が可能なハンズオンコンテンツは、現在、Version 3です。IoTデバイス(PinKit/NETMF、Raspberry Pi2/Win10IoTCore)、または、Wpf EmulatorでIoT Hubに送ったセンサーデータを元に、デバイス識別子、計測時間、加速度からの温度状態予測をStep 7でMLを使っています。このコンテンツでは、IoT Hubで受信したセンサーデータをStream Analyticsで決めうちで温度の状態をHot、Coldに分類してストレージに格納したデータを使っています。 ハンズオンセミナーの時間の制約があり、こうしているのですが、実際には、デバイスごとの実測値を元に、温度のHot、Coldは決める必要があります。SASSensorテーブルには温度も含め蓄積されているので、R Scriptを使って、ML Studioの中で温度の高い低いを決めることが可能です。 Step10まで一通り終わった方は、是非、以下の方法を試してみて、よりリアルなMachine Learningにチャレンジしてください。 実は私は、データアナリストのプロフェッショナルでもなく、R Scriptのプロでもなく、未だ手探りの状態で、「あぁこれなら動くね」的な感じで作っています。もっといい書き方あるよーってかた、是非、フィードバックお願いします。 テーブルからのデータ読み込み まずは、ML StudioでExperimentsを一つ新たに作成します。そして、”Data Input and Output”の”Import Data”をドラッグ&ドロップし、 プロパティで Data Source → Azure Table Account Name、Account Keyは、SASSensorのストレージの情報を入力 Table name → SASSensor Rows to scan … →ScanAll とします。プロパティの入力が終わったらRUNで実行します。 データの分割 これがAzure MLのせいなのか、R Scriptがもともとそうなのか、ちょっとわからないのですが、時間がR Scriptを通すと、1970年1月1日からのTick数になってしまうので、分割します。 まず、Data Transformation→ManipulationのSelect Columns in Datasetを二つ追加してImport Dataに接続します。 左側は、timeを抽出します。後でマージする必要があるので、msgIdも一緒に抽出します。ちなみに、msgIdは計測時に、全ての計測レコードが一意に特定できるようにデバイスに付与している値です。左側のSelect…

0

IoTでAzure Functionを使おう!

2016/4のBuildで、Azure Functionが紹介され、現在、Preview公開されています。 このサービス、とってもGoodです。PaaSでIoTをビルディングブロック的に構築していくときにとっても便利です。従来ならWebJobを使って、各サービス間をつなぐところをFunction使ってより少ない作業量で構築できて、バインディングも増えているし、尚且つ、実行したときだけ課金。さらにはスケール可能。それになんと、Visual Studio Onlineを使って、Visual StudioがPCにインストールされてなくても開発できる!(ステップ実行とかできれば最強なのにぃ。。。) 現在公開中の、IoT Kit ハンズオンV3は、Step 9でWebJob使ってます。Step 8でのStream AnalyticsのMLの結果の出力をEvent Hubに投げていて、投げっぱなし。この二つを近いうちにFunctionを使う様に置き換えようかなと、思っている次第。イメージとしては、こんな感じ しかしですね。。。このFunction、一応ドキュメントが、https://azure.microsoft.com/ja-jp/documentation/articles/functions-reference-csharp/ とかから公開されているんですが、BlobやEvent Hubとか、のTriggerを受けるためのバインディングの説明がとても分かりにくいーい、と思ったのは私だけではないはず。結構現時点(2016/6/16)だと、実装されてなくて、ひと手間必要なものも結構あるし。 ということで、function.jsonでのバインディングの定義と、run.csxで定義する、Runメソッドの引数に関する、基本的な事を説明しておきますね。例えば、https://azure.microsoft.com/ja-jp/documentation/articles/functions-bindings-storage/ で、結構使いそうな場面が多い、ストレージへのアクセスをトリガーにしたバインディングが書かれてますね。一個抜き出して解説します。 対応を書き込んでます。Function.jsonの、最初の’name’がmyQueueItemというエントリがRunメソッドの一番目の引数に対応、二番目の’name’が’myQueue’というエントリが、Runメソッドの二番目の引数に対応します。Function.jsonのバインディングの定義は増やすことができます。増やしたら、Runメソッドにも同じ名前の引数を追加します。Runメソッドの引数の型は、Functionで使えてバインディング可能な型は、例えばブロブトリガーなら、”ブロブトリガーにサポートされた型”にリストアップされている型なら何でも選択可能。型をどれにするかは、Function.jsonの定義とは関係なく、Runメソッドのロジックの実装上の都合で選択してかまいません。図の例でいうと、図では、myQueueItemはstring ですが、CloudBlockBlobに変えてもよいという事です。バインディングは勝手にAzureがやってくれます。Runメソッドの最後のTraceWriter logは、ログ出力用にデフォルトで付与される変数です ただ、現状だと、project.jsonに必要なアセンブリの名前を追加したり、run.csxの冒頭に#r や、using宣言を入れる必要はあるので、適宜追加が必要です。実際にやってみたところ、Storage Tableについては、ICollector<T>などは対応していないようです。現状、Storage Tableに行を追加したい場合などはCloudTable型の引数を使わないと動作しませんでした。ICollectorの場合は、function.jsonでのdirection定義がoutになるのですが、CloudTableの場合は、inにしないといけないなど細かい修正は必要ですが、まぁ、プレビュー段階なので臨機応変に対応してくださいね。 今、Functionを取り入れた新しいIoT コンテンツを準備中なので、こうご期待。皆さんもFunctionを是非お試しくださいませ。 おまけ Azure Functionから、Visual Studio Online(プレビュー)を起動するには、以下の図に従って、クリック&クリック そして、ブロックブロブにファイルがアップロードされた時に、そのファイルを解析してストレージに格納したいなら、 project.json これで、NuGetで公開されている、Azure Storage SDKを組込めます function.json 現状は、これでStorageに書き込むためのCloudTableの参照を引数で取得できます。 run.csxは、 と書けばいい。 他に、例えば、処理結果をJsonで、ブロブに書き出したい場合は、 project.json ※クラスをシリアライズするので、Newtonsoft.Jsonをインストール function.json ※出力されるファイルは、pathで指定されたパターンで名前付けられ、保持される。ブロブにimg20160616.jpgというファイルがアップされた場合は、img20160616.jsonという名前で保存される。 run.csx と書けばOK。myOutputBlobの型はCloudBlockBlobを使います。 ブロブへのアクセス権等は、FunctionのRuntimeが吸収してくれるのでSASToken作るとか考えなくてよいのですごく便利。 以上、おまけとして、Azure Storage テーブルと、ブロブへの出力方法書きました。出力したファイルをStream Analyticsで更に分析したい場合はブロブで、ML で学習データとして使いたい場合は(Import DataはJson対応してないので)、Tableを使うのがベター

0

de:code 2016 IoT Touch and Try

de:code 2016に来て、IoT Touch & Tryを体験された皆さん、Touch & Tryしてくれてありがとうございました。いかがでしたでしょうか? Windows 10 IoT Core for Raspberry Pi2やMicrosoft AzureのIoT関連サービスの一端に、なるべく多くの方が触れてほしいということで企画しました。当日の資料はこちらからダウンロードできるようにしてあります。https://doc.co/qqUcy3 1ラウンド10分ということで、IoTを構成する要素のうち、センサーデータ計測、データ送信、コマンド受信、リアルタイム分析、蓄積、可視化の部分を切り出した内容です。 de:codeのEXPO会場でTouch & Tryをやる以上、新しい試みをやりたいなと、色々考えて、「せっかくだからコンパニオンロボットにスピーカーやらせよう、IoTだし」ということで、キーノートにも登場した富士ソフト製のPalmiに、DMM.comさん協力のもと、スピーカーを務めてもらいました。話す内容は毎回決まっているのでルーチンワークはロボットが担当、各受講者の挑戦の手助けという非定型な仕事は、人間が担当するという布陣です。 サポーターは、MVP でもあり、IoT ALGYANの主要メンバーでもある、瀬尾佳隆さん(ALGYAN 破認定)、日高亜友さん(ALGYAN守認定)ががっつりと対応、他、IoT ALGYANの皆さんも都度参入。二日間お疲れ様でした。ありがとうございます。 Palmi君に”IoTを教えて”と問いかけると、コースの冒頭からPalmiが説明を開始、頭をポンポンすると次のフレーズを説明(正確にはポンですがw)。人間のお二人が受講者の状況を見ながら適宜フォロー、という進行で、おかげさまで、1日半で51回実施、受講者平均3~4人/1回で、de:code参加者の1割弱がTouch & Tryされたことになります。 舞台裏を紹介 このTouch & Try は、10分という尺に合わせ、実習環境を用意し、 PPTを作成。Palmiだったらこんな喋り方をするだろうなという想像のもと、スクリプトをノートに記載。将来的にはそのままPalmiがノートを読めるようになる(Palroは現時点でも可能)はずですが、今回は、DMM.comにお願いして、ノートの内容をテキストファイル化し既存のロボット用アプリを使ってPalmiに仕込んでいただき、当日を迎え、前日夜実習環境のセットアップ、初日の午前中、Palmiのリハ(一発合格)で本番を迎えました。ラズパイの時計が狂うとか、Surfaceからラズパイがネット越しに見えなくなるなどの問題は都度解決しながら、大きな問題もなく、Touch & Tryを進行しました。 実習資料は、現在公開中、そして、1か月に一回程度でハンズオンセミナー開催中の、http://aka.ms/IoTKitHoLV3On (全10 StepでMLやWebアプリ連携等も盛り込んだ内容:ハンズオンセミナーはこれを一日かけて全部やってしまうという鬼セミナーw)を基に、更にそれを技術系学校の授業向けにシンプル化した、全3コースからなる実習コンテンツのコース1をde:code向けにカスタマイズしたものです。「Touchするだけでは満足できない!」という方は、是非、http://aka.ms/IoTKitHoLV3On と、https://doc.co/8VNqwE を組み合わせて実習してみてください。実習で使う、FEZ HATというボードは、http://tinyclr.jp/ から購入可能です。 最後に、IoT Touch & Tryにチャレンジいただいた皆さん、サポーターの瀬尾さん、日高さん、Palmiの仕込みにご協力いただいたDMM.comの皆さん、ありがとうございました‼

0

Starter Pack for Windows 10 IoT Core on Raspberry Pi 2のセンサーとかを使うライブラリってどこよ

MAKERSのみんなは、もう、持っているよね。Starter Pack for Windows 10 IoT Core on Raspberry Pi2‼ でも、このキットに入っている、BME280やTCS34725 、MCP3008 、昔懐かしいCDSの光センサーとか、半固定抵抗とかどないして使えばええねん‼ って思っている人たちもいるんじゃないかな⁈ ってことで、ここで紹介しておきますね。https://www.hackster.io/ のサイトを探すと大概あります。世界中のMAKERSが投稿してくれているんです。 BME280 つなぎ方は https://www.hackster.io/windows-iot/weather-station-v-2-0-8abe16?ref=search&ref_id=bme280&offset=2 ライブラリは、https://github.com/ms-iot/adafruitsample/tree/master/Lesson_203V2/FullSolution このセンサーは、環境情報の基本中の基本の温度、湿度、大気圧を測れるんだよね。人の快・不快とか心の浮つき加減とか、影響するらしいから、Azure Cognitive ServiceのEmotion APIとかと組み合わせると面白いかもよ TCS34725 いわゆる色センサーね。センサー付近の色をRGBで教えてくれる。 つなぎ方は、https://www.hackster.io/windows-iot/what-color-is-it-578fdb?ref=search&ref_id=TCS34725&offset=2 ライブラリは、https://github.com/ms-iot/adafruitsample/tree/master/Lesson_205/FullSolution MCP3008 お次は、Analog Digital Converterだっ。ラズパイにはアナログをデジタルに変えるチップがついてないんだよね。そのままだと、CDSの光センサーや半固定抵抗の抵抗値とかが取り込めないよ。これらってアナログだからね。このチップを使うと、アナログの連続値をデジタルに変換して読み込めるよ。 つなぎ方は、CDSの光センサー、半固定抵抗ひっくるめて、https://www.hackster.io/windows-iot/bright-or-not-v-2-0-30dec8 ライブラリはいろいろあるけど、https://github.com/porrey/mcp3008/tree/master/source/MCP3008%20Solution/Mcp3008 が一番いいかな。 BME280とかTCS34725とかはI2Cだけど、MCP3008はSPIでラズパイと通信するんだよ。SPIのサンプルにもなるね。 ってことで、軽いノリで紹介してみました。あ、そういやこれ、紹介したライブラリは、ラズパイだけでなく、ミノーボードやドラゴンボードでも使えるはず。 それと、Hackster はもちろん日本人も投稿オッケーなんで、腕に覚えのある人は是非、投稿してね

0