Dark
  • thứ hai, 23 tháng 9 2024
Dự Án IoT 2: KIT HE8 Điều Khiển Quạt Theo Nhiệt Độ Độ Ẩm

Dự Án IoT 2: KIT HE8 Điều Khiển Quạt Theo Nhiệt Độ Độ Ẩm

Với các nhà trồng nấm hay trong các máy ấp trứng việc đảm bảo nhiệt độ, độ ẩm dao động trong khoảng nhất định là điều kiện quyết định sự thành công của quá trình. Để ổn định nhiệt độ người ta có thể sử dụng cây tăng nhiệt, quạt . . ., với độ ẩm thì dùng máy phun sương, béc phun sương . . . và một thứ không thể thiếu là bộ điều khiển các thiết bị trên. Hôm nay mình sẽ hướng dẫn các bạn làm 1 bộ điều khiển nhiệt độ, bằng cách bật tắt quạt theo điều kiện cho trước và thống kê biểu đồ nhiệt độ theo thời gian với kit HE8_v1 module DHT11.

Phần cứng

Kit HE8 phiên bản 1

image

Module DHT11

image

Link Mua Sản Phẩm: KIT HE8-V1 + DHT11

Tạo dự án trên Blynk 01

Với các bạn chưa biết cách tạo tài khoản blynk trên server hackanidea.net thì vào đây để xem hướng dẫn. Ở đây mình bắt đầu với việc tạo dự án mới:

image

  • Đặt tên cho dự án DHT11
  • Nhấn Create

Vào Widget Box lấy Button và cấu hình theo bên dưới

imageimage

Lấy Menu để làm thanh chọn chế độ hoạt động và thiết lập như bên dưới

imageimage

Lấy Numeric Input để nhập chu kì đo cho máy

imageimage

Tiếp theo là hiển thị nhiệt độ và độ ẩm ta chọn 2 cái Gauge.

image

Đây là cấu hình của nó

imageimage

Vì chương trình của chúng ta có phần chạy theo điều kiện nhiệt độ và độ ẩm, khi nhiệt độ cao hơn mức trên thì bật quạt và khi thấp hơn mức dưới thì tắt quạt. Và ngược lại với độ ẩm, các giá trị này ta có thể truyền xuống thiết bị thông qua 4 Numeric Input sau:

image

imageimage

imageimage

Và cuối cùng là biểu đồ Super Chart

image

  • Add Datastream: Nhiệt Độ, Độ Ẩm

image

Cấu hình nó bên trong nút vàng của nhiệt độ và độ ẩm

image

image

Sau khi thiết lập tất cả các Widget, các bạn hãy sắp xếp chúng cho hợp lý. Đây là cái của mình

image

Code

Sau khi đã hoàn thành thiết lập app trên blynk các bạn hãy tải file DHT11.ino để nạp.

Trong code trên, mình sử dụng thư viện DHT.h để đo nhiệt độ và độ ẩm. Nếu các bạn chưa cài thư viện cho DHT thì sau đây là hướng dẫn.

Vào Sketch -> Include Library -> Manage Libraries … Hoặc nhấn tổ hợp phím Ctrl + Shift + I

image

 Nhấn dht vào ô tìm kím, kéo xuống DHT sensor library by Adafruit, chọn INSTALL

image

Lưu ý: Đừng quên thay đổi "YourNetworkName", "YourPassword", "YourAuthToken" bằng tên wifi, pass và bằng Auth Token của project trên Blynk của bạn.

// Thay Auth Token của bạn vào "YourAuthToken" .
const char *auth = "YourAuthToken";
// Thay tên wifi của bạn vào "YourNetworkName"
const char *ssid = "YourNetworkName";
// Thay pass wifi của bạn vào "YourPassword"
const char *pass = "YourPassword";

Các bạn có thể tham khảo cách lấy Auth Token ở đây.

Mình xin giải thích một xíu về các biến mà mình dùng. Đầu tiên là:

byte runMode = 0;  // 0 là Tự Động, 1 là Thủ Công

Biến runMode để chọn chế độ hoạt động 0 là Tự Động, 1 là Thủ Công. Khi ở chế độ tự động thì quạt sẽ chạy theo giá trị nhiệt độ và độ ẩm.  Còn chế độ thủ công ta có thể sử dụng nút nhấn để bật tắt quạt mà không phụ thuộc vào giá trị nhiệt độ, độ ẩm.

image

Nếu nhiệt độ cao hơn NHIỆT ĐỘ TRÊN thì quạt sẽ bật:

if (t > temperatureOn && relayState != 1)
{
  // nếu quạt đang tắt thì bật quạt
  relayState = 1;
  digitalWrite(relayPin, relayState);
  digitalWrite(ledPin, relayState);
  Serial.println("Nhiet do cao bat relay: " + String(relayState));
  Blynk.virtualWrite(V0, relayState);
}

relayState != 1 giúp đoạn lệnh này chỉ chạy 1 lần.          

digitalWrite(relayPin, relayState);    - là hàm bật quạt

digitalWrite(ledPin, relayState);       - là hàm bật led

Blynk.virtualWrite(V0, relayState);  - là hàm gửi dữ liệu lên nút blynk

Nếu nhiệt độ thấp hơn NHIỆT ĐỘ DƯỚI thì quạt sẽ tắt:

else if (t < temperatureOff && relayState != 0)
{
  // nếu quạt đang bật thì tắt quạt
  relayState = 0;
  digitalWrite(relayPin, relayState);
  digitalWrite(ledPin, relayState);
  Serial.println("Nhiet do thap tat relay: " + String(relayState));
  Blynk.virtualWrite(V0, relayState);
}

Và ngược lại với giá trị độ ẩm.

Nếu độ ẩm thấp hơn ĐỘ ẨM DƯỚI thì quạt sẽ bật:

 if (h < humidityOn && relayState != 1)
{
  // nếu quạt đang tắt thì bật quạt
  relayState = 1;
  digitalWrite(relayPin, relayState);
  digitalWrite(ledPin, relayState);
  Serial.println("Do am cao bat relay: " + String(relayState));
  Blynk.virtualWrite(V0, relayState);
}

Nếu độ ẩm cao hơn ĐỘ ẨM TRÊN thì quạt sẽ tắt:

else if (h > humidityOff && relayState != 0)
{
  // nếu quạt đang bật thì tắt quạt
  relayState = 0;
  digitalWrite(relayPin, relayState);
  digitalWrite(ledPin, relayState);
  Serial.println("Do am thap tat relay: " + String(relayState));
  Blynk.virtualWrite(V0, relayState);
}

Cuối cùng là nạp code cho mạch và mở app xem mạch đã gửi dữ liệu lên chưa.

Đây chỉ là chương trình demo, ngoài thực tế có thể phải sử dụng nhiều quạt và bơm hơn. Chương trình cần thêm các điều kiện khác để có thể ứng dụng được trong thực tế.

Nếu các bạn có thắc mắc gì về code và kết nối thì hãy liên hệ với chúng mình qua nhóm FB: hackanidea.net 

 

Bình luận / Trả lời