Điều khiển và giám sát qua điện thoại với ESP8266 và Blynk

Hôm nay xin chia sẻ với các bạn cách điều khiển thiết bị bằng smartphone, ngoài ra ta còn có thể quan sát/ giám sát được thông tin dữ liệu, các thông số như nhiệt độ, độ ẩm môi trường theo thời gian thông qua smartphone của mình.

Để chuẩn bị bắt đầu thì bạn cần biết một ít kiến thức về cách lập trình với ESP8266 mình có trình bày ở một số bài viết trước. Nếu bạn đã biết rồi thì có thể bỏ qua.

Chuẩn bị

Phần cứng

  • Kit Node MCU hoặc ESP8266 v7 + mạch USB2UART tương ứng
  • Dây nối
  • Breadboard
  • Cảm biến DHT11 hoặc DHT22
  • Điện thoại smartphone dùng hdh Android hoặc iOS

Phần mềm

  • Phần mềm lập trình cho ESP8266 là Arduino IDE
  • App Blynk cho AndroidiOS

Tại sao lại dùng Blynk ?

blynk-3-cover2

Blynk thực ra là một cái app trên điện thoại, cho phép người dùng có thể tạo ra giao diện và điều khiển thiết bị theo ý thích của cá nhân. Mình lựa chọn Blynk vì một số lý do sau:

  • Dễ sử dụng: Quá đơn giản, chỉ việc vào store, cài đặt, sau đó đăng ký tài khoản và mất không quá 5 phút để làm quen.
  • Đẹp và đầy đủ: Giao diện của Blynk quá tuyệt vời, sử dụng bằng cách kéo thả, bạn cần nút bấm, kéo thả nút bấm, bạn cần đồ thị, kéo thả đồ thị, bạn cần LCD, kéo thả LCD, tóm lại là bạn cần gì thì kéo thả cái đó.
  • Không phải lập trình android hay ios: Nếu như không có kiên thức về làm app trên điện thoại thì việc điều khiển thiết bị từ chính smartphone của mình quả là điều vô cùng khó khăn và phức tạp. Nhờ blynk thì chúng ta có thể bỏ qua bước lập trình tạo app. Có thể thử nhanh chóng và ứng dụng được dự án của mình vào thực tế.
  • Thử nghiệm nhanh chóng, có thể điều khiển giám sát ở bất kỳ nơi nào có internet.

Tất nhiên ngoài những điểm lợi từ blynk thì còn có những cái hạn chế như phải mua energy để tạo được nhiều giao diện và chia sẻ giao diện cho người khác. Những cái này cũng không phải là vấn đề lớn lắm.

Để sử dụng được blynk thì cần phải tải thư viện của nó thông qua Arduino IDE

Chọn Sketch -> Include Library -> Manage Libraries, tìm kiếm blynk và install.

blynk_arduino

Bật tắt LED qua điện thoại

Tới đây là đã xong được các bước chuẩn bị. Giờ thì mình đi vào lập trình điều khiển ấn nút trên blynk LED nối với chân D0 trên kit NodeMCU sáng/ tắt

Sơ đồ chân của NodeMCU/ ESP8266

nodemcu_pinout

Tạo tài khoản mới trên blynk khá đơn giản chỉ việc nhập email và pass vào là xong nên mình sẽ bỏ qua bước này

Tạo project mới cho blynk

create_project_blynk

Thêm nút nhấn vào blynk

add_button_blynk.gif

Lấy Auth token để có thể kết nối tới ESP8266 bằng cách vào hình lục giác, chọn new device và lưu lại giá trị tại AUTH TOKEN.

get_auth_token_blynk.gif

Xem như đã xong được giao diện đơn giản trên điện thoại, giờ là chương trình cho ESP8266

Lưu ý:

Có 3 chỗ cần thay thông tin là YourAuthToken, YourNetworkName,YourPassword

Chương trình cho ESP8266

Thử thành quả bằng cách ấn vào nút play hình tam giác và tác động lên nút nhấn xem kết quả.

led_result_blynk

Giám sát nhiệt độ, độ ẩm

Như ở bài hướng dẫn đọc nhiệt độ độ ẩm với ESP8266 thì các bạn đã biết được cách đọc và hiển thị thông tin về nhiệt độ, độ ẩm lên máy tính, giờ chúng ta thử kết hợp blynk để hiển thị thông tin này lên điện thoại xem thế nào

Sử dụng giao diện blynk đã tạo bên trên, thêm value display S và value display M

add_value_blynk

 

Cấu hình cho các thuộc tính mới add, chọn pin là virtual v0 và v1,đặt lại tên và chọn màu sắc hiển thị

 

temp_humid_blynk

Cuối cùng là viết chương trình cho ESP8266 và thay đổi  thông tin về token và wifi sau đó nạp chương trình

Chương trình cho NodeMCU/ESP8266

Kết quả

Ấn vào nút tam giác và chờ kết quả hiển thị, sau mỗi 1 giây thì giá trị nhiệt độ và độ ẩm sẽ cập nhật 1 lần

result_temp_humid_blynk

Lưu ý:

Nếu bạn bị lỗi tại thư viện SimpleTimer.h thì bạn có thể tải và cập nhật thủ công tại đây

Cố thêm chút nữa

Xem như chúng ta đã hoàn thành được việc hiển thị nhiệt độ và độ ẩm, giờ nếu còn energy thì thêm graph và gauge hiển thị thông tin cho rực rỡ sắc màu, history graph thường cập nhật sau mỗi 1 phút mới lên dữ liệu nên nếu không thấy thì bạn cứ chờ đợi nhé.

Chỉnh sửa giao diện, cấu hình và kết quả

Tạm kết

Thế là chúng ta đã có thể điều khiển bật tắt đèn thông qua smartphone, ngoài ra còn có thể quan sát được nhiệt độ và độ ẩm của môi trường nữa, đây chỉ là những bước khởi đầu để bạn làm quen với việc lập trình, điều khiển, giám sát thông qua điện thoại. Blynk có thể dùng để điều khiển và giám sát ở bất kỳ nơi nào có internet, không bị giới hạn trong một mạng cụ thể nào. Trong blynk còn rất nhiều điều lý thú để các bạn có thể tìm hiểu và khám phá thêm. Mình sẽ sớm cập nhật thêm các hướng dẫn cho các bạn trong các bài tiếp theo.

36 thoughts on “Điều khiển và giám sát qua điện thoại với ESP8266 và Blynk

  1. alo xin chào . cho tôi hỏi muốn tắt mở Led qua điện thoại và dùng nút bấm/công tắc thì phải làm như thế nào ..
    bạn có hướng dẫn và code thì cho mình xin …..
    xin cảm ơn nhiều.

    1. mình không hiểu ý bạn lắm, nhưng để bật tắt LED qua điện thoại thì mình đã nói ở trên rồi,nếu dùng thêm nút bấm vật lý thì phải điều chỉnh code thêm 1 chút

      1. Theo như em hiểu ở câu hỏi này đó là: a ấy muốn điều khiển đèn led gia đình bằng blynk và cũng muốn dùng công tắc bật nữa thì phải làm sao? Giống như đèn cầu thang dưới có 1 công tắc và trên có 1 công tắc ấy ad. Ở đây cũng vậy ạ! E cũng muốn hỏi như vậy!

  2. Bạn ơi cho mình hỏi chút.
    – Mình có thể sử dụng 1 điện thoại để điều khiển 2 arduino cùng wifi được không
    – blynk có thể đưa cảnh báo ra loa điện thoại được không (giả sử mình giám sát nhiệt độ, nếu nhiệt độ vượt quá giá trị mình đặt thì có âm thanh phát ra từ loa điện thoại)
    Cảm ơn bạn rất nhiều

    1. – 1 điện thoại có thể điều khiển được 2 (hoặc nhiều) phần cứng khác nhau nhé bạn
      – Mình chỉ thấy blynk có thể gửi tin nhắn dạng như messger, mail hoặc tweet còn mà đổ chuông thì mình không biết

  3. Chào bạn.
    Mình muốn điều khiển qua wifi như vậy và chỗ đèn có cộng thêm công tắt cảm ứng điện dung 1 chạm, vậy thêm code cái công tắt đó như thế nào, chỉ dùm mình phần code với.

    1. bạn đã lập trình được ở bên dưới nhấn nút cảm ứng LED sáng chưa ? Nếu ok rồi thì tích hợp cái ví dụ của mình vào là ok thôi mà

  4. Mình làm như hướng dẫn mà nó báo thế này là sao?

    Arduino: 1.6.7 (Windows 10), Board: “NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)”

    WARNING: Spurious .github folder in ‘Adafruit NeoPixel’ library
    WARNING: Spurious .github folder in ‘DHT sensor library’ library
    WARNING: Spurious .github folder in ‘DHT sensor library’ library
    In file included from G:\ARDUINO\Blynk_VN_v0.4.8\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    G:\ARDUINO\Blynk_VN_v0.4.8\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    Multiple libraries were found for “DHT.h”
    Used: G:\ARDUINO\Blynk_VN_v0.4.8\libraries\DHT-sensor-library-master
    Not used: G:\ARDUINO\arduino-1.6.7\libraries\DHT-sensor-library-master
    exit status 1
    Error compiling.

    This report would have more information with
    “Show verbose output during compilation”
    enabled in File > Preferences.

    1. bạn sửa tên đường dẫn DHT-sensor-library-master thành DHT nhé, hoặc xóa luôn cái cũ đi, của bạn dính lỗi nhiều thư viện DHT quá

  5. In file included from C:\Users\T\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:

    C:\Users\T\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board NodeMCU 1.0 (ESP-12E Module).

    LÀ BỊ LÔI GÌ VẬY BẠN

  6. cảm ơn ad , mình đã làm được theo như ad hướng dẫn, mình có thăc mắc là bây giờ mình muốn đồng bộ tín hiệu , ví dụ như thiết bị đang ON nhưng do mất điện thì trên Blynk biết và cho nút nhấn về OFF theo trạng thái thiết bị luôn , cảm ơn ad

  7. add ơi cho m hỏi là mình muốn sử dụng 1 công tắc( coi như là 1 công tắc báo động khi trộm chẳng hạn) để giao tiếp với esp8266 thì có kết nối trực tiếp dc không và kết nối như nào để khi công tắc bật thì điện thoại của mình báo là có tìn hiệu của công tắc thông qua 1 app ứng dụng, mog add chia sẻ kiến thức để giúp đỡ

  8. Bạn ơi sao minh code blynk.begin rồi phía dưới mình có dùng code của dht.begin để lấy giá trị cài đặt mà dht11 không chạy. Bỏ dòng blynk.begin thi dht chạy ổn.

  9. Mình đã làm 1 nút trên điện thoại D0 điều khiển relay A, mình muốn llàm thêm 1 nút nhấn điều khiển relay A đó. Tức là vừa điều khiển thủ công, vừa điều khiển trên điện thoại. Vậy mình viết code lại như thế nào bạn, mong bạn chỉ giúp.

    1. Hi bạn, blink sẽ hiển thị được tất cả các giá trị nhé, ví dụ thay vì bạn gửi nhiệt độ độ ẩm thì bạn gửi giá trị dòng điện đo từ cảm biến lên là xong.

Add Comment