第3回 IoT勉強会に参加しました

Arduino IDE, IoT(Internet of Things), Sketch, 社内勉強会

はじめまして!ソリューション開発部の河合です。

第3回IoT勉強会に参加してきました。今回はマイコンプログラミングの話を中心に紹介していきます!

事前準備

参加前日の夜に事前準備があることを知り、慌ててセットアップいたしました。

ざっくりとした設定内容は以下の通り。

  • IDEのインストール
  • USBシリアルドライバをインストール
  • Arduino IDE に Staging(Stable)版ESP8266 ボードをインストール
  • 各種ライブラリをインストール
  • ThingSpeak.comのアカウント取得
  • 倉橋先生のgithubから教材をダウンロード

倉橋先生の丁寧な資料に沿って勧めていき、難なく完了。

勉強会開始

第3回のIoT勉強会、まず事前準備の確認(先生の優しさ)

少し座学をしてから、IDEを起動します。

Arduino IDEを起動したときの画面

早くマイコンボードに書き込みして(物理的な)動作確認をしたいところですが、なにやらまだ設定が必要な模様。

ツールメニューから以下を設定。

  • Flash Size:4M(3M SPIFFS)
  • Flash Mode:QIO
  • Reset method:nodencu
  • Upload Speed:921600
  • シリアルポート:適宜

ふーむ、ぱっと見ただけでは何やってるかほぼわからないですね。Upload Speedが、書き込み速度かなと推測出来るくらい。

そしてようやくプログラミングの時間です。使用する言語はSketchという言語です。CやC++が元になっているみたいです。

初期表示されているテンプレートは下記のようになっています。

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

setupでは、名前の通り一番最初に一回だけ実行される処理を書くとのこと。loopでは、マイコンのメイン処理を書いていきます。名前の通り、何度も繰り返し呼ばれます。

さっそく用意されていたコードを打ち込み、マイコンボードに書き込み!

void setup() {
  Serial.begin(115200);
}
void loop() {
  Serial.println(“ARK”);
  delay(1000);
}

LEDがチカチカ1秒間隔で光るらしい。

基盤にはまだ何も付けてないけどどこが光るのかと思いきや、

ESP-WROOM-02上でLEDがオレンジ色に光る

中央付近のオレンジ色の部分が点滅しています。そこが光るんですねと言いたくなります(笑

ここが光るタイミングとしては、

 Serial.println("ARK");

この1行です。シリアルポートというところに出力する時に光るみたいですね。

デバッグしたい時は、printlnをひたすら仕込んで行く必要があるようです。ステップ実行?ありません。

演習

急にマイコンへの書き込みが出来なくなったと思ったら急に出来るようになったり、やっぱりマイコンへの書き込みが出来ないと思ったらUSBが接続されてなかったり。

と様々な苦難を乗り越えてきました。

数々の苦難とデモを経てついに演習へ!

ここからは今まで習った内容を元に自分で考えてプログラミングしなくてはいけません。デモだけかと思っていた私としてはまさに寝耳に水。寝ていたわけではありませんよ。

課題内容としては、『空気室センサーの値をディスプレイに表示する』です。

これならなんとかなりそうです。そして出来たのがこちら!

extern "C" {
  #include "user_interface.h"
  #include "SSD1306.h"
}

SSD1306   display(0x3c, 4, 5);

void setup() {
  Serial.begin(115200);

  display.init();
  display.displayOn();
  display.clear();
}

void loop() {
  int airQuality = system_adc_read();
  Serial.println(airQuality);

  char airQualityBuf[10];
  dtostrf(airQuality, 7, 2, airQualityBuf);

    //  OLEDへ表示
  display.clear();

  display.setFont(ArialMT_Plain_10);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 0,  0, "AirQuality");

  display.setFont(ArialMT_Plain_16);
  display.setTextAlignment(TEXT_ALIGN_RIGHT);
  display.drawString(127,  0, airQualityBuf);
  display.display();
  
  delay(500); // 0.5秒待ち
}
ブレッドボードに付けたLEDが青色に光る

なんとか思い通りに表示をすることができました。

IoT?

IoTとは下記の用に定義されています。

モノのインターネット(Internet of Things、IoT)は、様々な「モノ(物)」がインターネットに接続され(単に繋がるだけではなく、モノがインターネットのように繋がる)、情報交換することにより相互に制御する仕組みである。

モノのインターネット – Wikipedia

お気づきの方もいるかもしれませんが、この記事内にはInternet要素がないため、実質「T」なんじゃないかと思う方もいると思います。

安心してください、デモではちゃんとwifiに接続してThingSpeak.comに送ってますよ!

IoT勉強会を通して

言葉だけで知った気になっていたIoTという世界の一端を実際に触れてみて、普段の業務では味わえない刺激がありました。

空気質センサーに息を吹きかけたら臭さを数値的に示されて悲しくなったり、赤外線感知センサー(自動ドアに付いているやつ)ではなかなか反応してくれなかったり。

出力結果がパソコン内じゃなく外にあるのが新鮮で、遊び心があればいくらでも楽しめそうです。

これからもIoT勉強会は続いていくとのことなので楽しみにしています!

  • 株式会社アークシステムの来訪管理・会議室予約システム BRoomHubs
  • 低コスト・短納期で提供するまるごとおまかせZabbix