WiFi Санта-детектор (или система безопасности)
WiFi Санта-детектор (или система безопасности)
 
В канун Рождества дети во всю ожидают подарков от Санты. Некоторые могут даже не ложится спать, чтобы увидеть, когда он придет. Этот проект будет отслеживать движение и уровень освещенности в комнате. Вы можете поставить устройство в любую комнату, чтобы узнавать, когда ваша собака гуляет по ней, или использовать ее в качестве домашней системы безопасности.

Шаг 1. Настройка схемы
 
Полный список материалов
Blynk Board ESP8266
Датчик PIR
Перемычки
Фоторезистор
Резисторы 10KОм
 
Для питания схемы используйте кабель micro-USB.

Шаг 2. Настройка приложения
В приложении Blynk вам необходимо создать эти виджеты:




 
SuperChart
Два датчика
Один датчик предназначен для отслеживания уровня освещенности, а другой для движения. SuperChart используется для отслеживания обоих с течением времени. Следуйте рисункам, как их настроить.

Шаг 3: Загрузите код
 
Загрузите этот код в свою Blynk Board в Arduino IDE и не забудьте изменить эти три вещи:
Для того, чтобы этот код работал, вам понадобится библиотека Blynk.
  • char BlynkAuth[] = "yourauthcode";
  • char WiFiNetwork[] = "yournetworkname";
  • char WiFiPassword[] = "yourwifipassword";
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial
char BlynkAuth[] = "";
char WiFiNetwork[] = "";
char WiFiPassword[] = "";
int calibrationTime = 30;
long unsigned int lowIn;
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
void setup() {
  pinMode(A0, INPUT);
  Blynk.begin(BlynkAuth, WiFiNetwork, WiFiPassword);
  pinMode(12, INPUT);
  digitalWrite(12, LOW);
  for (int i = 0; i < calibrationTime; i++) {
    delay(1000);
  }
  delay(50);
}
void loop() {
  Blynk.run();
}
BLYNK_READ(V5) {              //hardware to app
  int battery = analogRead(A0);
  Blynk.virtualWrite(5, battery);
}
BLYNK_READ(V4) {              //hardware to app
  if (digitalRead(12) == HIGH) {
    if (lockLow) {
      lockLow = false;
      delay(50);
    }
    takeLowTime = true;
  }
  if (digitalRead(12) == LOW) {
    if (takeLowTime) {
      lowIn = millis();          //save the time of the transition from high to LOW
      takeLowTime = false;       //make sure this is only done at the start of a LOW phase
    }
    if (!lockLow && millis() - lowIn > pause) {
      lockLow = true;
      delay(50);
    }
  }
  Blynk.virtualWrite(4, digitalRead(12));
}

Для того, чтобы этот код работал, вам понадобится библиотека Blynk. Загрузите ее в прикрепленном файле Скачать файл: blynk_release_v0.4.10.zip [609,27 Kb] (cкачиваний: 5)  

Как установить библиотеку: www.arduino.cc/en/Guide/Libraries
270