Hệ thống điều khiển thiết bị nhà thông minh sử dụng NodeMCU ESP8266 và App Blynk

18 Tháng 10 2019 | Đăng bởi: Cao Thanh Hùng

 

Nội dung bài viết hôm nay mình sẽ hướng dẫn cho các bạn một dự án Làm hệ thống nhà thông minh sử dụng Blynk và NodeMCU ESP8266 để điều khiển các thiết bị trong ngôi nhà của mình.

Để hiểu hơn về cấu tạo và cách hoạt động của tất cả Cảm biến có trong dự án .Các bạn có thể tìm đọc bài viết về Khóa học Arduino miễn phí dành cho người mới nhập môn.

Nếu bạn chưa biết cách cài đặt NodeMCU ESP8266 trên Arduino IDE thì các bạn xem bài viết bên dưới nhé.

 

Sơ đồ đấu nối

 

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
NodeMCU ESP8266  1
Cảm biến nhiệt độ, độ ẩm DHT11 1
Cảm biến chuyển động PIR HC-SR501 1
Relay 1

 

Code

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = " 1efa4c5b87034f3688f8383ae1a56132 ";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Phamson";
char pass[] = "phamtheson";

#define DHTPIN 16        // What digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  int p=digitalRead(15);//th cb chuyen dong
   
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
 if(p==HIGH)
 Blynk.virtualWrite(V4,"++co nguoi++");
 
 else
 Blynk.virtualWrite(V4," --khong co--");
}

void setup()
{
  pinMode(15,INPUT);
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);

  dht.begin();

  // Setup a function to be called every second
  timer.setInterval(1000L, sendSensor);
}

void loop()
{
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer
}

Thư viện

Để quá trình nạp không bị báo lỗi chúng ta cần phải cài đặt thư viện cho Arduino IDE. Tại đây

Bài viết liên quan

Viết bình luận: