- חומרים נדרשים:
- תכנות מיקרו-בקר PIC:
- פונקציות בספריית ESP8266:
- תוכנית לדוגמא:
- פלט סימולציה:
- אימות פלט:
- הוספת פונקציות לספריית ESP8266:
במאמר זה, נדון כיצד לממשק את מודול ה- WIFI ESP8266 עם מיקרו-בקר PIC. עד כה אולי השתמשת במודול ESP8266 כמיקרו-בקר עצמאי או אולי השתמשת בו עם ספריית Arduino. אבל כשמדובר בפרויקטים משובצים של מערכות הארדקור עלינו לדעת להשתמש בהם גם עם מיקרו בקרי PIC. זה יעזור לך להתאים אישית את הפרויקטים שלך בפרספקטיבה העיצובית ובמקביל גם להפוך את זה לזול.
המודולים ESP8266 מגיעים עם קושחת ברירת מחדל שטעונה בתוכו, ולכן אנו יכולים לתכנת את המודול באמצעות פקודות AT. יש לשלוח פקודות אלה דרך ערוץ תקשורת סדרתי. ערוץ זה נקבע בין PIC למודול ESP8266 באמצעות מודול USART במיקרו-בקר PIC . כל העבודה תנוטר ותדווח למשתמש באמצעות צג LCD בגודל 16x2. לפיכך, הדרכה זו מניחה שיש לך ידע בסיסי אודות מודול USART ב- PIC, ממשק LCD עם PIC ושימוש בפקודות AT ב- ESP8266. אם לא, תוכל לחזור להדרכות המקושרות כדי ללמוד אותן לפני כן.
חומרים נדרשים:
תצטרך את החומרה הבאה כדי להשלים את המדריך הזה
- PIC16F877A
- מתנד קריסטל 20 מגה הרץ
- 7805
- LM317
- ESP8266
- 16 * 2 תצוגת LCD
- מתכנת PicKit3
- נגדים (1K, 220ohm, 360ohm)
- קבלים (1uF, 0.1uF, 33pF)
- חוטי מגשר
- מתאם 12V להפעלת מודול ה- PIC וה- ESP
חוּמרָה:
הסכמה המלאה של הפרויקט מוצגת להלן
התרשימים מורכבים משני מעגלי וסת מתח, האחד הוא וסת + 5V המשמש להפעלת המיקרו-בקר PIC והשני הוא וסת 3.3V המניע את מודול ESP8266. + 5V מווסת באמצעות 7805 (רגולטור מתח ליניארי IC). 3.3V מווסת באמצעות LM317 (רגולטור מתח משתנה). מודול ESP8266 צורך הרבה זרם (~ 800mA) ולכן אם אתה מתכנן ספק כוח משלך וודא שהוא יכול למקור זרם כה גבוה. וודא גם שסיכות הקרקע של ה- PIC ומודול ESP8266 מחוברים יחד.
אז עכשיו אנחנו יודעים שה- PIC פועל ב- + 5V וה- ESP8266 פועל ב -3.3 וולט וולט. על מנת ליצור תקשורת USART בין שני המודולים הללו אנו זקוקים למעגל ממיר לוגי 5V - 3.3V כפי שמוצג באיור לעיל. מעגל זה אינו אלא מחלק פוטנציאלי אשר פשוט ממיר את + 5 וולט הנכנס ל -3.3 וולט. זה ימנע מהסיכה RX הנסבלת של 3.3V של ESP8266 + 5V.
הכנתי את המודולים PIC ו- ESP בשני לוחות perf נפרדים, כפי שמוצג במדריכים אלה. בדרך זו אני יכול להשתמש בהם באופן אוניברסלי לפרויקטים דומים יותר
- חומרת לד באמצעות PIC
- תחילת העבודה עם ESP8266
אתה יכול לעקוב אחר אותו דבר, או לבנות לוח משלך בסגנון שלך או פשוט לחבר את המעגל הנ"ל לקרש לחם.
תכנות מיקרו-בקר PIC:
על מנת לתכנת את המיקרו-בקר PIC לשלוח "פקודות AT" באופן סדרתי באמצעות USART למודול ESP8266 עלינו להשתמש בספריה. ספרייה זו תחסוך לכם טרחה רבה, כמו שימוש במודולי ההוראות ESP8266 כדי לבדוק כל פקודת AT ואז למצוא דרך להעביר אותם למודול ESP. ספרייה זו היא תוכנה חינמית שפותחה במקור על ידי Camil Staps ובהמשך היא שופרה ושונתה על ידי Circuit Digest כך שניתן יהיה להשתמש בה עם מיקרו-בקר PIC16F877A שלנו. תוכלו להוריד אותו כאן
הספרייה עדיין בפיתוח, אך תוכל להשתמש ברוב פקודות ה- AT החשובות בקושחת ESP8266. אם אתה מגלה שחסרה כל אחת מהפקודות שאתה זקוק להן, הודע לי על כך בקטע ההערות ואנסה להוסיף אותה עבורך. מדריך זה יסביר לך את כל הפקודות (עד כה) בהן ניתן להשתמש באמצעות ספרייה זו. בנוסף, ידריך אותך להוסיף פונקציות משלך לספריה.
פונקציות בספריית ESP8266:
- Initialize_ESP8266 (): פונקציה זו תאותחל את מודול ה- USART של ה- PIC כדי לתקשר עם המודול ESP8266. זה קובע את קצב השידור על 115200 ומכין את סיכת ה- Rx וה- Tx של PIC לתקשורת USART.
- _esp8266_putch (): פונקציה זו משמשת למשלוח תו בודד באופן סדרתי למודול ESP8266. לדוגמא, _esp8266_putch ('a') ישלח את התו סדרתי ל- ESPmodule.
- _esp8266_getch (): פונקציה זו משמשת לקבל תו יחיד ממודול ה- ESP. לדוגמא אם ה- ESP מדפיס "OK" ואנחנו משתמשים ב char a = _esp8266_getch (). ואז התו 'o' יאוחסן במשתנה a.
- ESP8266_send_string (): פונקציה זו היא גרסת המחרוזת של _esp8266_putch (). זה יכול לשלוח מחרוזת שלמה אחת למודול ESP8266. לדוגמה, ESP8266_send_string ("AT / r / n") ישלח את הפקודה "AT" למודול ESP8266.
- esp8266_isStarted (): הוא משמש כדי לבדוק אם ה- PIC יכול לתקשר עם מודול ה- ESP. הוא שולח את הפקודה "AT" ומחכה ל"אישור "אם קיבלה אותה מחזירה נכון אחרת היא מחזירה שקר.
- esp8266_restart (): מאפס את מודול ESP8266 ומחזיר true הוא איפוס מוצלח ומחזיר false אם לא מצליח.
- esp8266_mode (): משמש להגדרת מצב העבודה של מודול ESP8266. כידוע זה יכול לעבוד בשלושה מצבים שונים.
מצב תחנה |
|
מצב AP רך |
|
גם מצב תחנה וגם גישה AP |
- esp8266_connect (): מאפשר לך להתחבר לאות wifi. לדוגמא esp8266_connect ("בית", "12345678") , יאפשר למודול שלך להתחבר לאות ה- wifi בשם הבית שהסיסמה שלו היא 12345678.
- esp8266_disconnect (): פונקציה זו מנתקת את המודול שלך מכל חיבור wifi שהיה מחובר בעבר
- esp8266_ip (): מקבל את כתובת ה- IP ומחזיר אותה. השתמש בפונקציה זו אם ברצונך לדעת את כתובת ה- IP של מודול ESP8266.
- esp8266_start (): פונקציה זו משמשת להפעלת תקשורת TCP או UDP. לדוגמא esp8266_start ( "TCP", "192.168.101.110", 80) . יפתח רשת TCP באותה IP ובנמל 80.
- esp8266_send (): פונקציה זו משמשת לשליחת מידע לרשת TCP / UDP. סקריפט ה- HTML יישלח באמצעות פקודה זו. ואז סקריפט זה יופיע בכתובת ה- IP בה נוצרה התקשורת בעבר.
- esp8266_config_softAP (): פונקציה זו משמשת להגדרת התצורה של softAP. לדוגמא esp8266_config_softAP ("משרד", "12345678"); תיצור אות Wifi בשם office ויש להשתמש בסיסמה 12345678 כדי לגשת אליו.
- esp8266_get_stationIP (): פונקציה זו תחזיר לך את כתובת ה- IP / MAC של הלקוחות המחוברים ל- softAP שלך.
תוכנית לדוגמא:
כעת, לאחר שהבנו את הפונקציות של כל פקודה וספריה, הבה נבחן תוכנית מדגם קטנה. בתוכנית זו נבדוק אם החיבור בין ESP8266 ל- PIC מוצלח ואז ניצור רשת WIFI (SoftAP) עם שם וסיסמה מועדפים. התוכנית המלאה והסימולציה שלה יוסברו להבנתך.
שוב אם לא קראת את ממשק ה- PIC שלנו עם מדריך LCD ו- PIC USART אנא קרא את, לפני שתמשיך כי רק אז זה יהיה הגיוני עבורך.
מכיוון שרק התחלנו להתממשק PIC עם ESP8266, השתמשתי ב- LCD כדי לוודא שהדברים עובדים כראוי.
לעשות {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP לא נמצא"); } בעוד (! esp8266_isStarted ()); // המתן עד שה- ESP ישלח בחזרה את "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP מחובר"); __השהיית_מס (1500); Lcd_Clear ();
כשאנחנו שולחים את ה- "AT" למודול ESP8266 הוא משיב בחזרה עם "OK". זה מבטיח לנו שהמודול ESP8266 מחובר בהצלחה. הפונקציה esp8266_isStarted () משמשת לאותה. אנו שולחים את האות AT מה- PIC ומחכים עד שמודול ה- ESP יתעורר ונשלח לנו אישור. אם נקבל אישור אנו מציגים כי ה- "ESP מחובר" על גבי ה- LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP מוגדר כ- AP"); __השהיית_מס (1500); Lcd_Clear ();
שורות הקוד שלעיל משמשות להגדרת מודול ESP לעבודה במצב "AP רך". הפונקציה esp8266_mode (2); שולח את פקודות ה- AT "AT + CWMODE = 3" למודול ומחכה שהמודול יגיב עם "OK"
/ * הגדר את שם הסיסמה והסיסמה * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("תצורת AP מוגדרת"); __השהיית_מס (1500); Lcd_Clear (); / * AP מוגדר * /
קטע קוד זה משמש להגדרת תצורה של ה- softAP. כאן שמנו את ה- SSID כ- "CircuitDigest" ואת הסיסמה כ- "619007123". כדי לציין כי התהליך הושלם נחכה שהמודול יגיב עם "אישור" ואז נדפיס AP מוגדר על גבי מסך ה- LCD.
זהו שעכשיו התממשקנו את מודול ESP8266 עם ה- PIC MCU והגדרנו את ה- softAP עם שם וסיסמה לבחירתנו. כרגיל מאפשר לדמות קוד זה ולראות כיצד הוא עובד.
פלט סימולציה:
אנו משתמשים בתוכנת Proteus כדי לדמות את הפלט. קובץ העיצוב עבור אותו ניתן למצוא בקובץ המצורף.
מכיוון שאין לנו מודול ESP8266 בספריית פרוטאוס, אנו משתמשים במסוף הסידורי ונשיב בחזרה כמשתמש למודול ה- PIC. המסך לאחר השלמת המסך ייראה כמו למטה
פלט הקוד שלנו מוצג במסוף הווירטואלי. העבודה המלאה של הסימולציה תוסבר בסרטון להלן.
אימות פלט:
לאחר אימות התוכנית באמצעות הסימולציה, זרוק אותה למיקרו-בקר PIC שלך. בצע את החיבורים כפי שמוצג בתרשימים לעיל (סעיף חומרה). אתה אמור להיות מסוגל לעקוב אחר ההתקדמות שלך דרך צג ה- LCD.
ברגע ש- LCD אומר כי ה- AP מוגדר אנו יכולים לבדוק זאת באמצעות הגדרות ה- WIFI בטלפון או במחשב נייד. המחשב הנייד שלי מראה את האות הבא לפי התוכנית שלנו.
זה הבחורים שהתממשקנו בהצלחה את מודול ESP8266 עם מיקרו-בקר PIC. זהו ממשק בסיסי ביותר ואם אתה רוצה לעשות פרויקטים מסובכים באמצעות ESP8266 ייתכן שיהיה עליך להוסיף ספריות משלך או לפחות להוסיף פונקציות משלך. תאמין לי שזה מאוד קל לעשות זאת, אתן תובנה קצרה לאותו דבר.
הוספת פונקציות לספריית ESP8266:
הוספת פונקציה משלך תעזור לך לשלוח כל פקודת "AT" למודול ESP8266. כדי להמשיך בזה עליך לקרוא את תיעוד ערכת ההוראות של מודול ESP8266. אתה יכול לשלוח ישירות כל פקודת AT שתמצא במדריך להגדרת ההוראות. אך זכור תמיד להוסיף "/ r / n" בסוף כל פקודת AT. לדוגמא אם ברצונך ליצור חיבורים מרובים עם מודול ה- ESP שלך. לאחר מכן פתח את תיעוד מערך ההוראות ומצא את איזו פקודת AT תעשה עבורך. כאן הפקודה "AT + CIPMUX = 1" תאפשר לך ליצור חיבורים מרובים עם מודול ה- ESP שלך.
כעת כל שעליכם לעשות הוא לשלוח את "AP + CIPMUX = 1" זה למודול ה- ESP8266 שלכם באמצעות היציאה הטורית. הדרך ההארדקור לעשות זאת היא פשוט באמצעות הפקודה
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
זה יעבוד אבל זו לא הדרך הטובה ביותר לעשות זאת. עליך לקרוא בחזרה מה ה- ESP8266 שלך מגיב לפקודה שלך. במקרה שלנו הוא יגיב עם "אישור". אז עליכם לקרוא את הנתונים הנכנסים ממודול ESP8266 ולאשר שמדובר ב"אישור ". כמו כן, תוכלו לבצע פונקציה זו כאשר ניתן להעביר את "1" או "0" כטיעונים.
קדימה ונסה ליצור פונקציות משלך לספרייה. אבל אם אתה זקוק לעזרה אנא התפנה להשתמש בסעיף ההערות ואני אעזור לך.