全般

IoTデバイスのプロトタイプを使う

投稿日:2021年9月13日 更新日:


電気機器、機械、部品などをインターネットにつなげるためには、IoTデバイスとして、超小型の「通信ボード」を使います。通信ボードには、CPU、RAM、ROM(またはフラッシュメモリ)、通信チップ、センサーなどの周辺デバイスが実装されます。

その超小型び通信ボードをまじめに開発するには、回路図を設計し、基盤を作り、CPUや通信チップなどを実装し、動作させるまでには、スキルだけでなくかなりの費用と期間が必要です。

しかし、ありがたいことに、誰でも、安価に、IoTデバイスのプロトタイプを手に入れることができます。さらに、プログラムを容易に作れる、コンパイラー・リンカ―などの開発環境(Arduinoと呼ばれる)までそろっています。

■ IoT用通信ボードを購入する

今回、スイッチサイエンス社のホームページから、以下のIoTデバイスのプロトタイプを購入しました。
選定のポイントは、デバッカが使える、無線LANが使える、BlueToothが使えるの3つです。

「Arduino MKR WiFi 1010」

https://www.switch-science.com/catalog/7384/

実際に購入したものは、以下のようなものです。

パッケージ
「Arduino MKR WiFi 1010」 表面
「Arduino MKR WiFi 1010」 裏面

また、スイッチサイエンスのホームページからデータシート、回路図などを取得できます。

■ 購入したIoT用通信ボードの仕様

「Arduino MKR WiFi 1010」 のハードウェア仕様は以下の通りです。
 (スイッチサイエンスのホームページより引用)

  1. ボード電源電圧(USB) : 5 V
  2. 回路動作電圧 : 3.3 V
  3. マイクロコントローラ : SAMD21 Cortex-M0+ 32bit ARM MCU
  4. 通信モジュール : u-blox製 NINA-W102
  5. セキュアエレメント : ATECC508
  6. 対応バッテリ : Li-Poシングルセル、3.7 V、1024 mAh(最少)
  7. ペリフェラル
    • デジタルI/Oピン:8ピン
    • PWMピン:13ピン(0 .. 8, 10, 12, 18 / A3, 19 / A4)
    • UART:1
    • SPI:1
    • I2C:1
    • アナログ入力:7(8/10/12ビット ADC)
    • アナログ出力:1(10ビット DAC)
    • 外部割り込み : 10(0, 1, 4, 5, 6, 7, 8, 9, 16 / A1, 17 / A2)
    • I/Oピン経由DC電流 : 7 mA
  8. メモリ
    • CPUフラッシュメモリ : 256 KB(内蔵)
    • SRAM : 32 KB
    • EEPROM : なし
  9. クロック
    • RTC:32.768 kHZ
    • メインクロック:48 MHz
  10. LED:6
  11. USB:USB Full-Speed(デバイス/ホスト)
  12. 寸法(mm) : 61.5 x 25 mm
  13. 重量 : 32 g

また、ピン配列は以下の通りです。これらのピンを使って、センサーなどの周辺デバイスと接続します。
(スイッチサイエンスのホームページより引用)

■ 統合開発環境:Arduino IDEのインストール

デバック機能が追加された最新バージョン2.0のベータ版をインストールします。

https://www.arduino.cc/en/software

ダウンロードして、インストーラをダブルクリックします。

ライセンス契約に同意します。

現在のユーザのみにインストールを選択します。

インストール先を指定します。

しばらく待って、インストール完了です。

■  統合開発環境:Arduino IDEのセットアップ

インストールした Arduino IDE 2.0を起動します。

「Arduino MKR WiFi 1010」を使うには、Toolsメニュー からBoard → Board Managerを選択します。

左のBoard Managerの入力ボックスに「Arduino MKR」と入力します。
そうすると、「Arduino SAND Boards・・・」が表示されますので、”INSTALL”をクリックします。

インストールが終わったら、
ToolsメニューからBoard→”Arduino SAND Borad…”→” Arduino MKR WiFi 1010 ”を選択します。


「Arduino MKR WiFi 1010」 をUSBケーブルでPCに接続します。

Windowsのコントロールパネルからファイルマネージャを開き、 「Arduino MKR WiFi 1010」 が接続されたポート名(COM3)を確認します。

Toolsメニューから”Port COM3″→”COM3(Arduino MKR WiFi 1010)”を選択します。

「Arduino MKR WiFi 1010」 からボード情報を取得して、接続を確認します。
Toolsメニューから”Get Bord Info”を選択します。

バード情報が表示されます。

以上 で「Arduino MKR WiFi 1010」を使う準備ができました。

■ プログラムのコンパイル・リンク、デプロイ、動作

無線LAN(WiFI) を使ったサンプルのプログラムをコンパイル・リンクし、ボードに配置後、動作させてみます。

1) WiFiNINAライブラリ をインストールする

無線LAN(WiFI)を使ったプログラムをつくるには、ライブラリが必要になります。
「Arduino MKR WiFi 1010」には、SSLなどがサポートされた「WiFiNINA」というライブラリがありますので、これを使います。
これを端末側にもインストールするため、ファームウェア更新をします。
Toolsメニューから”WiFi101 / WiFiNINA Firmware Updater”を選択します。
ポップアップが表示されますので、ポートと最新バージョンを選択し、”Install”をクリックします。
成功するとポップアップに「Firmware Successfully installed」と表示されます。
失敗した場合、複数のArduino IDEが立ち上がっていることが影響していることがあります。
それらをクローズしてから再度実施してみてください。


2)サンプルのWebClientをコンパイル・リンク、デプロイ、動作


FileメニューからExamples→WiFiNINA→WiFiWebClientを選択します。

すると、 WiFiWebClient プログラムのプロジェクト画面(スケッチ)が起動します。

arduino_secrets.hタブを選択し、お使いのアクセスポイントのSSID、パスワードを設定します。


SketchメニューからVerify/Compileを選択し、コンパイル・リンクを実行します。
正常に終了すれば、”Compilation Complete.”が出力画面に表示されます。

SketchメニューからUploadを選択し、ボードにプログラムを配置します。
フラッシュメモリに書き込まれます。
配置されると、”Upload Complete.”が表示されます。

このサンプルプログラムは、動作ログをシリアル経由で出力します。この出力はUSB経由でArduino IDE上で見ることができます。

Toolsメニューから”Serial Monitor”を選択すると、下部にログが出力されます。

■ デバックはプローブがないとできない

このようにして、 IoTデバイスのプロトタイプである「Arduino MKR WiFi 1010」 を動作させることができます。

しかし、プログラムをボード上で動作させながらデバック(ステップ実行、ブレークポイント設定など)には、
別売のプローブ(Segger J-Link debugger)が必要となります。

学習用(EDU版)であれば、1万円前後で買えますが、製品用となると以下のように高額です。

SEGGER デバッガ プログラマ/インサーキットエミュレータ フラッシュマイクロコントローラ用 デバッグエミュレータ 1個入り 8.08.00 J-LINK BASE


また、以下のようにプローブを接続するにはボード側も、裏面にコネクタを半田付けする必要があります。

Using the Segger J-Link debugger with the MKR boards

残念ながら、今回は、デバックをあきらめました。
デバックが必要な場合、原始的ですが、ログを入れて動作をチェックするしかありません。

-全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

C言語という基本

最初に学ぶプログラミング言語は、単にコンピュータサイエンスを学ぶだけであれば何を選んでもかまいません。JavaScript、Python、Rubyなどの扱いやすいスクリプト系のプログラミング言語で十分 …

IT資格に紙切れほどの重さもない

冒頭から結論を言えば、 IT エンジニアの持つ資格の価値はゼロです。ソフトウェア開発は、実力の世界です。現場では、スキルや知識のない人は、手も足もでません。現実の世界では、資格など、まったく意味がない …

ITエンジニアのメンタル

ITエンジニアに必要な能力はスキルだけではありません。それを支える精神力が伴っていないと、いくら高いスキルを持っていたとしても、十分にその力を発揮することはできません。そして、受託開発というITビジネ …

Let’s Encrypt証明書の生成と手動更新(Windows)

WindowsのVPS(Virtual Private Server:仮想専用サーバー)でPython+Flaskを動作させています。あえて、ApacheやIISなどのWebサーバの配下でPython …

RPA(Robotic Process Automation)

RPAについて、解説します。以下について、知ることができます。  ・RPAとは何か ・プログラムとの差は? ・RPA vs プログラム ・RPAによってコモディティ化するIT化 ■RPAとは何か 端的 …