Difference between revisions of "Sensor-PIR"

From Microduino Wiki
Jump to: navigation, search
(Created page with "{| style="width: 840px;" |- | ==Overview== *Project: Open Source WIFI Weather Station System *Objective: To get the temperature, humidity, illumination and even PM2.5 data a...")
 
Line 1: Line 1:
{| style="width: 840px;"
+
{{Language|Microduino-PIR}}
 +
{| style="width: 800px;"
 
|-
 
|-
 
|
 
|
==Overview==
+
[[File: Microduino-Passive Infrared.jpg|400px|thumb|right| Microduino-PIR]]
*Project: Open Source WIFI Weather Station System  
+
 
*Objective: To get the temperature, humidity, illumination and even PM2.5 data around you.  
+
Microduino-PIR is a pyroelectric infrared sensor that can detect infrared rays sent from moving human body or animals. It can output switch signals and be used in various occasions that need to detect moving human body.
*Difficulty: Middle
+
 
*Time-consuming: 5-hour
+
==Features==
*Maker:  
+
*Adopt digital integrated pyroelectric infrared probe AM412.
*Introduction :
+
*With high precision and sensitivity.
This device can acquire real-time temperature, humidity, illumination and even PM2.5 data around you, and display them on the screen. You can also connect it to the internet if needed. With a phone or a laptop, you can check the data anytime and anywhere, which can be easily achieved by Microduino.  
+
*Low power consumption, long service life and good stability. 
==Bill of Material==
+
*Large-scale operation voltage  
*Microduino Equipment  
+
*Digital signals
 +
*Small size and easy to install.  
 +
 +
==Specification==
 +
*Electrical specification
 +
**Input voltage: 3.3-5V(6V to the maximum)
 +
**Working current: 15uA
 +
**Working temperature: -20~85℃
 +
**Output voltage: 5V(high level), 0V(low level)
 +
*Tech parameters
 +
**Output delay time(high level): 2.3-3s
 +
**Sensing angle: 100°
 +
**Sensing distance: 7m
 +
*Size
 +
**Size of the board: 20mm*10mm
 +
**1.27mm-pitch 4Pin interface.
 +
*Way of connection
 +
**Pin description: GND, VCC, signal and NC.  
 +
 
 +
[[file:mCookie-Passive Infrared-sensor.JPG|600px|center]]
 +
 
 +
==Document==
 +
*Schematic:'''[[File: Microduino_Passive Infrared.Zip]]'''
 +
 
 +
 
 +
==Development==
 +
===Equipment===
 
{|class="wikitable"
 
{|class="wikitable"
 
|-
 
|-
 
|Module||Number||Function  
 
|Module||Number||Function  
 
|-
 
|-
|[[Microduino-Core+]]||1||Core board
+
|[[mCookie-CoreUSB]]||1||Core board
 
|-
 
|-
|[[Microduino-USBTTL]] ||1||Download program 
+
|[[mCookie-Hub]]||1||Sensor pin board
 
|-
 
|-
|[[Microduino-WiFi]] ||1||Connect the internet
+
|[[Microduino-PIR]]||1||Pyroelectric infrared sensor  
|-
 
|[[Microduino-Temp&Hum]] ||1||Digital temperature and humidity sensor
 
|-
 
|[[Microduino-Air quality]] ||1||Air quality sensor
 
|-
 
|[[Microduino-Light]] ||1||Light-sensitive sensor  
 
|-
 
|[[Microduino-OLED]] ||1||For display
 
 
|}
 
|}
*Other Equipment 
 
{|class="wikitable"
 
|-
 
| Module||Number||Function
 
|-
 
|Micro-USB cable||1||Program download and power supply
 
|-
 
|[[Microduino-USBTTL]] ||1||Program download module 
 
|-
 
|GP2Y1010AU0F ||1||PM2.5 sensor
 
|-
 
|Screw ||7||For fixating modules
 
|-
 
|Screwdriver ||1||For fixating screws
 
|-
 
|Shell ||1||
 
|}
 
[[File:气象站物料.jpg||1000px|center]]
 
 
==Principle of Experiment==
 
On the special plate of the Weather Station is installed with sensors with multi-parameters, including the digital temperature and humidity sensor (Microduino-Tem&Hum), the light sensor (Microduino-Light), the air quality sensor of Microduino-Air and the PM2.5 sensor (gp2y1010au0f). Each sensor is connected with Microduino-Sensorhub, whose data can be analyzed and processed by the Microduino core module, and then displayed on the OLED.  At the same time, you can connect the Microduino-Wifi and Microduino-Core together to the internet, communicating with mCotton (IOT platform) and giving feedback to users via text and graph info. You can check this data anytime and anywhere with your phones or laptops. 
 
[[File:Wifistationtheory.jpg||600px|center]]
 
 
This system is composed of sensors, coordinator, network adapter, OLED display, mCotton, integrated with sensor technology, network communication technology, OLED display technology and IOT technology. Sensors mainly complete the data collection of the temperature, humidity, light intensity, air quality, then the coordinator can process and analyze the collected data. Meatime, you can connect it to the internet and communicate with mCotton through the network adapter, and check these data on the mCotton.     
 
 
[[File:Wifistationtheory1.jpg||600px|center]]
 
 
*Structure of the Management Platform 
 
The platform can be divided into two parts: Microduino core control, responsible for sensors' data collection and connecting to the internet; mCotton IOT platform, responsible for displaying data to users in the way of curves so that you can check and share your surrounding weather, as follows:
 
*Main sensors
 
 
[[File:Wifistationtheory2.jpg||600px|center]]
 
 
The picture below display the procedure of the system. Data Collection System: Mainly responsible for collecting ambient temperature, humidity, light intensity data and etc. The data collected from the sensors will be uploaded to the Microduino core.
 
Wireless Transmission System: The system sends the collected data to the server through wireless network, adopting Wifi data transmission.
 
Data Processing System: This system is responsible for storage, upload and visual display so that users can check weather on their PC or phone client.
 
 
[[File:Wifistationtheory3.jpg||600px|center]]
 
 
==Document==
 
Weather Station Code:【'''[[media:Weather v2.rar|Weather Station Code]]'''】
 
  
Local Weather Station Code:【'''[[Media:Weather v2 new.rar|Local Weather Station Code]]'''】
+
*Other hardware equipment
 +
**One USB cable
 +
[[File:Passive Infrared.jpg|600px|center]]
  
Weather Station Code Github:[https://github.com/Microduino/CC3000WeatherStation Weather_Station]
+
===Preparation===
 +
*Setup 1:Connect the PIR to the D6 of the Hub.
 +
[[file:mCookie-Passive Infrared-sensor.JPG|600px|center]]
 +
*Setup 2:Assemble the CoreUSB, Hub and the PIR together, then connect them to the computer.
 +
[[file:mCookie-pir-pc.JPG|600px|center]]
  
==Debugging ==
+
===Experiment: Detect If there is person moving ===
*Build the server.
+
*Open Arduino IDE and copy the following codes into IDE.  
Weather Station needs to be connected into the internet, so a server for storage and display is indispensible. First of all, we need to build a network server.
 
*About mCotton
 
Currently positioned to do an open universal networking platform, mCotton mainly providse sensor data access, storage and display services. It can offer a networking project platform for all of the open source software and hardware enthusiasts and manufacturing enterprises, enabling them to deliver IOT electronic products without the need to care about the server implementation details and operation.
 
We only need to register an account in mCotton, it will provide you with a unique KEY API,which is used to recognize identity in the server.
 
MCotton as an open public Internet access platform, it aims to serve all the enthusiasts and developers, so that the sensor data access, storage and display become easy and simple.
 
Here we introduce how to use the mCotton platform to complete your easy access.
 
*Register
 
Open the main page of mCotton: somvpn.cn:3000, click " Sign in/Join ", you'll see a pop-up showing login/register, then click "Create account" and enter the user register page.
 
 
 
[[File:mcottonsign1.jpg||600px|center]]
 
 
 
On the user register page, you can fill in the relevant information and complete.
 
 
 
[[File:mcottonsign2.jpg||600px|center]]
 
*Add Devices
 
Click "Projects" after login and enter the engineering page.
 
 
 
[[File:mcottonsign3.jpg||600px|center]]
 
 
 
Find "Weather Station" in the engineering page, click " Assemble to My Devices " and you can add your devices.
 
 
 
[[File:mcottonsign4.jpg||600px|center]]
 
 
 
Enter the name your device in "Name" and click "Submit" to publish.
 
 
 
[[File:mcottonsign5.jpg||600px|center]]
 
*Get APIKEY
 
After the publish, you can see your device on " My Garage " page.
 
[[File:mcottonsign6.jpg||600px|center]]
 
Find your Weather Station device and remember its unique ID.
 
[[File:mcottonsign7.jpg||600px|center]]
 
*Program Download
 
Stack Microduino-Core+ and Microduino-USBTTL without fixed order, and connect them to the PC via USB cable.
 
[[File:download1.jpg||400px|center]]
 
Make sure you built Microduino IDE, otherwise, please refer to: 1-Arduino IDE installation instructions.
 
[[File:Gettingstarted.jpg||400px|center]]
 
Open Arduino IDE programming software, click【File】->【Open】
 
[[File:Dl1.jpg||600px|center]]
 
Scan the project program address, click " weatherCC3000.ino " and open it.
 
[[File:WiFiStationopen.jpg||600px|center]]
 
[[File:WiFiStationopen2.jpg||600px|center]]
 
Corresponding parameters needed to be configured in the "def.h" file:
 
#define WLAN_SSID   “Wifi name you are going to connect.”
 
#define WLAN_PASS   “Wifi password”
 
#define WEBSITE   “Server address”
 
#define WEBSITEPORT        “Server port”
 
#define APP_KIT_ID   “ID number acquired from Step3步.”
 
[[File:WiFiStationopen3.jpg||600px|center]]
 
Click "Tool, select Microduino-Core+ as the board card, and the processor " Atmega644pa@16M,5V ", then burn the program.
 
[[File:WiFiStationopen4.jpg||600px|center]]
 
 
 
==Install the Weather Station==
 
*'''Step1''':Fixate the OLED screen and A1 with screws.
 
[[File:Waetherstep1.jpg||600px|center]]
 
*'''Step2''':Assemble B1-B5 with B6.
 
[[File:Waetherstep2.jpg||600px|center]]
 
*'''Step3''':Assemble Core+, USBTTL, and the Hub together, use screws to fixate them on A2, then connect them on the PM 2.5 sensor with the cable.
 
Stick the PM2.5 sensor to the base board.
 
[[File:Waetherstep3.jpg||600px|center]]
 
*'''Step4''':Assemble B7, B8 and B9 to the Temp&Hum sensor, Air senosr, Light sensor respectively as the picture shows.
 
[[File:Waetherstep4.jpg||600px|center]]
 
*'''Step5''':Connect the the Temp&Hum sensor, Air senosr, Light sensor on the Hub as the picture shows. 
 
Fixate the sensors on the slot where B1 and B2 combines as it mentioned in Step2, and after that, then connect A1 and A2 on the top and bottom of the system.
 
[[File:Waetherstep5.jpg||600px|center]]
 
*'''Step6''':Fixate the system with B0 after finishing the steps above, insert the USB cable and complete the weather station installation.
 
 
 
At this time, you can see data of all sensors on the OLED screen. 
 
And the same time, you can also see the uploaded weather data on the pre-set mCotton device. 
 
[[File:WiFiStation10.jpg||600px|center]]
 
 
 
==Program Description==
 
Available in China:
 
*About Main Program
 
<source lang="cpp">
 
//1.About Screen Display =============================
 
#include"Arduino.h"
 
#include "U8glib.h"
 
//2.About Sensor ================================
 
#include <Wire.h>
 
#include "I2Cdev.h"
 
#include <AM2321.h>
 
#include <SoftwareSerial.h>
 
//3.About WIFI ================================
 
#include <Adafruit_CC3000.h>
 
#include <ccspi.h>
 
#include <SPI.h>
 
#include <string.h>
 
#include "utility/debug.h"
 
//4.About Sefl-define =============================
 
#include "def.h"
 
#include "oled.h"
 
#include "wifi.h"
 
#include "sensor.h"
 
 
#define INTERVAL_LCD            200        //Refresh interval for OLED and sensors     
 
#define INTERVAL_NET            30000      //Sensor data upload interval
 
 
unsigned long lcd_time = millis();          //OLED and sensor update timer
 
unsigned long net_time = millis();          //Sensor data upload update timer
 
 
void setup(void)
 
{
 
    Serial.begin(115200);    //Initializing baud rate
 
    setup_wifi();            //Initializing Wifi
 
}
 
 
void loop(void)
 
{
 
 
    if (lcd_time > millis()) lcd_time = millis();
 
    if (millis() - lcd_time > INTERVAL_LCD)
 
    {
 
        SensorUpdate();        //Sensor update 
 
        volcd(sensorTemp, sensorHumi, sensorLight, sensorPM25, sensorEtoh);  //OLED display update 
 
        lcd_time = millis();    //Timer update
 
    }
 
 
    if (net_time > millis()) net_time = millis();
 
    if (millis() - net_time > INTERVAL_NET)
 
    {
 
        updateWeatherData(sensorTemp, sensorHumi, sensorLight, sensorPM25, sensorEtoh);  //Upload sensor data
 
        net_time = millis();    //Timer update 
 
    }
 
}
 
</source>
 
*Configured by Users
 
def.h
 
 
<source lang="cpp">
 
<source lang="cpp">
#define WLAN_SSID      "AZURE"      //WIFI network name  
+
#define  sensorPin 6
#define WLAN_PASS      "azure001"    //WIFI password  
 
  
#define WEBSITE "mcotton.microduino.cn" //Server address 
+
int state;
#define WEBSITEPORT 8080 //Server port number
 
#define APP_KIT "TLcrn6vaAahjnvKR2" //Device ID #define APP_KIT "YourDeviceID" //Device ID 
 
  
#define WEBPAGE "/api/v1.0/d"
+
void setup()
#define WEBUTTONPAGE "/api/v1.0/ce"
 
</source>
 
*OLED display
 
<source lang="cpp">
 
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);    //Set OLED type
 
//-------Font setting: large, medium, small. 
 
#define setFont_L u8g.setFont(u8g_font_7x13) 
 
#define setFont_M u8g.setFont(u8g_font_fixed_v0r) 
 
#define setFont_S u8g.setFont(u8g_font_chikitar) 
 
 
 
// Thermometer pattern
 
const unsigned char bmp_tem[] U8G_PROGMEM =
 
 
{
 
{
   0xE0,0x81,0x30,0x83,0x10,0x82,0x10,0x82,0x10,0xFA,0x10,0x82,
+
   pinMode(sensorPin, INPUT);
   0x10,0x82,0x10,0xFA,0x10,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82,
+
   Serial.begin(9600);
  0xD0,0x82,0xD0,0xFA,0xD0,0x82,0xD0,0x82,0xD0,0xFA,0xD0,0x82,
+
}
  0xD0,0x82,0xD8,0x86,0xC4,0x88,0xF2,0x93,0xFB,0xB7,0xF9,0xA7,
+
void loop()
  0xFD,0xAF,0xFD,0xAF,0xF9,0xA7,0xFA,0x97,0xF2,0x93,0xC4,0x88,
 
  0x18,0x86,0xF0,0x83
 
};
 
 
 
//Water drop pattern 
 
const unsigned char bmp_hum[] U8G_PROGMEM =
 
 
{
 
{
   0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x80,0x03,0x08,0x80,0x03,0x18,0x80,0x07,0x1C,
+
   state = digitalRead(sensorPin);
  0xC0,0x07,0x3C,0xC0,0x07,0x3E,0xE0,0x0F,0x3E,0xE0,0x0F,0x7A,0xF0,0x1F,0x7B,0xF8,
+
   if (state == 1)
  0x1F,0x72,0xF8,0x1F,0x3E,0xF8,0x3F,0x1C,0xFC,0x3F,0x00,0xFC,0x7F,0x00,0xFE,0x7F,
+
     Serial.println("Somebody is in this area!");
  0x00,0xFE,0x7F,0x00,0xFE,0x7F,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,
+
  else
  0xF3,0xFF,0x00,0xF2,0x7F,0x00,0xE6,0x7F,0x00,0xC6,0x7F,0x00,0x0E,0x3F,0x00,0x3C,
+
     Serial.println("No one!");
  0x1E,0x00,0xF8,0x1F,0x00,0xE0,0x07,0x00,0x80,0x01
+
   delay(500);
};
 
 
 
//Display function 
 
void osd_setup(int _osd_setup,char* _osd_text) {
 
  u8g.firstPage();
 
   do {
 
    setFont_L;
 
    u8g.setPrintPos(4, 30);
 
     u8g.print(_osd_text);
 
    u8g.drawFrame(0,48,128,14);
 
     if(_osd_setup)
 
      u8g.drawBox(0+2,48+2,map(_osd_setup,0,5,0,128-4),14-4);
 
   }
 
  while( u8g.nextPage() );
 
 
}
 
}
 +
</source>
 +
*Select the right port in (Tools)→(Serial Port)under Arduino IDE.
 +
[[file:upload.JPG|600px|center]]
 +
*Compile and then download the program. 
 +
[[file:upload-pir.JPG|600px|center]]
 +
*After the download, you can open the serial monitor. The displayed notice reflects the status detected by the current sensor.
 +
[[file:mCookie-pir-res.JPG|600px|center]]
 +
*Result
 +
When the PIR is detecting the moving persons, it'll output high level in the output pin, which is 5V. And when it detected the PIR signal gone, it'll output low level(0V) after 2.3-3s delay. Therefore, we can according to that to establish a moving person detection project according to that. 
  
 +
===Program Debugging===
 +
*"#define  sensorPin  6" defines sensor interface.   
 +
*Use "" digitalRead(sensorPin); to read sensor change and to judge if there is moving human body.
  
//Display function
+
==Application==
void volcd(float temp, float humi, float light, float pm25, float etoh) {
+
*Intrusion alarm
  u8g.firstPage();
+
*Non-contact infrared automatic switch
  do {
 
    u8g.setDefaultForegroundColor();
 
 
 
    u8g.drawXBMP( 4, 1, 15, 32, bmp_tem);
 
    u8g.drawXBMP( 70, 2, 24, 30, bmp_hum);
 
 
 
    setFont_M;                            //Set the font to be large 
 
    u8g.setPrintPos(20, 16);        //Set start coordinate of the text   
 
    u8g.print("`C "); 
 
    setFont_L;                            //Set the font to be large
 
    u8g.setPrintPos(20, 32);        // Set start coordinate of the text 
 
    u8g.print(temp , 1);            //Temperature 
 
 
 
    setFont_M;                            // Set the font to be large
 
    u8g.setPrintPos(100, 16);        //Set start coordinate of the text
 
    u8g.print("%"); 
 
    setFont_L;                            //Set the font to be large
 
    u8g.setPrintPos(100, 32);        //Set start coordinate of the text
 
    u8g.print(humi , 0);            // Temperature
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(4, 49);          //Set start coordinate of the text
 
    u8g.print(light , 0);      //Light intensity 
 
    setFont_M;                      // Set the font
 
    u8g.print(" Lux"); 
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(4, 63);          // Set start coordinate of the text
 
    u8g.print(pm25 , 1);      // Light intensity
 
    setFont_M;                      // Set the font 
 
    u8g.print(" ug/m3");
 
 
 
 
 
    setFont_L;                      // Set the font 
 
    u8g.setPrintPos(80, 49);          // Set start coordinate of the text
 
    u8g.print(etoh , 0);      //Light intensity
 
    setFont_M;                      // Set the font
 
    u8g.print(" ppm");
 
 
 
  
    setFont_M;                            //Set the font to be large
 
    u8g.setPrintPos(80, 63);        // Set start coordinate of the text
 
    u8g.print(" LED:");
 
  
  }
+
===Project===
  while( u8g.nextPage() );
 
}
 
  
  
void volcdsetup(char* zi,unsigned int x,unsigned int y) {
 
  //#ifdef OLED
 
  u8g.firstPage(); 
 
  do {
 
    setFont_L;   
 
    u8g.setPrintPos(x, y);
 
    u8g.print(zi);
 
  }
 
  while( u8g.nextPage() );
 
  //#endif
 
}
 
</source>
 
*Sensor data collection 
 
<source lang="cpp">
 
  #include <SoftwareSerial.h>
 
#include <AM2321.h>
 
  
AM2321 am2321;
+
==Purchase==
SoftwareSerial pmSerial(4,5); // Communication soft serial port of the PM2.5 sensor
 
  
float sensorTemp;      //Temperature value
+
==History==
float sensorHumi;      //Humidity vale
 
float sensorPM25;      //PM2.5 density 
 
float sensorLight;      //Light intensity
 
float sensorEtoh;      //Air quality 
 
  
//Read PM 2.5 sensor 
+
==Image==
float PM25(){
 
  int data_s = 0; //Receive data from the serial port
 
  int num = -1;   //Receive data counting from the serial port
 
  int sum = 0;   //Check sum
 
  int cal[5];     //Receive data cache
 
  float dustDensity = 0; //PM2.5 density
 
 
 
  pmSerial.begin(2400); //Start the soft serial port at the beginning 
 
  pmSerial.flush();   //Clear the serial cache 
 
 
 
  while(1)
 
  {
 
    if(pmSerial.available() > 0) //Serial cache data
 
    {
 
      data_s = pmSerial.read(); //Read the serial cache data
 
      if(data_s == 0xAA)     //Get the start bit of the data frame
 
      {
 
        num = 0;            //Start counting
 
      }
 
      else if(num >= 0)
 
      {
 
        num++;         //Read data. Number+1 
 
        cal[num-1] = data_s; //Data saved in the cache
 
        if(num == 6)       //Read the last bit of the data frame 
 
        {
 
          sum = cal[0] + cal[1] + cal[2] + cal[3]; //Calculate check sum
 
          if(sum == cal[4] && cal[5] == 0xFF)   //Match the check sum and the last bit of the data frame is oxFF, meaning the received data frame is normal.
 
          {
 
            dustDensity = (cal[0]*256 + cal[1])*(5.0/1024)*550; //Calculate PM2.5 density and the unit is ug/m3.
 
          }
 
          else //The received data is not normal.
 
          {
 
            dustDensity = 0;    //Density clear 
 
          }
 
          break;
 
        }
 
      }
 
    } 
 
  }
 
  pmSerial.end(); //Close the soft serial port
 
  return dustDensity; //The returned value 
 
}
 
 
 
//Sensor data update   
 
void SensorUpdate() {
 
 
 
  //Get the density of the PM 2.5
 
  sensorPM25 = PM25();
 
  //Get temperature and humidity 
 
  am2321.read();
 
  sensorTemp = am2321.temperature / 10.0;
 
  sensorHumi = am2321.humidity / 10.0;
 
  //Get light intensity 
 
  sensorLight = map(analogRead(A0), 0, 1023, 0, 255);
 
  //Get air quality 
 
  sensorEtoh= map(analogRead(A2), 0, 1023, 0, 30);
 
 
 
}
 
</source>
 
  
==Video==
+
*Front
 +
[[file: Microduino-Passive Infrared-F.JPG|thumb|600px|center|Microduino-Passive Infrared Front]]
 +
*Back
 +
[[file: Microduino-Passive Infrared-b.JPG|thumb|600px|center|Microduino-Passive Infrared Back]]
 
|}
 
|}

Revision as of 09:34, 10 March 2016

Language: English  • 中文
Microduino-PIR

Microduino-PIR is a pyroelectric infrared sensor that can detect infrared rays sent from moving human body or animals. It can output switch signals and be used in various occasions that need to detect moving human body.

Features

  • Adopt digital integrated pyroelectric infrared probe AM412.
  • With high precision and sensitivity.
  • Low power consumption, long service life and good stability.
  • Large-scale operation voltage
  • Digital signals
  • Small size and easy to install.

Specification

  • Electrical specification
    • Input voltage: 3.3-5V(6V to the maximum)
    • Working current: 15uA
    • Working temperature: -20~85℃
    • Output voltage: 5V(high level), 0V(low level)
  • Tech parameters
    • Output delay time(high level): 2.3-3s
    • Sensing angle: 100°
    • Sensing distance: 7m
  • Size
    • Size of the board: 20mm*10mm
    • 1.27mm-pitch 4Pin interface.
  • Way of connection
    • Pin description: GND, VCC, signal and NC.
MCookie-Passive Infrared-sensor.JPG

Document


Development

Equipment

Module Number Function
mCookie-CoreUSB 1 Core board
mCookie-Hub 1 Sensor pin board
Microduino-PIR 1 Pyroelectric infrared sensor
  • Other hardware equipment
    • One USB cable
Passive Infrared.jpg

Preparation

  • Setup 1:Connect the PIR to the D6 of the Hub.
MCookie-Passive Infrared-sensor.JPG
  • Setup 2:Assemble the CoreUSB, Hub and the PIR together, then connect them to the computer.
MCookie-pir-pc.JPG

Experiment: Detect If there is person moving

  • Open Arduino IDE and copy the following codes into IDE.
#define  sensorPin  6

int state;

void setup()
{
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);
}
void loop()
{
  state = digitalRead(sensorPin);
  if (state == 1)
    Serial.println("Somebody is in this area!");
  else
    Serial.println("No one!");
  delay(500);
}
  • Select the right port in (Tools)→(Serial Port)under Arduino IDE.
Upload.JPG
  • Compile and then download the program.
  • After the download, you can open the serial monitor. The displayed notice reflects the status detected by the current sensor.
MCookie-pir-res.JPG
  • Result

When the PIR is detecting the moving persons, it'll output high level in the output pin, which is 5V. And when it detected the PIR signal gone, it'll output low level(0V) after 2.3-3s delay. Therefore, we can according to that to establish a moving person detection project according to that.

Program Debugging

  • "#define sensorPin 6" defines sensor interface.
  • Use "" digitalRead(sensorPin); to read sensor change and to judge if there is moving human body.

Application

  • Intrusion alarm
  • Non-contact infrared automatic switch


Project

Purchase

History

Image

  • Front
File:Microduino-Passive Infrared-F.JPG
Microduino-Passive Infrared Front
  • Back
File:Microduino-Passive Infrared-b.JPG
Microduino-Passive Infrared Back