תוכן עניינים:
וִידֵאוֹ: תקשורת נתונים ישירה ESP8266: 3 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
מבוא
בזמן שעשיתי כמה פרויקטים עם מודולי Arduinos ו- nRF24l01 תהיתי אם אוכל לחסוך קצת מאמץ באמצעות מודול ESP8266 במקום זאת. היתרון במודול ESP8266 הוא בכך שהוא מכיל בקר מיקרו על הלוח, כך שאין צורך בלוח Arduino נוסף. בנוסף גודל הזיכרון של ה- ESP8266 גדול בהרבה ובנוגע למהירות ה- ESP8266 פועל במהירות של 160 מגה -הרץ במקום 16 מגה -הרץ של הארדואינו. כמובן שיש כמה צדדים שליליים.
ה- ESP8266 פועל על 3.3V בלבד, בעל פחות סיכות וחסר את הכניסות האנלוגיות הנחמדות שיש ל- Arduino (יש לו אחת, אך רק עבור 1.0V ולא 3.3V). בנוסף ישנן דוגמאות קוד רבות נוספות ל- Arduino + nRF24l01, וישנן עבור ESP8266 במיוחד בכל הנוגע להעברת נתונים ישירה.
אז עם פרויקט בראש, בדקתי את הנושא של העברת נתונים מהירה וקלת משקל בין שני ESP8266 ללא כל הדברים WWW ו-
בעת חיפוש דוגמאות באינטרנט (רוב הקוד שלהלן נבחר מהרשת במקומות שונים) נתקלתי בשאלות רבות כיצד ליישם העברת נתונים ישירה ללא דוגמאות נחמדות של "עשה זאת כך". היה קוד לדוגמה, אבל בעיקר עם השאלה מדוע זה לא עבד.
אז לאחר קריאה וניסיון להבין, יצרתי את הדוגמאות שלהלן המאפשרות העברת נתונים מהירה ופשוטה בין שני ESP8266.
שלב 1: גבולות ורקעים (TCP נגד UDP)
כדי להגיע לשם, יש להבהיר כמה גבולות בהשוואה ל- nRF24l01.
כדי להשתמש ב- ESP8266 בתוך סביבת Arduino, הספרייה הבסיסית לשימוש היא ה- ESP8266WiFi.h. יתכן שהדוגמאות שונות, אך רוב הדוגמאות משתמשות ב. בעת שימוש זה, עליך להביא את התקשורת שלך לרמת WiFi.
לכן, כדי לתקשר צריך להיות לפחות נקודת גישה (AP) / שרת ולקוח. ה- AP מספק את שם הרשת וכתובות ה- IP והלקוח יתחבר לשרת זה.
אז בהשוואה ל- nRF24l01, כאשר הקוד משני קצותיו פחות או יותר זהה (למעט ערוצי השידור) הקוד של ESP8266 שונה מהותית, מכיוון שהאחד מוגדר כ- AP והשני כלקוח.
הנושא הבא הוא שבמקום לשלוח כמה בייטים ל- nRF24l01, יש להקפיד על פרוטוקולי העברה של ESP8266.
ישנם שני פרוטוקולים נפוצים: TCP ו- UDP.
TCP (Protocol Control Protocol) הוא פרוטוקול המאפשר העברה ללא הפסד בין שרת ללקוח. הפרוטוקול כולל "לחיצות ידיים" (הרבה דגלים ואנקולוגים שנשלחו בין שני הצדדים) ומספור מנות וגילוי לזיהוי ושידור חוזר של מנות שאבדו. בנוסף, באמצעות כל לחיצות הידיים הללו הפרוטוקול מונע אובדן נתונים עקב מנות רבות שנשלחות בו זמנית ברשת. מנות נתונים ממתינות עד לקבלתן.
ה- UDP (פרוטוקול User Datagram) חסר את כל לחיצות הידיים, מספור מנות ושידור חוזר. התקורה שלה לכן קטנה יותר ואין צורך בכל לחיצות הידיים כדי לשמור על חיבור. UDP משלב כמה זיהוי שגיאות בסיסי, אך ללא תיקון (החבילה הפגומה נזרקה). הנתונים נשלחים, ללא ידיעה אם הצד המקבל חופשי לקבל את הנתונים. במקביל, מספר מנות יכולות להתנגש, מכיוון שכל צד שולח את הנתונים בכל פעם שהוא נחוץ. על ידי השמטת כל לחיצות הידיים, קיימת תכונה נוספת נחמדה של UDP הנקראת "שידור רב" ו"שידור ". במקרה "רב שידור" מנות נתונים נשלחות לקבוצה מוגדרת מראש של חברים, ב"שידור "מנות נתונים נשלחות לכל החברים המחוברים. זה מקטין את העברת הנתונים במידה ניכרת במקרה של זרמים שיתקבלו על ידי מספר חברים (למשל על ידי שליחת הזנת וידאו למספר מקלטים או על ידי שליחת הזמן הנוכחי למספר מכשירים מחוברים).
יש כמה סרטונים טובים ביוטיוב שמסבירים את זה אפילו טוב יותר.
לכן בעת שליחת נתונים, חשוב לדעת את הצרכים שלך:
- נתונים לא פגומים, ניהול מספר עמיתים בלחיצות יד → TCP
- נתונים בזמן אמת, חיבור מהיר → UDP
התחלתי ביישום תקשורת מבוססת TCP (בין שרת אחד ללקוח אחד). במהלך הבדיקה נתקלתי בבעיות עצירה בשידור. בהתחלה הנתונים הוחלפו במהירות, ולאחר זמן מה המהירות ירדה באופן דרמטי. הגעתי למסקנה שזוהי בעיה טיפוסית של גישת ה- TCP (שלא הייתה נכונה!), אז השתנה לפתרון המבוסס על UDP. לבסוף קיבלתי את שניהם ניגשים לעבודה. אז שני הפתרונות יינתנו.
הסקיצות להלן מכילות TCP ו- UDP במשותף לכך שהן:
- אינם תלויים בכל רשת WiFi קיימת. אז זה יעבוד בכל מקום רחוק מהאינטרנט ומהנתבים המחוברים.
- שולחים נתוני ASCII להדפסה באמצעות הצג הטורי.
- שולחים נתונים המתקבלים על ידי הפונקציה millis (), לניתוח מהירות השידור.
- אינם נבדקים עבור מספר לקוחות (בשל החומרה להתקנת הרשת כרגע)
שלב 2: חומרה
כדי לבדוק את כל ההתקנה השתמשתי בשני מודולים ESP8266. מודול אחד הוא מתאם ESP-01 + USB-to-UART. המודול הנוסף הוא מודול מבוסס ESP-12 הכולל חיבור USB, ווסת מתח וכמה דברים מהנים כמו מתגים, LDR ו- LED רב צבעים.
היה צריך לשנות מעט את מודול ה- USB-to-UART ל- ESP-01 כדי שיוכל להשתמש בו כמתכנת (שוב Youtube מאת Csongor Varga).
על מנת להריץ את הסקיצות, עליך להתקין את ספריות ESP8266 (כמתואר במקומות רבים באינטרנט). בשני המקרים (TCP ו- UDP) יש שרטוט שרת ולקוח כל אחד. איזו מערכון נטען לאיזה מודול לא משנה.
הכרות
כאמור, השרטוטים מבוססים על חלקים רבים שמצאתי ברשת. אני כבר לא זוכר היכן מצאתי מה, ומהו הקוד המקורי או מה שיניתי. אז רק רציתי להודות לקהילה הגדולה בכלל שפרסמה את כל הדוגמאות הנהדרות.
שלב 3: הסקיצות
הקוד מורכב משתי סקיצות כל אחת (כפי שהוסבר), שרטוט שרת ושרטוט לקוח, עבור TCP ו- UDP כל אחת.
מוּמלָץ:
מנוע צעד נשלט על ידי MIDI עם שבב סינתזה דיגיטלית ישירה (DDS): 3 שלבים
מנוע צעד הנשלט על ידי MIDI עם שבב סינתזה דיגיטלית ישירה (DDS): האם יש לך מושג רע שפשוט היית צריך להפוך לפרויקט מיני? ובכן, שיחקתי עם מערכון שעשיתי עבור ה- Arduino Due שמטרתו ליצור מוזיקה עם מודול סינתזה ישירה של AD9833 (DDS) … ובשלב מסוים חשבתי ושאלתי
כיצד להפוך לחות וטמפרטורה למקליט נתונים בזמן אמת באמצעות UNO Arduino וכרטיס SD - סימולציית רישום נתונים DHT11 בפרוטוס: 5 שלבים
כיצד להפוך לחות וטמפרטורה למקליט נתונים בזמן אמת באמצעות UNO Arduino וכרטיס SD | סימולציית רישום נתונים ב- DHT11 בפרוטוס: הקדמה: היי, זהו Liono Maker, הנה קישור ל- YouTube. אנו יוצרים פרויקט יצירתי עם Arduino ועובדים על מערכות מוטבעות. Data-Logger: לוגר נתונים (גם לוגר נתונים או מקליט נתונים) הוא מכשיר אלקטרוני המתעד נתונים לאורך זמן עם
לוח Geeetech ל- Raspberry Pi באמצעות כבל USB מותאם אישית קווית ישירה: 4 שלבים
לוח Geeetech ל- Raspberry Pi באמצעות כבל USB מותאם אישית קווית ישירה: שלום! מדריך זה יראה כיצד לייצר כבל 4 פינים מסוג USB ל- JST XH מותאם אישית, כך שתוכל לחבר ישירות את ה- Raspberry Pi או התקן USB אחר ללוח Geeetech 2560 rev 3 במדפסת Geeetech, כמו A10. הכבל הזה מתחבר למכשיר הנוח
רכישת נתונים ומערכת ויזואליזציית נתונים לאופנוע מירוץ חשמלי של MotoStudent: 23 שלבים
רכישת נתונים ומערכת ויזואליזציית נתונים לאופנוע מירוץ חשמלי של MotoStudent: מערכת רכישת נתונים היא אוסף של חומרה ותוכנה הפועלים יחד על מנת לאסוף נתונים מחיישנים חיצוניים, לאחסן ולעבד אותם לאחר מכן כך שניתן יהיה להמחיש אותם בצורה גרפית ולנתח אותם, המאפשר למהנדסים לבצע
מקלט המרה ישירה לכל הלהקה: 6 שלבים
מקלט המרה ישירה ב All-Band: a.articles {גודל הגופן: 110.0%; מודגש; סגנון גופן: נטוי; טקסט-קישוט: אין; background-color: red;} a.articles: hover {background-color: black;} הוראה זו מתארת ניסוי " המרה ישירה " א