فهرست مطالب:

سنسور سطح جمع کننده آب با باتری: 7 مرحله (همراه با تصاویر)
سنسور سطح جمع کننده آب با باتری: 7 مرحله (همراه با تصاویر)

تصویری: سنسور سطح جمع کننده آب با باتری: 7 مرحله (همراه با تصاویر)

تصویری: سنسور سطح جمع کننده آب با باتری: 7 مرحله (همراه با تصاویر)
تصویری: یک تیغ ریش را پشت موبایل خود بگذارید ببینید چه اتفاقی میوفته 2024, جولای
Anonim
سنسور سطح جمع کننده آب باتری
سنسور سطح جمع کننده آب باتری
سنسور سطح جمع کننده آب باتری
سنسور سطح جمع کننده آب باتری

خانه ما دارای یک مخزن آب است که از باران روی سقف تغذیه می شود و برای توالت ، ماشین لباسشویی و آبیاری گیاهان باغ استفاده می شود. در سه سال گذشته تابستانها بسیار خشک بود ، بنابراین سطح آب مخزن را زیر نظر داشتیم. تا اینجا ، ما از یک چوب چوبی استفاده کردیم ، که آن را در مخزن قرار دادیم و سطح آن را مشخص کردیم. اما مطمئناً باید بتوان در این زمینه پیشرفت کرد!

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

از آنجا که من یک اتصال اصلی به مخزن ندارم ، ضروری است که دستگاه کامل روی باتری کار کند. این بدان معناست که من باید در مورد مصرف برق تمام قطعات آگاه باشم. برای ارسال اطلاعات ، تصمیم گرفتم از Wifi داخلی یک میکروچیپ ESP8266 استفاده کنم. در حالی که Wifi نسبتاً گرسنه است ، اما نسبت به نوع دیگری از اتصال رادیویی مزیت دارد: می توانید بدون نیاز به ساخت دستگاه دیگری که به عنوان رله عمل می کند ، مستقیماً به روتر بی سیم خانه خود متصل شوید.

برای صرفه جویی در مصرف برق ، ESP8266 را بیشتر اوقات در خواب عمیق قرار می دهم و هر ساعت اندازه گیری می کنم. به منظور پیگیری سطح آب این امر بیش از حد کافی است. داده ها به ThingSpeak ارسال می شوند و سپس می توانند از طریق یک برنامه در تلفن هوشمند خوانده شوند.

یک جزئیات دیگر! سرعت صدا ، که برای اندازه گیری فاصله ضروری است ، به دما و تا حد کمتری به رطوبت بستگی دارد. برای اندازه گیری دقیق بیرونی در فصول مختلف ، سنسور BME280 را وارد می کنیم که دما ، رطوبت و فشار را اندازه گیری می کند. این به عنوان یک امتیاز از سنسور سطح آب ما همچنین یک ایستگاه هواشناسی کوچک است.

قطعات:

  • 1x ESP8266 ESP-12F.
  • صفحه آداپتور 1x ESP-12F.
  • 1x FT232RL FTDI: آداپتور USB به سریال.
  • 1x HC-SR04-P: ماژول اندازه گیری فاصله مافوق صوت. توجه داشته باشید که P مهم است ، زیرا این نسخه دارای حداقل ولتاژ کار حداقل 3V است.
  • 1x نسخه BME280 3.3V: سنسور دما ، فشار و رطوبت.
  • 1x IRL2203N: ترانزیستور MOSFET کانال n.
  • 1x نسخه MCP1700-3302E 3.3V: تنظیم کننده ولتاژ.
  • 3x باتری AA قابل شارژ ، به عنوان مثال 2600 میلی آمپر ساعت
  • نگهدارنده 1 برابر برای 3 باتری.
  • 1 برابر تخته نان
  • مقاومت ها: 1x 470K ، 1x 100K ، 4x 10K.
  • خازن ها: 2 برابر سرامیک 1uF.
  • سوئیچ ضامن 3x
  • سیم های تخته نان به شکل U
  • سیم های بلوز.
  • ظرف سوپ پلاستیکی 1 لیتر.
  • حلقه اتصال برای ظرف.

من کد را در GitHub در دسترس قرار دادم.

مرحله 1: آشنایی با سنسور فاصله فراصوت

آشنایی با سنسور فاصله التراسونیک
آشنایی با سنسور فاصله التراسونیک
آشنایی با سنسور فاصله التراسونیک
آشنایی با سنسور فاصله التراسونیک

ما فاصله را تا سطح آب با سنسور اولتراسونیک ، HC-SR04-P اندازه گیری می کنیم. این سنسور درست مانند خفاش ، از سونار استفاده می کند: یک پالس صوتی با فرکانس بسیار بالا برای گوش انسان ارسال می کند ، بنابراین سونوگرافی است و منتظر می ماند تا به جسمی برخورد کند ، منعکس شود و بازگردد. سپس می توان فاصله را از زمان دریافت اکو و سرعت صدا محاسبه کرد.

به طور خاص ، اگر پین Trig برای حداقل 10 میکرومتر بالا کشیده شود ، سنسور یک انفجار 8 پالس با فرکانس 40 هرتز ارسال می کند. سپس پاسخ بر روی پین اکو به شکل یک پالس با مدت زمان برابر بین ارسال و دریافت پالس اولتراسونیک بدست می آید. سپس ما باید بر 2 تقسیم کنیم ، زیرا نبض اولتراسونیک به جلو و عقب می رود و ما به زمان سفر یک طرفه نیاز داریم و در سرعت صوت ضرب می کنیم ، یعنی حدود 340 متر بر ثانیه.

اما یک لحظه صبر کن! در واقع سرعت صوت بستگی به دما و تا حد کمتری به رطوبت دارد. آیا دارم چرت می زنم یا این موضوع مهم است؟ با استفاده از ابزار محاسبه متوجه می شویم که در زمستان (با دمای 5 درجه سانتی گراد) می توانیم 328.5 متر بر ثانیه و در تابستان (با دمای 25 درجه سانتی گراد) 347.1 متر بر ثانیه داشته باشیم. بنابراین فرض کنید ما زمان سفر یک طرفه 3 میلی ثانیه را پیدا کرده ایم. در زمستان ، این به معنی 98.55 سانتی متر و در تابستان 104.13 سانتی متر است. این کاملاً تفاوت است! بنابراین برای به دست آوردن دقت کافی در طول فصل و حتی روز و شب ، باید دماسنج را به تنظیمات خود اضافه کنیم. من تصمیم گرفتم BME280 را وارد کنم که دما ، رطوبت و فشار را اندازه گیری می کند. در کدی که در تابع speedOfSound استفاده کردم از فرمولی استفاده می کنم که سرعت صدا را بر حسب هر سه پارامتر محاسبه می کند ، اگرچه دما واقعاً مهمترین عامل است. رطوبت هنوز تأثیر کوچکتری دارد ، اما تأثیر فشار ناچیز است. ما می توانیم از یک فرمول ساده تر با در نظر گرفتن تنها دمایی که من در speedOfSoundSimple پیاده سازی کرده ایم استفاده کنیم.

یک نکته مهم دیگر در HC-SR04 وجود دارد. دو نسخه موجود است: نسخه استاندارد با ولتاژ 5V کار می کند ، در حالی که HC-SR04-P می تواند در محدوده ولتاژهای 3V تا 5V کار کند. از آنجا که 3 باتری AA قابل شارژ حدود 3x1.25V = 3.75V را تأمین می کنند ، تهیه نسخه P مهم است. برخی از فروشندگان ممکن است یک مورد اشتباه ارسال کنند. بنابراین در صورت خرید ، به تصاویر آن نگاه کنید. همانطور که در این صفحه توضیح داده شده است ، هر دو نسخه در پشت و جلو متفاوت به نظر می رسند. در پشت نسخه P هر سه تراشه افقی هستند در حالی که در نسخه استاندارد یکی عمودی است. در قسمت جلویی نسخه استاندارد دارای یک جزء نقره ای اضافی است.

در مدار الکترونیکی ما از ترانزیستور به عنوان سوئیچ برای خاموش کردن قدرت سنسور اولتراسونیک استفاده می کنیم وقتی تنظیمات ما به خواب عمیق می رود تا عمر باتری را کاهش دهد. در غیر این صورت ، هنوز هم حدود 2 میلی آمپر مصرف می کند. BME280 در حالت غیر فعال فقط حدود 5 میکرومتر مصرف می کند ، بنابراین لازم نیست آن را با ترانزیستور خاموش کنید.

مرحله 2: انتخاب برد ESP8266

انتخاب هیئت مدیره ESP8266
انتخاب هیئت مدیره ESP8266

برای کارکردن سنسور تا زمانی که ممکن است بر روی باتری ، باید بر مصرف برق صرفه جویی کنیم. در حالی که Wifi ESP8266 یک راه بسیار مناسب برای اتصال سنسور ما به ابر ارائه می دهد ، همچنین بسیار تشنه قدرت است. در حال کار ESP8266 حدود 80 میلی آمپر مصرف می کند. بنابراین با باتری های 2600 میلی آمپر ساعتی می توانیم دستگاه خود را حداکثر تا 32 ساعت قبل از خالی شدن کار کنیم. در عمل ، قبل از اینکه ولتاژ به سطح بسیار پایین برسد ، نمی توانیم از ظرفیت کامل 2600 میلی آمپر ساعت استفاده کنیم.

خوشبختانه ESP8266 همچنین دارای حالت خواب عمیق است که تقریباً همه چیز در آن خاموش است. بنابراین برنامه این است که ESP8266 را در بیشتر مواقع در خواب عمیق قرار دهید و اغلب اوقات آن را بیدار کنید تا اندازه گیری شود و داده ها از طریق Wifi به ThingSpeak ارسال شود. طبق این صفحه ، حداکثر زمان خواب عمیق حدود 71 دقیقه بود ، اما از زمان هسته ESP8266 Arduino 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 را تغذیه کنیم ، که از نظر تئوری می تواند با ولتاژ 3V کار کند ، اما اگر ولتاژ بیشتر باشد عملکرد دقیق تری دارد. علاوه بر این در نمودار من HC-SR04-P توسط یک ترانزیستور روشن می شود که باعث افت ولتاژ اضافی می شود. ما از تنظیم کننده ولتاژ MCP1700-3302E استفاده می کنیم. حداکثر ولتاژ ورودی 6 ولت است ، بنابراین ما آن را تا 4 باتری AA تغذیه می کنیم. تصمیم گرفتم از 3 باتری AA استفاده کنم.

مرحله 3: ایجاد یک کانال ThingSpeak

ما از ThingSpeak ، یک سرویس ابری اینترنت اشیا ، برای ذخیره داده های خود استفاده می کنیم. به https://thingspeak.com/ بروید و یک حساب کاربری ایجاد کنید. پس از ورود به سیستم ، روی دکمه New Channel کلیک کنید تا کانال ایجاد شود. در تنظیمات کانال نام و توضیحات را به دلخواه وارد کنید. سپس فیلدهای کانال را نامگذاری کرده و با کلیک روی کادرهای انتخاب در سمت راست آنها را فعال می کنیم. اگر از کد من بدون تغییر استفاده می کنید ، فیلدها به شرح زیر است:

  • زمینه 1: سطح آب (سانتی متر)
  • زمینه 2: سطح باتری (V)
  • زمینه 3: دما (درجه سانتی گراد)
  • زمینه 4: رطوبت (٪)
  • زمینه 5: فشار (Pa)

برای مراجعات بعدی ، شناسه کانال ، کلید API خواندن و کلید نوشتن API را بنویسید که در کلیدهای API منو یافت می شود.

با استفاده از یک برنامه می توانید داده های ThingSpeak را در تلفن هوشمند خود بخوانید. در تلفن اندرویدی خود از ویجت IoT ThingSpeak Monitor استفاده می کنم. شما باید آن را با شناسه کانال و کلید API خواندن پیکربندی کنید.

مرحله 4: نحوه برنامه ریزی ESP-12F

نحوه برنامه ریزی ESP-12F
نحوه برنامه ریزی ESP-12F
نحوه برنامه ریزی ESP-12F
نحوه برنامه ریزی ESP-12F

ما برای صرفه جویی در عمر باتری به یک تخته خالی نیاز داریم ، اما نکته منفی آن این است که برنامه نویسی کمی سخت تر از یک برد توسعه با USB UART داخلی است.

ما از Arduino IDE استفاده می کنیم. دستورالعمل های دیگری وجود دارد که نحوه استفاده از آن را توضیح می دهد ، بنابراین در اینجا مختصر توضیح می دهم. مراحل آماده سازی آن برای ESP8266 عبارتند از:

  • Arduino IDE را بارگیری کنید.
  • پشتیبانی از برد ESP8266 را نصب کنید. در منوی File - Preferences - تنظیمات نشانی اینترنتی https://arduino.esp8266.com/stable/package_esp8266com_index.json را به آدرسهای اضافی مدیر هیئت مدیره اضافه کنید. بعد در منو Tools - Board - Boards Manager install esp8266 by esp8266 community.
  • به عنوان برد انتخاب کنید: ماژول عمومی ESP8266.

برای اداره ESP-12F از صفحه آداپتور استفاده کردم که معمولاً در فروشگاه های آنلاین موجود است. تراشه را به بشقاب لحیم کردم و سپس هدرها را به بشقاب لحیم کردم. فقط در آن زمان متوجه شدم که صفحه آداپتور برای یک نان برد استاندارد بسیار گسترده است! هیچ پین رایگان در کنار آن برای برقراری ارتباط شما باقی نمی گذارد.

راه حلی که من انتخاب کردم استفاده از سیم های U شکل و اتصال آنها مانند تصویر سمت راست قبل از قرار دادن ESP8266 با صفحه آداپتور روی تخته نان است. بنابراین GND و VCC به ریل های تخته نان متصل می شوند و پین های باقی مانده در پایین تر از تخته نان در دسترس قرار می گیرند. نقطه ضعف این است که هنگامی که مدار کامل را تمام کردید ، تخته نان شما کاملاً مملو از سیم خواهد شد. راه حل دیگر این است که دو تخته نان را کنار هم قرار دهید ، همانطور که در این ویدئو نشان داده شده است.

در مرحله بعد ، برای برنامه ریزی ESP-12F از طریق پورت USB رایانه خود ، به یک آداپتور USB به سریال نیاز داریم. من از برنامه نویس FT232RL FTDI استفاده کردم. برنامه نویس دارای یک بلوز برای انتخاب بین 3.3 ولت یا 5 ولت است. برای ESP8266 باید روی 3.3 ولت قرار گیرد. آن را فراموش نکنید زیرا 5 ولت ممکن است تراشه شما را سرخ کند! نصب درایورها باید به صورت خودکار باشد ، اما اگر برنامه نویسی کار نمی کند ، می توانید سعی کنید آنها را به صورت دستی از این صفحه نصب کنید.

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 باز کنید. یا می توانید File - New را انتخاب کنید و فقط کد را کپی/جایگذاری کنید.

اطلاعاتی را باید در ابتدای فایل وارد کنید: نام و رمز عبور WLAN برای استفاده ، جزئیات IP ثابت و شناسه کانال و کلید نوشتن API کانال ThingSpeak.

با توجه به نکته در این وبلاگ ، به جای DHCP که روتر به طور پویا IP تعیین می کند ، ما از IP استاتیک استفاده می کنیم ، جایی که آدرس IP ESP8266 را خودمان تنظیم می کنیم. این بسیار سریعتر به نظر می رسد ، بنابراین ما در زمان فعال و در نتیجه انرژی باتری صرفه جویی می کنیم. بنابراین ما باید یک آدرس IP ثابت و همچنین IP روتر (دروازه) ، ماسک زیر شبکه و یک سرور DNS ارائه دهیم. اگر مطمئن نیستید چه چیزی را باید پر کنید ، نحوه تنظیم IP ثابت را در دفترچه راهنمای روتر خود بخوانید. در رایانه ویندوزی که از طریق Wifi به روتر شما متصل است ، یک پوسته (Windows button-r، cmd) را راه اندازی کرده و ipconfig /all را وارد کنید. در قسمت Wi-Fi بیشتر اطلاعات مورد نیاز خود را خواهید یافت.

با بررسی کد می بینید که برخلاف سایر کدهای آردوینو بیشتر عملکردها به جای تابع حلقه در تابع راه اندازی اتفاق می افتد. این به این دلیل است که ESP8266 پس از اتمام عملکرد راه اندازی به خواب عمیق می رود (مگر اینکه در حالت OTA شروع کرده باشیم). پس از بیدار شدن ، مانند یک راه اندازی مجدد جدید است و دوباره راه اندازی می شود.

در اینجا ویژگی های برجسته کد وجود دارد:

  • پس از بیدار شدن ، کد switchPin (GPIO15 پیش فرض) را روی مقدار بالا تنظیم می کند. این ترانزیستور را روشن می کند ، که به نوبه خود سنسور HC-SR04-P را روشن می کند. قبل از خواب عمیق ، پین را به پایین باز می گرداند ، ترانزیستور و HC-SR04-P را خاموش می کند و مطمئن می شوید که باتری بیشتری مصرف نمی کند.
  • اگر modePIN (GPIO14 پیش فرض) کم است ، کد به جای حالت اندازه گیری در حالت OTA قرار می گیرد. با OTA (به روز رسانی روی هوا) می توانیم سیستم عامل را از طریق Wifi به جای پورت سریال به روز کنیم. در مورد ما این بسیار راحت است زیرا دیگر نیازی نیست سریال را به آداپتور USB متصل کنیم تا به روز رسانی های بیشتر انجام شود. فقط GPIO14 را روی کم تنظیم کنید (با سوئیچ OTA در مدار الکترونیکی) ، ESP8266 (با کلید تنظیم مجدد) را بازنشانی کنید و باید در Arduino IDE برای بارگیری در دسترس قرار گیرد.
  • در PIN آنالوگ (A0) ، ولتاژ باتری را اندازه گیری می کنیم. این به ما امکان می دهد دستگاه خود را ، که عموماً در خواب عمیق دائمی است ، خاموش کنیم ، اگر ولتاژ خیلی کم شود ، زیر minVoltage ، برای محافظت از باتری ها در برابر تخلیه بیش از حد. اندازه گیری آنالوگ بسیار دقیق نیست ، ما اقدامات numMeasuresBattery (پیش فرض 10) را انجام می دهیم و میانگین را برای بهبود دقت در نظر می گیریم.
  • اندازه گیری فاصله سنسور HC-SR04-P در تابع distanceMeasurement انجام می شود. برای افزایش دقت ، اندازه گیری numMeasuresDistance (پیش فرض 3) بار تکرار می شود.
  • برای محاسبه speedOfSound از دما ، رطوبت و فشار توسط سنسور BME280 استفاده می شود. آدرس I2C پیش فرض BME280 0x76 است ، اما اگر کار نکرد ممکن است لازم باشد آن را به 0x77 تغییر دهید: bool bme280Started = bme280.begin (0x77)؛
  • ما از BME280 در حالت اجباری استفاده می کنیم ، به این معنی که یک اندازه گیری طول می کشد و برای صرفه جویی در مصرف برق دوباره به خواب می رود.
  • اگر ظرفیت (l) ، fullDistance (cm) و مساحت (m2) را تنظیم کنید ، کد حجم باقی مانده مخزن آب را از اندازه گیری فاصله محاسبه می کند: دو برابر باقی مانده حجم = ظرفیت +10.0*(fullDistance-distance)*مساحت ؛ و این را در ThingSpeak بارگذاری کنید. اگر مقادیر پیش فرض را حفظ کنید ، فاصله را تا سطح آب بر حسب سانتی متر بارگذاری می کند.

مرحله 6: ساخت مدار الکترونیکی

ساخت مدار الکترونیکی
ساخت مدار الکترونیکی

در بالا نمودار مدار الکترونیکی است. برای یک تخته نان کاملاً بزرگ است ، مخصوصاً با صفحه آداپتور بزرگ و ترفند با سیم های U شکل. در مقطعی مطمئناً آرزو می کردم که از جایگزینی برای اتصال دو تخته نان استفاده کنم ، اما در نهایت موفق شدم.

در اینجا ویژگی های مهم مدار آورده شده است:

  • دو ولتاژ نقش دارند: ولتاژ ورودی از باتری (حدود 3.75V) و 3.3V که ESP8266 و BME280 را تغذیه می کند. 3.3 ولت را روی ریل چپ موج شکن و 3.75 ولت را روی ریل راست قرار دادم. تنظیم کننده ولتاژ 3.75V را به 3.3V تبدیل می کند. طبق دستورالعمل های موجود در برگه داده ، 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 می تواند ولتاژهای بین 0 و 1 ولت را اندازه گیری کند. برای تقسیم ولتاژ ما مقاومتهای 100K و 470K را انتخاب کردیم. این بدان معناست که ولتاژ در پین 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 را مانند نمودار برنامه نویسی وصل کنید. با این کار می توانید مانیتور سریال را در Arduino IDE باز کنید تا پیام های اشکال زدایی را بخوانید و مطمئن شوید که همه چیز مطابق انتظار کار می کند.

برای مدار کامل ، میزان مصرف فعلی 50 میکرو آمپر را در حالت خواب عمیق هنگام کار از باتری اندازه گیری کردم. این شامل ESP8266 ، BME280 ، سنسور اولتراسونیک (خاموش توسط ترانزیستور) و نشت از طریق تقسیم ولتاژ و شاید نشتی های دیگر است. پس خیلی هم بد نیست!

من دریافتم که کل زمان فعال حدود 7 ثانیه است ، که 4.25 ثانیه برای اتصال به Wifi و 1.25 ثانیه برای ارسال داده به ThingSpeak است. بنابراین با جریان فعال 80mA من 160 μAh در ساعت برای زمان فعال پیدا کردم. در حالت خواب عمیق 50 μAh در ساعت اضافه می کنیم که در مجموع 210 μAh در ساعت داریم. این بدان معناست که باتری های 2600 میلی آمپری از لحاظ نظری 12400 ساعت = 515 روز دوام می آورند. این می تواند حداکثر مطلق باشد اگر بتوانیم از ظرفیت کامل باتری ها استفاده کنیم (که اینطور نیست) و هیچ نشتی وجود ندارد که من با اندازه گیری های فعلی خود پیدا نکردم. بنابراین من هنوز ندیده ام که آیا این امر واقعاً به پایان می رسد یا خیر.

مرحله 7: اتمام سنسور

اتمام سنسور
اتمام سنسور
اتمام سنسور
اتمام سنسور
اتمام سنسور
اتمام سنسور

سنسور را در یک ظرف پلاستیکی 1 لیتری قرار دادم که قبلاً سوپ داشت. در پایین من دو سوراخ ایجاد کردم تا متناسب با "چشم" سنسور HC-SR04-P باشد. جدا از سوراخ ها ، ظرف باید ضد آب باشد. سپس با یک حلقه دایره ای که معمولاً برای لوله تخلیه آب باران استفاده می شود ، به دیواره مخزن آب متصل می شود.

از پروژه لذت ببرید!

توصیه شده: