それいけ!フロイデ電子工作部

ミマモルくん実装編

2017.02.13

どうも神田です。 さてさて、オリジナルの基盤もできたので早く動くか試してみたいですね。 でも肝心なコードを書かないと動いてくれません。 ということで今回は実装編です。

 

試作段階ではESP-WROOM-02開発ボードというのを使っています。
PCからUSBケーブルを繋いで直接コードを書き込める優れもの。

ではまず、ミマモルくんに必要な機能をざっとおさらいしておきたいと思います。
・テレビの信号を受信して受信したよーと情報を知らせる
・Wi-Fiを使ってインターネットにつながる

シンプルですねw

とりあえず書いて動かそう

早速ArduinoIDEを使ってコードを書いてみます。

 

void setup() {
  // 使うPINのモード設定
  // 入力モードに設定
  pinMode(16, INPUT); // 赤外線受信モジュール
}
void loop() {
  if(digitalRead(16) == 1){
    // サーバーに信号を投げる処理
  }
  delay(500); //0.5秒処理を待つ
}

 

 

信号は受信できた。。。

単純にリモコンの信号を受信するだけならこれだけでいけますね。
ただ、しばらく試したところリモコン以外の何かにも反応してしまっていました。。。
これでは誤作動しているということになりますね。

原因として考えたのは、電気的なノイズに反応している?
ということでした。
対策としては、リモコンの信号とそれ以外の情報を区別するようにコードを改良しました。

調べてみるとリモコンの信号にはメーカーによってフォーマットが決まっているようでした。

そして今回はどこのメーカーだよ、と解析してくれるライブラリ「IRremoteESP8266」というのがあったのでそちらを使用しました。

→のようにコードを追加して、
リモコンとそれ以外の信号を区別するようにしました。
これで誤作動が解消できました。

void loop(){
  if(irrecv.decode(&results)){
    //リモコン以外の信号の場合はUNKNOWNが帰ってくる
    if(results.decode_type != UNKNOWN){
      //信号が来た場合の処理
    }
    irrecv.resume(); // Receive the next value
  }
}

Wi-Fiにつなげる

あとは肝心なWi-Fiにつなぐところですね。
今回はWiFiManagerというライブラリを使用しました。

↓こちら↓
https://github.com/tzapu/WiFiManager

上記ライブラリにAutoConnectというサンプルがあるので、
こちらを参考に実装しました。

これを書き込んで電源につなぐと右のような画面が出て
スマホなどからWi-Fiの設定ができます。
また、今回は利便性を考えてWPSボタンでの接続もできるようにしました。

必要な機能はライブラリが用意されているので、

プログラミング経験の少ない自分たちでも簡単に実装できました。

しかも一つの部品でWi-Fi通信とプログラムの実装までできるなんて素敵すぎますね!

興味ある方はESP-WROOMおすすめです。