はじめに
この記事は、電子工作の基礎からESP8266というWifi機能を持ったArduino互換の端末を使って取得した情報をM2Xという、センサ情報を受け取りグラフ表示してくれるクラウドサービスにセンサ情報をアップするところまでをカバーした記事です。
全部で4つの記事から構成されています。
①から順番にご覧ください。
①かんたんな回路を作って電子工作の基本を習得する
http://qiita.com/windows222/private/6f11904f30ff540dcc37
②ESP8266(Arduino)に簡単なプログラムをアップする
http://qiita.com/windows222/private/c60d086a5909d2bff39e
③ESP8266で人感センサ情報を取得する (←本記事)
http://qiita.com/windows222/private/e6bcea0bef795c8cb30c
④ESP8266で取得したセンサ情報をM2xにアップロード
http://qiita.com/windows222/private/9d77cc3fe0094b78a4db
記事概要
ここでは、ESP8266を使って人感センサの情報を取得し、センサが人を検知した時にLEDを点灯させてみます。
プログラム&回路の作成
回路の作成
プログラムの作成
下記のプログラムを作成し、ボードに書き込みます。
/**
* 人感センサの情報を取得し、人を検知したらLEDを一秒点灯させる。
*/
# include <Arduino.h>
# include <stdio.h>
# include <string.h>
# include <ESP8266WiFi.h>
//人感センサを示す番号
# define PIR_MOTION_SENSOR 4
//緑のLEDを示す番号(15番ピンに接続)
# define GREEN_LED 15
int loopCount = 0; //現在のループ数
int detectedCount = 0; //人感センサの検知回数
/**
* 人感センサの情報をチェックし、現在の検知状態を調べる。
*/
boolean isPeopleDetected(){
int sensorValue = digitalRead(PIR_MOTION_SENSOR);
if (sensorValue == HIGH){ //検知状態
return true; //yes,return ture
}
else if(sensorValue == LOW){ //未検知状態
return false; //no,return false
}
}
/*
* 人感センサをチェックし、結果をコンソールに出力
*/
void sensePIR() {
loopCount++;
int returnValue = 0;
//センサの状態を調べて、周りに人がいるかをチェック
if (isPeopleDetected()==true) { //人がいたら
digitalWrite(GREEN_LED, HIGH); //人感センサ検知したらLED点灯
detectedCount++;
Serial.printf("PIR1:find someone! loopCount=%d detectedCount=%d\n",loopCount,detectedCount);
}
else { //人がいなかったら
digitalWrite(GREEN_LED, LOW); //人感センサ検知なければLED消灯
Serial.printf("PIR1:no one can find..loopCount=%d \n", loopCount);
}
}
/**
* 準備開始(最初に呼ばれる関数)
*/
void setup(){
Serial.begin(115200);//シリアルポートを通信速度115200で開始
Serial.println("start setup");
pinMode(PIR_MOTION_SENSOR, INPUT); //ピンを入力状態にセット
pinMode(GREEN_LED, OUTPUT); //ピンを出力状態にセット
Serial.println("end of setup");
}
/**
* セットアップの後に連続して呼ばれる
*/
void loop(){
sensePIR();//人感センサの状態チェック
delay(1000);//一秒待機
}
動作確認
人感センサに手をかざした時に、LEDが点灯すれば成功です。
次の記事:④ESP8266で取得したセンサ情報をM2xにアップロード
http://qiita.com/windows222/private/9d77cc3fe0094b78a4db