Mục lục:

Cách sử dụng ESP8266 làm máy chủ web: 5 bước
Cách sử dụng ESP8266 làm máy chủ web: 5 bước

Video: Cách sử dụng ESP8266 làm máy chủ web: 5 bước

Video: Cách sử dụng ESP8266 làm máy chủ web: 5 bước
Video: Bài 5 - Thiết lập chức năng thu phát wifi trên chíp esp8266 2024, Tháng mười một
Anonim
Cách sử dụng ESP8266 làm máy chủ web
Cách sử dụng ESP8266 làm máy chủ web

Xin chào, tôi hiện đang sử dụng windows 10, NodeMCU 1.0 và đây là danh sách Phần mềm tôi đã sử dụng và hướng dẫn cài đặt mà tôi đã làm theo:

  • Arduino IDE
  • Bảng bổ sung cho esp8266
  • Spiff

Thư viện đã sử dụng:

Websocket

Tôi đã sử dụng NodeMCU làm máy chủ để cung cấp Tệp HTML mà tôi đã tạo từ hướng dẫn này. Để cung cấp tệp này, tôi đã tải tệp lên hệ thống tệp gật đầu bằng cách sử dụng Spiffs. Tệp HTML sẽ gửi dữ liệu đến gật đầu bằng cách sử dụng các cổng kết nối web được in trên màn hình nối tiếp để thực hiện việc này. Giao tiếp hai chiều nhanh chóng thông qua các cổng kết nối web của máy chủ và máy khách cho phép nó được sử dụng làm điều khiển từ xa. Trong các bước sau, tôi sẽ giải thích cách mã của tôi hoạt động

Quân nhu

NodeMCU

Bước 1: Làm cho nó hoạt động

Lam cho no hoạt động
Lam cho no hoạt động
Lam cho no hoạt động
Lam cho no hoạt động
Lam cho no hoạt động
Lam cho no hoạt động

Đây là các bước về cách nó hoạt động

  1. Tải xuống tệp đính kèm và mở tệp mousebot.ino
  2. Đi tới phác thảo> hiển thị thư mục phác thảo và tạo một thư mục mới có tên là dữ liệu
  3. Lưu tệp html từ hướng dẫn này trong thư mục có tên. Tôi đặt tên tôi là "Cần điều khiển"
  4. Đảm bảo rằng spiff của bạn đã hoạt động bằng cách truy cập công cụ ans để xem "tải lên dữ liệu phác thảo esp8266"
  5. Tải tệp html lên gật đầu bằng cách nhấp vào "tải lên dữ liệu phác thảo esp8266"
  6. Sau khi tải tệp lên, hãy tải tệp mousebot.ino lên gật đầu bằng cách truy cập vào arduino IDE và nhấn ctrl U

Bước 2: Cách hoạt động của mã

Đầu tiên, chúng tôi bao gồm các thư viện mà mã này sẽ sử dụng

// để cho phép ESP8266 kết nối với WIFI

#include #include #include // Cho phép ESP8266 hoạt động như một máy chủ #include // cho phép giao tiếp với máy chủ và ứng dụng khách (thiết bị hình nón của bạn) #include #include // Để mở tệp đã được mã hóa trên gật đầu #include

Đặt esp8266 làm máy chủ web được mở trên cổng 80. Các cổng là đường dẫn dữ liệu sẽ đi qua. Là một cổng máy chủ, Nó sẽ gửi tệp HTML đến máy khách (không cần kết nối với nó).

Thêm kết nối websocket sử dụng cổng 81 để nghe tin nhắn từ máy khách

Websockets có tham số num, WStype_t, trọng tải và kích thước. Num xác định số máy khách, trọng tải là thông điệp mà nó gửi, kích thước là độ dài của thông báo và WStype_t dành cho các sự kiện khác biệt chẳng hạn như

  • WStype_DISCONNECTED - khi ngắt kết nối máy khách.
  • WStype_CONNECTED: - khi máy khách kết nối
  • WStype_TEXT - Dữ liệu đã nhận từ máy khách

Tùy thuộc vào loại sự kiện mà các hành động khác nhau được thực hiện và được nhận xét ở đây

void webSocketEvent (uint8_t num, WStype_t type, uint8_t * payload, size_t length) {

switch (type) {case WStype_DISCONNECTED: Serial.printf ("[% u] Đã ngắt kết nối! / n", num); // in dữ liệu ra màn hình nối tiếp break; case WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num); // lấy IP của máy khách Serial.printf ("[% u] Được kết nối từ% d.% d.% d.% d url:% s / n", num, ip [0], ip [1], ip [2], ip [3], payload); webSocket.sendTXT (num, "Đã kết nối"); // gửi "conencted" đến bảng điều khiển của trình duyệt} break; case WStype_TEXT: Serial.printf ("[% u] Dữ liệu:% s / n", num, payload); // in số máy khách trong% u và dữ liệu nhận được dưới dạng chuỗi trong% s / n break;}}

Bước 3: Đặt NODEMCU làm máy chủ

đặt ssid và mật khẩu bạn sẽ sử dụng để kết nối với nó sau này

const char * ssid = "Thử";

const char * password = "12345678";

trên thiết lập, chúng tôi xác định tốc độ mà nó nút và máy tính của chúng tôi sẽ giao tiếp, là 115200.

thiết lập void (void) {

Serial.begin (115200); Serial.print ("\ n");

cũng được đặt thành true, hãy xem đầu ra chẩn đoán wifi trên thiết bị đầu cuối serila

Serial.setDebugOutput (true);

i sinh dục hệ thống tập tin

SPIFFS.begin ();

Thiết lập gật đầu làm điểm truy cập với tính năng xóa mật khẩu và ssid trước đó và in ip của gật đầu mà bạn sẽ kết nối trước đó. theo mặc định nó là 192.168.4.1

Serial.print ("Đang định cấu hình điểm truy cập…");

WiFi.mode (WIFI_AP); WiFi.softAP (ssid, mật khẩu); IPAddress myIP = WiFi.softAPIP (); Serial.print ("Địa chỉ IP AP:"); Serial.println (myIP);

Khởi tạo websocket trên máy chủ gật gù, whcih is pur

webSocket.begin ();

Gọi hàm webSocketEvent khi sự kiện websocket xảy ra.

webSocket.onEvent (webSocketEvent);

Để gỡ lỗi, hãy in "Máy chủ WebSocket đã bắt đầu" trên một dòng mới. Điều này là để xác định dòng mã mà nút đang xử lý

Serial.println ("Máy chủ WebSocket đã khởi động.");

khi một máy khách truy cập 192.168.4.1, nó sẽ gọi hàm handleFileRead và gửi cùng với nó URI máy chủ tham số, trong trường hợp này là thông tin về nút của chúng tôi. Hàm handleFileRead sẽ phục vụ tệp html từ hệ thống tệp gật đầu

server.onNotFound ( () {

if (! handleFileRead (server.uri ()))

nếu không tìm thấy nó sẽ hiển thị "FileNotFound"

server.send (404, "văn bản / đồng bằng", "FileNotFound");

});

Bắt đầu máy chủ và máy chủ HTTP in bắt đầu.

server.begin (); Serial.println ("Máy chủ HTTP đã khởi động");

Trên vòng lặp void của chúng tôi, chúng tôi cho phép máy chủ xử lý liên tục ứng dụng khách và thông báo websockets của nó như sau:

vòng lặp void (void) {

server.handleClient (); webSocket.loop ();}

Bước 4: Tải tệp HTML

chúng tôi sẽ sử dụng một chức năng có tên là handleFileRead để mở và tệp html từ hệ thống tệp gật đầu. nó sẽ trả về giá trị boolean để xác định xem nó có được tải hay không.

Khi máy khách mở "192.168.4.1/", chúng tôi đặt đường dẫn tệp thành "/Joystick.html, tên tệp của chúng tôi trong thư mục dữ liệu

bool handleFileRead (Đường dẫn chuỗi) {

Serial.println ("handleFileRead:" + đường dẫn); if (path.endsWith ("/")) path + = "Joystick.html"; if (SPIFFS.exists (path)) {File file = SPIFFS.open (path, "r"); size_t sent = server.streamFile (file, "text / html"); file.close (); trả về true; } trả về sai; }

Kiểm tra xem đường dẫn tệp "/Joystick.html" có tồn tại không

if (SPIFFS. tồn tại (đường dẫn)) {

Nếu nó tồn tại, hãy mở đường dẫn với mục đích đọc nó được chỉ định bởi "r". Tới đây cho nhiều mục đích hơn.

Tệp tin = SPIFFS.open (đường dẫn, "r");

Gửi tệp tới máy chủ như với loại nội dung "text / html"

size_t sent = server.streamFile (file, "text / html");

đóng tập tin

file.close ();

hàm handleFileRead trả về true

trả về true;}

nếu đường dẫn tệp không tồn tại, hàm handleFileRead trả về false

trả về true; }

Bước 5: Dùng thử

Image
Image

Kết nối với nodeMCU và truy cập "192.168.4.1" và thử nó!:)

Đề xuất: