Hệ thống điều khiển thiết bị thông minh thông qua NodeMCU ESP8266 và App Mobile

Hệ thống điều khiển thiết bị thông minh thông qua NodeMCU ESP8266 và App Mobile

EBOOK ARDUINO CHO NGƯỜI MỚI BẮT ĐẦU

TẶNG E-BOOK ARDUINO

Bạn đang có dự định triển khai một dự án điều khiển thiết bị trong nhà bằng SmartPhone, mà chưa biết bắt đầu từ đâu không biết cách thức để làm như thế nào. Trong 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 Hệ thống Điều khiển thiết bị thông minh thông qua NodeMCU ESP8266 + App Mobile để có thể điều khiển thiết bị trong ngôi nhà của mình.

Trước khi thực hành hướng dẫn này nếu bạn chưa bao giờ sử dụng NodeMCU Esp8266 hoặc chưa bao giờ lập trình Esp8266 với Arduine IDE, các bạn xem tại đây nhé.

Xem thêm: Hướng dẫn cài đặt ESP8266 và kết nối với Blynk

Sơ đồ đấu nối

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

Tên linh kiện Số lượng Shopee
Esp8266 1 Mua ngay
Relay 4 Kênh 1 Mua ngay
LCD16X2 1 Mua ngay
Board I2C LCD16X2 1 Mua ngay
Dây cắm (Đực – cái) Mua ngay

Cài đặt ứng dụng Android trên Smartphone

Tải App ESP8266

  • Mở ứng dụng CHPLAY trên điện thoại nhập tìm kiếm từ khóa: Esp8266
  • Tiếp theo đặt địa chỉ IP và PORT 80 trong ứng dụng Android.
  • Bây giờ bạn có thể điều khiển ứng dụng.

Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define ON 0
#define OFF 1
LiquidCrystal_I2C lcd(0x3F , 16, 2);
const char* ssid = "Nha Tro 4";
const char* password = "Nguyen nam";
const int LED1 = 15; //D8 on ESP Board 
const int LED2 = 13; //D7 on ESP Board
const int LED3 = 12; //D6 on ESP Board
const int LED4 = 14; //D5 on ESP Board
bool value1 = LOW;
bool value2 = LOW;
bool value3 = LOW;
bool value4 = LOW;
WiFiServer server(80);
int delayLCD = 750;
void setup() {
  Serial.begin(115200);
  Wire.begin(2, 0);
  lcd.begin();
  lcd.setCursor (0,0);
  lcd.print("Hello, world!");
  lcd.setCursor (0,1);
  lcd.print("belajarduino.com");
  delay (delayLCD); 
  pinMode(LED1, OUTPUT);  digitalWrite(LED1, LOW);
  pinMode(LED2, OUTPUT);  digitalWrite(LED2, LOW);
  pinMode(LED3, OUTPUT);  digitalWrite(LED3, LOW);
  pinMode(LED4, OUTPUT);  digitalWrite(LED4, LOW);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  lcd.setCursor (0,0);
  lcd.print ("Connecting to...");
  lcd.setCursor (0,1);
  lcd.print (ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    lcd.print (".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  lcd.clear();
  lcd.setCursor (0,0);
  lcd.print (" WiFi connected ");
  // Start the server
  server.begin();
  Serial.println("Server started");
  lcd.setCursor (0,1);
  lcd.print (" Server started ");
 delay (2000);
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
  lcd.clear();
  lcd.setCursor (0,0);
  lcd.print ("ESP8266 URL ADRS");
  lcd.setCursor (0,1);
  lcd.print (WiFi.localIP());
  delay (2000);
}
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
  
  //lcd.clear();
  lcd.setCursor (0,0);
  lcd.print ("ESP8266 URL ADRS");
  lcd.setCursor (0,1);
  lcd.print (WiFi.localIP());
  lcd.print ("     ");
    return;
  }
  // Wait until the client sends some data
  Serial.println("new client");
  lcd.clear();
  lcd.setCursor (0,0);
  lcd.print ("Client Send Data");
  while(!client.available()){
    delay(1);
  }
  // Read the first line of the request
  String request = client.readStringUntil('r');
  Serial.println(request);
  lcd.setCursor (0,1);
  lcd.print (request);
  delay(1000);
  client.flush();
          
// Set LED according to the request
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("");
  client.println("");
  client.println("");

Thư viện

  • Download thư viện “BlynkSimpleEsp8266.h”: Tải ngay
  • Các bạn có thể tải code tìm địa chỉ bus ở đây. Tải ngay.
  • Thư viện LiquidCrystal_I2C.h: Tải ngay.

Update Code: Thiết kế nhà thông minh bằng Arduino

Lý do App trong bài viết đã bị nhà xuất bản xoá khỏi kho ứng dụng CHPlay nên mình chia sẽ Code mới sử dụng App Blynk để điều khiển nha.

#define BLYNK_TEMPLATE_ID "TMPL62Pb0NVXX"
#define BLYNK_TEMPLATE_NAME "Esp8266 Automation Smarthome"
#define BLYNK_AUTH_TOKEN "FdB8mrs4dqGcnrcOzEeisvF1yHMzXXXX"

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = BLYNK_AUTH_TOKEN;

char ssid[] = "Khang Nguyen";  // Tên Wifi của bạn
char pass[] = "0977668XXX";    // Mật khẩu Wifi của bạn

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Sử dụng địa chỉ I2C 0x27 và kích thước màn hình 16x2
const int LED1 = D0;
const int LED2 = D2;
const int LED3 = D3;
const int LED4 = D4;

BLYNK_WRITE(V0) {  // Hàm callback khi nhấn nút trên App Blynk
  digitalWrite(LED1, param.asInt());
  lcd.clear();
  lcd.setCursor(0, 0);
  if (param.asInt() == 1) {
    digitalWrite(LED1, LOW);
    lcd.print("LED 1: OFF");
  } else {
    digitalWrite(LED1, HIGH);
    lcd.print("LED 1: ON");
  }
}

BLYNK_WRITE(V1) {  // Hàm callback khi nhấn nút trên App Blynk
  digitalWrite(LED2, param.asInt());
  lcd.clear();
  lcd.setCursor(0, 1);
  if (param.asInt() == 1) {
    digitalWrite(LED2, LOW);
    lcd.print("LED 2: OFF");
  } else {
    digitalWrite(LED2, HIGH);
    lcd.print("LED 2: ON");
  }
}

BLYNK_WRITE(V2) {  // Hàm callback khi nhấn nút trên App Blynk
  digitalWrite(LED3, param.asInt());
  lcd.clear();
  lcd.setCursor(0, 0);
  if (param.asInt() == 1) {
    digitalWrite(LED3, LOW);
    lcd.print("LED 3: OFF");
  } else {
    digitalWrite(LED3, HIGH);
    lcd.print("LED 3: ON");
  }
}

BLYNK_WRITE(V4) {  // Hàm callback khi nhấn nút trên App Blynk
  digitalWrite(LED4, param.asInt());
  lcd.clear();
  lcd.setCursor(0, 1);
  if (param.asInt() == 1) {
    digitalWrite(LED4, LOW);
    lcd.print("LED 4: OFF");
  } else {
    digitalWrite(LED4, HIGH);
    lcd.print("LED 4: ON");
  }
}

void setup() {
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  lcd.begin(0x27, 16, 2);
  lcd.backlight();
}

void loop() {
  Blynk.run();
}

Bạn sẽ học được gì

  • Có kiến thức cơ bản về Robotics
  • Chế tạo Robot dò đường thông minh
  • Đánh thức nhà khoa học bên trong bạn
  • Tìm hiểu thêm về Robotics, các thuật toán Robot tự động
  • Kiến thức nền tảng để chế tạo các máy móc tự động phục vụ đời sống sinh hoạt, lao động sản xuất
  • Kiến thức để chế tạo sản phẩm, tham gia các cuộc thi khoa học công nghệ trong nước và quốc tế

KHÓA HỌC
CHẾ TẠO ROBOT DÒ ĐƯỜNG

Đã có 284 học viên đăng ký

ESP8266 Pinout

ESP8266 là một module Wi-Fi nhỏ gọn và phổ biến trong các ứng dụng IoT. Pinout của ESP8266 bao gồm các chân như sau:

Hướng dẫn lấy Blynk Token New 2.0 Arduino

Bước 1: Sau phiên bản Blynk 2.0 thì việc tạo AUTH TOKEN sẽ thông qua web https://blynk.cloud/dashboard/login , các bạn chỉ cần truy cập vào đường link và làm theo những bước hướng dẫn bên dưới nhé.

Nếu chưa có tài khoản Blynk Cloud bắt buộc bạn cần phải tạo một tài khoản mới, vì các bước này khá đơn giản nên mình sẽ không hướng dẫn lại, các bạn có thể tham khảo bài viết bên dưới nhé.

Xem thêm: Hướng dẫn cài đặt ESP8266 và kết nối với Blynk

Sau khi đăng ký xong tài khoản Blynk Cloud 2.0 giao diện sẽ trong như thế này, các bạn Click chọn “New Template”

Đặt tên cho Template và chọn các thông số giống như trên hình nhé.

Bước 2: Thêm thiết bị điều khiển, chọn “New Devices” > “From template”

Nhấn OK để tiếp tục nhé.

Tiếp theo, chọn Template vừa tạo lúc nãy và nhấn “Create” để hoàn tất.

Phía bên góc tay phải màn hình của các bạn, sẽ xuất hiện Token các bạn chỉ cần copy vào Arduino IDE thay cho đoạn Code phía trên mình có viết sẵn. Như vậy là mình vừa hướng dẫn xong cách lấy mã Blynk Token trên phiên bản 2.0

Các bạn có thể xem thêm bài viết bên dưới để tìm hiểu cách thêm các thiết bị điều khiển trên App Blynk 2.0 nhé.

Xem thêm: Hướng dẫn cài đặt ESP8266 và kết nối với Blynk

Câu hỏi thường gặp

“Vui lòng comment xuống dưới mọi thắc mắc trong quá trình triển khai, để mình có thể hỗ trợ nhé”

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments