תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
היי, אני משתמש כרגע ב- Windows 10, NodeMCU 1.0 והנה רשימת התוכנות בהן השתמשתי ומדריכי ההתקנה שעקבתי אחריהן:
- Arduino IDE
- לוחות נוספים עבור esp8266
- ספיף
הספרייה בשימוש:
Websocket
השתמשתי ב- NodeMCU כשרת כדי להגיש קובץ HTML שהכנתי מהתיעוד. כדי לשרת קובץ זה, העליתי את הקובץ למערכת הקבצים nodemcu באמצעות Spiffs. קובץ ה- HTML שולח נתונים ל- nodemcu באמצעות שקעי אינטרנט להדפסה על הצג הטורי לשם כך. התקשורת הדו -כיוונית המהירה באמצעות שקעי השרת והלקוח אפשרה זאת לשליטה מרחוק. בשלבים הבאים, לא תסביר איך הקוד שלי עובד
אספקה
NodeMCU
שלב 1: לגרום לזה לעבוד
להלן השלבים כיצד הוא פועל
- הורד את הקובץ המצורף ופתח את הקובץ mousebot.ino
- עבור אל סקיצה> הצג תיקיית סקיצה וצור תיקייה חדשה בשם נתונים
- שמור את קובץ html מהדרכה זו בתיקייה בשם. קראתי לשלי בשם "ג'ויסטיק"
- וודא שהספיף שלך כבר מתפקד על ידי מעבר לכלים וראיית "העלאת נתוני הסקיצה של esp8266"
- העלה את קובץ html ל- nodemcu על ידי לחיצה על "esp8266 העלאת נתוני סקיצה"
- לאחר העלאת הקובץ, העלה ל- nodemcu את קובץ mousebot.ino על ידי הפעלה ל- arduino IDE ולחיצה על ctrl U
שלב 2: כיצד פועל הקוד
ראשית, אנו כוללים את הספריות שבהן קוד זה ישתמש
// כדי לאפשר ל- ESP8266 להתחבר ל- WIFI
#include #include #include // מאפשרת ל- ESP8266 לפעול כשרת #include // מאפשרת תקשורת עם השרת והלקוח (המכשיר המחובר שלך) #include #include // לפתיחת הקובץ שהועלה ב- nodemcu #include
הגדר את esp8266 כשרת אינטרנט שנפתח ביציאה 80. יציאות הן מסלולים שהנתונים יעברו דרכם. כיציאת שרת, הוא ישלח את קובץ ה- HTML ללקוח (המכשירים המחוברים אליו).
מוסיף חיבור לשקע אינטרנט באמצעות יציאה 81 להאזנה להודעות מהלקוח
לשקעי הרשת יש את הפרמטר num, WStype_t, מטען וגודל. המספר קובע את מספר הלקוח, המטען הוא ההודעה שהוא שולח, הגודל הוא אורך ההודעה ו- WStype_t מיועד לאירועים שונים כגון:
- WStype_DISCONNECTED - על ניתוק של לקוח.
- WStype_CONNECTED: - כאשר לקוח מתחבר
- WStype_TEXT - התקבל נתונים מהלקוח
בהתאם לסוג האירוע מבצעים פעולות שונות ומגיבים כאן
void webSocketEvent (uint8_t num, סוג WStype_t, uint8_t * מטען, גודל_אורך) {
switch (סוג) {case WStype_DISCONNECTED: Serial.printf ("[%u] נותק! / n", מספר); // מדפיס נתונים לשבירת הצג הטורי; מקרה 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 (num, "מחובר"); // שולח "conencted" למסוף הדפדפן} break; מקרה WStype_TEXT: Serial.printf ("[%u] נתונים: %s / n", מספר, מטען); // מדפיס את מספר הלקוח ב- %u והנתונים שהתקבלו כמחרוזות בהפסקה של %s / n;}}
שלב 3: הגדר את NODEMCU כשרת
מגדיר את ה- ssid והסיסמה שבה תשתמש כדי להתחבר אליו מאוחר יותר
const char *ssid = "נסה";
const char *password = "12345678";
בהגדרה, אנו מציינים את הקצב שבו הנודמקו והמחשב שלנו יתקשרו, שהם 115200.
הגדרת void (void) {
Serial.begin (115200); Serial.print ("\ n");
מוגדר לאמיתי ראה את פלט האבחון של wifi במסוף הסרילה
Serial.setDebugOutput (true);
לחיות את מערכת הקבצים
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);
אתחל את שקע האינטרנט ב- nodemcu, שהוא שרת pur
webSocket.begin ();
קורא לפונקציה webSocketEvent כאשר מתרחש אירוע websocket.
webSocket.onEvent (webSocketEvent);
לצורך איתור באגים, הדפס "שרת WebSocket הופעל" בשורה חדשה. זה כדי לקבוע את שורת הקוד שה- nodemcu מעבד
Serial.println ("שרת WebSocket הופעל.");
כאשר לקוח מבקר ב- 192.168.4.1, הוא יקרא לפונקציה handleFileRead וישלח איתו את ה- URI של שרת הפרמטרים שבמקרה זה הוא המידע של nodemcu שלנו. הפונקציה handleFileRead תשרת את קובץ ה- html ממערכת הקבצים nodemcu
server.onNotFound ( () {
if (! handleFileRead (server.uri ()))
אם לא ניתן למצוא אותו יציג "FileNotFound"
server.send (404, "text/plain", "FileNotFound");
});
מתחיל את השרת ומדפיס שרת HTTP שהופעל.
server.begin (); Serial.println ("שרת HTTP הופעל");
בלולאת הריק שלנו, אנו מאפשרים לשרת להתמודד ללא הרף עם הלקוח ותקשורת האינטרנט שלו כדלקמן:
לולאת חלל (void) {
server.handleClient (); webSocket.loop ();}
שלב 4: טען קובץ HTML
נשתמש בפונקציה בשם handleFileRead לפתיחה ובקובץ html ממערכת הקבצים nodemcu. הוא יחזיר ערך בוליאני כדי לקבוע אם הוא נטען או לא.
כאשר "192.168.4.1/" נפתח על ידי הלקוח הגדרנו את נתיב הקובץ ל- "/Joystick.html, שם הקובץ שלנו בתיקיית הנתונים.
bool handleFileRead (נתיב מחרוזת) {
Serial.println ("handleFileRead:" + נתיב); if (path.endsWith ("/")) path += "Joystick.html"; if (SPIFFS.exists (נתיב)) {קובץ קובץ = SPIFFS.open (נתיב, "r"); size_t נשלח = server.streamFile (קובץ, "text/html"); file.close (); להחזיר נכון; } החזר שקר; }
בדוק אם קיים נתיב הקובץ "/Joystick.html"
אם (SPIFFS.exists (נתיב)) {
אם הוא קיים, פתח את הנתיב במטרה לקרוא אותו אשר מצוין על ידי ה- "r". לך לכאן למטרות נוספות.
קובץ קובץ = SPIFFS.open (נתיב, "r");
שולח את הקובץ לשרת כמו סוג תוכן של "טקסט/HTML"
size_t נשלח = server.streamFile (קובץ, "text/html");
לסגור את הקובץ
file.close ();
הפונקציה handleFileRead מחזירה true
להחזיר נכון;}
אם נתיב הקובץ אינו קיים, הפונקציה handleFileRead מחזירה שקר
להחזיר נכון; }
שלב 5: נסה זאת
התחבר אל nodeMCU ועבור אל "192.168.4.1" ונסה את זה!:)