LoginSignup
8
3

More than 5 years have passed since last update.

組み込み初心者が Azure Sphere のLEDをいっぱいチカチカしてみた

Posted at

はじめに

2018年にMicrosoftからLinux OSが出るということで話題になったIoTデバイス「Azure Sphere」ですが、興味本位で購入して数か月積みガジェットとなっていました。組み込み系はarduinoなどを趣味でかじったことがある程度。C++初心者ですが初期セットアップとチュートリアル+αを完了させたので記録しておきます。

Azure Sphereって何?

Azure Sphereとは、IoTセキュリティを主眼としてMicrosoftが2018年4月16日に発表したIoTソリューション。ハードウェア(MCU:Micro Controller Unit)、OS(Sphere OS)、クラウド(Azure Sphere Security Service)の3つの観点でセキュリティを高めるよう設計されている。
デバイスにはMicrosoft謹製のPlutonセキュリティモジュールを内蔵したハードウェアが組み込まれており、セキュリティ確保を目的として設計されたカスタムLinux Kernelを採用、Azure Sphere Security Serviceと呼ばれるクラウドサービスによりOSの自動更新やソフトウェア更新を配布するアーキテクチャになっています。
ビデオが開けなかった場合に表示されるテキスト

作業

Let's start Lチカ!

環境

Azure Sphereを扱うのに最低限必要な環境です。下記の環境は事前に作業端末にセットアップをしておきます。

Azure Sphere MT3620 Deployment Kit
・Windows 10 Anniversary Update以降のWindows PC
・Visual Studio 2017 Enterprise、Professional、または Community バージョン 15.7 以降
Azure Sphere SDK for Visual Studio Preview.
・Azure Subscription

0. Azure Sphereを入手する

私は Seeedで購入しました。ただ、後で気づいたのですが、秋月電子などでも購入できるようです。Azure Sphereの本体MT3620だけで10,000円弱で、センサーなどが組み合わさったStater Kitも販売されているようです。センサー類もおいおい欲しくなると思いましたが、わざわざ公式製品でなくても良いかなと思い今回は見送りました。
実物はこんな感じで、本体とUSBケーブルが保存されてます。

デバイスの接続

Azure Sphere本体と作業PCを付属のUSBケーブルで接続します。PC側でデバイスマネージャー(Windowsキー押してデバイスマネージャー検索)で確認するとCOMポートにデバイスが新たに認識されます。

Sphereデバイス接続.PNG

Azure Active Directory の準備

Azure Sphereのデバイスを管理するために、Azure ADのディレクトリ内に組織アカウントを作成します。

AAD.PNG

「+新しいユーザ」を選択し、ユーザを追加します。パスワードは後で使用するのでメモしておいてください。

newuser.png

Azure SphereとAzure ADを紐づける

ここからはAzure Sphere Developer Command Promptを起動します。(Azure Sphere SDK Preview for Visual Studioをインストールすることで使用できます)

AzureSphereDeveloperCommand.png

azsphere loginを実行してログイン画面を開きます。先に作成したAzure AD上のユーザアカウントIDとパスワードを入力しログインします。

azsphere login

Azure sphereテナントを作成します。作成したAzure Sphere テナントは、azsphere tenant listで確認が可能です。

azsphere tenant create --name "AzureSphereTenant"
azsphere tenant list
ID                                   Name
--                                   ----
xxxxxxx-xxxx-xxxx-xxxx-xxxxx AzureSphereTest

Command completed successfully in 00:00:07.0534058.

作成した Azure Sphere テナントにデバイスを登録するためにdevice claimを実行します。

azsphere device claim

デバイスをWifiに接続する

この後、デバイスをWifiに接続しますが、OSのリリースノートを見ると古いバージョンでWifi接続できないバグがあったようです。最新版ではfixしているようなので次のコマンドでデバイスのOSを更新しておきます。

azsphere device recover

次の環境でWifiのSSIDとパスワードを指定してデバイスネットワークに接続します。

azsphere device wifi add --ssid <yourSSID> --key <yourNetworkKey>

成功すると次のようにconnectedと表示されます。
なお、Wifi接続はLチカのチュートリアルには必須ではないのでスキップしても大丈夫です。

C:\>azsphere device wifi show-status
SSID                : <yourSSID>
Configuration state : enabled
Connection state    : connected
Security state      : psk
Frequency           : 2462
Mode                : station
Key management      : WPA2-PSK
WPA State           : COMPLETED
IP Address          :
MAC Address         : xx:xx:xx:xx:xx:xx

Lチカを実行する

Azure Sphere デバイスでサンプルアプリケーションなどを実行するにはデバッグを有効にする必要があります。次のコマンドを実行します。

azsphere device prep-debug

ここからはVisual Studioでの作業です。Visual Studio 2017を起動して、新規プロジェクトを作成します。
[Visual C++] > [クロスプラットフォーム] > [Azure Sphere]と選んでいき、Blink Sample for MT3620 RDBのテンプレートを選択して作成ます。

VS.PNG

F5か「Remote GDB Debugger」をクリックするとサンプルアプリケーションが実行されます。
(azsphere device prep-debugを忘れているとこのタイミングで怒られるので注意してください)

F5.PNG

すると下記の通り#1のLEDが赤色にチカチカしたら、チュートリアル完了です。

download.gif

Lチカ+α

上記のテンプレートは何も変更していないので内容理解のため複数LEDの制御とLED の発光色の変更を試してみました。
LED3つを3色で発光させます。

led.gif

ソースは、githubにアップロードしてありますが、テンプレートから変更したファイルは次の2つです。

・app_manifest.json
・main.c

app_manifest.jsonは、アプリケーションマニフェストと呼ばれるアプリケーションで必要なリソースを定義するファイルです。
使用するLEDはGPIOで定義されています。8,9,10がLEDで、12はButton Aを意味します。番号とリソースの対応は、mt3620_rdb.hを見るとわかると思います。

"Gpio": [ 8, 9, 10, 12 ],

新たにLEDを使用するため次のように定義を変更しています。

"Gpio": [ 8, 9, 10, 12, 15, 16, 17, 18, 19, 20 ],

あとは、主にmain.cのInitPeripheralsAndHandlersメソッドなどで、他のLEDに対する処理を追記しています。

参考サイト

Azure Sphere のドキュメント

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3