طراحی حرفه ای با ESP8266

سلام
برای ساخت دستگاه های iot‌ که با باتری(باتری قلمی یا نیم قلم) کار می کنند میزان شارژ مصرف شده خیلی خیلی مهم است پس طراحی ما برای اینکه مدت طولانی کار کند به دو صورت زیر می تواند باشد:

1- ماژول در زمان روشن بودن و ارسال اطلاعات به سرور جریان خیلی کمی بکشد
2- مدت زمان روشن بودن ماژول تا حد امکان کوتاه باشد.
3- تلفیقی از هر دو

در این جا چون ما از esp8266 استفاده می کنیم جریان کشیده شده از ماژول مشخص هست و تقریبا 70 میلی آمپر در ثانیه می کشد(در صورت روشن بودن تمامی بخش های ماژول)،پس ما باید روی کوتاه کردن زمان مانور بدیم.
من در پروژه ای که در حال انجام هستم با شرایط زیر به مدت زمان قابل قبول بالای 6 ماه رسیده ام:
→ اینترنت پر سرعت.
→ با نقطه اتصال(hotspot) موبایل به عنوان وایفای.
→ نقطه اتصال در حالت بدون رمز می باشد.

نحوه کار به این صورت است که ماژول وایفای های اطراف خود را اسکن می کند و به قوی ترین وایفای بدون رمز اطراف خود متصل می شود و کار خود را اغاز می کند.زمان تایمینگ بین ارسال هر دیتا به سرور 10 دقیقه می باشد.

مشکل:
مشکلات از اینجایی شروع می شود که ماژول از این حالت ایده آل خارج میشود مثلا به جای اینترنت خیلی قوی اینترنت معمولی و فاصله اگر بیشتر شود مثلا Rssi ماژول بالاتر از 60 شود. از اون زمان مد نظر خارج شده و ماژول نمی تواند برای مدت های طولانی به کار خود ادامه دهد.

الان می خواستم بدونم دوستان برای حل مشکلات این شکلی و تبدیل یک پروژه به محصولی قابل اطمینان چه روند مشخصی را طی میکنند و باید به چه شکل عمل کرد در این مواقع کد پروژه چطور به اون اطمینان قابلیت مهم می رسد.
ضمنا من تا جای ممکن از کد نویسی استاندارد استفاده کردم تا جای ممکن روی کد کار کردم که زمان خیلی کوتاهی ماژول روشن بماند اما این شرایط فقط در حالتی که همه چیز برای ماژول مهیا باشد فراهم است.

و همچنین نکته مبهم این مشکل آن جاست که ماژول با هات اسپات موبایل (چه در حالتی که اینترنت مال خود سیمکارت هست و چه در حالتی که موبایل اینترنت خود را از طریق وایفای از یک مودم خانگی تامین کرده باشد) به خوبی کار می کند.
اما در حالتی که به مودم خانگی متصل شود در هر ارسال یکبار ارور عدم برقراری ارتباط با سرور ایجاد می شود و در دومین بار به درستی دیتا ارسال می شود که همین باعث بالا رفتن زمان می شود.

ممنون می شوم از دوستان که در این زمینه کار می کنند راهنمایی کنند.

دو نکته توی این موضوع مهم هست
اول پروتوکل ارسال دیتای شما، از وب هست یا MQTT یا KNX یا پروتوکل دیگه چون یه بخش مهم اینه که ارتباط به صورت دوطرفه برقرار بشه یا بدون اون هم میشه
دوم زمان ارسال دیتا هست هر چند ساعت یک بار دستگاه روشن بشه و ارسال کنه
توی تستایی که داشتم برای ساخت دستگاه مشابه، دستگاه هر نیم ساعت روشن میشد به شبکه متصل میشد و با استفاده از پروتوکل MQTT دیتای خودش رو ارسال میکرد و خاموش می شد، در این حالت 3 باتری AA تقریبا 5 ماه کار میکرد. البته اضافه کنم که با خاموش شدن ماژول همه سنسور های متصل هم خاموش میشدند.
میتونید کد رو به شکلی بنویسید که به محض تکمیل ارسال دیتا به سرور به حالت DeepSleep بره و در کنارش یه تایم اوت هم برای ارسال به سرور داشته باشه که مثلا از 2 ثانیه بیشتر طول کشید و اتصال تکمیل نشد مجدد به DeepSleep بره و دیتا لاگ بشه برای دفعه بعد.

1 پسندیده