- المواد المطلوبة:
- برمجة الميكروكونترولر PIC:
- وظائف مكتبة ESP8266:
- برنامج عينة:
- إخراج المحاكاة:
- التحقق من الإخراج:
- إضافة وظائف إلى مكتبة ESP8266:
في هذه المقالة ، دعنا نناقش كيفية واجهة وحدة WIFI ESP8266 مع متحكم PIC. حتى الآن ربما كنت تستخدم وحدة ESP8266 كوحدة تحكم دقيقة قائمة بذاتها أو ربما كنت تستخدمها مع مكتبة Arduino. ولكن عندما يتعلق الأمر بمشروعات الأنظمة المضمنة القوية ، يجب أن نعرف كيفية استخدامها مع ميكروكنترولر PIC أيضًا. سيساعدك هذا على تخصيص مشاريعك في منظور التصميم وفي نفس الوقت جعلها رخيصة أيضًا.
تأتي وحدات ESP8266 مع برنامج ثابت افتراضي يتم تحميله فيه ، ومن ثم يمكننا برمجة الوحدة باستخدام أوامر AT. يجب إرسال هذه الأوامر من خلال قناة اتصال تسلسلية. تم إنشاء هذه القناة بين PIC والوحدة النمطية ESP8266 باستخدام وحدة USART في وحدة التحكم الدقيقة PIC . ستتم مراقبة العمل بالكامل وإبلاغه للمستخدم باستخدام شاشة LCD مقاس 16 × 2. ومن ثم ، يفترض هذا البرنامج التعليمي أن لديك بعض المعرفة الأساسية حول وحدة USART في PIC ، وتفاعل LCD مع PIC واستخدام أوامر AT في ESP8266. إذا لم تقم بذلك ، فيمكنك الرجوع إلى البرامج التعليمية المرتبطة لتعلمها مسبقًا.
المواد المطلوبة:
ستحتاج إلى الأجهزة التالية لإكمال هذا البرنامج التعليمي
- PIC16F877A
- 20 ميجا هرتز الكريستال مذبذب
- 7805
- إل إم 317
- ESP8266
- شاشة عرض LCD مقاس 16 * 2
- مبرمج PicKit3
- المقاومات (1 كيلو ، 220 أوم ، 360 أوم)
- المكثفات (1 فائق التوهج ، 0.1 فائق التوهج ، 33 درجة فهرنهايت)
- أسلاك توصيل
- محول 12 فولت لتشغيل وحدة PIC و ESP
المعدات:
يظهر المخطط الكامل للمشروع هنا أدناه
تتكون المخططات من دائرتين منظمتين للجهد ، أحدهما منظم + 5 فولت يستخدم لتشغيل متحكم PIC والآخر عبارة عن منظم 3.3 فولت يعمل على تشغيل وحدة ESP8266. يتم تنظيم + 5V باستخدام 7805 (منظم الجهد الخطي IC). يتم تنظيم 3.3 فولت باستخدام LM317 (منظم الجهد المتغير). تستهلك الوحدة النمطية ESP8266 قدرًا كبيرًا من التيار (800 مللي أمبير تقريبًا) وبالتالي إذا كنت تقوم بتصميم مزود الطاقة الخاص بك ، فتأكد من أنه يمكن أن يكون مصدر مثل هذا التيار العالي. تأكد أيضًا من توصيل المسامير الأرضية للموافقة المسبقة عن علم ووحدة ESP8266 معًا.
نحن نعلم الآن أن PIC تعمل على + 5V وأن ESP8266 تعمل عند 3.3 فولت فولت. من أجل إنشاء اتصال USART بين هاتين الوحدتين ، نحتاج إلى دارة محول منطقي 5V - 3.3V كما هو موضح في الشكل أعلاه. هذه الدائرة ليست سوى مقسم محتمل يقوم ببساطة بتحويل الوارد + 5V إلى 3.3V. سيمنع هذا دبوس RX المسموح به 3.3 فولت من ESP8266 من الحصول على + 5 فولت.
لقد صنعت وحدتي PIC و ESP على لوحين أداء منفصلين ، كما هو موضح في هذه الدروس. بهذه الطريقة يمكنني استخدامها عالميًا لمزيد من المشاريع المماثلة
- أجهزة LED باستخدام PIC
- الشروع في العمل مع ESP8266
يمكنك اتباع نفس الشيء ، أو بناء لوحتك الخاصة بأسلوبك أو ببساطة توصيل الدائرة أعلاه بلوحة توصيل.
برمجة الميكروكونترولر PIC:
من أجل برمجة وحدة التحكم الدقيقة PIC لإرسال "أوامر AT" بشكل متسلسل باستخدام USART إلى وحدة ESP8266 ، يتعين علينا استخدام مكتبة. ستوفر لك هذه المكتبة الكثير من المتاعب ، مثل استخدام وحدات التعليمات ESP8266 للتحقق من كل أمر AT ثم إيجاد طريقة لنقلها إلى وحدة ESP. هذه المكتبة عبارة عن برنامج مجاني تم تطويره في الأصل بواسطة Camil Staps وبعد ذلك تم تحسينه وتعديله بواسطة Circuit Digest بحيث يمكن استخدامه مع متحكم PIC16F877A الخاص بنا. يمكنك تحميله من هنا
لا تزال المكتبة قيد التطوير ، ولكن يمكنك استخدام معظم أوامر AT المهمة في البرنامج الثابت ESP8266. إذا وجدت أن أيًا من الأوامر التي تحتاجها مفقود ، فأخبرني بذلك في قسم التعليقات وسأحاول إضافته لك. سيشرح لك هذا البرنامج التعليمي جميع الأوامر (حتى الآن) التي يمكن استخدامها من خلال هذه المكتبة. علاوة على ذلك ، سيرشدك أيضًا إلى إضافة وظائفك الخاصة إلى المكتبة.
وظائف مكتبة ESP8266:
- Initialize_ESP8266 (): ستقوم هذه الوظيفة بتهيئة وحدة USART الخاصة بالموافقة المسبقة عن علم للتواصل مع الوحدة النمطية ESP8266. يقوم بتعيين معدل البث بالباود عند 115200 وإعداد دبوس Rx و Tx الخاص بالموافقة المسبقة عن علم للاتصال 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" وينتظر "موافق" إذا تم استلامه فإنه يعود صحيحًا وإلا فإنه يعيد القيمة false.
- esp8266_restart (): يعيد تعيين الوحدة النمطية ESP8266 ويعيد القيمة true ، ويعيد القيمة false إذا لم ينجح.
- esp8266_mode (): يستخدم لضبط وضع العمل لوحدة ESP8266. كما نعلم يمكن أن تعمل في ثلاثة أوضاع مختلفة.
وضع المحطة |
|
نمط برمجي |
|
كل من وضع المحطة و AP |
- esp8266_connect (): يسمح لك بالاتصال بإشارة wifi. على سبيل المثال ، esp8266_connect ("home"، "12345678") ، سيسمح للوحدة الخاصة بك بالاتصال بإشارة wifi المسماة home وكلمة المرور الخاصة بها هي 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 ("office"، "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 غير موجود") ؛ } while (! esp8266_isStarted ()) ؛ // انتظر حتى يرسل ESP "موافق" Lcd_Set_Cursor (1،1) ؛ Lcd_Print_String ("ESP متصل") ؛ __delay_ms (1500) ؛ Lcd_Clear () ،
عندما نرسل "AT" إلى وحدة ESP8266 ، يتم الرد بـ "OK". هذا يضمن لنا توصيل وحدة ESP8266 بنجاح. يتم استخدام الوظيفة esp8266_isStarted () لنفس الغرض. نرسل الإشارة AT من الموافقة المسبقة عن علم وننتظر حتى تصبح وحدة ESP على قيد الحياة وترسل لنا موافقًا. إذا حصلنا على موافق ، فإننا نعرض أن "ESP متصل" على شاشة LCD.
esp8266_mode (2) ، Lcd_Set_Cursor (1،1) ، Lcd_Print_String ("تعيين ESP كـ AP") ؛ __delay_ms (1500) ؛ Lcd_Clear () ،
تُستخدم أسطر التعليمات البرمجية أعلاه لتعيين وحدة ESP للعمل في وضع "soft AP". الوظيفة esp8266_mode (2) ؛ يرسل أوامر AT "AT + CWMODE = 3" إلى الوحدة النمطية وينتظر استجابة الوحدة بـ "OK"
/ * تكوين اسم AP وكلمة المرور * / esp8266_config_softAP ("CircuitDigest"، "619007123") ؛ Lcd_Set_Cursor (1،1) ، Lcd_Print_String ("AP مكون") ؛ __delay_ms (1500) ؛ Lcd_Clear () ، / * تكوين AP * /
يتم استخدام هذا الجزء من الكود لتكوين softAP. هنا قمنا بتسمية SSID باسم "CircuitDigest" وكلمة المرور باسم "619007123". للإشارة إلى أن العملية قد اكتملت ، سننتظر حتى تستجيب الوحدة بـ "موافق" ثم نطبع نقطة الوصول التي تم تكوينها على شاشة LCD.
هذا هو الآن قمنا بتوصيل وحدة ESP8266 بوحدة PIC MCU وقمنا بتكوين softAP باسم وكلمة مرور من اختيارنا. كالعادة لنحاكي هذا الرمز ونرى كيف يعمل.
إخراج المحاكاة:
نحن نستخدم برنامج Proteus لمحاكاة الإخراج. يمكن العثور على ملف التصميم لنفسه في المرفق.
نظرًا لأننا لا نملك وحدة ESP8266 في مكتبة Proteus ، فقد استخدمنا المحطة التسلسلية ونرد مرة أخرى كمستخدم لوحدة PIC. ستبدو شاشة المحاكاة بمجرد اكتمالها كما يلي
يظهر إخراج الكود الخاص بنا في Virtual Terminal. سيتم شرح العمل الكامل للمحاكاة في الفيديو أدناه.
التحقق من الإخراج:
بمجرد التحقق من البرنامج باستخدام المحاكاة ، قم بتفريغه في وحدة التحكم الدقيقة 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" كوسيطات.
انطلق وحاول أن تجعل وظائفك الخاصة للمكتبة. ولكن إذا كنت بحاجة إلى مساعدة ، فيرجى عدم التردد في استخدام قسم التعليقات وسأساعدك.