Xem thêm

Arduino Wifi với ESP8266 như một Arduino

Arduino là một công cụ tuyệt vời, nhưng tiếc là nó không có khả năng kết nối với Internet. Vậy làm thế nào để giải quyết vấn đề này? Đáp án là chip ESP8266 của...

Arduino là một công cụ tuyệt vời, nhưng tiếc là nó không có khả năng kết nối với internet . Vậy làm thế nào để giải quyết vấn đề này? Đáp án là chip ESP8266 của Expressif. Nó không chỉ rất rẻ, mà còn cho phép chúng ta thực hiện mã Arduino trực tiếp. Trong phiên bản NodeMCU với cổng USB, chúng ta có thể sử dụng nó như một bo mạch Arduino: Arduino wifi với ESP8266 như một Arduino. Dưới đây, tôi sẽ hướng dẫn bạn cách làm điều đó.

Đầu tiên, bạn cần một bo mạch NodeMCU. Nó có giá khoảng 7 Euro và giá cả còn rẻ hơn khi mua theo bộ. NodeMCU có thể được gắn trên một breadboard và đã tích hợp tính năng Wifi. Bạn có thể sử dụng nó với Arduino IDE.

Chuẩn bị cho Arduino IDE

Mở Arduino IDE và mở menu cài đặt: File>Voreinstellungen (Mac: Arduino>Einstellungen). Thêm địa chỉ sau vào mục URL Quản lý bo mạch bổ sung: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Nếu đã có thông tin ở đây, bạn chỉ cần thêm dấu phẩy giữa các URL. Nhấp OK và chọn Tools>Board>Board Manager... Tìm kiếm "nodemcu" và cài đặt gói esp8266 by ESP8266 Community phiên bản mới nhất.

Bây giờ, bạn nên có thể chọn NodeMCU 1.0 (ESP-12E Module) trong menu Tools>Board. Kết nối NodeMCU và chọn cổng đúng trong menu Tools>Port (SLAB_USB_to_UART).

Lưu ý: NodeMCU được kết nối bằng cáp Micro-USB. Nhiều cáp Micro-USB mà bạn có thể dùng chỉ hỗ trợ truyền dữ liệu, không thể truyền dữ liệu. Điều này đặc biệt đúng với các cáp đi kèm trong các powerbank giá rẻ. Vì vậy, bạn không thể lập trình NodeMCU bằng chúng.

Hãy bắt đầu bằng cách làm cho một đèn LED nhấp nháy để kiểm tra xem bạn đã làm được đến đâu. Đơn giản chỉ cần tải mã sau vào NodeMCU.

int led = D4;  void setup() {   pinMode(led, OUTPUT); }  void loop() {   digitalWrite(led, HIGH);   delay(1000);   digitalWrite(led, LOW);   delay(1000); }

Việc tải lên sẽ mất nhiều thời gian hơn so với Arduino. Bạn có thể tăng tốc độ tải lên trong menu Tools>Upload Speed. Tuy nhiên, điều này có thể gây ra lỗi truyền dữ liệu. Trong trường hợp xấu nhất, bạn phải tải chương trình lên hai lần.

NodeMCU có hai đèn LED tích hợp. Một ở chân D0 và một ở chân D4. Nó không được thiết kế với độ tiện dụng như Arduino, nhưng lại rất rẻ và có thể kết nối qua Wifi. Trước khi đi tiếp, hãy xem xét các chân của NodeMCU. Chúng đôi khi có một số đặc điểm riêng. Tôi đã gắn thẻ một số chú thích trên sơ đồ chân, điều này sẽ giúp bạn tiết kiệm thời gian đọc các diễn đàn.

Arduino Wifi mit dem ESP8266 als Arduino Pinout

Giờ chúng ta sẽ kết nối NodeMCU với Wifi. Hãy sao chép mã sau vào một tệp Arduino mới và thay đổi các biến ssid và password. Nhập tên Wifi và mật khẩu Wifi của bạn.

Mã: Arduino WIFI với NodeMCU

#include <ESP8266WiFi.h>  const char* ssid = "deinWifiName"; const char* password = "deinWifiPasswort"; int ledPin = D4;  WiFiServer server(80);  void setup() {   Serial.begin(115200);   delay(10);    pinMode(ledPin, OUTPUT);   digitalWrite(ledPin, LOW);    // Kết nối Wifi   Serial.print("Verbinden mit: ");   Serial.println(ssid);   WiFi.begin(ssid, password);    while (WiFi.status() != WL_CONNECTED) {     delay(500);     Serial.print(".");   }    Serial.println("");   Serial.println("WiFi verbunden");    // Khởi động server   server.begin();    Serial.println("Server gestartet");    // In địa chỉ IP   Serial.print("Diese URL zum Verbinden aufrufen: ");   Serial.print("http://");   Serial.print(WiFi.localIP());   Serial.println("/"); }  void loop() {   // Kiểm tra xem có kết nối từ client không   WiFiClient client = server.available();   if (!client) {     return;   }    // Chờ dữ liệu từ client   Serial.println("new client");    while(!client.available()){     delay(1);   }    // Đọc dòng đầu tiên của yêu cầu   String request = client.readStringUntil('\r');   Serial.println(request);   client.flush();    // Xác định yêu cầu   int value = LOW;    if (request.indexOf("/LED=OFF") != -1) {     digitalWrite(ledPin, HIGH);     value = HIGH;   }    if (request.indexOf("/LED=ON") != -1) {     digitalWrite(ledPin, LOW);     value = LOW;   }    // Gửi phản hồi   client.println("HTTP/1.1 200 OK");   client.println("Content-Type: text/html");   client.println("");   client.println("<!DOCTYPE HTML>");   client.println("<html>");    client.print("Die LED ist: ");    if(value == HIGH) {     client.print("Aus");   }    else {     client.print("An");   }    client.println("<br><br>");   client.println("<a href=\"/LED=ON\"><button>An </button></a>");   client.println("<a href=\"/LED=OFF\"><button>Aus </button></a><br />");   client.println("</html>");    delay(1);   Serial.println("Client trennen");   Serial.println(""); }

Chương trình này là phiên bản được điều chỉnh của mã này: Instructables CC-BY-NC-SA

Bây giờ, hãy mở màn hình theo dõi seri trong menu Tools>Serieller Monitor, sao chép liên kết và mở nó trong trình duyệt của bạn.

Arduino Wifi mit dem ESP8266 als Arduino - IP herausfinden

Với hai nút này, bạn có thể điều khiển một trong hai đèn LED tích hợp.

Arduino Wifi mit dem ESP8266 als Arduino im Browser

Tôi hi vọng rằng hướng dẫn đơn giản này đã giúp bạn tiến xa hơn. Có rất nhiều điều để viết về NodeMCU và toàn bộ gia đình ESP, nhưng tôi để lại cho bạn để khám phá thêm. Hy vọng bạn thích nó. Hãy để lại một lượt thích và viết cho tôi trong phần bình luận về dự án mà bạn đang muốn thực hiện. Chúc may mắn!

1