Trong bài này chúng ta sẽ dùng Node Wifi làm client kết nối đến một WebSocket server.
Chúng ta sẽ dùng một WebSocket server miễn phí đó là ws://echo.websocket.org
Bạn hãy tải thư viện arduinoWebSockets tại đây và cài đặt nếu chưa có.
Để cài đặt thư viện arduinoWebSockets cho Arduino IDE, bạn vào menu Sketch > Include Library > Add .ZIP Library… và chọn file đã tải về ở trên.
Khai báo các thư viện cần thiết:
#include <ESP8266WiFi.h> // Thư viện dùng để kết nối WiFi của ESP8266 #include <WebSocketsClient.h> // Thư viện WebSocketsServer
Để sử dụng thư viện WebSocketsClient ta cần khởi tạo một đối tượng tên là là webSocket.
WebSocketsClient webSocket;
Khai báo hàm dùng để kết nối và xử lý các sự kiện của WebSocket
void connectWebSocket() { webSocket.begin("echo.websocket.org", 80, "/"); // Địa chỉ websocket server, port và URL webSocket.onEvent(webSocketEvent); // webSocket.setAuthorization("user", "password"); // Sử dụng thông tin chứng thực nếu cần webSocket.setReconnectInterval(5000); // Thử lại sau 5s nếu kết nối không thành công }
Cuối cùng chúng ta cần gọi phương thức webSocket.loop() trong vòng lặp chính để kiểm tra khi có sự kiện WebSocket xảy ra.
void loop() { webSocket.loop(); }
Bạn dùng Arduino IDE để nạp chương trình sau:
#include <ESP8266WiFi.h> // Thư viện dùng để kết nối WiFi của ESP8266 #include <WebSocketsClient.h> // Thư viện WebSocketsClient const char* ssid = "Blocky AP"; // Tên của mạng WiFi mà bạn muốn kết nối đến const char* password = "password_ap"; // Mật khẩu của mạng WiFi const int led = 15; // Đèn led ở chân GPIO2 WebSocketsClient webSocket; void setup() { Serial.begin(115200); // Khởi tạo kết nối Serial để truyền dữ liệu đến máy tính pinMode(led, OUTPUT); startWiFi(); connectWebSocket(); } void loop() { webSocket.loop(); } void startWiFi() { WiFi.begin(ssid, password); // Kết nối vào mạng WiFi Serial.print("Connecting to "); Serial.print(ssid); // Chờ kết nối WiFi được thiết lập while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println("\n"); Serial.println("Connection established!"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); // Gởi địa chỉ IP đến máy tinh } void connectWebSocket() { webSocket.begin("echo.websocket.org", 80, "/"); // Địa chỉ websocket server, port và URL webSocket.onEvent(webSocketEvent); // webSocket.setAuthorization("user", "password"); // Sử dụng thông tin chứng thực nếu cần webSocket.setReconnectInterval(5000); // Thử lại sau 5s nếu kết nối không thành công } void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { switch (type) { case WStype_DISCONNECTED: // Sự kiện khi client ngắt kết nối Serial.printf("[WSc] Disconnected!\n"); break; case WStype_CONNECTED: // Sự kiện khi client kết nối Serial.printf("[WSc] Connected to url: %s\n", payload); webSocket.sendTXT("Connected"); // Thông báo kết nối thành công break; case WStype_TEXT: // Sự kiện khi nhận được thông điệp dạng TEXT Serial.printf("[WSc] get text: %s\n", payload); webSocket.sendTXT("Hi Server!"); // Gởi thông điệp đến server break; case WStype_BIN: // Sự kiện khi nhận được thông điệp dạng BINARY Serial.printf("[WSc] get binary length: %u\n", length); hexdump(payload, length); // webSocket.sendBIN(payload, length); break; } }
Sau khi nạp code thành công, bạn mở Serial Monitor để kiểm tra kết nối WebSocket thành công.
2 Bình luận. Leave new
cảm ơn ad, đây đúng là những bài học mình đang tìm
Cảm ơn bạn đã quan tâm, bạn có thể xem thêm nhiều bài hướng dẫn liên quan chủ đề này tại đây nhé: https://ohstem.vn/lp-courses/lap-trinh-arduino/lap-trinh-arduino-phan-ket-noi-wifi/