LoginSignup
3
3

More than 5 years have passed since last update.

③ESP8266で人感センサ情報を取得する

Last updated at Posted at 2016-09-16

はじめに

この記事は、電子工作の基礎から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を点灯させてみます。

プログラム&回路の作成

回路の作成

ブレッドボード上に、下記の回路を作成します。
image

プログラムの作成

下記のプログラムを作成し、ボードに書き込みます。

PIR_to_M2X.ino
/**
 * 人感センサの情報を取得し、人を検知したら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

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3