สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ทำให้มันใช้งานได้
- ขั้นตอนที่ 2: โค้ดทำงานอย่างไร
- ขั้นตอนที่ 3: ตั้งค่า NODEMCU เป็นเซิร์ฟเวอร์
- ขั้นตอนที่ 4: โหลดไฟล์ HTML
- ขั้นตอนที่ 5: ลองเลย
วีดีโอ: วิธีใช้ ESP8266 เป็นเว็บเซิร์ฟเวอร์: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
สวัสดี ฉันกำลังใช้ windows 10, NodeMCU 1.0 และนี่คือรายการซอฟต์แวร์ที่ฉันใช้และคู่มือการติดตั้งที่ฉันติดตาม:
- Arduino IDE
- บอร์ดเพิ่มเติมสำหรับ esp8266
- Spiff
ห้องสมุดที่ใช้:
เว็บซ็อคเก็ต
ฉันใช้ NodeMCU เป็นเซิร์ฟเวอร์เพื่อให้บริการไฟล์ HTML ที่ฉันสร้างจากบทช่วยสอนนี้ เพื่อให้บริการไฟล์นี้ ฉันได้อัปโหลดไฟล์ไปยังระบบไฟล์ nodemcu โดยใช้ Spiffs ไฟล์ HTML ส่งข้อมูลไปยัง nodemcu โดยใช้ websockets เพื่อพิมพ์บนจอภาพอนุกรมสำหรับสิ่งนี้ การสื่อสารแบบสองทิศทางที่รวดเร็วผ่าน websockets ของเซิร์ฟเวอร์และไคลเอนต์เปิดใช้งานสิ่งนี้เพื่อใช้เป็นรีโมทคอนโทรล ในขั้นตอนต่อไปนี้ ฉันกำลังอธิบายวิธีการทำงานของรหัสของฉัน
เสบียง
NodeMCU
ขั้นตอนที่ 1: ทำให้มันใช้งานได้
นี่คือขั้นตอนในการทำงาน
- ดาวน์โหลดไฟล์แนบและเปิดไฟล์ mousebot.ino
- ไปที่สเก็ตช์>แสดงโฟลเดอร์สเก็ตช์และสร้างโฟลเดอร์ใหม่ชื่อ data
- บันทึกไฟล์ html จากบทช่วยสอนนี้ในโฟลเดอร์ที่ชื่อ ฉันตั้งชื่อของฉันเป็น "จอยสติ๊ก"
- ตรวจสอบให้แน่ใจว่า spiff ของคุณทำงานได้แล้วโดยไปที่เครื่องมือและเห็น "การอัปโหลดข้อมูลร่าง esp8266"
- อัปโหลดไฟล์ html ไปยัง nodemcu โดยคลิก "การอัปโหลดข้อมูลร่าง esp8266"
- หลังจากอัปโหลดไฟล์แล้ว ให้อัปโหลดไฟล์ mousebot.ino ไปยัง nodemcu โดยไปที่ arduino IDE แล้วกด ctrl U
ขั้นตอนที่ 2: โค้ดทำงานอย่างไร
ขั้นแรก เรารวมไลบรารี่ที่โค้ดนี้จะใช้
// เพื่อเปิดใช้งาน ESP8266 เพื่อเชื่อมต่อกับ WIFI
#include #include #include // เปิดใช้งาน ESP8266 เพื่อทำหน้าที่เป็นเซิร์ฟเวอร์ #include // เปิดใช้งานการสื่อสารกับเซิร์ฟเวอร์และไคลเอนต์ (อุปกรณ์ที่เชื่อมต่อของคุณ) #include #include // เพื่อเปิดไฟล์ที่อัพโหลดบน nodemcu #include
ตั้งค่า esp8266 เป็นเว็บเซิร์ฟเวอร์ที่เปิดบนพอร์ต 80 พอร์ตคือเส้นทางที่ข้อมูลจะผ่าน ในฐานะพอร์ตเซิร์ฟเวอร์ มันจะส่งไฟล์ HTML ไปยังไคลเอนต์ (อุปกรณ์ที่เชื่อมต่ออยู่)
เพิ่มการเชื่อมต่อ websocket โดยใช้พอร์ต 81 เพื่อฟังข้อความจากไคลเอนต์
websockets มีพารามิเตอร์ num, WStype_t, payload และ size num กำหนดหมายเลขไคลเอ็นต์ payload คือข้อความที่ส่ง ขนาดคือความยาวของข้อความ และ WStype_t สำหรับเหตุการณ์ต่างๆ เช่น
- WStype_DISCONNECTED - เมื่อตัดการเชื่อมต่อของไคลเอ็นต์
- WStype_CONNECTED: - เมื่อไคลเอ็นต์เชื่อมต่อ
- WStype_TEXT - รับข้อมูลจากลูกค้า
การกระทำที่แตกต่างกันขึ้นอยู่กับประเภทของเหตุการณ์และมีการแสดงความคิดเห็นที่นี่
เป็นโมฆะ webSocketEvent (uint8_t num, ประเภท WStype_t, uint8_t * เพย์โหลด, ความยาว size_t) {
สวิตช์ (ประเภท) { กรณี WStype_DISCONNECTED: Serial.printf ("[%u] ตัดการเชื่อมต่อ!\n", num); // พิมพ์ข้อมูลไปยังตัวแบ่งจอภาพแบบอนุกรม กรณี WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP (num); // รับ IP ของไคลเอ็นต์ Serial.printf("[%u] เชื่อมต่อจาก %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], เพย์โหลด); webSocket.sendTXT(หมายเลข "เชื่อมต่อแล้ว"); //ส่ง "เชื่อมต่อ" ไปยังคอนโซลของเบราว์เซอร์ } ตัวแบ่ง; กรณี WStype_TEXT: Serial.printf("[%u] Data: %s\n", num, payload); // พิมพ์หมายเลขไคลเอ็นต์เป็น %u และข้อมูลที่ได้รับเป็นสตริงใน %s\n break;}}
ขั้นตอนที่ 3: ตั้งค่า NODEMCU เป็นเซิร์ฟเวอร์
ตั้งค่า ssid และรหัสผ่านที่คุณจะใช้เชื่อมต่อในภายหลัง
const char *ssid = "ลอง";
const char *รหัสผ่าน = "12345678";
ในการตั้งค่า เราระบุอัตราที่ nodemcu และพีซีของเราจะสื่อสารกัน ซึ่งก็คือ 115200
การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) {
Serial.begin(115200); Serial.print("\n");
ตั้งค่าเป็น true เช่นกัน ดูเอาต์พุตการวินิจฉัย wifi บนเทอร์มินัล serila
Serial.setDebugOutput(จริง);
เริ่มต้นระบบไฟล์
SPIFFS.begin();
ตั้งค่า nodemcu เป็นจุดเชื่อมต่อด้วย ssid และรหัสผ่านที่ป้องกันก่อนหน้านี้ และพิมพ์ IP ของ nodemcu ที่คุณจะเชื่อมต่อก่อนหน้านี้ โดยค่าเริ่มต้นคือ 192.168.4.1
Serial.print("กำลังกำหนดค่าจุดเชื่อมต่อ…");
WiFi.mode(WIFI_AP); WiFi.softAP(ssid, รหัสผ่าน); IPAddress myIP = WiFi.softAPIP(); Serial.print ("ที่อยู่ IP ของ AP: "); Serial.println(myIP);
เริ่มต้น websocket บน nodemcu ซึ่งเป็นเซิร์ฟเวอร์ที่แท้จริง
webSocket.begin();
เรียกใช้ฟังก์ชัน webSocketEvent เมื่อเกิดเหตุการณ์ websocket
webSocket.onEvent (webSocketEvent);
สำหรับการดีบัก ให้พิมพ์ "เซิร์ฟเวอร์ WebSocket เริ่มทำงาน" ในบรรทัดใหม่ นี่คือการกำหนดบรรทัดของรหัสที่ nodemcu กำลังประมวลผล
Serial.println("เซิร์ฟเวอร์ WebSocket เริ่มทำงาน");
เมื่อไคลเอนต์เยี่ยมชม 192.168.4.1 มันจะเรียกใช้ฟังก์ชัน handleFileRead และส่งพารามิเตอร์เซิร์ฟเวอร์ URI ไปพร้อมกับมัน ซึ่งในกรณีนี้คือข้อมูล nodemcu ของเรา ฟังก์ชัน handleFileRead จะให้บริการไฟล์ html จากระบบไฟล์ nodemcu
เซิร์ฟเวอร์.onNotFound((){
if(!handleFileRead(server.uri()))
หากไม่พบจะแสดง "FileNotFound"
server.send (404, "ข้อความ/ธรรมดา", "FileNotFound");
});
เริ่มต้นเซิร์ฟเวอร์และเริ่มต้นเซิร์ฟเวอร์ HTTP การพิมพ์
เซิร์ฟเวอร์.begin(); Serial.println("เซิร์ฟเวอร์ HTTP เริ่มทำงาน");
ใน void loop ของเรา เราเปิดใช้งานเซิร์ฟเวอร์เพื่อจัดการกับไคลเอนต์และการสื่อสารของ websockets อย่างต่อเนื่องดังนี้:
วงโมฆะ (เป็นโมฆะ){
server.handleClient(); webSocket.loop();}
ขั้นตอนที่ 4: โหลดไฟล์ HTML
เราจะใช้ฟังก์ชันชื่อ handleFileRead เพื่อเปิดและไฟล์ html จากระบบไฟล์ nodemcu มันจะส่งคืนค่าบูลีนเพื่อตรวจสอบว่าโหลดหรือไม่
เมื่อไคลเอนต์เปิด "192.168.4.1/" เรากำหนดเส้นทางของไฟล์เป็น "/Joystick.html ชื่อไฟล์ของเราในโฟลเดอร์ข้อมูล
bool handleFileRead (เส้นทางสตริง) {
Serial.println("handleFileRead:" + เส้นทาง); if(path.endsWith("/")) เส้นทาง += "Joystick.html"; ถ้า (SPIFFS.exists (เส้นทาง)) { ไฟล์ไฟล์ = SPIFFS.open (เส้นทาง "r"); size_t ส่ง = server.streamFile (ไฟล์ "text/html"); ไฟล์.close(); คืนค่าจริง; } คืนค่าเท็จ }
ตรวจสอบว่ามีเส้นทางของไฟล์"/Joystick.html" หรือไม่
ถ้า (SPIFFS.exists (เส้นทาง)){
หากมี ให้เปิดเส้นทางโดยมีวัตถุประสงค์เพื่ออ่านซึ่งระบุโดย "r" ไปที่นี่เพื่อวัตถุประสงค์เพิ่มเติม
ไฟล์ไฟล์ = SPIFFS.open(พาธ, "r");
ส่งไฟล์ไปยังเซิร์ฟเวอร์เช่นเดียวกับประเภทเนื้อหา "text/html"
size_t ส่ง = server.streamFile (ไฟล์ "text/html");
ปิดไฟล์
ไฟล์.close();
ฟังก์ชัน handleFileRead คืนค่า true
คืนค่าจริง;}
หากไม่มีเส้นทางของไฟล์ ฟังก์ชัน handleFileRead จะคืนค่า false
คืนค่าจริง; }
ขั้นตอนที่ 5: ลองเลย
เชื่อมต่อกับ nodeMCU และไปที่ "192.168.4.1" แล้วลอง!:)
แนะนำ:
Visuino วิธีใช้ Pulse Width Modulation (PWM) เพื่อเปลี่ยนความสว่างของ LED: 7 ขั้นตอน
Visuino วิธีใช้ Pulse Width Modulation (PWM) เพื่อเปลี่ยนความสว่างของ LED: ในบทช่วยสอนนี้ เราจะใช้ LED ที่เชื่อมต่อกับ Arduino UNO และ Visuino เพื่อทำการเปลี่ยนแปลงความสว่างโดยใช้ Pulse Width Modulation (PWM) ชมวิดีโอสาธิต
ที่เปิดประตูโรงรถพร้อมคำติชมโดยใช้ Esp8266 เป็นเว็บเซิร์ฟเวอร์: 6 ขั้นตอน
ที่เปิดประตูโรงรถพร้อมคำติชมโดยใช้ Esp8266 เป็นเว็บเซิร์ฟเวอร์: สวัสดี ฉันจะแสดงวิธีทำวิธีง่ายๆ ในการทำที่เปิดประตูโรงรถ -ESP8266 ถูกเข้ารหัสเป็นเว็บเซิร์ฟเวอร์ ทำให้ประตูสามารถเปิดได้ทุกที่ในโลกด้วย ข้อเสนอแนะ คุณจะรู้ว่าประตูเปิดหรือปิดแบบเรียลไทม์ - ง่าย ๆ เพียงทางลัดเดียวที่จะทำให้ฉัน
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266/sonoff: 4 ขั้นตอน
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266/sonoff: สวัสดีทุกคน วันนี้ฉันจะแสดงวิธีกำหนดค่าสวิตช์รีเลย์ sonoff wifi ที่ใช้ราสเบอร์รี่ pi และ ESP8266 เพื่อควบคุมเครื่องใช้ในบ้านของคุณจากทุกที่ในโลก ของคำสั่งสอนนี้ ถ้าคุณได้ปฏิบัติตามคำสั่งของฉันอย่างระมัดระวัง
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: 8 ขั้นตอน (พร้อมรูปภาพ)
วิธีใช้ MQTT กับ Raspberry Pi และ ESP8266: ในคำแนะนำนี้ ฉันจะอธิบายว่าโปรโตคอล MQTT คืออะไรและใช้อย่างไรในการสื่อสารระหว่างอุปกรณ์ต่างๆ จากนั้นในการสาธิตเชิงปฏิบัติ ฉันจะแสดงวิธีตั้งค่าสองอย่างง่ายๆ ระบบไคลเอ็นต์ โดยที่โมดูล ESP8266 จะส่งข้อความ
วิธีใช้ Wemos ESP-Wroom-02 D1 Mini WiFi Module ESP8266 + 18650 โดยใช้ Blynk: 10 ขั้นตอน
วิธีใช้ Wemos ESP-Wroom-02 D1 Mini WiFi Module ESP8266 + 18650 โดยใช้ Blynk: ข้อมูลจำเพาะ: ใช้งานร่วมกับ nodemcu 18650 การรวมระบบการชาร์จ ไฟ LED แสดงสถานะ (สีเขียวหมายถึงสีแดงเต็มหมายถึงการชาร์จ) สามารถใช้ขณะชาร์จ แหล่งจ่ายไฟควบคุมสวิตช์ SMT ตัวเชื่อมต่อสามารถใช้สำหรับโหมดสลีป · 1 เพิ่ม