ESP8266にmbedマイコンを接続してM2Mを実現するWi-Fiモジュール「ESP8266」で始めるIoT DIY(4)(3/5 ページ)

» 2015年10月30日 07時00分 公開
[今岡通博MONOist]

 これらをマイコンのプログラムで自動的に行います。

#include "mbed.h"
 
DigitalOut led(LED1);
Serial pc(dp16,dp15);
 
int main()
{
    char msg[32];
    pc.baud(115200);
    wait(5);
    pc.printf("AT+CIPMUX=1\r\n");
    wait(1);
    pc.printf("AT+CIPSERVER=1,8888\r\n");  
    while(1)
    {
    pc.scanf("%s",msg);
    if (strstr(msg,"ON")!=NULL)
        led=1;
    if (strstr(msg,"OFF")!=NULL)
        led=0;
    }
}
「List3」

 このリスト(List3)が、リモート上のクライアントの要求に応じてLEDを点灯/消灯させるプログラムです。

 3行目でLEDを接続するピンを出力に設定しています。LED1というのはシンボルでLPC1114の14番ピンを指しています。またLPC1114にはdp1からdp28まで電源や特殊用途のピン以外にはこの様なシンボルが振られていますが、これらのシンボルがプログラムから使えます。これも1行目でインクロードしたファイルのおかげです。

LPC1114FN28ピンアサイン図 LPC1114FN28ピンアサイン図

 4行目ではシリアルポートとして使うピンを定義しています。dp16が送信用、dp15が受信用です。これらのピンはLPC1114に内蔵されたシリアル通信専用のハードウェアにアサインされています。

 6行目以下がメインプログラムです。9行目でシリアルポートを115200BPSに設定しています。その後10行目で5秒の時間待ちのためにwaitを入れていますが、これはESP8266がアクセスポイントなどの初期設定が完了するまでの時間です。ここは皆さんの環境に合わせて設定する必要があるかもしれません。

 11行目ではESP8266をマルチアクセスモードに設定しています。その後、1秒の時間を置いて13行目でTCPサーバを立ち上げています。ポート番号は8888です。

 その後14行目以下の永久ループではリモート端末からの入力を待ちます。受信した文字列の中にONが含まれていればLEDを点灯させ、その文字列の中にOFFが含まれていればLEDを消灯させます。LEDの点灯/消灯の判断はもっと厳密に行うべきでしょうが、そこは今回のテーマとしては本質的なところではないので、全体を通して見やすいように最もシンプルな判断アルゴリズムとしました。

Copyright © ITmedia, Inc. All Rights Reserved.