- المكونات مطلوبة
- وحدة واي فاي ESP8266
- توصيل LPC2148 بـ ESP8266 للاتصال التسلسلي
- مخطط الدائرة والتوصيلات
- الخطوات المتبعة في برمجة UART0 في LPC2148 لربط ESP8266
- التحكم في LED باستخدام ESP8266 IoT Webserver مع LPC2148
يوفر جهاز الإرسال والاستقبال ESP8266 Wi-Fi طريقة لتوصيل متحكم دقيق بالشبكة. يستخدم على نطاق واسع في مشاريع إنترنت الأشياء لأنه رخيص وصغير وسهل الاستخدام. لقد استخدمناه سابقًا لإنشاء خادم ويب باستخدام خادم ويب Raspberry وخادم ويب Arduino.
في هذا البرنامج التعليمي ، سنقوم بربط وحدة ESP8266 Wi-Fi بوحدة التحكم الدقيقة ARM7-LPC2148 وإنشاء خادم ويب للتحكم في LED المتصل بـ LPC2148. سير العمل سوف تسير على النحو التالي:
- أرسل أوامر AT من LPC2148 إلى ESP8266 لتكوين ESP8266 في وضع AP
- قم بتوصيل الكمبيوتر المحمول أو الكمبيوتر بشبكة Wi-Fi بنقطة الوصول ESP8266
- قم بإنشاء صفحة ويب بتنسيق HTML في جهاز الكمبيوتر باستخدام عنوان IP الخاص بنقطة الوصول لخادم الويب ESP8266
- قم بإنشاء برنامج لـ LPC2148 للتحكم في LED وفقًا للقيمة المستلمة من ESP8266
إذا كنت جديدًا تمامًا على وحدة ESP8266 Wi-Fi ، فقم بزيارة الروابط أدناه للتعرف على وحدة Wi-Fi ESP8266.
- بدء استخدام جهاز الإرسال والاستقبال ESP8266 Wi-Fi (الجزء الأول)
- الشروع في استخدام ESP8266 (الجزء 2): استخدام أوامر AT
- الشروع في العمل مع ESP8266 (الجزء 3): برمجة ESP8266 باستخدام Arduino IDE ووميض ذاكرته
المكونات مطلوبة
المعدات:
- ARM7-LPC2148
- وحدة واي فاي ESP8266
- FTDI (USB إلى UART TTL)
- يؤدى
- 3.3 فولت الجهد المنظم IC
- اللوح
البرمجيات:
- كيل uVision
- أداة فلاش ماجيك
- المعجون
وحدة واي فاي 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 فولت)
إعداد لوحة الدائرة ESP8266
يتطلب ESP8266 إمدادًا ثابتًا يبلغ 3.3 فولت وهو ليس صديقًا للوح. لذلك في البرنامج التعليمي السابق الخاص بنا على ESP8266 ، صنعنا لوحة دوائر كهربائية لـ ESP8266 مع منظم جهد 3.3 فولت وزر ضغط إعادة الضبط وإعداد العبور لأوضاع التبديل (أمر AT أو وضع الفلاش). يمكن أيضًا إعداده على لوح التجارب دون استخدام لوحة الأداء.
لقد قمنا هنا بلحام جميع المكونات الموجودة على اللوح لصنع لوحة Wi-Fi ESP8266 الخاصة بنا
تعلم كيفية ربط ESP8266 بمختلف المتحكمات الدقيقة باتباع الروابط التالية:
- الشروع في العمل مع ESP8266 (الجزء 3): برمجة ESP8266 باستخدام Arduino IDE ووميض ذاكرته
- توصيل ESP8266 بـ STM32F103C8: إنشاء خادم ويب
- إرسال بريد إلكتروني باستخدام MSP430 Launchpad و ESP8266
- التواصل مع ESP8266 مع متحكم PIC16F877A
- مراقبة القمامة القائمة على IOT باستخدام Arduino و ESP8266
يمكن العثور على جميع المشاريع القائمة على ESP8266 هنا.
توصيل LPC2148 بـ ESP8266 للاتصال التسلسلي
من أجل الواجهة ESP8266 مع LPC2148 ، يجب علينا إنشاء اتصال تسلسلي UART بين هذين الجهازين لإرسال أوامر AT من LPC2148 إلى ESP8266 لتكوين وحدة ESP8266 Wi-Fi. لمعرفة المزيد حول أوامر ESP8266 AT ، اتبع الرابط.
لذلك من أجل استخدام اتصال UART في LPC2148 ، نحتاج إلى تهيئة منفذ UART في LPC2148. يحتوي LPC2148 على منفذي UART مدمجين (UART0 و UART1).
دبابيس UART في LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
ص 0.1 |
UART1 |
P0.8 |
ص 0.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 |
مقسوم مزلاج MSB |
قيمة مولد معدل الباود MSB من UART |
UxIER |
المقاطعة تمكين التسجيل |
يتم استخدامه لتمكين مصادر المقاطعة UART0 أو UART1 |
UxIIR |
سجل المقاطعة |
يحتوي على رمز الحالة الذي له الأولوية ومصدر المقاطعات المعلقة |
مخطط الدائرة والتوصيلات
يتم عرض الروابط بين LPC2148 و ESP8266 و FTDI أدناه
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
تكساس |
RX |
يتم تشغيل ESP8266 عبر منظم جهد 3.3 فولت ويتم تشغيل FTDI & LPC2148 من USB.
لماذا الاستثمار الأجنبي المباشر هنا؟في هذا البرنامج التعليمي ، قمنا بتوصيل دبوس RX الخاص بـ FTDI (USB إلى UART TTL) بدبوس ESP8266 TX المتصل أيضًا بـ LPC2148 RX pin ، حتى نتمكن من رؤية استجابة وحدة ESP8266 باستخدام أي برنامج طرفي مثل المعجون ، Arduino IDE. ولكن من أجل ذلك ، قم بتعيين معدل الباود وفقًا لمعدل الباود لوحدة Wi-Fi ESP8266. (معدل الباود الخاص بي هو 9600).
الخطوات المتبعة في برمجة UART0 في LPC2148 لربط ESP8266
فيما يلي خطوات البرمجة لتوصيل ESP8266 بـ LPC2148 مما يجعلها متوافقة مع إنترنت الأشياء.
الخطوة 1: - نحتاج أولاً إلى تهيئة دبابيس UART0 TX & RX في سجل PINSEL0.
(P0.0 مثل TX و P0.1 مثل RX) PINSEL0 = PINSEL0 - 0x00000005 ؛
الخطوة 2: - بعد ذلك في U0LCR (سجل التحكم في الخط) ، اضبط DLAB (بت الوصول إلى مزلاج المقسوم) على 1 لأنه يتيح لهم ثم قم بتعيين عدد بتات التوقف على 1 وطول إطار البيانات 8 بت.
U0LCR = 0x83 ؛
الخطوة 3: - الخطوة المهمة الآن التي يجب ملاحظتها هي تعيين قيم U0DLL & U0DLM اعتمادًا على قيمة PCLK ومعدل البث بالباود المطلوب. عادة بالنسبة لـ ESP8266 نستخدم معدل الباود 9600. لذلك دعونا نرى كيفية تعيين معدل الباود 9600 لـ UART0.
صيغة حساب معدل البث بالباود:
أين،
PLCK: تردد الساعة المحيطية (ميجاهرتز)
U0DLM ، U0DLL: سجلات مقسم مولد معدل الباود
MULVAL ، DIVADDVAL: هذه السجلات هي قيم منشئ الكسور
لمعدل الباود 9600 مع PCLK = 15 ميجا هرتز
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 وانتظر حتى يتم إرسال البايت ، وهو ما يشير إليه THRE ليصبح مرتفعًا.
UART0_TxChar باطل (char ch) { U0THR = ch ؛ بينما ((U0LSR & 0x40) == 0) ؛ }
الخطوة 6: - لإرسال سلسلة ، يتم استخدام الوظيفة أدناه. لإرسال بيانات سلسلة واحدة تلو الأخرى ، استخدمنا وظيفة الأحرف من الخطوة أعلاه.
باطل UART0_SendString (char * str) { uint8_t i = 0 ؛ بينما (str! = '\ 0') { UART0_TxChar (str) ؛ أنا ++ ؛ } }
الخطوة 7: لاستلام سلسلة ، يتم استخدام وظيفة روتينية خدمة المقاطعة هنا لأن وحدة ESP8266 Wi-Fi سترسل البيانات مرة أخرى إلى دبوس RX الخاص بـ LPC2148 كلما أرسلنا أمر AT أو كلما أرسل ESP8266 بيانات إلى LPC2148 ، كما نرسل البيانات إلى خادم ويب ESP8266.
مثال: عندما نرسل أمر AT إلى ESP8266 من LPC2148 ("AT \ r \ n") ، نحصل على رد "موافق" من وحدة Wi-Fi.
لذلك نستخدم مقاطعة هنا للتحقق من القيمة المستلمة من وحدة ESP8266 Wi-Fi نظرًا لأن روتين خدمة مقاطعة ISR له الأولوية القصوى.
لذلك عندما يرسل ESP8266 بيانات إلى طرف RX الخاص بـ LPC2148 ، يتم تعيين المقاطعة ويتم تنفيذ وظيفة ISR.
خطوة 8: - ل تمكين المقاطعات لUART0 ، استخدام التعليمات البرمجية التالية
و VICintEnable وتنقلها المقاطعة تمكين بالتسجيل تستخدم لتمكين المقاطعة لUART0.
VICIntEnable - = (1 << 6) ؛
و VICVecCnt10 وتنقلها المقاطعة السجل التحكم التي يخصص فتحة لUART0.
VICVectCntl0 = (1 << 5) - 6 ؛
بعد ذلك ، يكون VICVectaddr0 هو سجل عنوان المقاطعة الموجهة الذي يحتوي على عنوان ISR الروتيني لخدمة المقاطعة.
VICVectAddr0 = (غير موقع) UART0_ISR ،
ثم يتعين علينا تعيين المقاطعة لتسجيل المخزن المؤقت لتلقي RBR. لذلك في Interrupt تمكين التسجيل (U0IER) قمنا بتعيين RBR. لذلك يتم استدعاء روتين خدمة المقاطعة (ISR) عندما نتلقى البيانات.
U0IER = IER_RBR ،
أخيرًا ، لدينا وظيفة ISR التي تحتاج إلى القيام بمهمة معينة عندما نتلقى بيانات من وحدة ESP8266 Wi-Fi. هنا قرأنا للتو القيمة المستلمة من ESP8266 الموجودة في U0RBR وقمنا بتخزين هذه القيمة في UART0_BUFFER. أخيرًا في نهاية ISR ، يجب تعيين VICVectAddr بقيمة صفر أو قيمة وهمية.
باطل UART0_ISR () __irq { unsigned char 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") ؛ delay_ms (3000) ؛
2. يرسل AT + CWMODE = 2 (إعداد ESP8266 في وضع AP).
UART0_SendString ("AT + CWMODE = 2 \ r \ n") ؛ delay_ms (3000) ؛
3. يرسل AT + CIFSR (للحصول على IP الخاص بـ AP)
UART0_SendString ("AT + CIFSR \ r \ n") ؛ delay_ms (3000) ؛
4. يرسل AT + CIPMUX = 1 (للاتصالات المتعددة)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n") ؛ delay_ms (3000) ؛
5. يرسل AT + CIPSERVER = 1،80 (لتمكين خادم ESP8266 بمنفذ مفتوح)
UART0_SendString ("AT + CIPSERVER = 1،80 \ r \ n") ؛ delay_ms (3000) ؛
برمجة وتفليش ملف سداسي عشري إلى LPC2148
لبرمجة ARM7-LPC2148 نحتاج إلى أداة keil uVision & Flash Magic. يتم استخدام كبل USB هنا لبرمجة ARM7 Stick عبر منفذ USB الصغير. نكتب رمزًا باستخدام Keil وننشئ ملفًا سداسيًا ثم يتم وميض ملف HEX إلى ARM7 باستخدام Flash Magic. لمعرفة المزيد حول تثبيت keil uVision و Flash Magic وكيفية استخدامهما ، اتبع الرابط Getting Started with ARM7 LPC2148 Microcontroller وبرمجته باستخدام Keil uVision.
يتم تقديم البرنامج الكامل في نهاية البرنامج التعليمي.
ملاحظة: أثناء تحميل ملف HEX إلى LPC2148 ، يجب ألا تقوم بتشغيل وحدة ESP8266 Wi-Fi ووحدة FTDI المتصلة بـ LPC2148.
التحكم في LED باستخدام ESP8266 IoT Webserver مع LPC2148
الخطوة 1: - بعد تحميل ملف HEX إلى LPC2148 ، قم بتوصيل وحدة FTDI بجهاز الكمبيوتر عبر كابل USB وافتح برنامج المعجون.
حدد Serial ثم حدد منفذ COM وفقًا لجهاز الكمبيوتر الخاص بك أو كان LAPTOP منجم (COM3). معدل الباود 9600.
الخطوة 2: - الآن أعد تعيين وحدة ESP8266 Wi-Fi أو فقط POWER OFF و POWER ON عليها مرة أخرى ، ستظهر محطة المعجون استجابة وحدة ESP8266 Wi-Fi كما هو موضح أدناه.
الخطوة 3: - الآن اضغط على زر RESET في LPC2148. بعد ذلك يبدأ LPC2148 في إرسال أوامر AT إلى ESP8266. يمكننا أن نرى استجابة ذلك في طرف المعجون.
الخطوة 4: - كما ترى في الصورة أعلاه ، تم تعيين ESP8266 في MODE 2 وهو وضع AP وعنوان APIP هو 192.168.4.1. لاحظ هذا العنوان لأن هذا العنوان سيتم ترميزه بشكل ثابت في كود HTML لصفحة الويب للتحكم في LED المتصل بـ LPC2148.
هام : عندما يكون ESP8266 في وضع AP ، يجب عليك توصيل جهاز الكمبيوتر الخاص بك بـ ESP8266 AP. انظر الصورة أدناه تعرض وحدة ESP8266 الخاصة بي AP باسم ESP_06217B (وهي مفتوحة ولا تحتوي على كلمة مرور).
الخطوة 5: - بعد توصيل الكمبيوتر بـ ESP8266 AP ، افتح المفكرة وانسخ والصق صفحة الويب لبرنامج HTML التالية. تأكد من تغيير عنوان APIP وفقًا لوحدة Wi-Fi ESP8266
مرحبًا بكم في Circuit Digest
ESP8266 التواصل مع LPC2148: تكوين خادم ويب للتحكم في LED
LED ON LED OFFفي صفحة HTML هذه ، أنشأنا زرين مرتبطين تشعبيًا لتشغيل وإيقاف تشغيل LED من صفحة الويب.
وأخيرا حفظ المستند المفكرة كما أتش تي أم أل تمديد
سيتم عرض صفحة الويب على النحو التالي في متصفح الويب.
هنا العنوان هو عنوان 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) ؛ } else if (COMMAND == LEDOFF) { IOCLR1 = (1 << 20) ؛ // يعين OUTPUT LOW delay_ms (100) ؛ } } }
هذه هي الطريقة التي يمكن بها التحكم في الجهاز عن بعد باستخدام متحكم ESP8266 و ARM7 LPC2148. ويرد أدناه رمز كامل وشرح الفيديو.