sakura.io 評価ボードではじめるIoT開発

sakura.io 評価ボードではじめるIoT開発

Pocket

本記事は、sakura.ioの利用者で、電鍵とsakura.ioを組み合わせを試みて頂いたりしている、伊勢羽様からご寄稿頂いたものになります!
こういった記事は本当にありがたいので、「何か書いてみたい!」という方がおられましたら、ぜひご連絡ください〜
※本記事内で触って頂いている検証用ボードは、これからみなさまにご提供できるかなぁ〜どうかなと言う段階のものをテストして頂いたもので、開発中のものになります。ご提供に向けて進めておりますので少々お待ちください!

導入

とあるC++プログラマのつぶやき

“最近「IoT」という言葉が流行っていて、興味はあるけど調べてみたら見たことない基板や、やったことのない電子工作の話ばかりが出てくる。いったいどこから始めればいいのだろう・・・”

はい、そんなあなたにはsakura.io Evaluation Boardがおススメです!

はじめに

mbedベースの、C++言語でIoT開発が可能なsakura.io Evaluation Board(以下、評価ボード)のリリースに先駆けまして、mbed開発未経験ながらも評価ボードを初めて手にして開発環境構築からサンプルプログラム作成まで試用させていただきましたIseba’s Laboの伊勢羽です。趣味で電子工作とC++プログラミングをしている一般的なユーザーですが、今回評価ボードでの開発過程や考えた事、作ったものについてお話をしたいと思います。

評価ボードは「プログラム書ければ開発できるボード」

スイッチ・LEDや各種センサー類が搭載済みの基板なので、通信モジュールを搭載すればすぐにIoT開発ができます。

・・・一言で終わるのもどうかと思うのでもう少し詳しく書きますと

現在、さくらインターネット様からは 通信モジュール の他に、通信モジュールを使いやすくするための以下の3種類のボードが発売されています。

通常は通信モジュールにこれらボードを組み合わせ、さらにスイッチ・LED・センサー類を搭載した電子回路をつなげて開発するのが一般的な開発スタイルと思われますが、いずれにせよ

“スイッチ・LED・センサー類等を搭載した電子回路”は自分で組む必要がある

つまりIoT開発をする場合、はんだこてを握るところから始まるわけです。もちろん自作できる分開発の自由度が高いのですが、純粋に「IoT開発に触れてみたい」という人にとって、はんだこてから始まるのはちょっとハードルが高いと言えるでしょう。

仮にはんだこてを握って、あんなセンサーやこんなセンサーを使いたいと思ったとします。その先に待ち受けるのは長大な英文の技術仕様書とそれに基づく回路設計・製作が必要で、センサーで値を取れるようになるまでは長い道のりがあるでしょう。今回リリースされたボードがこれまでと異なるのが

“スイッチ・LED・センサー類等を搭載した電子回路”はもう組んである

という点であり、電子工作の工程をすっ飛ばして”プログラム書ければ開発できるボード”にまで仕上げてくれたのが今回の評価ボードです。いわゆる「組み込みプログラミング」をすることになりますが、さくらインターネット様からサンプルコードが公開されていますので、そちらを参照すればソフトウェアの知識のみでも評価ボードのプログラミング方法を掴むことができるでしょう。

せっかく”プログラム書ければ開発できるボード”なのでさっそく開発したいのですが、その前に以下の2つの準備が必要です。

  1. 評価ボード側の準備
  2. プログラミング環境の準備

この二つが終われば開発環境の構築は終了です。

開発環境構築(評価ボード側)

やることは「PCと評価ボードをUSBケーブルで接続する」だけです。

・・・一言で終わるのもどうかと思うのでもう少し詳しく書きますと

いろいろ外部回路を組むのが前提のArduinoと違って、スイッチ・LED・各種センサー類が搭載済みで電子回路として完成されたボードですから、これ以外やることが無いです。ただ、プログラムだけは書き込まないといけないので、PCと接続する必要があります。もう少し具体的に書くなら

USBケーブル(A-MicroB)を使用して、PCのUSBと評価ボードのSTM32通信コネクタと接続

これだけです。次にプログラミング環境を準備しましょう

開発環境構築(プログラミング環境)

やることは「mbedへのアカウント登録」だけです。

・・・一言で終わるのもどうかと思うのでもう少し詳しく書きますと

ソフトウェア開発であればVisual Studio、Arduinoの開発であればArduino IDEという、プログラミングをするための「開発環境」と呼ばれるものを準備する必要があり、今回は「mbedの開発環境」を用意する必要があります。

通常であればPCに開発環境をインストール・・・という作業があるのですが、mbedの開発環境はブラウザ上で提供されているので、アカウント登録をすれば準備は終わりです。

まずは以下のサイトにアクセスします。
Mbed https://os.mbed.com/

英語が入り混じるサイトですがメールアドレスやパスワードの設定などを行えばアカウント登録終了で、ここまでで最低限の開発環境の準備は終わりです。

さぁ開発を始めよう

※mbed開発環境画面の細かい使い方は他サイトの解説に譲ります。

基本的な開発の流れは
1. 新規プロジェクト作成
2. プログラミング
3. コンパイル&実行ファイルダウンロード
4. 評価ボードへ実行ファイルを書込み(PC上でドラッグ&ドロップ)
となります。

Arduino開発であれば自分で組まなければならないスイッチ・LEDも評価ボードにはすでに搭載済みです。さっそくスイッチ・LEDを使用したサンプルプログラムを組んでいきましょう。

まずは新規プロジェクトの作成です。

新規プロジェクトを作成しますと以下のような画面が出ますが、そのままOKします。

プログラムワークスペースに「main.cpp」というファイルがあり、サンプルのコードが既に書かれていますが全て消去して以下のコードをそのままコピー&ペーストして下さい。

//ここから==========================================================
#include "mbed.h"

DigitalIn mysw1(PC_14);
DigitalIn mysw2(PH_0);
DigitalIn mysw3(PC_0);
DigitalIn mysw4(PC_1);
DigitalIn mysw5(PC_2);
DigitalIn mysw6(PC_3);

DigitalOut myLED1(PC_13);
DigitalOut myLED2(PC_15);
DigitalOut myLED3(PH_1);
DigitalOut myLED4(PC_4);
DigitalOut lcd_led(PC_5);

//スイッチ&LED確認用テストプログラム

//〇動作
//・SW1~SW4を押している間、LED1~LED4が点灯
//・SW5を7側にすると、LCDのLEDが点灯
//・SW6を7側にすると、LED1~LED4及びLCDのLEDが点灯

int main() {
    while(1) {
        if(mysw1==0) //SW1押下
        {
            myLED1=1; //LED1 点灯
        }else //SW1離す
        {
            myLED1=0; //LED1 消灯
        }

        if(mysw2==0) //SW2押下
        {
            myLED2=1; //LED2 点灯
        }else //SW2離す
        {
            myLED2=0; //LED2 消灯
        }

        if(mysw3==0) //SW3押下
        {
            myLED3=1; //LED3 点灯
        }else //SW3離す
        {
            myLED3=0; //LED3 消灯
        }

        if(mysw4==0) //SW4押下
        {
            myLED4=1; //LED4 点灯
        }else //SW4離す
        {
            myLED4=0; //LED4 消灯
        }

        if(mysw5==1) //SW5 7側へ
        {
            lcd_led=1; //LCD_LED 点灯
        }else //SW5 6側へ
        {
            lcd_led=0; //LCD_LED 消灯
        }

        if(mysw6==1) //SW6 7側へ
        {
            myLED1=1; //LED1 点灯
            myLED2=1; //LED2 点灯
            myLED3=1; //LED3 点灯
            myLED4=1; //LED4 点灯
            lcd_led=1; //LCD_LED 点灯
        }
    }
}
//ここまで==========================================================

コンパイルをすると、実行ファイルがダウンロードされるのでそれを評価ボードに書き込んでください。

書込みが完了したら、評価ボード上の「STM32Reset」ボタンを押下して下さい。ここからプログラムがスタートします。

プログラムの動作はサンプルコードの動作説明の通りです。
タクトスイッチをポチポチして、スライドスイッチをカチカチさせてLEDを光らせるだけの単純なプログラムですが、これだけでも基板と大いに触れ合うことができるでしょう。

開発例1「温湿度・気圧測定計」

Arduinoを使用した開発を例にとりましょう。
「Arduinoに色んなセンサーをつなぎました」
ここまでは良いですが、次にぶち当たる問題が
「さぁデータはどう表示する?」
という点です。

シリアルモニタを使用してデータを見るのも良し。通信モジュールを搭載してsakura.ioにデータを送信してWebアプリケーションを用意してデータをグラフ表示するのも良しですが、評価ボードではもっと簡単にデータを表示できます。それを可能にしたのが

8文字2行の液晶ディスプレイ(バックライト機能付き)

評価ボード上でデータ表示を可能にしているので、PC上のシリアルモニタに表示させる必要もありません。8文字2行のみとはいえ、評価ボード完結の開発を可能にしています。

試用の一環として、評価ボード搭載のBME280という温湿度・気圧センサ―を使用した「温湿度・気圧測定計」というアプリケーションを作成しましたが、その完成写真がこちらになります↓

評価ボードのデザインと相まって、手のひらに収まる非常におしゃれな温湿度・気圧測定計ができたと思いますがいかがでしょうか?

温湿度表示だけではなく、スイッチを押すと表示項目を
・気圧
・絶対湿度&露点温度
・比エンタルピー
と切り替えることができますが、これらは外部回路などを一切使わず、全て評価ボード上の部品・機能のみを用いてプログラムしました。

BME280を使用した評価ボード完結の開発の一例です。

開発例2「GPSロガー」

コード量が多いので結果だけの簡単な紹介に留めますが、GPSロガーも作成可能です。
評価ボードにはGPSセンサーも搭載されています。色々値は取れますがメインとして「経度・緯度」を取得できるセンサーです。ですが、身近に触れることのある温湿度の数字とは違って、座標の値がわかってもそれだけでは物足りなさを感じます。せっかく通信モジュールを搭載できるのですから評価ボードでGPSロガー作って移動軌跡を記録してみたのが以下の図です。

Webアプリケーション側では、受信したGPS座標を元にGoogleマップ上にマーカーを打つということをやっております。

・・・先ほど「BME280を使用した評価ボード完結の開発」と書きましたが
“せっかく通信モジュールを搭載できるのにIoT開発しないのかよ”
と怒られそうなので、こちらもIoT化してみたものが以下の図になります。

評価ボードから送信した温湿度データを元に、Webアプリケーションで用意した空気線図上にデータを表示するという内容になっています。

データを”魅せる”から楽しい

上記の二例はセンサーのデータを素直に使った例です。データを折れ線や棒グラフなどに表示したいという場合もあるでしょうし、データを使って何か装置を動かしたいという場合もあるでしょう。開発者が想像もしてないような斜め上のアイデアがあるかもしれません。いずれの場合も

“データをどうやって使うか”は、我々ユーザーの工夫次第です。

個人的には「データをどう魅せるか」がIoT開発の醍醐味とさえ思っています。

sakura.ioのおかげで通信やサーバー、ネットワーク等々を意識せずに
・手元の電子回路(ハードウェア)
・作ろうと思っているWebサービス(ソフトウェア)
この二つに注力することができるようになりました。

もちろん搭載されていないセンサーを使いたい場合は自分で回路を組む必要がありますが、“電子回路を組んだことはないけどIoT開発を始めてみたい”、”sakura.ioを手軽に試してみたい”という要望を叶えるには十分な機能を持ったボードです。

電子回路とデータセンターをつなぐsakura.ioですが、今回さくらインターネット様は評価ボードのリリースという形で電子回路の面倒も見てくれましたのでIoT開発を始めるハードルはこれまでよりもグっと下がりました。冒頭に悩んでいたとあるC++プログラマはきっと、sakura.io Evaluation Boardで自身のアイデアの赴くままにIoT開発を始めてくれるに違いありません。

Pocket

Close Menu