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

مستشعر الباب اللاسلكي - طاقة منخفضة جدًا: 5 خطوات
مستشعر الباب اللاسلكي - طاقة منخفضة جدًا: 5 خطوات

فيديو: مستشعر الباب اللاسلكي - طاقة منخفضة جدًا: 5 خطوات

فيديو: مستشعر الباب اللاسلكي - طاقة منخفضة جدًا: 5 خطوات
فيديو: طريقة فك قفل شاشة اي هاتف بكل سهولة 🤫🤫🤫 2024, شهر نوفمبر
Anonim
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية
مستشعر الباب اللاسلكي - طاقة منخفضة للغاية

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

1. يجب أن يكون المستشعر سريعًا جدًا - ويفضل أن يكون أقل من 5 ثوانٍ

2. يجب أن يعمل المستشعر على بطارية ليثيوم أيون 3.7 فولت حيث يوجد العشرات منها في الجوار

3. يجب أن يعمل المستشعر لعدة أشهر بشحنة واحدة للبطارية. يجب أن تستهلك <10uA في وضع السكون

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

5. يجب أن يرسل المستشعر البيانات إلى موضوع MQTT عند فتح الباب وكذلك عند إغلاق الباب

6. يجب أن يستهلك المستشعر نفس القدر من الطاقة بغض النظر عن حالة الباب

عمل المستشعر:

يحتوي المستشعر على وحدتي تحكم رئيسيتين. الأول هو متحكم صغير ATiny 13A. والثاني هو ESP الذي عادة ما يكون في وضع السكون ولا يستيقظ إلا عندما يقوم ATiny بتمكينه. يمكن أيضًا إنشاء الدائرة بأكملها بواسطة ESP فقط باستخدامه في وضع السكون ولكن التيار الذي تستهلكه أكبر بكثير مما هو مطلوب للبطارية لتستمر لأشهر ، لذا يأتي ATTiny للإنقاذ. إنه يخدم فقط غرض الاستيقاظ كل N ثانية ، والبحث عن حدث باب أو حدث فحص صحي ، إذا كان هناك حدث ، فإنه يحمل CH_PD دبوس ESP إلى HIGH ويرسل الإشارة المناسبة لنوع الحدث إلى ESP. دورها ينتهي عند هذا الحد.

ثم يتولى ESP ، ويقرأ نوع الإشارة ، ويتصل بشبكة WiFi / MQTT ، وينشر الرسائل المطلوبة بما في ذلك مستوى البطارية ، ثم يقوم بإيقاف تشغيل نفسه عن طريق إعادة دبوس EN إلى LOW.

باستخدام هذه الرقائق بهذه الطريقة ، أستفيد من تيار السكون المنخفض لـ ATtiny والتيار الخامل الصفري لـ ESP عندما يتم تعطيل الشريحة عبر دبوس CH_PD.

اللوازم

طلب مسبق:

- معرفة ببرمجة ATTiny & ESP 01

- معرفة مكونات اللحام على ثنائي الفينيل متعدد الكلور

ESP-01 (أو أي ESP)

ATTiny 13A - AVR

LDO 7333-A - منظم جهد منخفض التسرب

المقاومات - 1 ك ، 10 ك ، 3 ك 3

المكثفات: 100 فائق التوهج ، 0.1 فائق التوهج

مفتاح الضغط ، مفتاح التشغيل / الإيقاف الصغير - (كلاهما اختياري)

الصمام الثنائي - IN4148 (أو أي ما يعادله)

بطارية ليثيوم أيون

تبديل ريد

قضية لإيواء كل شيء

جندى ، ثنائي الفينيل متعدد الكلور إلخ

الخطوة 1: المخططات وكود المصدر

المخططات وكود المصدر
المخططات وكود المصدر

المخططات كما هو مبين في الرسم البياني المرفق.

لقد قمت بتضمين P Channel MOSFET لحماية القطبية العكسية. إذا لم تكن بحاجة إلى هذا ، فيمكنك حذفه. أي P Channel MOSFET مع طرق تشغيل منخفضة ستفعل.

في الوقت الحالي ، لا يمتلك برنامج ESP القدرة على OTA ولكن هذا من أجل التحسين المستقبلي.

رمز المصدر Smart-door-sensor

الخطوة 2: عمل الدائرة

ATTiny العمل تدفق

يحدث السحر هنا في كيفية مراقبة ATTiny لموضع مفتاح الباب.

سيكون الخيار العادي هو إرفاق مقاوم سحب بالمفتاح والاستمرار في مراقبة حالته. هذا له جانب سلبي للتيار المستمر الذي يستهلكه المقاوم للسحب. الطريقة التي تم بها تجنب ذلك هنا هي أنني استخدمت دبابيس لمراقبة المفتاح بدلاً من واحد. لقد استخدمت PB3 و PB4 هنا. يتم تعريف PB3 على أنه إدخال و PB4 كإخراج مع INPUT_PULLUP داخلي على PB3. عادةً ما يكون PB4 مرتفعًا عندما يكون ATtiny في وضع السكون ، مما يضمن عدم وجود تدفق تيار من خلال المقاوم سحب الإدخال بغض النظر عن موضع مفتاح القصب. بمعنى آخر. إذا كان المفتاح مغلقًا ، فإن كلا من PB3 و PB4 مرتفعان وبالتالي لا يوجد تدفق تيار بينهما. إذا كان المفتاح مفتوحًا ، فلا يوجد مسار بينهما وبالتالي يكون التيار صفرًا. عندما يستيقظ ATtiny يكتب LOW على PB4 ثم يتحقق من حالة PB3. إذا كان PB3 مرتفعًا ، فسيكون مفتاح القصب مفتوحًا وإلا فسيتم إغلاقه. ثم يكتب مرة أخرى HIGH على PB4.

يحدث الاتصال بين ATtiny و ESP عبر دبابيس PB1 / PB2 متصلة بـ Tx / RX من ESP. لقد حددت الإشارة على أنها

PB1 PB2 ====== Tx Rx

0 0 ====== WAKE_UP (فحص صحي)

0 1 ====== SENSOR_OPEN

1 0 ====== SENSOR_CLOSED

1 1 ====== غير مستخدم

بصرف النظر عن إرسال الإشارة إلى ESP ، فإنه يرسل أيضًا نبضًا عاليًا على PB0 وهو متصل بدبوس ESP CH_PD. هذا يستيقظ ESP. أول شيء يفعله ESP للاحتفاظ بـ GPIO0 HIGH المتصل بـ CH_PD وبالتالي ضمان قوته حتى إذا كان ATTiny يأخذ PB0 HIGH. التحكم الآن مع ESP لتحديد متى يريد إيقاف التشغيل.

ثم يتصل بشبكة WiFi ، MQTT ، ينشر الرسالة ويقوي نفسه عن طريق كتابة LOW على GPIO0.

تدفق العمل ESP 01:

تدفق ESP مستقيم للأمام. يستيقظ ويقرأ قيم دبابيس Tx / Rx لتحديد نوع الرسالة المراد نشرها. يتصل بشبكة WiFi و MQTT ، وينشر الرسالة ويقوي نفسه.

قبل إيقاف التشغيل ، يتحقق مرة أخرى من قيم دبابيس الإدخال لمعرفة ما إذا كانت قد تغيرت منذ آخر مرة تمت قراءتها. هذا هو الاهتمام بفتح وإغلاق الباب بسرعة. إذا لم يكن لديك هذا الفحص ، ففي بعض الحالات قد يفوتك إغلاق الباب إذا تم إغلاقه في غضون 5-6 ثوانٍ من الفتح. يتم التقاط سيناريو عملي للباب الذي يتم فتحه وإغلاقه في غضون ثانيتين أو نحو ذلك بشكل جيد بواسطة حلقة while التي تحافظ على نشر الرسائل طالما أن الحالة الحالية للباب مختلفة عن سابقتها. السيناريو الوحيد الذي قد يفوته تسجيل كل أحداث الفتح / الإغلاق هو عندما يتم فتح / إغلاق الباب بشكل متكرر خلال نافذة 4-5 ثوانٍ وهي حالة غير محتملة للغاية - ربما حالة لعب بعض الأطفال بالباب.

الخطوة 3: الفحص الصحي

كنت بحاجة أيضًا إلى طريقة للحصول على رسالة فحص صحية من ESP حيث ترسل مستوى بطارية ESP أيضًا للتأكد من أن المستشعر يعمل بشكل جيد دون فحص يدوي. لهذا يرسل ATTiny إشارة WAKE_UP كل 12 ساعة. يمكن تهيئته عبر المتغير WAKEUP_COUNT في كود ATtiny. هذا مفيد جدًا للأبواب أو النوافذ التي نادرًا ما تفتح ولذا قد لا تعرف ما إذا كان هناك خطأ ما في المستشعر أو بطاريته على الإطلاق.

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

الخطوة 4: قياسات الطاقة وعمر البطارية

لقد قمت بقياس الاستهلاك الحالي للدائرة ويستغرق حوالي 30uA عند النوم وحوله. بالذهاب إلى أوراق بيانات ATTiny ، يجب أن يكون حوالي 1-4 uA للدائرة بأكملها بما في ذلك التيار الهادئ لـ LDO ولكن بعد ذلك تظهر قياساتي 30. تستهلك MOSFET و LDO تيارًا ضئيلًا.

لذلك يجب أن تدوم بطارية 800 مللي أمبير في الساعة لفترة طويلة. ليس لدي إحصائيات دقيقة ولكني أستخدمها على 2 من أبوابي منذ أكثر من عام الآن وكل 18650 خلية بها حوالي 800 مللي أمبير في الساعة تبقى لمدة 5-6 أشهر تقريبًا على الباب الرئيسي الذي يفتح ويغلق في 30 مرة على الأقل في اليوم. تلك الموجودة على باب السطح والتي تفتح عدة مرات فقط في الأسبوع ، وتستمر لمدة 7-8 أشهر.

الخطوة 5: التحسينات المستقبلية

1. لا تقر ESP تسليم رسالة MQTT. يمكن تحسين البرنامج من خلال الاشتراك في الموضوع الذي ينشر الرسالة لتأكيد التسليم أو يمكن استخدام مكتبة Async MQTT لنشر رسالة مع QoS 1.

2. تحديث OTA: يمكن تعديل رمز ESP لقراءة موضوع MQTT للحصول على تحديث ومن ثم الدخول في وضع OTA لاستلام ملف.

3. يمكن استبدال ESP01 بـ ESP-12 للوصول إلى المزيد من أرقام التعريف الشخصية (PIN) للإدخال وبالتالي يمكن إرفاق المزيد من أجهزة الاستشعار بها. في هذه الحالة ، لا يمكن الاتصال عبر طريقة 2 بت. يمكن بعد ذلك تحسين ذلك لتنفيذ اتصال I2C بين ATtiny و ESP. هذا معقد بعض الشيء ولكنه عملي. لقد عملت في إعداد آخر حيث يرسل ATTiny قيم التشفير الدوراني إلى ESP عبر خط I2C.

4. تراقب الدائرة الحالية Vcc الداخلي لـ ESP ، إذا استخدمنا ESP12 فيمكن تعديل ذلك لقراءة مستوى البطارية الفعلي عبر دبوس ADC.

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

6. والقائمة تطول …

7. حماية البطارية العكسية - تم (صور الجهاز الفعلية قديمة وبالتالي لا تعكس MOSFET)

موصى به: