جدول المحتويات:
- الخطوة الأولى: إنشاء بيئة بناء
- الخطوة 2: الحصول على شفرة المصدر والتكوين والبناء
- الخطوة 3: قم بتوصيل مكونات الأجهزة
- الخطوة 4: Flash and Run
- الخطوة 5: التفاعل
- الخطوة 6: تفاصيل التنفيذ
فيديو: شريط واي فاي LED + مستشعر درجة الحرارة مع ESP8266: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
يصف هذا البرنامج التعليمي خطوات إعداد ESP8266 وجعله يتحدث إلى كل من مستشعر درجة الحرارة وشريط LED ، مع القدرة أيضًا على تلقي المدخلات وإرسال الإخراج باستخدام MQTT عبر WiFi. تم إعداد المشروع لدورة تم إجراؤها في Cal Poly San Luis Obispo في خريف 2016- CPE 439: Real Time Embedded Systems. كان الهدف العام هو إظهار سهولة إنشاء "شيء" متصل بالإنترنت باستخدام أجهزة رخيصة.
اللوازم / المعدات المطلوبة:
- لوحة تطوير NodeMCU ESP8266
- WS2812B شريط LED
- جهاز استشعار درجة الحرارة MAX31820
- اللوح
- 4.7 كيلو أوم المقاوم
- 220 أوم المقاوم
- أسلاك العبور
- كابل micro-usb
- كمبيوتر شخصي (أو جهاز افتراضي) يعمل بنظام التشغيل Linux (مثل Ubuntu)
الافتراضات / المتطلبات الأساسية:
- خبرة في استخدام أدوات سطر الأوامر وتثبيت الحزم على توزيعة قائمة على دبيان
- الفهم الأساسي لبناء جملة Makefile
- توصيل الأسلاك
الخطوة الأولى: إنشاء بيئة بناء
لإنشاء المشروع ، ستحتاج إلى تثبيت esp-open-sdk على جهازك. اتبع الرابط واقرأ تعليمات البناء. باختصار ، ستقوم ببعض أوامر sudo apt-get لتثبيت التبعيات ، واستنساخ git - متسلسل لاستنساخ / تنزيل esp-open-sdk ، وأخيراً أمر إنشاء لإنشاء esp-open-sdk.
راقبني
الخطوة 2: الحصول على شفرة المصدر والتكوين والبناء
الآن بعد أن تم بناء esp-open-sdk ، قم باستنساخ مستودع المشروع.
استنساخ بوابة
غيّر إلى دليل المشروع وأنشئ مجلدًا محليًا وانسخ إعدادات المثال.
cd esp-rtos- الاختبارات
mkdir -p. إعدادات cp المحلية. مثال. mk. محلي / إعدادات. mk
افتح الآن.local / settings.mk مع أي محرر نصوص وقم بتغيير الإعدادات التالية:
- OPENSDK_ROOT: المسار المطلق لموقع esp-open-sdk الذي أنشأته في الخطوة 1
- WIFI_SSID: معرف SSID لشبكة WiFi الخاصة بك
- WIFI_PASS: كلمة مرور شبكة WiFi الخاصة بك
- PIXEL_COUNT: عدد وحدات البكسل الموجودة على شريط WS2812B LED
ملاحظة: نظرًا لأن هذا المشروع يستخدم SPI لتشغيل مصابيح LED ويستخدم NodeMCU 3.3v لتزويدها ، فمن المحتمل أنك لن تتمكن من قيادة أكثر من 60 مصباح LED.
ملاحظة: لا يلزم تغيير الإعدادات الأخرى ، ولكن يمكن تغييرها إذا رغبت في ذلك. يوصى بالحفاظ على ترتيب أولويات المهمة. كلما انخفض رقم الأولوية ، قلت أولوية المهمة.
الآن قم ببناء المشروع:
صنع أمثلة C / cpe439
إذا تم إعداد كل شيء بشكل صحيح ، فيجب أن يبدأ التجميع. في النهاية يجب أن ترى:
تم بنجاح إنشاء "firmware / cpe439.bin"
راقبني
الخطوة 3: قم بتوصيل مكونات الأجهزة
الآن بعد أن تم تجميع الكود ، حان الوقت لتوصيل أجهزتنا الطرفية.
أولاً ، قم بلصق NodeMCU على اللوح ، ثم استخدم أسلاك التوصيل لإجراء التوصيلات كما هو موضح في الرسم التخطيطي.
هناك أمران يجب أن تكون على دراية بهما:
- هام: خط بيانات WS2812B ليس ثنائي الاتجاه. إذا نظرت عن كثب إلى العلامات الموجودة على جانب LED من الشريط ، يجب أن ترى أسهمًا صغيرة تشير إلى اتجاه واحد. يجب أن يتجه الإخراج من D7 الخاص بـ NodeMCU إلى WS2812B بنفس طريقة علامة الاتجاه ، والتي يمكنك رؤيتها في الرسم التخطيطي إذا نظرت عن كثب.
- اعتمادًا على نوع الموصلات التي يأتي معها WS2812B ، قد تحتاج إلى إجراء بعض التعديلات لجعلها متصلة بشكل آمن باللوحة. يمكنك أيضًا استخدام مقاطع التمساح لتوصيلها بكابلات توصيل قابلة للوحة توصيل الدوائر.
- تتميز دبابيس MAX31820 بمسافة أصغر وأرفع من وصلات العبور القياسية 0.1 بوصة / 2.54 مم ، مما يجعلها صعبة التوصيل. إحدى الطرق للتغلب على ذلك هي استخدام أسلاك توصيل من أنثى إلى ذكر ، وخلع العلبة البلاستيكية من الجانب الأنثوي ، ثم استخدم بعض الزردية لتجعيد نهايات العبور الأنثوي بإحكام حول دبابيس MAX31820 الأصغر.
تحقق جيدًا من التوصيلات قبل تشغيل NodeMCU حتى لا تتلف المكونات.
الخطوة 4: Flash and Run
وامض
مع توصيل جميع الأجهزة ، قم بتوصيل NodeMCU الخاص بك وفلاش باستخدام الأمر التالي:
عمل أمثلة فلاش -C / cpe439 ESPPORT = / dev / ttyUSB0
/ dev / ttyUSB0 هو com التسلسلي الذي يجب أن يظهر NodeMCU تحته. إذا كان لديك أجهزة تسلسلية أخرى متصلة ، فقد تظهر كـ / dev / ttyUSB1 أو بعض الأرقام الأخرى. للتحقق ، يمكنك تشغيل هذا الأمر مرتين ، مرة مع NodeMCU غير متصل ، ومرة مع توصيله ، وقارن الفرق:
ls / dev / ttyUSB *
هناك مشكلة أخرى قد تواجهها وهي عدم الحصول على إذن للوصول إلى الجهاز. طريقتان لإصلاح هذا:
-
أضف المستخدم الخاص بك إلى مجموعة الاتصال الهاتفي:
sudo adduser $ (whoami) الطلب الهاتفي
- chmod أو chown الجهاز:
sudo chmod 666 / dev / ttyUSB0 sudo chown $ (whoami): $ (whoami) / dev / ttyUSB0يفضل الأسلوب الأول لأنه حل دائم.
ادارة
بعد تشغيل أمر الفلاش بنجاح ، سيقوم الجهاز على الفور بالتمهيد والبدء في تشغيل الكود المترجم. في أي وقت بعد الوميض ، يمكنك تشغيل الأمر التالي لمشاهدة الإخراج التسلسلي:
python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q
لتوفير الوقت ، يمكنك إضافة هذا إلى ملف ~ /.bashrc الخاص بك:
الاسم المستعار nodemcu = 'python3 -m serial.tools.miniterm --eol CRLF --exit-char 003 / dev / ttyUSB0 500000 --raw -q'
.. الذي يسمح لك ببساطة بكتابة "nodemcu" كاسم مستعار لهذا الأمر.
إذا تم تكوين كل شيء بشكل صحيح ، يجب أن يضيء شريط LED باللون الأخضر ، وفي المسلسل سترى اتصال WiFi ، والحصول على عنوان IP ، والاتصال بـ MQTT ، والرسائل التي تفيد بأن بيانات درجة الحرارة يتم دفعها للخارج.
متصل بـ MyWiFiSSID ، يبدأ عميل القناة 1dhcp… wifi_task: الحالة = 1wifi_task: الحالة = 1ip: 192.168.2.23 ، القناع: 255.255.255.0 ، gw: 192.168.2.1ws2812_spi_init okRequest temp OKwifi_task: status = 5xQueueRece_tue: okwifi_task بدأ: (إعادة) الاتصال بخادم MQTT test.mosquitto.org… xQueueReceive + 25.50xQueueSend طيب تم إرسال MQTT connect… MQTTv311donexQueueReceive +25.56 xQueueSend طيب
الخطوة 5: التفاعل
بافتراض أن جهازك متصل بشبكة WiFi ووسيط MQTT بنجاح ، ستتمكن من إرسال واستقبال البيانات من NodeMCU باستخدام MQTT. إذا لم تكن قد قمت بذلك بالفعل ، فقم بتثبيت حزمة عملاء البعوض:
sudo apt-get install mosquitto-clients. تثبيت عملاء البعوض sudo apt-get install
يجب أن تكون الآن قادرًا على استخدام برامج mosquitto_pub و mosquitto_sub من صدفتك.
تلقي تحديثات درجة الحرارة
لتلقي بيانات درجة الحرارة ، سنرغب في استخدام الأمر mosquitto_sub للاشتراك في الموضوع الذي تنشره NodeMCU.
mosquitto_sub -h test.mosquitto.org -t / cpe439 / temp
يجب أن تشاهد بيانات درجة الحرارة (بالدرجة المئوية) عند وصولك إلى المحطة.
+25.87+25.93+25.68…
ضبط لون شريط LED عن بعد
يتم استخدام تنسيق رسالة بسيط لإرسال قيم RGB إلى NodeMCU عبر MQTT. يبدو تنسيق الأمر كما يلي:
r: RRRg: GGGb: BBB ~
حيث تتوافق RRR و GGG و BBB مع قيم RGB (0-255) للون الذي تريد إرساله. لإرسال أمرنا ، سنستخدم الأمر mosquitto_pub. وهنا بعض الأمثلة:
mosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 255g: 0b: 0 ~' # redmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m 'r: 0g: 255b: 0 ~ '# greenmosquitto_pub -h test.mosquitto.org -t / cpe439 / rgb -m' r: 0g: 0b: 255 ~ '# blue
إذا كنت تريد أن تكون مبدعًا ، فابحث عن منتقي ألوان عبر الإنترنت مثل هذا ، وقم بتحرير الأمر بأي قيمة RGB تختارها.
احذر
تم تعيين الموضوعات في هذا المشروع على / cpe439 / rgb و / cpe439 / temp على وسيط MQTT عام ، مما يعني أنه لا يوجد شيء يمنع أي شخص آخر من النشر أو الاشتراك في نفس الموضوعات مثلك. لتجربة الأشياء ، يعد استخدام وسيط عام أمرًا جيدًا ، ولكن بالنسبة للمشاريع الأكثر جدية ، سترغب في الاتصال بوسيط يتمتع بحماية كلمة المرور ، أو تشغيل وسيطك الخاص على الخادم.
الخطوة 6: تفاصيل التنفيذ
ون واير
يحتوي ESP8266 على نواة واحدة فقط ، طويلة جدًا ، تمنع المهام مثل الانتظار 750 مللي ثانية حتى يقوم مستشعر درجة الحرارة بأداء قياس درجة الحرارة ، مما يؤدي عادةً إلى عدم عمل WiFi بشكل جيد ، وربما حتى حدوث عطل. في نموذج FreeRTOS ، يمكنك استدعاء vTaskDelay () للتعامل مع فترات الانتظار الطويلة هذه ، ولكن هناك أيضًا العديد من فترات الانتظار الأقصر المطلوبة بين عمليات القراءة والكتابة التي تكون أقصر من علامة نظام FreeRTOS ، وبالتالي لا يمكن تجنبها باستخدام vTaskDelay (). للتغلب على هذه المشكلات أيضًا ، تمت كتابة برنامج التشغيل onewire في هذا المشروع للتشغيل من آلة الحالة التي يتم تشغيلها بواسطة مؤقت الأجهزة الخاص بـ ESP8266 ، والذي يمكن أن يؤدي إلى أحداث منخفضة تصل إلى كل 10 ثوانٍ دقيقة ، والتي تصادف أنها الأقصر الوقت المطلوب بين عمليات القراءة / الكتابة في onewire. تستخدم معظم التطبيقات الأخرى استدعاء حظر لـ delay_us () أو ما شابه للتعامل مع هذا ، ولكن إذا كنت تجري تحديثات درجة الحرارة باستمرار ، فإن كل هذه التأخيرات تبدأ في الزيادة ، مما يؤدي إلى تطبيق أقل استجابة. يوجد مصدر هذا الجزء من التعليمات البرمجية في مجلد extras / onewire.
WS2812B
لا يحتوي ESP8266 على أي خيارات أجهزة قياسية لـ PWM بسرعة كافية لدفع شرائط LED عند 800 كيلو هرتز. للتغلب على هذا ، يستخدم هذا المشروع دبوس SPI MOSI لقيادة مصابيح LED. من خلال ضبط معدل ساعة SPI ، وتغيير حمولة SPI حولها ، يمكنك تحقيق تحكم موثوق به إلى حد ما لكل مصباح LED فردي. هذه الطريقة لا تخلو من العيوب - لأحدها يجب أن يتم تشغيل مصابيح LED بمصدر 5 فولت ويجب إضافة محول مستوى إلى إخراج دبوس SPI. لكن 3.3V يعمل. ثانيًا ، هناك مواطن الخلل التي تحدث بسبب عدم دقة التوقيت باستخدام طريقة SPI. والثالث هو أنه لا يمكنك الآن استخدام SPI لأي شيء آخر. يمكن العثور على خلفية إضافية عن هذه الطريقة هنا ، ومصدر هذا الجزء من الكود موجود في مجلد extras / ws2812.
طريقة أكثر موثوقية لقيادة شرائط LED هي استخدام i2s. ومع ذلك ، تحتوي هذه الطريقة على الكثير من الاختراقات الخاصة بالشرائح ، لذلك بدا أن SPI هو الخيار الأفضل كتمرين تعليمي.
موصى به:
واجهة مستشعر درجة الحرارة DS18B20 مع Arduino و ESP8266: 8 خطوات
واجهة مستشعر درجة الحرارة DS18B20 مع Arduino و ESP8266: مرحبًا ، ما الأمر ، يا رفاق! Akarsh هنا من CETech. اليوم سنضيف مستشعرًا جديدًا إلى ترسانتنا يعرف باسم مستشعر درجة الحرارة DS18B20. إنه مستشعر درجة حرارة مشابه لـ DHT11 ولكن لديه مجموعة مختلفة من التطبيقات. سنقارنه مع
ESP8266 NodeMCU + LM35 + Blynk (محطة طقس IOT / مستشعر درجة الحرارة الرقمي): 4 خطوات
ESP8266 NodeMCU + LM35 + Blynk (محطة طقس IOT / مستشعر درجة الحرارة الرقمي): مرحبًا يا شباب! في Instructable ، سنتعلم كيفية توصيل مستشعر LM35 بـ NodeMCU وعرض معلومات درجة الحرارة هذه عبر الإنترنت على هاتف ذكي مع تطبيق Blynk. (أيضًا في هذا المشروع سنستخدم أداة SuperChart في Bl
قراءة درجة الحرارة باستخدام مستشعر درجة الحرارة LM35 مع Arduino Uno: 4 خطوات
قراءة درجة الحرارة باستخدام مستشعر درجة الحرارة LM35 مع Arduino Uno: مرحبًا يا رفاق في هذه التعليمات ، سوف نتعلم كيفية استخدام LM35 مع Arduino. Lm35 هو مستشعر لدرجة الحرارة يمكنه قراءة قيم درجة الحرارة من -55 درجة مئوية إلى 150 درجة مئوية. إنه جهاز ثلاثي الأطراف يوفر جهدًا تناظريًا يتناسب مع درجة الحرارة. عالية
ESP8266 NodeMCU Access Point (AP) لخادم الويب مع مستشعر درجة الحرارة DT11 ودرجة حرارة الطباعة والرطوبة في المستعرض: 5 خطوات
ESP8266 NodeMCU Access Point (AP) لخادم الويب مع مستشعر درجة حرارة DT11 ودرجة حرارة الطباعة والرطوبة في المستعرض: مرحبًا يا رفاق في معظم المشاريع التي نستخدمها ESP8266 وفي معظم المشاريع نستخدم ESP8266 كخادم ويب بحيث يمكن الوصول إلى البيانات على أي جهاز عبر wifi عن طريق الوصول إلى خادم الويب الذي يستضيفه ESP8266 ولكن المشكلة الوحيدة هي أننا بحاجة إلى جهاز توجيه يعمل
SENSOR SUHU DENGAN LCD DAN LED (صنع مستشعر درجة الحرارة مع شاشة LCD و LED): 6 خطوات (بالصور)
SENSOR SUHU DENGAN LCD DAN LED (صنع مستشعر درجة الحرارة مع شاشة LCD و LED): هاي ، سايا ديفي ريفالدي ماهاسيسوا يونيفرسيتاس نوسا بوترا داري إندونيسيا ، مستشعر غشاء الشاشة من سوهو مينجوناكان Arduino dengan Output ke LCD dan LED. إيني عدالة بيمباكا سوهو دينجان ديسين سايا سينديري ، مستشعر دينغان ini anda