“Hello World” với ESP8266 – Hot Face làng IoT

3 min read

Giới thiệu ESP8266

ESP8266 (tên gọi đầy đủ ESP8266EX) là một vi mạch WiFi, được sản xuất bởi hãng Espressif Systems (Trung Quốc).

Hiện nay, ESP8266, nhờ vào mức giá tiết kiệm, linh hoạt về mặt tính năng cũng như thân thiện với người dùng, đã và đang được sử dụng phổ biến rộng rãi trong các dự án IoT (Internet of Things).

Một số đặc điểm

  • Kết nối WiFi: Với tích hợp WiFi, ESP8266 cho phép các thiết bị kết nối với hệ thống mạng và hoạt động như một điểm truy cập
  • GPIO PINS (General Purpose Input/Output): Các chân (pin) được dùng để kết nối với cảm biến, LED hoặc các thiết bị ngoại vi khác
  • Cho phép lập trình: ESP8266 cho phép người dùng lập trình thực hiện các lệnh để xử lý dữ liệu, điều khiển các thiết bị được kết nối với nó
  • Hiệu suất năng lượng: Tiêu hao năng lượng ít, có thể hoạt động với các nguồn pin

Ứng dụng

ESP8266 được sử dụng trong nhiều lĩnh vực khác nhau:

  • Nhà ở thông minh (Smart Home): Điều khiển đèn, nhiệt độ và các thiết bị gia dụng từ xa
  • Thời tiết: Thu thập, xử lý và truyền dữ liệu thời tiết được lấy thông qua các cảm biến
  • Nông nghiệp thông minh: Giám sát độ ẩm đất, nhiệt độ và các yếu tố môi trường khác, tự động hóa tưới nước, phun sương, điều khiển nhiệt độ
  • Y tế: Phát triển các thiết bị đeo theo dõi các chỉ số sinh học và gửi dữ liệu lên máy chủ cơ sở dữ liệu

“Hello World” với ESP8266

Trước hết, chúng ta cần có:

  1. Bo mạch ESP8266 NodeMCU
  2. Môi trường phát triển: Arduino IDE
  3. Cáp truyền dữ liệu USB
  4. LED, điện trở, dây dẫn

Set up:

  1. Cài đặt package ESP8266 trên Arduino IDE (hướng dẫn cài đặt)
  2. Kết nối bo mạch với máy tính
  3. Vào Tools, chọn Board và Port tương ứng

Compile và Upload đoạn code sau:

#define LED D4 // define the led pin

void setup() {
  pinMode(LED, OUTPUT);
  Serial.println("Hello World!")
}

void loop() {
  digitalWrite(ledPin, HIGH); // turn on
  delay(2000);
  digitalWrite(ledPin, LOW); // turn off
  delay(2000);
}

Sau khi hoàn thành Compile và Upload đoạn code lên bo mạch ESP8266 NodeMCU, dòng “Hello World!” sẽ được in ra ở Serial Monitor của Arduino IDE, LED được kết nối với pin D4 của bo mạch sẽ liên tục nhấp nháy với chu kỳ 2 giây.

Kết nối ESP8266 với WiFi

Compile và Upload đoạn code sau:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
 
MDNSResponder mdns;
 
ESP8266WebServer server(80);
String webPage;
const char* ssid     = "wifi";      //Thay tên wifi ở đây
const char* password = "password";  //Thay tên password ở đây
 
void setup() {
 
  pinMode(12, OUTPUT);  //led chân 12
  pinMode(13, OUTPUT);  //led chân 13
 
  webPage += "<h1>ESP8266 Web Server</h1><p>Socket #1 <a href=\"socket1On\"><button>ON</button></a>&nbsp;<a href=\"socket1Off\"><button>OFF</button></a></p>";
  webPage += "<p>Socket #2 <a href=\"socket2On\"><button>ON</button></a>&nbsp;<a href=\"socket2Off\"><button>OFF</button></a></p>";
  
  Serial.begin(115200);
  delay(100);
 
 
  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");  
  Serial.println("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("/socket1On", [](){
    server.send(200, "text/html", webPage);
    //Bật led 12
    digitalWrite(12, HIGH);
    delay(1000);
  });
  server.on("/socket1Off", [](){
    server.send(200, "text/html", webPage);
    //Tắt led 12
    digitalWrite(12, LOW);
    delay(1000); 
  });
  server.on("/socket2On", [](){
    server.send(200, "text/html", webPage);
    //Bật led 13
    digitalWrite(13, HIGH);
    delay(1000);
  });
  server.on("/socket2Off", [](){
    server.send(200, "text/html", webPage);
    //Tắt led 13
    digitalWrite(13, LOW);
    delay(1000); 
  });
  server.begin();
  Serial.println("HTTP server started");
}
 
void loop() {
  server.handleClient();
}

Đoạn code trên sẽ đăng nhập vào wifi + password được chỉnh sửa sẵn. Nếu sai sẽ xuất hiện dấu chấm………………… liên tục.

Kết quả được in ra Terminal như sau:

Khi truy cập vào IP address được in ra trên terminal, giao diện được hiển thị như sau:

Nguồn tham khảo: http://arduino.vn/bai-viet/1272-phan-2-lap-trinh-truc-tiep-tren-esp8266-battat-led

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *