يمكن لأجهزة إنترنت الأشياء أن تفعل أشياء رائعة ، لكن جزءًا أساسيًا من المعادلة هو كيفية تواصلها. يمكنك إدارة ذلك باستخدام وحدة ESP-01.

لا يعني الاعتماد على الميزانية بالضرورة أنه لا يمكنك تولي مشروعات "اصنع بنفسك" متقدمة. إذا كنت تبحث عن وحدة WiFi صغيرة وبأسعار معقولة ومريحة لتوسيع نطاق مشاريع إنترنت الأشياء الخاصة بك ، فإن وحدة ESP-01 تعد خيارًا رائعًا. ومع ذلك ، قد يكون دمج مثل هذه الوحدة مع بروتوكول خفيف الوزن مثل MQTT أمرًا صعبًا ، خاصة إذا كنت جديدًا في تطوير إنترنت الأشياء.

يمكن أن تكون برمجة لوحة ESP-01 وحدها صعبة مقارنة بالوحدات النمطية الأخرى لسلسلة ESP8266. لكن دعنا ننتقل إلى أساسيات جميع إعدادات الأجهزة والبرامج التي تحتاجها لبدء استخدام الوحدة وكذلك كيفية إعداد MQTT بطريقة بسيطة وإجرائية.

التعرف على مجلس الإدارة

ESP8266 ESP-01 عبارة عن وحدة WiFi صغيرة ومدمجة تأتي مع شريحة ESP8266EX ، وهي عبارة عن شريحة متكاملة للغاية مصممة لتطبيقات إنترنت الأشياء.

تتضمن الوحدة متحكمًا لاسلكيًا أحادي الشريحة مزودًا بمكدس بروتوكول TCP / IP وقادر على الاتصال بشبكة لاسلكية أو العمل كنقطة وصول. تتميز الوحدة النمطية ESP-01 أيضًا برأس 2x4 الذي يوفر الوصول إلى دبابيس GPIO والطاقة والأرض وواجهة UART.

instagram viewer

إعداد الأجهزة

الوحدة ليست صديقة للوح على الإطلاق. للراحة ، يمكنك شراء لوحة تمديد مسبقة الصنع أو مجرد اتباع الطريقة القديمة - باستخدام أسلاك التوصيل ولوح التجارب.

يوجد مبرمج مخصص ، ESP8266 Serial Module Board ، يمكنه تسهيل تجربة البرمجة الخاصة بك. إذا كنت تفضل السير في هذا الطريق ، DIYHOBI لديه برنامج تعليمي مفيد حول كيفية وميض برنامج في وحدة ESP-01 باستخدام مبرمج (بما في ذلك USB إلى TTL CH340G Converter Module Adapter).

ولكن ، لا يزال بإمكانك برمجة الوحدة باستخدام لوحة Arduino. انظر إلى مخطط الدائرة أدناه للرجوع إليها.

على الرغم من أنه قد يبدو مغريًا ، إلا أننا لا نوصي عمومًا بتوصيل الوحدة مباشرة بدبوس 3.3 فولت في Arduino نظرًا لأنه يتطلب تيارًا أكثر مما يوفره الدبوس. بدلاً من ذلك ، قم بتوصيل Arduino 5 فولت إلى منظم جهد 3.3 فولت مثل LM1117 / LD117 ، ثم قم بتشغيل وحدة WiFi من المنظم.

لا تقم بتوصيل VCC و CH_PD دبابيس ESP إلى 5 فولت دبوس اردوينو. توصيل الوحدة بـ 5 فولت يمكن أن تتلفها الطاقة.

جميع المكثفات 10 فائق التوهج والمقاوم أ 1 ك المقاوم.

متطلبات البرنامج

تُستخدم الوحدة النمطية ESP-01 بشكل شائع مع منصة Arduino. على هذا النحو ، يعد إعداد البرنامج أمرًا بسيطًا جدًا ، خاصة إذا كنت معتادًا على Arduino C. ومع ذلك ، إذا كنت معتادًا على Raspberry ، فهناك الكثير منها مشاريع Raspberry Pi IoT يمكنك المحاولة.

هذه هي المتطلبات الأساسية:

  • وسيط أو خادم MQTT (مثل Mosquitto أو CloudMQTT).
  • اردوينو IDE مع مكتبة ESP8266 الأساسية.
  • مكتبة PubSubClient لاردوينو.

عليك أن تتذكر أن امتلاك خادم MQTT محليًا يمنحك المرونة في مشروعاتك.

تركيب المكتبات اللازمة

أولاً ، قم بتنزيل وتثبيت Arduino IDE على جهاز الكمبيوتر الخاص بك. بمجرد التثبيت ، افتح Arduino IDE ، وانتقل إلى ملف > التفضيلات.

في ال عناوين URL إضافية لمدير اللوحات ، أدخل عنوان URL التالي:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

انقر نعم لإغلاق نافذة التفضيلات.

بعد ذلك ، انتقل إلى أدوات > سبورة > مدير المجالس.

ثم ابحث عن esp8266 وقم بتثبيت حزمة اللوحة esp8266 - وهذا يشمل جميع المكتبات الضرورية لوحدة ESP-01.

لتثبيت مكتبة PubSubClient ، انتقل إلى رسم > تضمين المكتبة > إدارة المكتبات.

بحث عن PubSubClient واضغط على المكتبة لتثبيتها.

بمجرد تثبيت جميع المكتبات اللازمة ، يمكنك البدء في برمجة وحدة ESP-01. هناك شيء واحد يجب ملاحظته ، وهو أنه يمكنك استخدام ملف واي فاي الذي تم تضمينه في المكتبة ، أو قم بتنزيل ملف ESPWifi.h مكتبة وقم بتضمينها في الرسم التخطيطي الخاص بك.

إنشاء اتصال بين ESP-01 و MQTT Broker

وسيط MQTT هو خادم يعمل كوسيط بين عملاء MQTT. يسمح للعملاء بإرسال واستقبال الرسائل من وإلى بعضهم البعض من خلال نموذج اشتراك للنشر.

لتوصيل وحدة ESP-01 الخاصة بك بوسيط MQTT ، ستحتاج إلى تحديد عنوان IP للوسيط ورقم المنفذ في التعليمات البرمجية الخاصة بك. ستحتاج أيضًا إلى تقديم معرف عميل فريد يحدد وحدة ESP-01 الخاصة بك إلى الوسيط.

أولاً ، قم بتضمين المكتبات الضرورية في الجزء العلوي من الرسم التخطيطي الخاص بك

#يشمل <واي فاي.h>
#يشمل <PubSubClient.h>

بعد ذلك ، حدد تفاصيل اتصال WiFi و MQTT.

مقدار ثابتشار* SSID = "YOUR_SSID";
مقدار ثابتشار* كلمة المرور = "كلمة السر خاصتك";
مقدار ثابتشار* mqtt_server = "YOUR_MQTT_SERVER";

لا تنس استبدال العناصر النائبة بتفاصيل اتصال WiFi و MQTT الخاصة بك.

بعد ذلك ، قم بإنشاء عميل WiFi واتصل بشبكة WiFi المحلية الخاصة بك:

WiFiClient espClient ؛
فارغsetup_wifi(){
تأخير (10) ؛
WiFi.begin (ssid ، كلمة المرور);
بينما (WiFi.status ()! = WL_CONNECTED) {
تأخير (500) ؛
}
}

يجب استدعاء هذه الوظيفة في ملف يثبت() وظيفة الرسم الخاص بك.

بعد ذلك ، ستحتاج إلى إنشاء عميل MQTT والاتصال بوسيط MQTT الخاص بك:

PubSubClient عميل(espClient);
فارغأعد الاتصال(){
بينما (! client.connected ()) {
لو (client.connect ("ESP01"، mqtt_user، mqtt_password)) {
// اشترك في موضوع
client.subscribe ("اختبار / موضوع");
} آخر {
تأخير (5000) ؛
}
}
}

بمجرد الاتصال بوسيط MQTT الخاص بك ، يمكنك البدء في النشر والاشتراك في الموضوعات.

نشر البيانات من ESP-01 إلى وسيط MQTT

الآن بعد أن نجحت في توصيل وحدة ESP01 الخاصة بك إلى وسيط MQTT ، فلنلقِ نظرة على كيفية نشر البيانات من ESP-01 إلى الوسيط.

لنشر البيانات ، استخدم ملف client.publish () وظيفة لنشر رسالة إلى inTopic عنوان.

client.publish ("inTopic", "مرحبًا من ESP-01");

سيؤدي هذا إلى نشر الرسالة "Hello from ESP-01" إلى inTopic عنوان.

يمكنك أيضًا نشر بيانات المستشعر من ESP-01 إلى الوسيط. على سبيل المثال ، إذا كان لديك مستشعر درجة حرارة متصل بـ ESP-01 ، فيمكنك نشر بيانات درجة الحرارة إلى الوسيط كما هو موضح أدناه.

يطفو درجة الحرارة = 25.5;
خيط سلسلة الحرارة = خيط(درجة حرارة)؛
شار temperatureChar [5];
درجة الحرارة.toCharArray(درجة الحرارة, 5);
client.publish ("درجة حرارة"، temperatureChar) ؛

سيؤدي هذا إلى نشر بيانات درجة الحرارة إلى درجة حرارة عنوان.

يمكن نشر البيانات في حلقة أو على فترات منتظمة ، حسب متطلبات مشروعك. تأكد من أنك لا تغمر الوسيط بالكثير من البيانات وأنك تقوم بالنشر في فترة زمنية معقولة.

الاشتراك في موضوعات MQTT وتلقي البيانات على ESP-01

للاشتراك في موضوع ، استخدم client.subscribe () وظيفة. بالنسبة لحالتنا أدناه ، يشترك العميل في خارج الموضوع عنوان.

client.subscribe ("خارج الموضوع");

بمجرد اشتراكك في موضوع ما ، يمكنك تلقي الرسائل المنشورة على هذا الموضوع باستخدام client.loop () تعمل في حلقة() تعمل في الرسم أدناه:

فارغحلقة(){
لو (!عميل.connected()) {
إعادة الاتصال () ؛
}
عميل.حلقة();
}

سيؤدي هذا إلى البحث باستمرار عن الرسائل الجديدة وتنفيذ وظيفة رد الاتصال عند استلام رسالة جديدة.

للتعامل مع الرسائل المستلمة ، حدد وظيفة رد الاتصال مثل تلك الموضحة أدناه:

فارغأتصل مرة أخرى(شار* عنوان، بايت* الحمولة غير الموقعة int طول){
// طباعة الرسالة المستلمة
مسلسل.مطبعة("تم تلقي رسالة حول الموضوع:");
مسلسل.مطبعة(عنوان)؛
مسلسل.مطبعة(". رسالة: ");
ل (int أنا =0؛أنامسلسل.مطبعة((شار)الحمولة[أنا]);
}
مسلسل.println();
}

سيتم استدعاء هذه الوظيفة عند تلقي رسالة جديدة حول الموضوع المشترك. ستقوم بطباعة الرسالة المستلمة إلى Serial Monitor.

استخدام مستويات QoS (جودة الخدمة) وميزات الأمان

من أهم التقنيات المستخدمة في معالجة الطلبات استخدام مستويات جودة الخدمة (QoS) لرسائل MQTT الخاصة بك. تحدد مستويات QoS كيفية تعامل الوسيط والمشتركين مع رسائلك. هناك ثلاثة مستويات من جودة الخدمة: 0 و 1 و 2.

يعتبر مستوى جودة الخدمة 0 هو الأقل موثوقية ، حيث يتم إرسال الرسائل مرة واحدة فقط ولا يمكن ضمان تسليمها إلى المشترك. يعتبر مستوى QoS 1 أكثر موثوقية ، حيث يتم إرسال الرسائل مرة واحدة على الأقل ويتم ضمان تسليمها إلى المشترك مرة واحدة على الأقل. QoS المستوى 2 هو الأكثر موثوقية ، حيث يتم إرسال الرسائل مرة واحدة بالضبط ويتم ضمان تسليمها إلى المشترك مرة واحدة بالضبط. تتماشى الطريقة التي تتواصل بها أجهزتك مع الأجهزة الأخرى مشكلات أمان إنترنت الأشياء (IoT) الشائعة والإصلاحات تريد البقاء على رأس.

لاستخدام مستويات QoS ، يمكنك تحديد المستوى المطلوب عند نشر الرسائل باستخدام client.publish () وظيفة:

client.publish ("عنوان", "مرحبا بالعالم!", 1);

هذا سوف ينشر الرسالة مرحبا بالعالم! الى عنوان موضوع بمستوى جودة الخدمة 1.

هناك تقنية متقدمة أخرى تستخدم الوصية الأخيرة والوصية (LWT) رسائل. رسائل LWT هي الرسائل التي يرسلها الوسيط عند قطع اتصال العميل بشكل غير متوقع. نعتقد أن هذا مهم لاكتشاف الأجهزة غير المتصلة بالإنترنت أو لبدء الإجراءات عند قطع اتصال الجهاز.

لاستخدام رسائل LWT ، يمكنك تحديد رسالة LWT عند الاتصال بالوسيط باستخدام client.setWill () وظيفة:

client.setWill ("حالة", "غير متصل على الانترنت", 1, حقيقي);

سيؤدي هذا إلى تعيين رسالة LWT إلى غير متصل على الانترنت على ال حالة موضوع بجودة الخدمة من المستوى 1 وتعيين علامة الاحتفاظ على حقيقي.

استعد لمشروع إنترنت الأشياء التالي الخاص بك

تعتبر وحدة ESP-01 حلاً ميسور التكلفة ومدمجًا لمشاريع إنترنت الأشياء ، ويمكن أن يؤدي استخدامها مع MQTT إلى نقل مشروعك إلى المستوى التالي. على الرغم من أن الإعداد الأولي قد يكون شاقًا ، إلا أن مزايا MQTT ، مثل الاتصال الخفيف وقابلية التوسع العالية ، تجعله استثمارًا مفيدًا.