جدول المحتويات:

مستشعر مستوى جامع المياه الذي يعمل بالبطارية: 7 خطوات (بالصور)
مستشعر مستوى جامع المياه الذي يعمل بالبطارية: 7 خطوات (بالصور)

فيديو: مستشعر مستوى جامع المياه الذي يعمل بالبطارية: 7 خطوات (بالصور)

فيديو: مستشعر مستوى جامع المياه الذي يعمل بالبطارية: 7 خطوات (بالصور)
فيديو: خطأ اثناء تغيير مياة الرديتر يسبب سخونة السيارة 2024, يوليو
Anonim
مستشعر مستوى جامع المياه الذي يعمل بالبطارية
مستشعر مستوى جامع المياه الذي يعمل بالبطارية
مستشعر مستوى جامع المياه الذي يعمل بالبطارية
مستشعر مستوى جامع المياه الذي يعمل بالبطارية

يحتوي منزلنا على خزان مياه يتغذى من المطر المتساقط على السطح ، ويستخدم للمرحاض والغسالة ونباتات الري في الحديقة. خلال السنوات الثلاث الماضية ، كان الصيف جافًا جدًا ، لذلك راقبنا مستوى الماء في الخزان. حتى الآن ، استخدمنا عصا خشبية ، وضعناها في الخزان ووضعنا علامة على المستوى. لكن بالتأكيد يجب أن يكون من الممكن تحسين هذا!

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

نظرًا لعدم وجود اتصال رئيسي بالقرب من الخزان ، فمن الضروري أن يعمل الجهاز بالكامل على البطاريات. هذا يعني أنني يجب أن أكون مدركًا لاستهلاك الطاقة لجميع الأجزاء. لإعادة إرسال البيانات ، قررت استخدام شبكة Wifi المضمنة في رقاقة ESP8266. في حين أن Wifi متعطشًا للطاقة إلى حد ما ، إلا أنه يتمتع بميزة على نوع آخر من اتصال الراديو: يمكنك الاتصال مباشرة بجهاز التوجيه اللاسلكي في منزلك دون الحاجة إلى إنشاء جهاز آخر يعمل بمثابة مرحل.

لتوفير الطاقة ، سأضع ESP8266 في نوم عميق معظم الوقت وأقوم بالقياس كل ساعة. لغرض متابعة مستوى المياه هذا أكثر من كاف. سيتم إرسال البيانات إلى ThingSpeak ويمكن بعد ذلك قراءتها على هاتف ذكي من خلال أحد التطبيقات.

مزيد من التفاصيل! تعتمد سرعة الصوت ، الضرورية لقياس المسافة ، على درجة الحرارة وبدرجة أقل على الرطوبة. للحصول على قياس خارجي دقيق على مدار المواسم ، سنضع جهاز استشعار BME280 ، الذي يقيس درجة الحرارة والرطوبة والضغط. كمكافأة ، فإن هذا يجعل من مستشعر مستوى الماء أيضًا محطة طقس صغيرة.

القطع:

  • عدد 1 ESP8266 ESP-12F.
  • 1x ESP-12F لوحة محول.
  • 1x FT232RL FTDI: محول USB إلى Serial.
  • 1x HC-SR04-P: وحدة قياس المسافة بالموجات فوق الصوتية. لاحظ أن P مهم ، لأن هذا هو الإصدار الذي يحتوي على جهد تشغيل أدنى منخفض يبلغ 3 فولت.
  • إصدار 1x BME280 3.3V: مستشعر درجة الحرارة والضغط والرطوبة.
  • 1x IRL2203N: ترانزستور MOSFET ذي قناة n.
  • 1x MCP1700-3302E إصدار 3.3 فولت: منظم الجهد.
  • 3x بطارية AA قابلة لإعادة الشحن ، على سبيل المثال 2600 مللي أمبير.
  • حامل بطارية 1x لـ 3 بطاريات.
  • 1x اللوح.
  • المقاومات: 1 × 470 كيلو ، 1 × 100 كيلو ، × 4 × 10 كيلو.
  • المكثفات: 2x سيراميك 1 فائق التوهج.
  • 3x تبديل التبديل.
  • أسلاك اللوح على شكل حرف U.
  • أسلاك العبور.
  • علبة شوربة بلاستيك 1 لتر.
  • حلقة مرفق للحاوية.

لقد جعلت الكود متاحًا على GitHub.

الخطوة 1: التعرف على مستشعر المسافة بالموجات فوق الصوتية

التعرف على مستشعر المسافة بالموجات فوق الصوتية
التعرف على مستشعر المسافة بالموجات فوق الصوتية
التعرف على مستشعر المسافة بالموجات فوق الصوتية
التعرف على مستشعر المسافة بالموجات فوق الصوتية

سنقوم بقياس المسافة إلى سطح الماء باستخدام مستشعر فوق صوتي ، HC-SR04-P. تمامًا مثل الخفاش ، يستخدم هذا المستشعر السونار: يرسل نبضًا صوتيًا بتردد عالٍ جدًا للأذن البشرية ، ومن ثم فوق صوتي ، وينتظر أن يصطدم بجسم ما ، وينعكس ويعود. يمكن بعد ذلك حساب المسافة من الوقت المستغرق لاستقبال صدى الصوت وسرعة الصوت.

بشكل ملموس ، إذا تم سحب دبوس Trig عاليًا لمدة 10 ميكرو ثانية على الأقل ، يرسل المستشعر دفعة من 8 نبضات بتردد 40 هرتز. ثم يتم الحصول على الإجابة على دبوس Echo على شكل نبضة مع مدة تساوي الوقت بين إرسال واستقبال النبض فوق الصوتي. ثم علينا القسمة على 2 ، لأن النبضات فوق الصوتية تتحرك ذهابًا وإيابًا ونحتاج إلى وقت السفر في اتجاه واحد ، وضربه في سرعة الصوت ، والتي تبلغ حوالي 340 م / ث.

لكن انتظر لحظة! في الواقع ، تعتمد سرعة الصوت على درجة الحرارة وبدرجة أقل على الرطوبة. هل أقوم بالتنقيط أم أن هذا مناسب؟ باستخدام أداة الحساب ، وجدنا أنه في الشتاء (بأخذ -5 درجة مئوية) يمكن أن يكون لدينا 328.5 م / ث ، وفي الصيف (بأخذ 25 درجة مئوية) 347.1 م / ث. لنفترض أننا وجدنا وقت سفر في اتجاه واحد قدره 3 مللي ثانية. في الشتاء يعني هذا 98.55 سم وفي الصيف 104.13 سم. هذا فرق كبير! لذلك للحصول على دقة كافية طوال الفصول وحتى ليلا ونهارا ، يتعين علينا إضافة مقياس حرارة لإعداداتنا. قررت تضمين BME280 ، الذي يقيس درجة الحرارة والرطوبة والضغط. في الكود الذي استخدمته في وظيفة speedOfSound ، صيغة تحسب سرعة الصوت من حيث جميع المعلمات الثلاثة ، على الرغم من أن درجة الحرارة هي بالفعل العامل الأكثر أهمية. لا يزال تأثير الرطوبة أقل ، لكن تأثير الضغط ضئيل. يمكننا استخدام صيغة أبسط مع الأخذ بعين الاعتبار درجة الحرارة فقط التي طبقتها في speedOfSoundSimple.

هناك نقطة مهمة أخرى في HC-SR04. يتوفر إصداران: الإصدار القياسي يعمل بجهد 5 فولت ، بينما يمكن أن يعمل HC-SR04-P في نطاق من الفولتية من 3 فولت إلى 5 فولت. نظرًا لأن بطاريات AA الثلاث القابلة لإعادة الشحن توفر حوالي 3 × 1.25 فولت = 3.75 فولت ، فمن المهم الحصول على الإصدار P. قد يرسل بعض البائعين البائع الخطأ. لذا ألق نظرة على الصور إذا اشتريت واحدة. يبدو الإصداران مختلفين في كل من الخلف والأمام كما هو موضح في هذه الصفحة. في الجزء الخلفي من الإصدار P ، تكون جميع الرقائق الثلاثة أفقية بينما في الإصدار القياسي ، تكون واحدة رأسية. في المقدمة ، يحتوي الإصدار القياسي على مكون فضي إضافي.

في الدائرة الإلكترونية ، سنستخدم الترانزستور كمفتاح لإيقاف تشغيل جهاز الاستشعار بالموجات فوق الصوتية عندما ينتقل إعدادنا إلى وضع السكون العميق لتوفير عمر البطارية. وإلا فإنه سيستهلك حوالي 2 مللي أمبير. من ناحية أخرى ، يستهلك BME280 حوالي 5 ميكرومتر فقط عندما يكون غير نشط ، لذلك ليس من الضروري إيقاف تشغيله باستخدام الترانزستور.

الخطوة 2: اختيار لوحة ESP8266

اختيار مجلس ESP8266
اختيار مجلس ESP8266

لتشغيل المستشعر لأطول فترة ممكنة على بطارية ، يتعين علينا توفير استهلاك الطاقة. بينما يوفر Wifi الخاص بـ ESP8266 طريقة مريحة للغاية لتوصيل المستشعر الخاص بنا بالسحابة ، فإنه أيضًا متعطش جدًا للطاقة. أثناء التشغيل ، يستهلك ESP8266 حوالي 80 مللي أمبير. لذلك مع وجود بطاريات 2600 مللي أمبير في الساعة ، سنكون قادرين فقط على تشغيل أجهزتنا لمدة 32 ساعة على الأكثر قبل أن تصبح فارغة. من الناحية العملية ، سيكون أقل لأننا لن نكون قادرين على استخدام السعة الكاملة البالغة 2600 مللي أمبير في الساعة قبل أن ينخفض الجهد إلى مستوى منخفض للغاية.

لحسن الحظ ، يحتوي ESP8266 أيضًا على وضع السكون العميق ، حيث يتم إيقاف تشغيل كل شيء تقريبًا. لذا فإن الخطة هي وضع ESP8266 في نوم عميق معظم الوقت وإيقاظه كثيرًا لإجراء قياس وإرسال البيانات عبر Wifi إلى ThingSpeak. وفقًا لهذه الصفحة ، كان الحد الأقصى لوقت النوم العميق حوالي 71 دقيقة ، ولكن منذ ESP8266 Arduino core 2.4.1 ، فقد زاد إلى حوالي 3.5 ساعة. في الكود الخاص بي ، استقرت لمدة ساعة واحدة.

جربت لأول مرة لوحة تطوير NodeMCU المريحة ، لكن الأمر كان مخيبًا ، في النوم العميق لا يزال يستهلك حوالي 9 مللي أمبير ، مما يمنحنا 12 يومًا على الأكثر من النوم العميق النقي دون حتى التفكير في فترات الاستيقاظ. السبب المهم هو منظم الجهد AMS1117 ، والذي يستخدم الطاقة حتى إذا حاولت تجاوزها عن طريق توصيل البطارية مباشرة بالدبوس 3.3 فولت. تشرح هذه الصفحة كيفية إزالة منظم الجهد و USB UART. ومع ذلك ، لم أتمكن من القيام بذلك أبدًا دون تدمير لوحي. علاوة على ذلك ، بعد إزالة USB UART ، لا يمكنك الاتصال بـ ESP8266 بعد الآن لمعرفة الخطأ الذي حدث.

يبدو أن معظم لوحات التطوير ESP8266 تستخدم منظم الجهد المهدر AMS1117. استثناء واحد هو WEMOS D1 mini (الصورة على اليسار) والذي يأتي مع ME6211 الأكثر اقتصادا. في الواقع ، وجدت أن WEMOS D1 mini يستخدم حوالي 150 ميكرو أمبير في النوم العميق ، وهو أشبه به. ربما يرجع معظم ذلك إلى USB UART. مع هذه اللوحة ، يجب عليك لحام رؤوس المسامير بنفسك.

ومع ذلك ، يمكننا أن نفعل ما هو أفضل بكثير باستخدام لوحة عظام مثل ESP-12F (الصورة على اليمين) ، والتي لا تحتوي على USB UART أو منظم الجهد. عند تغذية دبوس 3.3 فولت ، وجدت أن استهلاك النوم العميق يبلغ 22 ميكرو أمبير فقط!

ولكن للحصول على ESP-12F للعمل ، استعد لبعض عمليات اللحام والمزيد من البرمجة المتعبة! علاوة على ذلك ، ما لم تقدم البطاريات الجهد الصحيح مباشرة ، والذي يتراوح بين 3 فولت و 3.6 فولت ، فنحن بحاجة إلى توفير منظم الجهد الخاص بنا. من الناحية العملية ، اتضح أنه من الصعب العثور على نظام بطارية يوفر جهدًا في هذا النطاق خلال دورة التفريغ الكاملة. تذكر أننا نحتاج أيضًا إلى تشغيل مستشعر HC-SR04-P ، والذي يمكن نظريًا أن يعمل بجهد منخفض يصل إلى 3 فولت ، ولكنه يعمل بشكل أكثر دقة إذا كان الجهد أعلى. علاوة على ذلك ، في الرسم التخطيطي الخاص بي ، يتم تشغيل HC-SR04-P بواسطة ترانزستور ، مما يؤدي إلى انخفاض صغير في الجهد الإضافي. سوف نستخدم منظم الجهد MCP1700-3302E. الحد الأقصى لجهد الدخل هو 6 فولت ، لذلك نقوم بتغذيته بما يصل إلى 4 بطاريات AA. قررت استخدام 3 بطاريات AA.

الخطوة 3: قم بإنشاء قناة ThingSpeak

سنستخدم ThingSpeak ، وهي خدمة سحابية لإنترنت الأشياء ، لتخزين بياناتنا. اذهب إلى https://thingspeak.com/ وأنشئ حسابًا. بمجرد تسجيل الدخول ، انقر فوق الزر قناة جديدة لإنشاء قناة. في إعدادات القناة ، قم بملء الاسم والوصف كما تريد. بعد ذلك ، نقوم بتسمية حقول القناة وتنشيطها بالنقر فوق مربعات الاختيار الموجودة على اليمين. إذا كنت تستخدم الكود الخاص بي دون تغيير ، فستكون الحقول كما يلي:

  • حقل 1: منسوب المياه (سم)
  • الحقل 2: مستوى البطارية (V)
  • الحقل 3: درجة الحرارة (درجة مئوية)
  • الحقل 4: الرطوبة (٪)
  • الحقل 5: الضغط (Pa)

للرجوع إليها في المستقبل ، قم بتدوين معرف القناة ، ومفتاح واجهة برمجة التطبيقات للقراءة ، ومفتاح واجهة برمجة التطبيقات للكتابة ، والتي يمكن العثور عليها في مفاتيح قائمة API.

يمكنك قراءة بيانات ThingSpeak على هاتفك الذكي باستخدام أحد التطبيقات. على هاتفي الذي يعمل بنظام Android ، أستخدم أداة IoT ThingSpeak Monitor. يجب عليك تكوينه باستخدام معرف القناة ومفتاح واجهة برمجة التطبيقات للقراءة.

الخطوة 4: كيفية برمجة ESP-12F

كيفية برمجة ESP-12F
كيفية برمجة ESP-12F
كيفية برمجة ESP-12F
كيفية برمجة ESP-12F

نحتاج إلى لوحة مكشوفة لتوفير عمر البطارية ، ولكن الجانب السلبي هو أن البرمجة أصعب قليلاً من برمجة لوحة التطوير المزودة بـ USB UART.

سنستخدم Arduino IDE. هناك تعليمات أخرى تشرح كيفية استخدامها ، لذا سأكون مختصراً هنا. خطوات جعله جاهزًا لـ ESP8266 هي:

  • قم بتنزيل Arduino IDE.
  • تثبيت الدعم للوحة ESP8266. في ملف القائمة - التفضيلات - الإعدادات أضف عنوان URL https://arduino.esp8266.com/stable/package_esp8266com_index.json إلى عناوين URL الإضافية لمدير مجلس الإدارة. التالي في القائمة Tools - Board - Boards Manager قم بتثبيت esp8266 بواسطة مجتمع esp8266.
  • حدد كلوحة: وحدة ESP8266 العامة.

للتعامل مع ESP-12F ، استخدمت لوحة محول ، وهي متوفرة بشكل شائع في المتاجر عبر الإنترنت. لقد قمت بلحام الشريحة باللوحة ثم قمت بلحام الرؤوس باللوحة. عندها فقط اكتشفت أن لوحة المهايئ واسعة جدًا بالنسبة للوحة القياسية! لا يترك أي دبابيس مجانية على الجانب لإجراء اتصالاتك.

الحل الذي ذهبت إليه هو استخدام الأسلاك على شكل حرف U وتوصيلها كما في الصورة على اليمين قبل وضع ESP8266 مع لوحة المحول على اللوح. لذلك يتم توصيل GND و VCC بقضبان اللوح ويتم توفير المسامير المتبقية أسفل اللوح. العيب هو أن اللوح الخاص بك سيكون مزدحمًا بالأسلاك بمجرد الانتهاء من الدائرة الكاملة. حل آخر هو تركيب لوحين معا كما هو موضح في هذا الفيديو.

بعد ذلك ، لبرمجة ESP-12F من خلال منفذ USB لجهاز الكمبيوتر الخاص بك ، نحتاج إلى محول USB إلى تسلسلي. لقد استخدمت مبرمج FT232RL FTDI. المبرمج لديه وصلة ربط للاختيار بين 3.3V أو 5V. يجب أن يوضع على 3.3V لـ ESP8266. لا تنس ذلك لأن 5V قد تقلى رقاقة الخاص بك! يجب أن يتم تثبيت برامج التشغيل تلقائيًا ، ولكن إذا لم تعمل البرمجة ، يمكنك محاولة تثبيتها يدويًا من هذه الصفحة.

يحتوي ESP8266 على وضع برمجة لتحميل البرامج الثابتة الجديدة على الفلاش ، ووضع الفلاش لتشغيل البرامج الثابتة الحالية من ذاكرة الفلاش. للاختيار بين هذه الأوضاع ، يجب أن تأخذ بعض المسامير قيمة معينة في وقت التمهيد:

  • البرمجة: GPIO0: منخفض ، CH-PD: مرتفع ، GPIO2: مرتفع ، GPIO15: منخفض
  • الفلاش: GPIO0: مرتفع ، CH-PD: مرتفع ، GPIO2: مرتفع ، GPIO15: منخفض

تعتني لوحة المحول بالفعل بسحب CH-PD وسحب GPIO15 بمقاومات 10K.

لذلك في دائرتنا الإلكترونية ، ما زلنا بحاجة إلى سحب GPIO2. نوفر أيضًا مفتاحًا لوضع ESP8266 في البرمجة أو في وضع الفلاش ومفتاح لإعادة ضبطه ، ويتم ذلك عن طريق توصيل RST بالأرض. علاوة على ذلك ، تأكد من توصيل دبوس TX الخاص بـ FT232RL بدبوس RXD الخاص بـ ESP8266 والعكس صحيح.

تسلسل البرمجة كما يلي:

  • اضبط GPIO2 على مستوى منخفض عن طريق إغلاق مفتاح البرمجة.
  • أعد تعيين ESP8266 عن طريق إغلاق مفتاح إعادة التعيين ثم إعادة فتحه. يتم الآن تشغيل ESP8266 في وضع البرمجة.
  • اضبط GPIO2 مرة أخرى على المستوى العالي عن طريق فتح مفتاح البرمجة.
  • قم بتحميل البرنامج الثابت الجديد من Arduino IDE.
  • أعد تعيين ESP8266 مرة أخرى عن طريق إغلاق مفتاح إعادة التعيين وإعادة فتحه. يتم الآن تشغيل ESP8266 في وضع الفلاش وتشغيل البرامج الثابتة الجديدة.

يمكنك الآن اختبار ما إذا كانت البرمجة تعمل عن طريق تحميل رسم Blink الشهير.

إذا كان كل هذا يعمل على الأقل ، فإن دبابيس GND و VCC و GPIO2 و RST و TXD و RXD تكون ملحومة ومتصلة بشكل صحيح. ما يريح! ولكن قبل المتابعة ، أوصي أيضًا باختبار المسامير الأخرى باستخدام جهاز القياس المتعدد. واجهت مشكلة مع أحد الدبابيس. يمكنك استخدام هذا الرسم التخطيطي ، الذي يضبط جميع المسامير على ارتفاع واحدًا تلو الآخر لمدة 5 ثوانٍ ، وبعد ذلك يضع ESP8266 في سكون عميق لمدة 20 ثانية. لتمكين ESP8266 من الاستيقاظ بعد النوم العميق ، تحتاج إلى توصيل RST بـ GPIO16 ، مما يعطي إشارة الاستيقاظ.

الخطوة 5: تحميل الرسم التخطيطي

لقد جعلت الكود متاحًا على GitHub ، إنه ملف واحد فقط: Level-Sensor-Deepsleep.ino. فقط قم بتنزيله وافتحه في Arduino IDE. أو يمكنك تحديد ملف - جديد ونسخ / لصق الكود فقط.

هناك بعض المعلومات التي يجب عليك ملؤها في بداية الملف: اسم وكلمة مرور شبكة WLAN المراد استخدامها وتفاصيل IP الثابتة ومعرف القناة ومفتاح واجهة برمجة التطبيقات لقناة ThingSpeak.

باتباع النصائح الواردة في هذه المدونة ، بدلاً من DHCP حيث يقوم جهاز التوجيه ديناميكيًا بتعيين عنوان IP ، نستخدم IP ثابتًا ، حيث نقوم بتعيين عنوان IP الخاص بـ ESP8266 بأنفسنا. تبين أن هذا أسرع بكثير ، لذلك نحن نوفر وقت النشاط وبالتالي توفير طاقة البطارية. لذلك يتعين علينا توفير عنوان IP ثابت متاح بالإضافة إلى عنوان IP الخاص بالموجه (البوابة) وقناع الشبكة الفرعية وخادم DNS. إذا لم تكن متأكدًا مما يجب ملؤه ، فاقرأ حول إعداد IP ثابت في دليل جهاز التوجيه الخاص بك. على جهاز كمبيوتر يعمل بنظام Windows متصل عبر Wifi بجهاز التوجيه ، ابدأ تشغيل shell (Windows button-r ، cmd) وأدخل ipconfig / all. ستجد معظم المعلومات التي تحتاجها في قسم Wi-Fi.

عند فحص الكود ، ترى أنه على عكس كود Arduino الآخر ، يحدث معظم الإجراء في وظيفة الإعداد بدلاً من وظيفة الحلقة. هذا لأن ESP8266 ينتقل إلى وضع السكون العميق بعد أن ينتهي من وظيفة الإعداد (ما لم نبدأ في وضع OTA). بعد أن يستيقظ ، يبدو الأمر وكأنه إعادة تشغيل جديدة ويقوم بتشغيل الإعداد مرة أخرى.

فيما يلي السمات البارزة للكود:

  • بعد الاستيقاظ ، يقوم الرمز بتعيين switchPin (الافتراضي GPIO15) إلى مرتفع. يؤدي هذا إلى تشغيل الترانزستور ، والذي بدوره يقوم بتشغيل مستشعر HC-SR04-P. قبل الذهاب إلى النوم العميق ، يقوم بإعادة تعيين الدبوس إلى المستوى المنخفض ، مما يؤدي إلى إيقاف تشغيل الترانزستور و HC-SR04-P ، مع التأكد من أنه لا يستهلك أي طاقة بطارية ثمينة.
  • إذا كان modePIN (الافتراضي GPIO14) منخفضًا ، ينتقل الرمز في وضع OTA بدلاً من وضع القياس. باستخدام OTA (التحديث عبر الهواء) ، يمكننا تحديث البرنامج الثابت عبر Wifi بدلاً من المنفذ التسلسلي. في حالتنا ، يعد هذا مناسبًا تمامًا نظرًا لأننا لم نعد مضطرًا إلى توصيل المسلسل بمحول USB لمزيد من التحديثات. ما عليك سوى تعيين GPIO14 إلى منخفض (مع مفتاح OTA في الدائرة الإلكترونية) ، وإعادة تعيين ESP8266 (مع مفتاح إعادة الضبط) ويجب أن تصبح متاحة في Arduino IDE للتحميل.
  • على رقم التعريف الشخصي التمثيلي (A0) ، نقيس جهد البطارية. هذا يسمح لنا بإيقاف تشغيل أجهزتنا ، ويعرف أيضًا باسم النوم العميق الدائم ، إذا كان الجهد منخفضًا جدًا ، أقل من الحد الأدنى للجهد ، لحماية البطاريات من الإفراط في التفريغ. القياس التناظري ليس دقيقًا للغاية ، فنحن نقوم بإجراءات عدد البطارية (الافتراضي 10) مقاييس ونأخذ المتوسط لتحسين الدقة.
  • يتم قياس المسافة لمستشعر HC-SR04-P في قياس مسافة الوظيفة. لتحسين الدقة ، يتم تكرار القياس numMeasuresDistance (الافتراضي 3) مرات.
  • هناك وظيفة لحساب سرعة الصوت من قياس درجة الحرارة والرطوبة والضغط بواسطة مستشعر BME280. عنوان I2C الافتراضي لـ BME280 هو 0x76 ، ولكن إذا لم يعمل ، فقد تحتاج إلى تغييره إلى 0x77: bool bme280Started = bme280.begin (0x77)؛
  • سنستخدم BME280 في الوضع القسري ، مما يعني أنه يأخذ قياسًا واحدًا ويعود إلى وضع السكون لتوفير الطاقة.
  • إذا قمت بتعيين السعة (لتر) والمسافة الكاملة (سم) والمساحة (م 2) ، فإن الكود يحسب الحجم المتبقي لخزان المياه من قياس المسافة: الحجم المتبقي المزدوج = السعة + 10.0 * (المسافة الكاملة للمسافة) * المنطقة ؛ وتحميل هذا إلى ThingSpeak. إذا احتفظت بالقيم الافتراضية ، فسيتم تحميل المسافة إلى سطح الماء بالسنتيمتر.

الخطوة السادسة: بناء الدائرة الإلكترونية

بناء الدائرة الالكترونية
بناء الدائرة الالكترونية

أعلاه هو رسم تخطيطي للدائرة الإلكترونية. إنه كبير جدًا بالنسبة للوح واحد ، خاصة مع لوحة المحول كبيرة الحجم والخدعة مع الأسلاك على شكل حرف U. في مرحلة ما كنت أتمنى بالتأكيد أن أستخدم البديل المتمثل في توصيل لوحين ، لكن في النهاية تمكنت من ذلك.

فيما يلي الميزات المهمة للدائرة:

  • هناك نوعان من الفولتية التي تلعب دورًا: جهد الدخل من البطارية (حوالي 3.75 فولت) والجهد 3.3 فولت الذي يغذي ESP8266 و BME280. أضع 3.3V على السكة اليسرى من لوح التكسير و 3.75V على السكة اليمنى. يقوم منظم الجهد بتحويل 3.75 فولت إلى 3.3 فولت. باتباع التعليمات الواردة في ورقة البيانات ، أضفت مكثفات 1 μF إلى مدخلات وإخراج منظم الجهد لزيادة الاستقرار.
  • يتم توصيل GPIO15 الخاص بـ ESP8266 ببوابة الترانزستور. هذا يسمح لـ ESP8266 بتشغيل الترانزستور وبالتالي المستشعر بالموجات فوق الصوتية عند تنشيطه وإيقاف تشغيله عند النوم العميق.
  • يتم توصيل GPIO14 بمفتاح ، مفتاح OTA. يعطي إغلاق المفتاح إشارة إلى ESP8266 نريد أن نبدأ في وضع OTA بعد ذلك ، أي بعد الضغط على مفتاح RESET (إغلاق وفتح) ، وتحميل رسم جديد عبر الهواء.
  • يتم توصيل دبابيس RST و GPIO2 كما في مخطط البرمجة. تم توصيل دبوس RST الآن أيضًا بـ GPIO16 للسماح لـ ESP8266 بالاستيقاظ من النوم العميق.
  • يتم توصيل دبابيس TRIG و ECHO لمستشعر الموجات فوق الصوتية بـ GPIO12 و GPIO13 ، بينما يتم توصيل المسامير SCL و SDA الخاصة بـ BME280 بـ GPIO5 و GPIO4.
  • أخيرًا ، يكون الدبوس التناظري ADC عبر مقسم جهد متصل بجهد الإدخال. هذا يسمح بقياس جهد الدخل للتحقق من شحن البطاريات. يمكن أن يقيس دبوس ADC الفولتية بين 0V و 1V. بالنسبة لمقسم الجهد اخترنا مقاومات 100 ك و 470 ك. هذا يعني أن الجهد عند دبوس ADC يُعطى بواسطة: V_ADC = 100K / (100K + 470K) V_in.إذا أخذنا V_ADC = 1V ، فهذا يعني أنه يمكننا قياس الفولتية المدخلة حتى V_in = 570/100 V_ADC = 5.7V. بالنسبة لاستهلاك الطاقة ، هناك أيضًا بعض التيار المتسرب من خلال مقسم الجهد. مع V_in = 3.75V من البطاريات نجد I_leak = 3.75V / 570K = 6.6 μA.

حتى عندما تعمل الدائرة من البطاريات ، فمن الممكن توصيل USB بالمحول التسلسلي. فقط تأكد من فصل VCC عن المحول وتوصيل GND و RX و TX كما في مخطط البرمجة. هذا يجعل من الممكن فتح Serial Monitor في Arduino IDE لقراءة رسائل التصحيح والتأكد من أن كل شيء يعمل كما هو متوقع.

بالنسبة للدائرة الكاملة ، قمت بقياس استهلاك حالي قدره 50 ميكرو أمبير في نوم عميق عند التشغيل من البطاريات. يتضمن ذلك ESP8266 و BME280 والمستشعر فوق الصوتي (الذي يتم إيقافه بواسطة الترانزستور) والتسرب عبر مقسم الجهد وربما التسربات الأخرى. لذلك هذا ليس سيئا للغاية!

لقد وجدت أن إجمالي وقت النشاط هو حوالي 7 ثوانٍ ، منها 4.25 ثانية للاتصال بشبكة Wifi و 1.25 ثانية لإرسال البيانات إلى ThingSpeak. لذلك مع تيار نشط يبلغ 80 مللي أمبير ، وجدت 160 ميكرو أمبير في الساعة للوقت النشط. إضافة 50 μAh في الساعة لحالة النوم العميق لدينا ما مجموعه 210 μAh في الساعة. هذا يعني أن بطاريات 2600 مللي أمبير تدوم نظريًا 12400 ساعة = 515 يومًا. هذا هو الحد الأقصى المطلق إذا تمكنا من استخدام السعة الكاملة للبطاريات (وهذا ليس هو الحال) ولا توجد تسريبات لم أجدها مع قياساتي الحالية. لذلك لا يزال يتعين عليّ أن أرى ما إذا كان هذا يؤتي ثماره حقًا.

الخطوة 7: الانتهاء من المستشعر

الانتهاء من جهاز الاستشعار
الانتهاء من جهاز الاستشعار
الانتهاء من جهاز الاستشعار
الانتهاء من جهاز الاستشعار
الانتهاء من جهاز الاستشعار
الانتهاء من جهاز الاستشعار

أضع المستشعر في حاوية بلاستيكية سعة 1 لتر ، والتي كانت تحتوي على الحساء. في الجزء السفلي ، قمت بعمل فتحتين لتناسب "عيون" مستشعر HC-SR04-P. بصرف النظر عن الثقوب ، يجب أن تكون الحاوية مقاومة للماء. ثم يتم توصيله بجدار خزان المياه بحلقة دائرية تستخدم عادة لأنبوب تصريف مياه الأمطار.

استمتع بالمشروع!

موصى به: