Azure Sphereのアプリケーションデプロイ
Azure Sphereの特徴の一つに、アプリケーションのデプロイ機能があります。
一般にOver-the-Air(OTA)とか、自動更新などと言われるもので、デバイスのアプリケーションを遠隔で入れ替えることができる機能です。
Azure Sphereでは、チップ上で動いているAzure Sphere OSが定期的にクラウド、Azure Sphere Security Service(AS3)をチェックして、新しいOSやアプリケーションが有ったときにダウンロードして入れ替えることで実現しています。
で、アプリケーションを更新したいときはAS3にアップロードするわけですが、、、まー、構造がややこしい。どれくらいややこしいかというと、これくらい。(松岡調べ)
まー、ややこしい。(2度目)
こんな声が届いたのか分かりませんが、ちょっと前にこのあたりの構造が大幅に変更されシンプルになりました。
変更後がこんな感じ。(松岡調べ)
シンプルにはなったものの、まだ把握不十分な感じもしていてモヤモヤとしていたのですが、、、
先日、Azure Sphere Public APIなるものが公開されて、これを見てみたところ、スッキリ・バッチリと構造を理解することができました。
結果がこちら。(松岡調べw)
- 製品をProductとする。
- アプリケーションの配布単位にDevice Groupを設ける。
- DeviceはDevice Groupと紐づいている。
- Device Groupに配布するアプリケーションDeploymentを紐づける。
- と、結果としてデバイスはDeviceに紐づいたDevice Group、に紐づいたDeploymentのImageをインストールする。
です。
さらに細かな点を言うと、
- 内部はIDで管理。(なので、名前が重複しても関係ない)
- DeviceGroupは、複数Productで兼用されない。
- DeviceGroupからDeploymentのカレント参照は1つのみ。
でした。
あー、スッキリした。
Azure Sphere SDKのバージョンアップに注意を!
縁あって参加させていただいた、AVNETさんのセミナーで気になるお話しが。
20.04から、Azure Sphere SDKとVisual Studio拡張が別々になったので(略
別々!?
いままでは、Azure Sphere SDKをインストールすれば、Azure Sphere用Visual Studio拡張も自動的にインストールされていましたが、どうやら別々に提供されるようになったみたい。
知らなかった...
というわけで、手元の環境を確認することにします。
現在のバージョン
Azure Sphere SDK
コントロールパネルで、Azure Sphere SDKのバージョンを確認。
20.4.7.42974なので、現在の最新でした。
azsphere
azsphereコマンドのバージョンを確認。
こちらも、20.4.7.42974です。
Visual Studio Extension for Azure Sphere
Visual Studioで、Azure Sphere用Visual Studio拡張のバージョンを確認。
20.1.7.495...
古 い ぞ ! !
この情報はちゃんと公開されているのか?
ちゃんと公開されていました...ハイ。
20.04概要に、
Visual Studio用とVSCode用のSDKを同一のSDKにして、Visual Studio拡張やVSCode拡張はマーケットプレイスで配布になったと、ちゃんと書いてあります。
Visual Studio Extension for Azure Sphereの最新バージョンは?
Visual Studioマーケットプレイスを覗くと、、、20.4.7.49790でした。
Visual Studio Extension for Azure Sphereの更新
これをポチっとやればOK。
教訓。
What's newは隅々確認しましょう。
Seeeduino XIAOのタッチ入力
Seeed K.K. エンジニアブログにも記事をポストしていますが、雑多な感じのものはこっちの個人ブログへポストすることにします。
タッチ入力を、ちょー軽く確認しました。
ライブラリの追加が必要
Seeeduino XIAOのArduinoパッケージには、タッチ入力の機能が含まれていません。
ググってみたところ、Adafruit_FreeTouchで出来るようです。
Arduinoライブラリマネージャで出てくるので、ここからインストールしました。
ソフトウェア
Adafruit_FreeTouchに同封のサンプルコードを修正して、A0~A10をシリアルプロッタに出力しました。
(具体的なコードは省略w)
結果
凡例が間違っているのは無視してください(汗
A0~A1、A6~10が、タッチ入力で使えました。
(A2~A5は使えませんでした。)
Seeeduino XIAOのデジタル入力
Seeed K.K. エンジニアブログにも記事をポストしていますが、雑多な感じのものはこっちの個人ブログへポストすることにします。
今回は、デジタル入力を確認しましょう。
ハードウェア
デジタル出力のときと同様、(電源を除いた)全ピンで入力できるようです。
なので、D0にタクトスイッチ経由で3V3(3.3V)に結線し、かつ、D0を抵抗経由でGNDに結線しました。
ソフトウェア
タクトスイッチを押したときに、オンボードの黄色LEDを点灯するコードを作成しました。
オンボードの黄色LEDは13で、論理が反対(LOWで点灯)なので注意してください。
constexpr int BTN = 0; // D0 constexpr int LED = 13; // YELLOW_LED void setup() { pinMode(BTN, INPUT); pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, digitalRead(BTN) ? LOW : HIGH); }
実行!
タクトスイッチを押すと、黄色LEDが点灯しました。(動画は割愛w)
プルアップ/プルダウン抵抗って省略できないの?
SAMD21マイコンのPORTには、内蔵プルアップ/プルダウンの機能があります。
↓データシートから抜粋
Platformにも、それらしい定義があるので試してみることに。
ハードウェアはこちら。プルダウン抵抗を取っ払いました。
ソフトウェアは、pinMode()で指定していたINPUT
をINPUT_PULLDOWN
にしました。
constexpr int BTN = 0; // D0 constexpr int LED = 13; // YELLOW_LED void setup() { pinMode(BTN, INPUT_PULLDOWN); // <--- pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, digitalRead(BTN) ? LOW : HIGH); }
結果、ちゃんと動作しましたー
おしまい。
Seeeduino XIAOのデジタル出力
Seeed K.K. エンジニアブログにも記事をポストしていますが、雑多な感じのものはこっちの個人ブログへポストすることにします。
Seeeduino XIAO、ちっちゃカワイイので、のんびりじっくりと時間をかけて楽しもうと思っています。
さっそく、基本中の基本、デジタル出力を確認しましょう。
ハードウェア
下図の「D〇」のピンがデジタル入出力で使えるみたい。
ということは、、、つまり、(電源を除いた)どのピンでもデジタル入出力可能!!
ほほー。
ってことで、D0とD1に、LED-電流制限抵抗-GNDの流れを結線しました。
ソフトウェア
LED1が点灯(0.2秒)、LED2が点灯(0.2秒)、消灯(1秒)を繰り返すコードを作成しました。
constexpr int LED1 = 0; // D0 constexpr int LED2 = 1; // D1 void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); } void loop() { digitalWrite(LED1, HIGH); digitalWrite(LED2, LOW); delay(200); digitalWrite(LED1, LOW); digitalWrite(LED2, HIGH); delay(200); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); delay(1000); }
実行!
えー、点滅しました。(動画は割愛w)
デジタル出力のピン番号って不思議ですよね?
Seeeduino XIAOの回路図を見ると、D0はSAMD21マイコンのPA2に接続されています。
でも、digitalWrite()に指定するピン番号は2ではなくて0...。
どこかで番号を変換(マッピング)していると思われるので、探しました。
定義しているのはココ。Platformのvariants\XIAO_m0\variant.cppでした。
そして、これを使っている箇所は、、、色々w
デジタル出力のときは、cores\arduino\wiring_digital.cでした。
ESP32-Azure IoT Kit ソフト編
これの続きです。
それでは、ESP32-Azure IoT Kitを動かしてみたいと思います。
Getting Started的な手順は、いろいろとリンクを漁ってみたところ、次の2箇所にありました。
続きを読む