Home Ứng dụng IoT - Internet of Things Điều khiển thiết bị điện qua wifi dùng App Inventor

Điều khiển thiết bị điện qua wifi dùng App Inventor

6
Điều khiển thiết bị điện qua wifi dùng App Inventor

Hiện nay, nhà thông minh đang ngày càng trở nên phổ biến. Việc tạo ra các thiết bị IoT là cách tốt nhất để giúp cho căn nhà của bạn được tiện nghi hơn. Nó cho phép chúng ta điều khiển các thiết bị gia dụng, khóa cửa, máy móc bằng điện thoại thông minh hoặc máy chủ web. Ở bài viết này, tôi sẽ hướng dẫn các bạn tạo ra một ứng dụng nhỏ để điều khiển thiết bị điện qua wifi bằng cách sử dụng một ứng dụng Android được tạo ra từ MIT App Inventor. 

Xem thêm bài viết: Điều khiển LED qua bluetooth dùng App Inventor và Arduino

MIT App Inventor là gì?

MIT App Inventor là một trang web mã nguồn mở dành cho Android. Ban đầu nó được tạo ra bởi Google nhưng bây giờ được duy trì hoạt động bởi Học viện công nghệ Massachusetts MIT (Massachusetts Institute of Technology). Ngay cả một người mới bắt đầu sử dụng MIT App Inventor cũng có thể dễ dàng tạo ra cho mình các ứng dụng cho Android. MIT App Inventor sử dụng giao diện đồ họa GUI (Graphical User Interface) cho phép người dùng có thể kéo và thả các đối tượng trực quan để tạo các ứng dụng có thể dễ dàng chạy trên các thiết bị Android.

MIT App Inventor để tạo ứng dụng cho Android

Sau khi hoàn tất việc thiết kế ứng dụng trên MIT app inventor, bạn có thể tải về ứng dụng đó và cài đặt ứng dụng đã thiết kế trên điện thoại thông minh của bạn. Cuối cùng, bạn tiến hành giao tiếp ứng dụng này với module wifi ESP8266 NodeMCU và điều khiển các thiết bị điện trong nhà qua điện thoại một cách nhanh chóng và tiện lợi.

Chuẩn bị linh kiện

Sau đây là danh sách các linh kiền cần thiết để thực hiện ứng dụng điều khiển thiết bị điện qua wifi bằng MIT App Inventor và NodeMCU ESP8266.

STTTên linh kiệnSố lượng
1NodeMCU ESP82661
2Module Relay 5V1
3Đèn điện1
4Dây điện 

Module Relay

Relay hay rơ-le là một công tắc điện từ được vận hành bởi một dòng điện tương đối nhỏ có thể bật hoặc tắt một dòng điện lớn hơn nhiều. Relay được sử dụng để điều khiển mạch ngõ ra bằng một tín hiệu. Hay nói cách khác, chúng ta có thể sử dụng relay để chuyển mạch “ON” và “OFF” bằng điện. Relay được điều khiển bởi một dòng điện nhỏ và dòng điện ở ngõ ra lớn. 

Đọc thêm bài viết: Hướng dẫn sử dụng relay

Khi có dòng điện chạy qua cuộn dây bên trong của relay và tạo ra một từ trường hút. Từ trường hút này tác động lên một đòn bẩy bên trong làm đóng hoặc mở các tiếp điểm điện và như thế sẽ làm thay đổi trạng thái của relay. Số tiếp điểm điện bị thay đổi có thể là 1 hoặc nhiều, tùy vào thiết kế.

Trên relay có 3 kí hiệu là: NO, NC và COM (xem hình bên dưới).

  • COM (Common): là chân chung, nó luôn được kết nối với 1 trong 2 chân còn lại. Còn việc nó kết nối chung với chân nào thì phụ thuộc vào trạng thái hoạt động của relay.
  • NC (Normally Close – Thường đóng): Khi relay ở trạng thái OFF, chân COM sẽ nối với chân này.
  • NO (Normally Open – Thường mở): Khi relay ở trạng thái ON (có dòng chạy qua cuộn dây) thì chân COM sẽ được nối với chân này.

Module relay bao gồm các linh kiện điện tử (transistor, điện trở, diode, …) được kết nối với nhau trên một board mạch và thực hiện một chức năng nhất định như hình bên dưới. Transistor được sử dụng để khuếch đại dòng điện, điện trở được sử dụng để phân cực cho transistor, và nếu transistor tắt, diode được sử dụng để bảo vệ transistor khi cuộn dây của relay xả năng lượng.

Sơ đồ mạch kết nối điều khiển thiết bị điện qua wifi

Việc kết nối các linh trong mạch rất dễ dàng. Bạn có thể làm theo sơ đồ mạch dưới đây và bảng kết nối chân để lắp ráp mạch của bạn.

Sơ đồ kết nối mạch điều khiển thiết bị điện qua wifi
ESP8266 NodeMCURelay
VCCVCC
GNDGND
D4Input

Bây giờ chúng ta phải tạo ra một ứng dụng Android bằng cách sử dụng MIT App Inventor để điều khiển các thiết bị gia dụng.

Tạo ứng dụng Android dùng MIT App Inventor

Bây giờ chúng ta sẽ tạo ra một ứng dụng Android bằng MIT App Inventor để điều khiển các thiết bị điện qua wifi theo các bước sau.

Đầu tiên bạn hãy truy cập vào website của MIT Application Inventor: http://ai2.appinventor.mit.edu/.

Sau khi nhấp vào “Create Apps! ở góc trên cùng bên trái, bạn tiến hành đăng nhập với tài khoản gmail của mình nhé.

Sau khi đăng nhập, bạn nhấp vào “Projects” trên màn hình tiếp theo và sau đó chọn “Start new project”.

Tiếp theo, bạn hãy đặt tên cho dự án.

Bây giờ bạn tiến hành thiết kế giao diện cho ứng dụng bằng cách chọn nhấp chọn nút “Designer” ở góc trên bên phải.

Trong màn hình thiết như hình bên dưới, bạn nhấp chọn và kéo các đối tượng (component) ở cột Palette vào trong màn hình thiết kế Viewer như hình bên dưới.

Các bạn lưu ý, cột Components cho thấy các đối tượng được sử dụng để thiết kế giao diện cho ứng dụng này. Bạn có thể thay đổi thuộc tính của các đối tượng trong cột Properties.

Sau khi thiết kế giao diện cho ứng dụng xong, bạn nhấp vào “Blocks” ở góc trên bên phải để lập trình cho ứng dụng của bạn.

Trong màn hình lập trình như hình bên dưới, bạn hãy nhấp vào các đối tượng tương ứng trên màn hình thiết kế rồi chọn và sắp xếp các khối như hình dưới đây.

Sau khi thiết kế giao diện và lập trình cho ứng dụng xong, chúng ta sẽ đóng gói ứng dụng ra file apk và cài vào điện thoại của mình. Để xuất ra được file apk các bạn chọn “Build” trên menu rồi chọn “App“. Có 2 cách để biên dịch và cài đặt ứng dụng vào điện thoại.

  • Cách 1: Sử dụng phần mềm MIT AI2 Companion. Với cách này, bạn cần cài đặt phần mềm MIT AI2 Companion trên điện thoại của mình. 

  • Cách 2: Biên dịch ra file apk và cài đặt. Đầu tiên, bạn sẽ download file apk về máy tính (chọn save .apk to my computer), sau đó sao chép file này sang điện thoại để cài đặt.

Trong bài viết này tôi chọn Cách 1.

Để thực hiện, trong giao diện thiết kế của AI2, bạn chọn Build >> App (provide QR code for .apk)

Sau khi biên dịch xong sẽ xuất hiện một mã QR code, bạn sử dụng phần mềm MIT AI2 Companion để quét mã vạch QR, sau đó file apk sẽ tự động được tải về điện thoại. Cuối cùng, bạn cài đặt ứng dụng vào điện thoại của mình.

Bây giờ ứng dụng của bạn đã sẵn sàng. Nhưng để có thể điều khiển thiết bị điện qua wifi bằng điện thoại bạn cần thực hiện một bước cuối cùng sau đây.

Ứng dụng điều khiển thiết bị điện qua wifi

Bây giờ chúng ta phải nạp chương trình cho NodeMCU để tạo một máy chủ web HTTP đơn giản để điều khiển thiết bị điện trong nhà. Chúng ta sẽ sử dụng phương thức HTTP GET để giao tiếp giữa các ứng dụng Android ESP8266 và Android.

Đọc thêm bài viết: Hướng dẫn lập trình ESP8266 NodeMCU dùng Arduino IDE

Chương trình

#include <ESP8266WiFi.h>

const char* ssid = “ten-wifi”;

const char* password = “matkhau-wifi”;

WiFiServer server(80);

void setup() {

  Serial.begin(115200); 

  delay(10);

  pinMode(2, OUTPUT);  

  digitalWrite(2, 0);

  Serial.println();

  Serial.println();

  Serial.print(“Connecting to “);

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(“.”);

  }

  Serial.println(“”);

  Serial.println(“WiFi connected”);

  server.begin();

  Serial.println(“Server started”);

  Serial.println(WiFi.localIP());

}

void loop() {

  WiFiClient client = server.available();

  if (!client) {

    return;

  }

  Serial.println(“new client”);

  while (!client.available()) {

    delay(1);

  }

  String req = client.readStringUntil(‘\r’);

  Serial.println(req);

  client.flush();

  int val;

  if (req.indexOf(“/gpio/0”) != -1)

    val = 0;

  else if (req.indexOf(“/gpio/1”) != -1)

    val = 1;

  else {

    Serial.println(“invalid request”);

    client.stop();

    return;

  }

  digitalWrite(2, val);

  client.flush();

  String s = “HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now “;

  s += (val) ? “high” : “low”;

  s += “</html>”;

}

Giải thích chương trình

Dưới đây tôi giải thích ngắn gọn đoạn chương trình (code) trên để bạn có thể hiểu chương trình thực sự hoạt động như thế nào. 

Tôi dùng lệnh include để chương trình tải thư viện có sẵn cho mô-đun ESP8166 WiFi và nhập thông tin đăng nhập WiFi như SSID và mật khẩu.

#include <ESP8266WiFi.h>

const char* ssid = “ten-wifi”;

const char* password = “matkhau-wifi”;

Serial Monitor được khởi động ở tốc độ truyền mặc định cho NodeMCU

Serial.begin(115200);

Chân tín hiệu ngõ vào của Relay được kết nối với chân D4, tức là chân GPIO 2 của module NodeMCU.

pinMode(2, OUTPUT);

digitalWrite(2, 0);

Trong phần void setup, đoạn chương trình này nhằm mục đích kết nối với WiFi. Quá trình này được thực hiện theo vòng lặp, có nghĩa là chương trình chạy cho đến khi nào kết nối được với WiFi. Vì vậy, bạn cần nhập chính xác tên và mật khẩu wifi của bạn.

void setup() {

  Serial.println();

  Serial.println();

  Serial.print(“Connecting to “);

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(“.”);

  }

  Serial.println(“”);

  Serial.println(“WiFi connected”);

Trong phần void loop, chương trình sẽ kiểm tra xem client đã kết nối chưa. Nó chờ cho đến khi client gửi dữ liệu và thực hiện các tác vụ theo đầu vào.

void loop() {

  WiFiClient client = server.available();

  if (!client) {

    return;

  }

  Serial.println(“new client”);

  while (!client.available()) {

    delay(1);

  }

Bạn có thể kiểm tra web server của bạn có hoạt động hay chưa bằng cách sử dụng các URL sau để BẬT hoặc TẮT đèn điện.

Lưu ý: 192.168.x.xxx là địa chỉ IP của NodeMCU. Bạn có thể tìm thấy địa chỉ IP này trên Serial Monitor. Khi bạn chạy chương trình trên Arduino IDE, chương trình sẽ in địa chỉ IP của thiết bị trên Serial Monitor. Đồng thời, nó sẽ xác nhận xem web server có hoạt động hay không.

Kết luận

Qua bài viết này, bạn có thể điều khiển thiết bị điện qua wifi hoặc bất kỳ thiết bị điện tử nào bằng ứng dụng Android dựa trên ứng dụng IoT này.

6 COMMENTS

  1. Thầy ơi cho em hỏi là nếu như mình sử dụng một app khác vd như: Blynk,… thì cái chương trình(code) nó có thay đổi gì không ạ?
    Em cám ơn thầy nhiều!

  2. thầy ơi nếu kết nối với EPS 8266 Với AT89S52 thì làm như thế nào ạ. e điều khiển bật tắt đèn ạ. thầy có thể gợi ý cho e được không ạ

LEAVE A REPLY

Please enter your comment!
Please enter your name here