Pi Zero Easy IoT

安価で簡単に IoT を始めよう! - Raspberry Pi Zero によるプログラミングレス IoT 環境データ収集

基本的な使い方

必要なもの

本ワークショップの実施には最低限、次のものが必要です。詳しくは 詳細と購入先の説明ページ をご覧ください。

事前準備

まずはじめに、Raspberry Pi Zero を起動させるためには、OS(Rapbian Buster)をインストールし、本ワークショップ用プログラムをセットアップした microSD カードの準備が必要です。これは講師の方で セットアップ手順ページ に従って事前に準備してください。

クラウドサービスアカウントの作成

定期的に環境センサから取得したデータは、その都度クラウドサービスにアップロードします。

まずはその準備をしましょう。

IIJ の IoT データ可視化クラウドサービス Machinist (マシニスト)ユーザアカウントの新規登録 をしてください。アカウント登録に必要なものはメールアドレスのみです (クレジットカードなどは有償プラン利用時にのみ必要)。

ユーザアカウントの登録が完了したらログインします。

ダッシュボードのページで、その画面右上のメールアドレス部分をクリックして、「アカウント設定」にアクセスしてください。

アカウント設定のページには、API キーが表示されています。 プログラムではこの API キーを使ってユーザの認証を行い、センサーデータを Machinist にアップロードします。このあと microSD カードに書き込んで、Raspberry Pi Zero から Machinist へデータをアップロードできるよう設定します。API キーがあれば誰でもデータが書き込めるので、API キーは誰にも教えないようにしてください。

microSD カードの編集

それではいよいよパソコンで microSD カードを編集していきます。カードの中にある bootWifiConfig.js に WiFi 接続先の設定を、config.js にセンサーを識別するアドレスとデータを送信する Machinist の API キーを書き込みます。

まず、パソコンに microSD カードを挿入しましょう。Windows / macOS / Chromebook それぞれのユーザ別に説明します。

Windows の場合

  1. パソコンに SD カードを挿入します。
  2. 「boot このドライブで問題がみつかりました。今すぐドライブを・・・」と右下に表示されますが構いません。
  3. そしてここからが注意です。さらに、「ドライブを使うにはフォーマットする必要があります。フォーマットしますか?」とアラートがポップアップされるので、ここは必ず「キャンセル」を選択してください
    • 誤ってフォーマット (初期化) してしまうと SD カードの中身が全て空になってしまうので注意してください!
  4. エクスプローラー(普段よく使うファイルやフォルダ一覧を表示するもの)の左のエリアに boot というドライブがあらわれます。その中に setting フォルダ、さらにその中に bootWifiConfig.jsconfig.js の 2 つのファイルがあることを確認します。
  5. bootWifiConfig.js をクリックして選択し、さらに右クリックしてメニューから「プログラムから開く」を選択、そして「TeraPad」などのプログラムファイルの編集に適したテキストエディタ(メモ帳でもよいです)を選択し、ファイルを開きます。
  1. 同様に config.js も開きます。

macOS の場合

  1. パソコンに SD カードを挿入します。
  2. Finder(ファインダー)にbootデバイスがあらわれます。そのなかにsettingフォルダ、さらにそのなかにbootWifiConfig.jsconfig.jsの2つのファイルがあることを確認します。
  3. bootWifiConfig.jsをクリックして選択し、さらに右クリックして「このアプリケーションで開く」から「テキストエディット」を選択し、ファイルを開きます。
  4. 同様にconfig.jsも開きます。

Chromebook の場合

  1. パソコンに SD カードを挿入する
  2. ファイルのアプリを開く
  3. 該当するファイルを開く

ファイルを開いたら、2つのファイルそれぞれを以下の様に編集していきましょう。

WiFi 接続の設定 (bootWifiConfig.js)

まずはインターネット接続させるため WiFi 接続先を bootWifiConfig.js に次のように書き込みます

module.exports = [
  {ssid: "AAA", passphrase: "XXX"}
  ,
  {ssid: "BBB", passphrase: "YYY"}
  ,
  {ssid: "CCC", passphrase: "zzz"}
  ,
  {ssid: "", passphrase: ""}
  ,
  {ssid: "", passphrase: ""}
];

複数の WiFi スポットを接続候補にしたいときは、上から接続優先順に書きます

bootWifiConfig.js の書き方に誤りがあった場合、Raspberry Pi Zero 起動時に WiFi 設定は更新されず以前の WiFi の設定のままとなります。 bootWifiConfig.js の書き方に誤りが無かった場合、起動時に WiFi 設定は一度全部クリアされ、新たな WiFi 設定で置き換えられます。

データ収集プログラムの設定 (config.js)

続いて、データ収集・送信プログラムの設定ファイル config.js です。環境センサのアドレスとデータ送信先クラウドサービスの API キーを指定しましょう。

module.exports = [

  {
    intervalMillisec: 60000,    //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file 
    csvFilename: "",           //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "",       //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "",        //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "",      //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "",       //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1    //number of temporary stock the sensing data before sending
  }

];

omron2jcieBu01Address: の右の部分に、環境センサ(Omron 2JCIE-BU01)のアドレス(数字と大文字アルファベット12桁)をすべて半角で入力します。アドレスは環境センサー付属のシールに記載されています。

machinistApiKey: の右の部分には、Machinist の「アカウント設定」画面に表示される API キーを入力します。デフォルトで表示されている API キーをそのままか、今回のワークショップ用に追加するかいずれでも構いません。

表示されている API キーの右に「クリップボードにコピー」するボタンがあるのでコピーして、coonfig.jsmachinistApiKey: の値にペーストしてください (上記の例では xxxxx となっている部分です)。手入力の場合は入力ミスがないかよく確認してください。

machinistAgent: の右の部分には、自分で決めたわかりやすい単語などを書きます。センサーの設置場所などを記述するとよいでしょう。これは自動でMachinistのエージェント名になります。

csvFilename: の右の部分にも、同様に自分で決めたわかりやすい単語などを書きます。こちらも同様にセンサーの設置場所を記述するのがよいでしょう。これは自動でmicroSDカードに保存されるcsvファイルの名前になります。xxx.csvというように.csvという拡張子をつけるようにしてください。

とくに、コロン : やセミコロン ;、カンマ , やピリオド . 、クオート (一重引用符) ' とダブルクォート (二重引用符) " 、カッコの種類 [] {} ()、そしてスラッシュ / の数などは注意深くみましょう。(これらの記号文字は、プログラミングではそれぞれが1文字の違いが重要です。ちなみにこの config.js ファイルは JavaScript のプログラムファイルです。)

正しく入力できたらファイルを上書き保存し、microSD カードを安全に取り外します。

Windows の場合

  1. 開いているテキストエディタで「保存(save)」します。
  2. エクスプローラーで「bootドライブ」を選択し、右クリックでメニューを表示して、「取り出し」を選択します。
  3. 「ハードウェアの取り出し - bootはコンピュータから安全に取り外すことが出来ます」と表示されるのを確認して、パソコンからmicroSDカードを取り外します。

macOS の場合

  1. 開いているテキストエディットで「保存(save)」します。ここで「書類config.jsがあるボリュームは、バージョン履歴の保存には対応していません・・・」など表示されるかもしれませんが構いません。
  2. Finder(ファインダー)で「boot」すぐ横の取り外しマークをクリックして、「boot」の表示が消えたら、パソコンからmicroSDカードを取り外します。

Chromebook の場合

  1. ファイルのアプリを開く
  2. デバイスの取り出しを選択する

さあ、これで準備はOKです。

環境センシングとデータアップロードの開始

それでは、microSDカードをRaspberry Pi Zero本体に挿入して、電源を入れてみましょう。

Raspberry Pi Zero本体のLEDが点灯し、ときどきすばやく点滅していたら、正常に起動が始まっています。

そして待つこと1、2分。では、Web ブラウザで Machinist のメトリックを開いて、時々ページをリロードしてみましょう。

セットアップ済みのOSイメージを使っている場合、 初回起動時だけは更に 2〜3 分 (SD カードの速度次第) は我慢して待ってください。初回起動時に SD カードのサイズに合わせてパーティーション (ディスクの使用領域の設定) を拡張して再起動するため時間が掛かります。この途中で電源を切ってしまうと SD カードのパーティーションが破損して二度と起動しなくなってしまいます。

もし数分待っても Machinist にデータが追加されない場合、以下のようにしてもう一度チェックしてみます。

Raspberry Pi Zero本体の LED が点滅状態でないときに、Rapberry Pi Zeroから電源を抜きます。

そしてもう一度 microSD カードをパソコンに挿入して中身を確認します。

上手くいったら、次は 応用編: もっと便利につかってみよう にいってみましょう。