Lập trình lại cho Sonoff Smart Switch để điều khiển qua web

Trong bài này,  tôi sẽ chỉ bạn cách nạp firmware vào thiết bị Sonoff để có thể điều khiển từ trình duyệt web. Bài này hướng dẫn lập trình trong Arduino IDE. Sau khi nạp lại phần mềm điều khiển, bạn sẽ không thể sử dụng app của nhà sản xuất được nữa. Bạn nên cân nhắc trước khi thực hiện.

Xem clip demo:

Sơ đồ chân trên mạch điện

Bạn cũng có thể hàn thêm header để dể dàng trong việc lập trình

Sơ đồ kết nối với thiết bị chuyển đổi USB->COM
Lưu ý, cần cấp nguồn 3.3V cho mạch điện.

Khởi động vào chế độ Flashing
1) Kết nối module FTDI vào máy tính
2) Nhấn giữ nút nhấn của Sonoff

3) Cấp nguồn cho Sonoff

4) Sau đó nhả nút nhấn ra
Bây giờ, thiết bị đã sẵn sàng để lập trình lại

Trong Arduino IDE, nạp chương trình sau đây vào chip ESP8266. Nếu bạn chưa biết cách cấu hình cho Arduino làm việc với ESP8266 thì có thể làm theo bài hướng dẫn dưới đây:
http://www.dandientu.com/2018/02/lap-trinh-esp8266-esp-12e-nodemcu-su-dung-arduino.html

Mã nguồn chương trình

/*********
  Rui Santos
  Complete project details at http://randomnerdtutorials.com  
*********/

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

MDNSResponder mdns;

// Replace with your network credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

ESP8266WebServer server(80);

String webPage = "";

int gpio13Led = 13;
int gpio12Relay = 12;

void setup(void){
  webPage += "<h1>SONOFF Web Server</h1><p><a href="on"><button>ON</button></a>&nbsp;<a href="off"><button>OFF</button></a></p>";  
  // preparing GPIOs
  pinMode(gpio13Led, OUTPUT);
  digitalWrite(gpio13Led, HIGH);
  
  pinMode(gpio12Relay, OUTPUT);
  digitalWrite(gpio12Relay, HIGH);
 
  Serial.begin(115200); 
  delay(5000);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  
  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  }
  
  server.on("/", [](){
    server.send(200, "text/html", webPage);
  });
  server.on("/on", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio13Led, LOW);
    digitalWrite(gpio12Relay, HIGH);
    delay(1000);
  });
  server.on("/off", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(gpio13Led, HIGH);
    digitalWrite(gpio12Relay, LOW);
    delay(1000); 
  });
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop(void){
  server.handleClient();
}

Nạp chương trình

  1. Chọn cổng COM, ví dụ COM14: Tools> Port > COM14
  2. Chọn module ESP8266 : Tools> Board > Generic ESP8266 Module
  3. Chọn Flash Mode: “DOUT”
  4. Nhấn nút Upload

Trong lúc nạp chương trình nếu bạn gặp lỗi sau:
warning: espcomm_sync failed
error: espcomm_open failed

Nghĩa là module chưa vào chế độ Flashing, bạn cần làm lại từ đầu quy trình nạp chương trình.

Sau khi nạp xong, chạy thiết bị, mở console của Arduino để biết địa chỉ IP của thiết bị. Vào trình duyệt nhập địa chỉ IP thiết bị để xem kết quả:

Chúc các bạn thành công.
Nguồn: https://randomnerdtutorials.com

Trả lời

Email của bạn sẽ không được hiển thị công khai.