- רכיבים נדרשים
- מודול Wi-Fi ESP8266
- חיבור LPC2148 עם ESP8266 לתקשורת טורית
- תרשים מעגלים וחיבורים
- צעדים המעורבים בתכנות UART0 ב- LPC2148 לממשק ESP8266
- שליטה על ה- LED באמצעות ESP8266 IoT Webserver עם LPC2148
משדר ה- Wi-Fi ESP8266 מספק דרך לחבר מיקרו-בקר לרשת. הוא נמצא בשימוש נרחב בפרויקטים של IoT מכיוון שהוא זול, זעיר וקל לשימוש. בעבר השתמשנו בו ליצירת שרת אינטרנט באמצעות שרת האינטרנט של פטל ושרת של ארדואינו.
במדריך זה נתממשק מודול Wi-Fi ESP8266 עם המיקרו-בקר ARM7-LPC2148 וניצור שרת אינטרנט לשליטה על ה- LED המחובר ל- LPC2148. זרימת העבודה תעבור כך:
- שלח פקודות AT מ- LPC2148 ל- ESP8266 כדי להגדיר את ESP8266 במצב AP
- חבר את ה- Wi-Fi המחשב הנייד עם נקודת הגישה ESP8266
- צור דף אינטרנט HTML במחשב עם כתובת ה- IP של נקודת הגישה של שרת האינטרנט ESP8266
- צור תוכנית עבור LPC2148 לבקרת ה- LED על פי הערך שהתקבל מ- ESP8266
אם אתה לגמרי חדש במודול ה- Wi-Fi ESP8266 בקר בקישורים הבאים כדי להכיר את מודול ה- Wi-Fi ESP8266.
- תחילת העבודה עם משדר ה- Wi-Fi ESP8266 (חלק 1)
- תחילת העבודה עם ESP8266 (חלק 2): שימוש בפקודות AT
- תחילת העבודה עם ESP8266 (חלק 3): תכנות ESP8266 עם Arduino IDE ומהבהב בזיכרון שלה
רכיבים נדרשים
חוּמרָה:
- ARM7-LPC2148
- מודול Wi-Fi ESP8266
- FTDI (USB ל- UART TTL)
- לד
- ויסות מתח 3.3V IC
- קרש לחם
תוֹכנָה:
- KEIL uVision
- כלי פלאש קסם
- מֶרֶק
מודול Wi-Fi ESP8266
ESP8266 הוא מודול Wi-Fi בעלות נמוכה עבור פרויקטים משובצים הדורש הספק נמוך של 3.3 וולט. הוא משתמש בשני חוטי TX ו- RX בלבד לצורך תקשורת טורית והעברת נתונים בין ESP8266 וכל מיקרו-בקר בעל יציאת UART.
תרשים סיכה למודול ה- Wi-Fi ESP8266
- GND, קרקע (0 וולט)
- TX, העברת סיבית נתונים X
- GPIO 2, קלט / פלט לשימוש כללי מס '2
- CH_PD, השבתת שבב
- GPIO 0, קלט / פלט לשימוש כללי מס '0
- RST, אפס
- RX, קבל נתונים X
- VCC, מתח (+3.3 V)
הגדרת לוח מעגלים ESP8266
ESP8266 דורש אספקה קבועה של 3.3 וולט והוא אינו ידידותי לקרש לחם. אז במדריך הקודם שלנו בנושא ESP8266, יצרנו לוח מעגלים עבור ESP8266 עם ויסות מתח 3.3V, כפתור לחצן RESET והגדרת מגשר למיתוג מצבים (פקודת AT או מצב פלאש). ניתן להתקין אותו גם על לוח לחם מבלי להשתמש בלוח perf.
כאן הלחמנו את כל הרכיבים על קרש הלחם כדי ליצור לוח Wi-Fi ESP8266 משלנו
למד התממשקות של ESP8266 למיקרו-בקרים שונים על ידי קישורים להלן:
- תחילת העבודה עם ESP8266 (חלק 3): תכנות ESP8266 עם Arduino IDE ומהבהב בזיכרון שלה
- חיבור ESP8266 ל- STM32F103C8: יצירת שרת אתרים
- שליחת דוא"ל באמצעות MSP430 Launchpad ו- ESP8266
- ממשק ESP8266 עם מיקרו-בקר PIC16F877A
- ניטור Dumpster מבוסס IOT באמצעות Arduino & ESP8266
כל הפרויקטים המבוססים על ESP8266 נמצאים כאן.
חיבור LPC2148 עם ESP8266 לתקשורת טורית
על מנת להתממשק ESP8266 עם LPC2148 עלינו ליצור תקשורת UART טורית בין שני ההתקנים הללו כדי לשלוח פקודות AT מ- LPC2148 ל- ESP8266 כדי להגדיר את מודול ה- Wi-Fi ESP8266. למידע נוסף על פקודות ESP8266 AT, לחץ על הקישור.
אז כדי להשתמש בתקשורת UART ב- LPC2148 עלינו לאתחל את יציאת UART ב- LPC2148. ל- LPC2148 שתי יציאות UART מובנות (UART0 ו- UART1).
סיכות UART ב- LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
אתחול UART0 ב- LPC2148
כידוע שהסיכות של LPC2148 הן סיכות למטרות כלליות ולכן עלינו להשתמש ברישום PINSEL0 לשימוש ב- UART0. לפני אתחול UART0 יידע על רישומי UART אלה המשמשים ב- LPC2148 לשימוש בתכונת UART.
UART נרשם ב- LPC2148
הטבלה שלהלן מציגה כמה רושמים חשובים המשמשים בתכנות. בהדרכות העתידיות שלנו נראה בקצרה אודות רושמים אחרים המשמשים ל- UART ב- LPC2148.
x-0 ל- UART0 ו- x-1 ל- UART1:
הירשם |
רשום שם |
להשתמש |
UxRBR |
קבל רישום חוצץ |
מכיל ערך שהתקבל לאחרונה |
UxTHR |
העברת פנקס אחזקות |
מכיל נתונים שיש להעביר |
UxLCR |
רישום בקרת קו |
מכיל פורמט מסגרת UART (מספר ביטים של נתונים, עצירת ביט) |
UxDLL |
מחלק תפס LSB |
LSB של ערך מחולל קצב שידור UART |
UxDLM |
Divisor Latch MSB |
MSB של ערך מחולל קצב שידור UART |
UxIER |
הפסק את הרישום |
הוא משמש לאפשר מקורות הפרעה של UART0 או UART1 |
UxIIR |
הפסק את רישום הזיהוי |
הוא מכיל את קוד המצב שיש לו עדיפות ומקור להפרעות ממתינות |
תרשים מעגלים וחיבורים
החיבורים בין LPC2148, ESP8266 ו- FTDI מוצגים להלן
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 מופעל באמצעות רגולטור מתח 3.3V ו- FTDI & LPC2148 מופעלים באמצעות USB.
מדוע FTDI כאן?במדריך זה חיברנו את סיכת ה- RX של FTDI (USB ל- UART TTL) לסיכת ה- ESP8266 TX המחוברת עוד יותר לסיכה LPC2148 RX, כדי שנוכל לראות את התגובה של מודול ESP8266 באמצעות כל תוכנת מסוף כמו מרק, Arduino IDE. אבל לשם כך קבעו את קצב השידור לפי קצב השידור של מודול ה- Wi-Fi ESP8266. (קצב השידור שלי הוא 9600).
צעדים המעורבים בתכנות UART0 ב- LPC2148 לממשק ESP8266
להלן שלבי התכנות לחיבור ESP8266 עם LPC2148 שיהפכו אותו לתואם IoT.
שלב 1: - ראשית עלינו לאתחל את סיכות UART0 TX & RX ברישום PINSEL0.
(P0.0 כ TX ו- P0.1 כ RX) PINSEL0 = PINSEL0 - 0x00000005;
שלב 2: - הבא ב- U0LCR (Register Control Line), הגדר את ה- DLAB (Divisor Latch Access Bit) ל- 1 מכיוון שהוא מאפשר להם ואז הגדר מספר סיביות עצירה כ -1 ואורך מסגרת הנתונים של 8 סיביות.
U0LCR = 0x83;
שלב 3: - כעת חשוב לציין שלב זה להגדיר את הערכים של U0DLL & U0DLM בהתאם לערך PCLK ולקצב השידור הרצוי. בדרך כלל עבור ESP8266 אנו משתמשים בקצב שידור של 9600. אז בואו נראה כיצד להגדיר קצב שידור 9600 עבור UART0.
נוסחה לחישוב קצב שידור:
איפה, PLCK: שעון היקפי בתדר (MHz)
U0DLM, U0DLL: רושמים מחלקים של מחוללי קצב שידור
MULVAL, DIVADDVAL: רושמים אלה הם ערכי מחולל שברים
עבור קצב שידור 9600 עם PCLK = 15MHZ
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97.65
אז U0DLM = 0 ואנחנו מקבלים U0DLL = 97 (שבר אינו מותר)
אז אנו משתמשים בקוד הבא:
U0DLM = 0x00; U0DLL = 0x61; (ערך הקסדצימלי של 97)
שלב 4: - לבסוף, עלינו להפוך את DLA (Divisor Latch Access) לנטרל מוגדר כ- 0 ב- LCR.
אז יש לנו
U0LCR & = 0x0F;
שלב 5: - להעברת תו, לטעון את בייט להישלח U0THR ולהמתין עד בייט מועבר, אשר מסומן על ידי HIGH הופך thre.
בטל UART0_TxChar (char ch) { U0THR = ch; בעוד ((U0LSR & 0x40) == 0); }
שלב 6: - להעברת מחרוזת, נעשה שימוש בפונקציה למטה. כדי לשלוח נתוני מחרוזות בזה אחר זה השתמשנו בפונקציית התווים מהשלב שלמעלה.
בטל UART0_SendString (char * str) { uint8_t i = 0; בעוד (str! = '\ 0') { UART0_TxChar (str); i ++; } }
שלב 7: - לקבלת מחרוזת, משתמשים כאן בפונקציה של שגרת שירות להפסיק מכיוון שמודול Wi-Fi ESP8266 ישדר נתונים בחזרה לסיכת ה- RX של LPC2148 בכל פעם שאנחנו שולחים פקודת AT או בכל פעם ש- ESP8266 שולח נתונים ל- LPC2148, כמו שאנחנו שולחים נתונים לשרת אינטרנט של ESP8266.
דוגמה: כאשר אנו שולחים פקודה AT ל- ESP8266 מ- LPC2148 ("AT \ r \ n"), אנו מקבלים תשובה "אישור" ממודול ה- Wi-Fi.
לכן אנו משתמשים בהפסקה כאן כדי לבדוק את הערך שהתקבל ממודול ה- Wi-Fi ESP8266 מכיוון ששגרת שירותי הפסקת ה- ISR נמצאת בעדיפות הגבוהה ביותר.
לכן בכל פעם ש- ESP8266 שולח נתונים לסיכת RX של LPC2148, נקבעת ההפרעה ופונקציית ISR מבוצעת.
שלב 8: - כדי לאפשר הפרעות ל- UART0, השתמש בקוד הבא
ה- VICintEnable הוא רישום הפעלת הפסקות וקטור המשמש להפעלת הפרעה עבור UART0.
VICIntEnable - = (1 << 6);
ה- VICVecCnt10 הוא רישום בקרת הפסקות וקטוריות שמקצה חריץ ל- UART0.
VICVectCntl0 = (1 << 5) - 6;
לאחר מכן ה- VICVectaddr0 הוא רישום כתובות הפסקה וקטוריות בעל כתובת ה- ISR השגרתית של שירות ההפסקה.
VICVectAddr0 = (לא חתום) UART0_ISR;
אז עלינו להקצות את ההפסקה עבור רישום המאגר RBR קבל. אז בקטע הפסקת הפסק (U0IER) הגדרנו ל- RBR. כך ששגרת שירות הפסקה (ISR) נקראת כאשר אנו מקבלים נתונים.
U0IER = IER_RBR;
לבסוף, יש לנו את פונקציית ה- ISR שצריכה לבצע משימה מסוימת כאשר אנו מקבלים נתונים ממודול ה- Wi-Fi ESP8266. כאן פשוט קראנו את הערך שהתקבל מה- ESP8266 הקיים ב- U0RBR ואחסנו את הערך ב- UART0_BUFFER. לבסוף בסוף ISR יש להגדיר את VICVectAddr עם ערך אפס או דמה.
בטל UART0_ISR () __irq { לא חתום IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; אם (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; אם (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
שלב 9: - מכיוון שיש להגדיר את מודול ה- Wi-Fi ESP8266 במצב AP, עלינו לשלוח את פקודות ה- AT המכובדות מ- LPC2148 באמצעות פונקציית UART0_SendString () .
פקודות ה- AT הנשלחות ל- ESP8266 מ- LPC2148 מוזכרות להלן. לאחר שליחת כל פקודת AT ESP8266 מגיב עם "אישור"
1. שולח AT ל- ESP8266
UART0_SendString ("AT \ r \ n"); עיכוב_מס (3000);
2. שולח AT + CWMODE = 2 (הגדרת ESP8266 במצב AP).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); עיכוב_מס (3000);
3. שולח AT + CIFSR (לקבלת IP של AP)
UART0_SendString ("AT + CIFSR \ r \ n"); עיכוב_מס (3000);
4. שולח AT + CIPMUX = 1 (לחיבורי Mutliple)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); עיכוב_מס (3000);
5. שולח ב- + CIPSERVER = 1,80 (להפעלת שרת ESP8266 עם נמל פתוח)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); עיכוב_מס (3000);
תכנות והבהוב של קובץ Hex ל- LPC2148
כדי לתכנת ARM7-LPC2148 אנו זקוקים לכלי uVision & Flash Magic. כאן משתמשים בכבל USB לתכנות ARM7 סטיק דרך יציאת מיקרו USB. אנו כותבים קוד באמצעות Keil ויוצרים קובץ hex ואז קובץ HEX מהבהב למקל ARM7 באמצעות Flash Magic. למידע נוסף אודות התקנת keil uVision ו- Flash Magic וכיצד להשתמש בהן עקבו אחר הקישור תחילת העבודה עם ARM7 LPC2148 Microcontroller ותכנתו באמצעות Keil uVision.
התוכנית המלאה ניתנת בסוף ההדרכה.
הערה: בזמן העלאת קובץ HEX ל- LPC2148 אסור לך להפעיל את מודול ה- Wi-Fi ESP8266 ואת מודול ה- FTDI המחובר ל- LPC2148.
שליטה על ה- LED באמצעות ESP8266 IoT Webserver עם LPC2148
שלב 1: - לאחר העלאת קובץ HEX ל- LPC2148, חבר את מודול FTDI למחשב באמצעות כבל USB ופתח את תוכנת מסוף המרק.
בחר סידורי ואז בחר את יציאת ה- COM בהתאם למחשב האישי או למחשב הנייד שלך היה (COM3). קצב השידור הוא 9600.
שלב 2: - עכשיו אפס את מודול ה- Wi-Fi ESP8266 או פשוט כבה אותו והפעל אותו שוב, מסוף המרק יציג את התגובה של מודול ה- Wi-Fi ESP8266 כמוצג להלן. \
שלב 3: - כעת לחץ על כפתור RESET ב- LPC2148. לאחר מכן LPC2148 מתחיל לשלוח פקודות AT ל- ESP8266. אנו יכולים לראות את התגובה לכך במסוף המרק.
שלב 4: - כפי שניתן לראות בתמונה לעיל ה- ESP8266 מוגדר במצב 2 שהוא מצב AP והכתובת של APIP היא 192.168.4.1. שים לב לכתובת זו מכיוון שכתובת זו תקודד קשה בדף ה- HTML של דף האינטרנט כדי לשלוט על ה- LED המחובר ל- LPC2148.
חשוב : כאשר ESP8266 נמצא במצב AP, עליך לחבר את המחשב שלך ל- AP ESP8266. ראה את התמונה למטה המודול ESP8266 שלי מציג AP בשם ESP_06217B (הוא פתוח ואין לו סיסמה).
שלב 5: - לאחר חיבור המחשב ל- AP ESP8266, פתח פנקס רשימות והעתק והדבק את דף האינטרנט הבא של תוכנית ה- HTML. הקפד לשנות את כתובת ה- APIP בהתאם למודול ה- Wi-Fi ESP8266 שלך
ברוך הבא ל- Circuit Digest
ESP8266 ממשק עם LPC2148: יצירת שרת אינטרנט כדי לשלוט על נורית
נורית דולקת נורית כבויהבדף HTML זה, יצרנו שני כפתורי היפר-קישור להפעלה וכיבוי של ה- LED מדף האינטרנט.
לבסוף שמור את מסמך הפנקס כתוסף .html
דף האינטרנט יוצג כמטה בדפדפן האינטרנט.
כאן הכתובת היא כתובת ה- IP של ה- AP 192.168.4.1 ואנחנו שולחים את הערכים @ ו-% כדי להפעיל ולכבות את נורית ה- LED על ידי שימוש בהיגיון זה למטה ב- LPC2148.
ואילו (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; אם (COMMAND == LEDON) // לוגיקה להגדרת LED ON או OFF בהתאם לערך שהתקבל מ- ESP8266 { IOSET1 = (1 << 20); // קובע OUTPUT HIGH delay_ms (100); } אחרת אם (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // מגדיר OUTPUT LOW עיכוב_מס (100); } } }
כך ניתן לשלוט מרחוק על מכשיר באמצעות ESP8266 ו- ARM7 מיקרו-בקר LPC2148. הקוד המלא וסרטון ההסבר מופיע להלן.