فهرست مطالب:

ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد: 8 مرحله (همراه با تصاویر)
ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد: 8 مرحله (همراه با تصاویر)

تصویری: ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد: 8 مرحله (همراه با تصاویر)

تصویری: ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد: 8 مرحله (همراه با تصاویر)
تصویری: آموزش ساخت ایستگاه آب و هوایی ، گجت هوشمند 🌦/ diy weather station 2024, جولای
Anonim
ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد
ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد
ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد
ایستگاه هواشناسی NaTaLia: ایستگاه آب و هوایی خورشیدی آردوینو به درستی انجام شد

پس از 1 سال موفقیت آمیز در 2 مکان مختلف ، من برنامه های پروژه ایستگاه آب و هوای خورشیدی خود را به اشتراک می گذارم و توضیح می دهم که چگونه این سیستم به یک سیستم تبدیل شده است که می تواند در دوره های طولانی مدت از انرژی خورشیدی زنده بماند. اگر از دستورالعمل های من پیروی کنید و از همان مواد ذکر شده در بالا استفاده کنید ، می توانید ایستگاه هواشناسی خورشیدی بسازید که سالها کار خواهد کرد. در واقع تنها عاملی که مدت زمان کارکرد آن را محدود می کند ، طول عمر باتری است که از آن استفاده می کنید.

مرحله 1: عملکرد ایستگاه هواشناسی

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

2 ، گیرنده: واحد داخلی ساخته شده از Raspberry PI 2 + Arduino Mega دارای گیرنده RF 433 مگاهرتز برای دریافت داده متصل شده است. در تنظیمات من ، این دستگاه هیچ عملکرد صفحه نمایش LCD محلی ندارد. بی اعتنا اجرا می شود. یک برنامه اصلی C مراقبت از دریافت داده های ورودی از آردوینو از طریق سریال است ، سپس داده ها را در یک فایل متنی وارد کرده و آخرین داده های دریافتی را از طریق telnet برای دستگاه های دیگر برای پرس و جو در دسترس قرار می دهد.

این ایستگاه با خواندن مقاومت در برابر نور (که تعیین می کند روز بیرون است یا شب بیرون) ، چراغهای خانه من را کنترل می کند. در مورد من گیرنده بدون سر است اما می توانید پروژه را به راحتی برای افزودن یک صفحه LCD تغییر دهید. یکی دیگر از دستگاه هایی که از آن استفاده می کند ، تجزیه می کند و داده های آب و هوا را از ایستگاه نمایش می دهد ، پروژه دیگر من است: Iasterforge toaster NetBSD.

مرحله 2: نسخه های اول

نسخه های اول
نسخه های اول
نسخه های اول
نسخه های اول
نسخه های اول
نسخه های اول
نسخه های اول
نسخه های اول

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

هنگام طراحی یک سیستم خورشیدی ، تنها چیزی که اهمیت دارد مصرف برق در همه اجزا است: mcu ، فرستنده رادیویی ، تنظیم کننده ولتاژ و غیره.

استفاده از یک رایانه بزرگ مانند تمشک pi یا یک دستگاه وای فای تشنه مانند ESP فقط برای جمع آوری و انتقال چند بیت اطلاعات آب و هوا مازاد خواهد بود ، اما همانطور که در این آموزش نشان خواهم داد ، حتی یک برد کوچک آردوینو نیز چنین است.

بهترین کار این است که جریان را در طول فرایند ساخت خود با یک متر یا با محدوده اندازه گیری کنید (مفید است هنگامی که می خواهید نوسانات کوچکی را در حین کار در بازه های زمانی بسیار کوتاه (میلی ثانیه) اندازه گیری کنید).

در اولین تصویر می توانید اولین ایستگاه من (Arduino Nano Based) و دومین برد Arduino Barebone Atmega 328P را مشاهده کنید.

نسخه اول ، اگرچه کاملاً کار می کرد (نظارت بر محیط و ارسال داده ها از طریق رادیو) مصرف برق بسیار بالایی داشت و 46 میلی آمپر پوند بود و باتری را در چند هفته خالی کرد.

همه نسخه ها از باتری زیر استفاده می کردند:

18650 باتری قابل شارژ لیتیوم یون 6000 میلی آمپر ساعتی محافظ داخلی

در این باتری های ScamFire به روز کنید. اگرچه این یک دستورالعمل نسبتاً قدیمی است ، اما هنوز به دلیل این باتری ساختگی مجبور به اصلاح آن هستم. باتری ذکر شده را خریداری نکنید ، تحقیقات خود را در مورد سایر باتری های LION/LIPO انجام دهید ، همه باتری های 3.7 ولت با این پروژه کار خواهند کرد.

سرانجام وقت داشتم باتری ScamFire را خراب کنم تا ببینم ظرفیت واقعی آن چقدر است. بنابراین ما 2 محاسبه را در کنار ظرفیت های واقعی و "تبلیغ شده" انجام می دهیم.

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

یک مقاله کوچک در مورد باتری های LION/LIPO:

TLDR:

این بدان معناست که حداکثر ولتاژ سلول 4.2 ولت و ولتاژ "اسمی" (متوسط) 3.7 ولت است.

به عنوان مثال ، در اینجا مشخصات ولتاژ یک باتری "کلاسیک" 3.7V/4.2V است. ولتاژ از حداکثر 4.2 شروع می شود و در بیشتر طول عمر باتری به سرعت به حدود 3.7 ولت کاهش می یابد. هنگامی که به 3.4V ضربه می زنید باتری تمام شده است و در 3.0V مدار قطع کننده باتری را قطع می کند.

اندازه گیری های من با استفاده از بار ساختگی:

شارژ باتری: 4.1 ولت

تنظیم قطع: 3.4V

شبیه سازی بار: 0.15A (دستگاه من با پایین رفتن از این مشکل کمی داشت)

ظرفیت اندازه گیری شده: 0.77Ah به صورت رایگان 0.8 Ah که 800 میلی آمپر ساعت است به جای 6000 میلی آمپر ساعت تبلیغ شده!

از آنجا که این باتری حتی مدار حفاظتی نداشت می توانم آزادانه پایین بیایم اما در 3.4V پس از 10 دقیقه در حال حاضر به 3.0V سقوط می کند.

بنابراین با محاسبات ساده باتری ارائه می دهد:

نظری

ولتاژ باتری = 3.7 ولت

قدرت = 3.7x6000 = 22000 میلی وات ساعت

واقعی

ولتاژ باتری = 3.7VPower = 3.7x800 = 2960 mWh

نسخه: 0.1 ARDUINO NANO BASED

حتی با کتابخانه LowPower ، نانو آردوینو 16 میلی آمپر پوند (در حالت خواب) -> FAIL مصرف می کند.

نظری

Pavg = VxIavg = 5Vx16mA = 80 میلی وات

عمر باتری = 22000/80 = 275 ساعت = 11 روز تقریبا

RealPavg = VxIavg = 5Vx16mA = 80 میلی وات

عمر باتری = 800/80 = 10 ساعت

نسخه: 0.2 Atmega 328P Barebone

توان مصرفی ATmega328 بستگی زیادی به کار شما با آن دارد. فقط در حالت پیش فرض نشسته ، می تواند از 16mA @ 5V در حالی که با 16MHz کار می کند استفاده کند.

وقتی ATmega328P در حالت فعال باشد ، چندین میلیون دستور را در ثانیه به طور مداوم اجرا می کند. علاوه بر این ، تجهیزات جانبی داخلی مبدل آنالوگ به دیجیتال (ADC) ، رابط جانبی سریال (SPI) ، تایمر 0 ، 1 ، 2 ، رابط دو سیم (I2C) ، USART ، تایمر Watchdog (WDT) و تشخیص تشخیص قهوه ای (BOD) مصرف برق

برای صرفه جویی در مصرف برق ، ATmega328P MCU از تعدادی حالت خواب پشتیبانی می کند و لوازم جانبی بلااستفاده را می توان خاموش کرد. حالت خواب از نظر طول مدت خواب و زمان مورد نیاز برای بیدار شدن (دوره بیدار شدن) از نظر فعال بودن قسمت ها متفاوت است. حالت خواب و لوازم جانبی فعال را می توان با کتابخانه های خواب و تغذیه AVR یا به طور خلاصه ، با کتابخانه عالی کم مصرف کنترل کرد.

استفاده از کتابخانه Low-Power ساده است اما بسیار قدرتمند است. عبارت LowPower.powerDown (SLEEP_8S ، ADC_OFF ، BOD_OFF) ؛ بسته به اولین آرگومان ، MCU را به مدت 16 میلی ثانیه تا 8 ثانیه در SLEEP_MODE_PWR_DOWN قرار می دهد. ADC و BOD را غیرفعال می کند. خاموش کردن خواب به این معنی است که همه عملکردهای تراشه تا وقفه بعدی غیرفعال است. علاوه بر این ، نوسان ساز خارجی متوقف می شود. فقط وقفه های سطحی در INT1 و INT2 ، وقفه های تغییر پین ، مطابقت آدرس TWI/I2C یا WDT ، در صورت فعال بودن ، می تواند MCU را بیدار کند. بنابراین با یک عبارت واحد ، مصرف انرژی را به حداقل می رسانید. در مورد 3.3 ولت پرو مینی بدون LED قدرت و بدون رگولاتور (که در زیر مشاهده می کنید) که دستور را اجرا می کند ، مصرف انرژی 4.5 میکرو آمپر است. این بسیار نزدیک به آنچه در برگه اطلاعات ATmega328P برای خاموش شدن خواب با WDT 4.2 μA فعال شده است (برگه داده در منابع پیوند شده) بسیار نزدیک است. بنابراین ، من کاملاً مطمئن هستم که عملکرد powerDown هر آنچه ممکن است منطقی باشد را خاموش می کند. با عبارت LowPower.powerDown (SLEEP_FOREVER، ADC_OFF، BOD_OFF) ؛ WDT غیرفعال می شود و تا زمانی که وقفه ای ایجاد نشود بیدار نمی شوید.

بنابراین با تنظیم برهنه می توانیم تراشه را به مدت 5 دقیقه در حالت خواب قرار دهیم ، در حالی که انرژی بسیار کمی مصرف می کند (0.04 میلی آمپر بدون وسایل جانبی). اما این تنها تراشه Atmega 328P با نوسان ساز کریستال است و هیچ چیز دیگری نیست ، تقویت کننده ولتاژ مورد استفاده در این پیکربندی برای افزایش ولتاژ باتری از 3.7V -> 5.0 V نیز 0.01 میلی آمپر مصرف می کند.

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

فرمول محاسبه میزان مصرف دقیق دستگاه در دو حالت خواب و بیدار شدن به شرح زیر است:

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

یون = 13 میلی آمپر

این بیشتر از فرستنده RF433 مگاهرتز می آید:

فرستنده:

ولتاژ کار: حداکثر 3 ولت - 12 ولت مصرف برق 12 ولت جریان کار: حداکثر کمتر از 40 میلی آمپر حداکثر ، و حداقل 9 متر حالت رزونانس: (SAW) حالت مدولاسیون: ASK فرکانس کار: حوا 315 مگاهرتز یا 433 مگاهرتز قدرت انتقال: 25 میلی وات (315 مگاهرتز در 12 ولت) خطای فرکانس: +150 کیلوهرتز (حداکثر) سرعت: کمتر از 10 کیلوبیت بر ثانیه

خواب = 1 میلی آمپر

بدون مقاومت در برابر عکس بسیار کمتر خواهد بود.

زمان Trunon تن = 250 mS = 0.25 ثانیه

زمان خواب خواب = 5 دقیقه = 300 ثانیه

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

Iavg = (0.25s*13mA + 300s*1mA) / (0.25s + 300s)

Iavg = 1.26mA

Pavg = VxIavg = 5Vx1.26mA = 6 مگاوات

نظری

عمر باتری = 22000mWh/6mW = 3666 ساعت = 152 روز تقریبا

واقعی

عمر باتری = 800mWh/6mW = 133 ساعت = 5.5 روز تقریبا

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

با خیال راحت ایستگاه بسازید و یافته ها و محاسبات خود را در نظرات بنویسید و مقاله را به روز خواهم کرد. من همچنین از نتایج با MCU های مختلف و مبدل های تقویت کننده قدردانی می کنم.

مرحله 3: ساخت یک ایستگاه آب و هوایی موفق

ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق
ساخت ایستگاه هواشناسی موفق

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

ماژول کوچک جدید روی تصویر که حتی نشانگر ندارد در واقع 3mA (*FAIL*) را به خودی خود تخلیه می کند ، بنابراین من با صفحه قدیمی خود ماندم:

PFM کنترل DC-DC USB 0.9V-5V تا 5V DC افزایش ماژول منبع تغذیه

در زمان نگارش این ماژول هنوز 99 درصد در Ebay در دسترس است ، اما اگر تصمیم دارید از تقویت کننده دیگری استفاده کنید ، همیشه مصرف برق در حالت آماده به کار را بررسی کنید. با یک تقویت کننده با کیفیت خوب ، نباید بیشتر از من (0.01 میلی آمپر) باشد ، اگرچه LED کوچک روی صفحه باید لحیم شود.

مرحله 4: لیست سخت افزار

لیست سخت افزار
لیست سخت افزار
  • 18650 باتری قابل شارژ لیتیوم یون 6000 میلی آمپر ساعتی محافظ داخلی
  • Atmega 328P16M 5V با بوت لودر
  • کیت Adafruit DC Boarduino (سازگار با آردوینو) (با ATmega328) <اگر در آینده پروژه های برهنه انجام می دهید ، سرمایه گذاری خوبی خواهد بود
  • مقاومت در برابر نور حساس به نور Photoresistor Optoresistor 5 میلی متر GL5539
  • دیودهای 1A 1000V 1N4007 IN4007 DO-41 دیودهای اصلاح کننده
  • PFM کنترل DC-DC USB 0.9V-5V تا 5V DC افزایش ماژول منبع تغذیه
  • 1.6W 5.5V 266mA مینی پنل خورشیدی ماژول سیستم اپوکسی سلول شارژر DIY
  • ماژول شارژر هیئت مدیره TP405 5V Mini USB 1A Lithium Battery Charger Board
  • کیت پیوند فرستنده و گیرنده 433 مگاهرتز RF برای کنترل از راه دور Arduino/ARM/MC <کیت ، شامل فرستنده و بازگرداننده است
  • IP65 Switch Protector Junction Box محوطه ضد آب در فضای باز 150x110x70mm
  • ماژول سنسور دما و رطوبت نسبی DHT22 جدید برای آردوینو
  • 1x220 اهم ، 2x10KOhm ، 1xLED ، 1x مینی سوئیچ ، 1x1N4007diode
  • تشدید کننده / نوسان ساز سرامیکی Adafruit 16 مگاهرتز [ADA1873]
  • Arduino UNO/Mega و غیره برای ایستگاه گیرنده + Raspberry PI 1/2/3
  • جعبه پلاستیکی اکریلیک شفاف (اختیاری)

همه این موارد را می توانید در Ebay پیدا کنید ، من نمی خواهم با پیوند دادن به صفحات خود فروشنده ای را ارتقا دهم و به هر حال پیوندها در آینده از بین می روند.

نکات مربوط به لیست سخت افزار:

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

شارژر خورشیدی شامل 2 LED رنگی کوچک است که فقط در صورت شارژ خورشیدی روشن می شوند و نشان می دهند (قرمز- شارژ ، آبی- حالتهای کامل شارژ). اینها را نیز می توان بدون فروش فروخت. در حین شارژ ، کمی بیشتر به باتری می بخشد.

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

TP405 5V Mini USB 1A Lithium Battery Charging Board: متأسفانه این برد شامل حفاظت جریان معکوس در پنل خورشیدی نمی شود ، برای این کار به 1 دیود دیگر نیاز دارید تا بین یک پا پنل خورشیدی و مدار شارژ قرار گیرد تا جریان را متوقف کند در شب به پانل خورشیدی بازگردد

مرحله 5: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

این برد شامل اجزای نسبتاً کمی است و نشانگرهای روی برد نسبتاً ساده هستند.

اطمینان حاصل کنید که Atmega328P را در راه اشتباه وارد نمی کنید (که می تواند گرم شود و تراشه را آجر کند ، ممکن است تقویت کننده ولتاژ را نیز از بین ببرد).

در این تنظیم تراشه رو به پایین است (سوراخ کوچک U با PIN1 مشخص می شود). همه اجزای دیگر باید واضح باشند.

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

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

TP: نقطه آزمایش اندازه گیری جریان برای مدار کلی است.

DHT22: DHT11 ارزان نخرید ، 50 سنت بیشتر هزینه کنید تا DHT22 سفید را تهیه کنید که می تواند دمای منفی را نیز اندازه گیری کند.

مرحله 6: طراحی مورد

طراحی مورد
طراحی مورد
طراحی مورد
طراحی مورد
طراحی مورد
طراحی مورد

اگرچه کمی مفرط است ، اما یک مکعب پرینت سه بعدی (weather_cube) ساخته شد تا سنسور دما DHT22 را در جای خود نگه دارد. مکعب به قسمت پایین جعبه IP چسبانده شده است و تنها 1 سوراخ برای رسیدن هوا به سنسور دارد. من تور را در سوراخ علیه زنبورها ، زنبورها و مگس های کوچک دیگر اضافه کرده ام.

درصورتی که آن را روی یک ستون ظرف در فضای باز نصب می کنید ، می توانید به صورت اختیاری از یک جعبه خارجی استفاده کنید تا ایستگاه ضد آب شود.

ایده برای 1 ویژگی مفید: افزودن یک صفحه بزرگ فلزی 1-2 سانتی متر در بالای جعبه که سایه نور خورشید را در تابستان فراهم می کند ، اگرچه این می تواند نور مفید خورشید ما را نیز از پنل دور کند. می توانید طرحی ارائه دهید که پانل و جعبه را از هم جدا می کند (تابلو را در زیر نور خورشید قرار دهید ، جعبه در سایه است).

در تصاویر: یکی از ایستگاهها پس از 1 سال از محیط کار حذف شد ، ولتاژ باتری هنوز 3.8 ولت خیره کننده است ، هیچ آسیبی به آب در هیچ قسمتی از جعبه وارد نمی شود ، اگرچه توری که در انتهای مکعب چسبانده بودم پاره شده بود. دلیل نیاز به سرویس ایستگاه ، خرابی اتصال در کانکتور LDR است ، اگرچه به نظر می رسید که کابل بلوز هنوز سر جایش است ، اما اتصال قطع شده است ، بنابراین پین گاهی شناور می شود و بازخوانی های آنالوگ LDR بدی ارائه می دهد. پیشنهاد: اگر از jumpercables استاندارد رایانه استفاده می کنید ، پس از اینکه ایستگاه کاملاً کار می کند ، همه آنها را چسب بزنید تا از این امر جلوگیری شود.

مرحله 7: نرم افزار

نرم افزار
نرم افزار

کد نرم افزار به 3 کتابخانه خارجی (LowPower ، DHT ، VirtualWire) نیاز دارد. من اخیراً با پیدا کردن برخی از آنها به راحتی در اینترنت مشکل داشتم ، بنابراین آنها را در یک فایل ZIP جداگانه ضمیمه کردم. صرف نظر از سیستم عامل شما که از Linux/Windows استفاده می کنید ، فقط پوشه کتابخانه Arduino IDE خود را پیدا کرده و آنها را در آنجا استخراج کنید.

فقط یک نکته ، صرفنظر از اینکه من قبلاً خرید DHT11 را توصیه نکرده ام ، اگر از نوع غلط سنسور DHT استفاده می کنید ، برنامه در ابتدا در قسمت راه اندازی برای همیشه متوقف می شود (حتی 3 بار چشمک زدن led راه اندازی را نخواهید دید).

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

من دریافته ام که کاهش میزان باد باعث افزایش ثبات انتقال رادیویی می شود. ایستگاه مقدار بسیار کمی داده ارسال می کند ، 300 bps بیش از اندازه کافی است. همچنین فراموش نکنید که فرستنده فقط از حدود کار می کند. 4.8V ، در نسخه 3.3V آینده این ممکن است منجر به کیفیت انتقال حتی بدتر شود (ارسال داده ها از طریق دیوارها و موانع دیگر). من با استفاده از آردوینو مگا متصل به Raspberry PI 2 که مگا را از PI تغذیه می کند ، مشکلی پیدا می کنم که هیچگونه انتقال دریافت نکردم. راه حل این بود که مگا را از منبع تغذیه خارجی جداگانه 12 ولت تغذیه کنید.

مرحله 8: نسخه 2 (بر اساس ESP32)

نسخه 2 (بر اساس ESP32)
نسخه 2 (بر اساس ESP32)
نسخه 2 (بر اساس ESP32)
نسخه 2 (بر اساس ESP32)
نسخه 2 (بر اساس ESP32)
نسخه 2 (بر اساس ESP32)

همه چیزهایی که می توانند خراب شوند به قول مورفی خوب قدیمی خراب می شود و سرانجام پس از سالها ایستگاه ها به روش های اسرار آمیز شکست خوردند. یکی از آنها شروع به ارسال داده های خورشیدی عجیب و غریب کرد که به ده ها هزار نفر رسید ، که به دلیل این امر غیرممکن است: برد آردوینو شامل 6 کانال (8 کانال در Mini و Nano ، 16 در مگا) ، 10 بیتی مبدل آنالوگ به دیجیتال است. این بدان معناست که ولتاژهای ورودی بین 0 تا 5 ولت را به مقادیر صحیح بین 0 تا 1023 ترسیم می کند. پس از تعویض رادیو ، LDR و برنامه ریزی مجدد Atmega 328P چندین بار منصرف شدم و تصمیم گرفتم که زمان نوآوری فرا رسیده است. بریم ESP32.

برد مورد استفاده من این بود: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

میکروکنترلر ESP-32

ولتاژ کار 3.3V پین های ورودی/خروجی دیجیتال 19 پین های ورودی آنالوگ 6 سرعت ساعت (حداکثر) 240 مگاهرتز فلش 4M بایت طول 5 میلی متر عرض 2.54 میلی متر وزن 4 گرم

که برخلاف عکس لوگوی LOLIN (تقلبی از چین) ندارد. اولین غافلگیری دلپذیر من این بود که pinout چاپ شده روی تخته با پینوت آردوینو مطابقت داشت! پس از برخورد با بسیاری از تخته های noname که در آن مجبور بودم به دنبال pinouts تمام روز مرده خسته از اشتباهات در نهایت یک تخته که در آن pinout مستقیم به جلو WoW!

اما در اینجا قسمت تاریک ماجرا وجود دارد:

در ابتدا من LDR را به A15 وصل کردم که پین 12 است زیرا راحت تر می توان پین ها را با هم گرم کرد. سپس من 4095 بازخوانی (که حداکثر آن را می توانید با AnlogRead در ESP32 بدست آورید) دریافت کردم که باعث ناراحتی من شد زیرا تمام دلیل بازسازی ایستگاه بازخوانی های LDR خراب از نسخه قبلی بود (DHT هنوز خوب کار می کرد) بنابراین معلوم می شود که:

esp 32 دو رجیستر 12 بیتی ACD را ادغام می کند. ADC1 با 8 کانال متصل به GPIOs 32-39 ande ADC2 با 10 کانال در پین های دیگر.نکته این است که ESP32 از ADC2 برای مدیریت توابع wifi استفاده می کند ، بنابراین اگر از Wifi استفاده می کنید ، نمی توانید از آن ثبت نام استفاده کنید. API درایور ADC از ADC1 (8 کانال ، متصل به GPIO 32-39) و ADC2 (10 کانال ، متصل به GPIO 0 ، 2 ، 4 ، 12 - 15 و 25 - 27) پشتیبانی می کند. با این حال ، استفاده از ADC2 محدودیت هایی برای برنامه دارد:

ADC2 توسط درایور Wi-Fi استفاده می شود. بنابراین برنامه زمانی می تواند از ADC2 استفاده کند که درایور Wi-Fi روشن نشده باشد. برخی از پین های ADC2 به عنوان پین های تسمه ای (GPIO 0 ، 2 ، 15) استفاده می شوند بنابراین نمی توان آزادانه از آنها استفاده کرد. چنین موردی در کیت های توسعه رسمی زیر وجود دارد:

بنابراین اتصال LDR از پین 12 به A0 که VP است همه چیز را برطرف کرد اما من متوجه نمی شوم چرا آنها حتی پین های ADC2 را برای سازندگان موجود می کنند. چند نفر دیگر از علاقه مندان زمان زیادی را هدر دادند تا این موضوع را دریابند؟ حداقل پینهای غیرقابل استفاده را با رنگ قرمز یا چیزی علامت بزنید یا در دفترچه راهنما به آن اشاره نکنید ، بنابراین سایر سازندگان فقط در صورت نیاز واقعاً می توانند از آنها مطلع شوند. تمام هدف ESP32 استفاده از آن با WIFI است ، همه از آن با WIFI استفاده می کنند.

شروع خوبی برای راه اندازی Arduino IDE برای این برد:

اگرچه آن را در کد اینجا قرار دادم ، اما یکبار دیگر می آید:

این کد ممکن است برای سایر مدلهای ESP32 به غیر از Weemos LOLIN 32 کامپایل نشود!

تنظیمات ایجاد: -استفاده از بارگذاری/سریال: 115200 -استفاده از پردازنده/رم: 240 مگاهرتز (Wifi | BT) -استفاده از فرکانس فلش: 80 مگاهرتز

تعداد زیادی ایستگاه هواشناسی مبتنی بر ESP32 در شبکه وجود دارد ، آنها بسیار بیشتر از نسخه 1 من با تراشه barebone هستند زیرا تنظیم آنها آسان تر است ، شما نیازی به برنامه نویس ندارید فقط دستگاه را روی usb وصل کنید و آن و برنامه های خود را برنامه ریزی کنید حالت خواب عمیق برای مدت طولانی کار با باتری عالی است. بلافاصله این اولین چیزی بود که من حتی قبل از لحیم کاری در پین های شکستن آزمایش کردم ، زیرا همانطور که در چندین قسمت در این پروژه اشاره کردم ، مهمترین چیز مصرف برق است و باتری فعلی (جعلی) و پنل خورشیدی کوچک در حالت آماده به کار قدرت نمی تواند بیش از 1-2mA باشد زیرا در غیر این صورت پروژه نمی تواند خود را در دراز مدت حفظ کند.

باز هم تعجب آور بود که حالت خواب عمیق مطابق تبلیغات عمل می کند. در طول خواب عمیق ، جریان آنقدر کم بود که چند متر ارزان قیمت من حتی نمی تواند آن را اندازه گیری کند (برای من کار می کند).

در هنگام ارسال داده ها ، جریان در حدود 80mA (که حدود 5 برابر بیشتر از زمان بیدار شدن و انتقال Atmega 328P است) بود ، اما فراموش نکنید که در V1 یک تخلیه متوسط 1mA قدرت در LDR در حالت خواب وجود داشت (که به میزان نور نیز بستگی داشت و از 0.5mA - 1mA) که در حال حاضر از بین رفته است.

اکنون که باتری UltraFire خراب شده است اگر از همان باتری استفاده می کنید ، آنچه می توانید انتظار داشته باشید این است:

Iavg = (Ton*Ion + Tsleep*Isleep) / (Ton + Tsleep)

Iavg = (2s*80mA + 300s*0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 میلی وات

نظری

عمر باتری = 22000mWh/2.5mW = 8800 ساعت = تقریبا 366 روز

واقعی

عمر باتری = 800mWh/2.5mW = 320 ساعت = تقریباً 13 روز

من محدوده ای برای اندازه گیری دقیق زمان روشن شدن نداشتم ، اما با تغییراتی که انجام دادم ، حدود 2 ثانیه خاموش می شود.

من نمی خواستم بعدازظهر را برای کدگذاری سفارشی همه چیز صرف کنم ، بنابراین به دنبال ایستگاه های آب و هوایی دیگر در Instructables بر اساس ESP32 بودم تا ببینم آنها برای ذخیره داده ها چه کار می کنند. متأسفانه متوجه شدند که آنها از سایتهای انعطاف ناپذیر و محدود مانند weathercloud استفاده می کنند. از آنجا که من طرفدار "ابر" نیستم و کد آنها به دلیل تغییر API سایت از آن زمان به بعد خراب شد ، من 10 دقیقه وقت گذاشتم تا یک راه حل سفارشی ایجاد کنم زیرا آنقدرها هم که فکر می کنید سخت نیست. بیایید شروع کنیم!

اول از همه هیچ عکس برد مدار برای این پروژه به طور جداگانه وجود ندارد ، زیرا از قطعات دقیقاً مشابه V1 استفاده می کند (متأسفم که در تصویر زردپوش نازک لحیم شده است) با این تفاوت که همه چیز 3.3 ولت خاموش می شود. DHT با کشیدن به VCC متصل می شود ، LDR با 10k پایین می آید. مشکلی که ممکن است با باتری های 18650 مانند جعلی چینی من (6500 mAh ultra sun fire lol: D) مشاهده شود این است که آنها منحنی تخلیه را از حدود 4.1 ولت جدید شروع می کنند و تا زمانی که مدار قطع کننده آنها شروع به کار می کند تا از آسیب سلول جلوگیری کند (کسانی که به اندازه کافی خوش شانس هستند که آن را داشته باشند). این به هیچ عنوان به عنوان ورودی 3.3 ولت برای ما خوب نیست. اگرچه این برد LOLIN دارای اتصال باتری لیتیوم و مدار شارژ در این پروژه است ، اما من می خواستم تا آنجا که می توانم از ایستگاه قدیمی بازسازی کنم ، بنابراین با 18650 قدیمی نمی توانید از این شارژر داخلی استفاده کنید. راه حل ساده بود: من یک کابل میکرو USB را که از طریق تقویت کننده ولتاژ قدیمی به 5 ولت لحیم شده بود قطع کردم و مشکل voila حل شد ، زیرا برد microUSB دارای تنظیم کننده است.

بنابراین تفاوت بین نسخه قدیمی و جدید که در باتری قدیمی 3.7 ولت -> تقویت شده به 5 ولت -> آردو با 5 ولت کار می کند -> همه اجزای آن با 5 ولت کار می کند.

در حالت جدید: باتری 3.7 ولت -> افزایش یافته تا 5 ولت -> تنظیم شده از طریق پردازنده روی ESP32 -> همه قطعات با 3.3 ولت کار می کند.

از نظر نرم افزاری ما به کتابخانه DHT دیگری نیز نیاز داریم ، DHT Arduino با ESP سازگار نیست. آنچه ما نیاز داریم DHT ESP نامیده می شود.

من کد خود را بر اساس مثال DHT که این کد ارائه شده است ، پایه گذاری کردم. نحوه کار کد این است:

1 ، داده های زیست محیطی را از DHT + داده های خورشیدی از فتوسل دریافت کنید

2 ، با IP ثابت به وای فای متصل شوید

3 ، ارسال اطلاعات به یک اسکریپت php

4 ، 10 دقیقه بخوابید

همانطور که ملاحظه می کنید ، من کد را برای کارآیی تنظیم کردم تا زمان بیداری را به حداقل برسانم ، زیرا 5 برابر قدرت قبلی نسبت به پروژه قدیمی هنگام روشن شدن تخلیه می شود. چطور این کار را کردم؟ قبل از هر چیز اگر خطایی وجود داشته باشد ، تابع getTemperature () با false برمی گردد (این بدان معناست که 10 دقیقه دوباره بخوابید). این می تواند مانند این باشد که سنسور DHT راه اندازی نمی شود یا اتصال wifi در دسترس نیست. همانطور که متوجه حلقه معمول () برای ادامه تلاش وای فای برای همیشه می شوید نیز حذف شد اما باید 1 ثانیه تاخیر در آنجا باقی بماند در غیر این صورت همیشه متصل نمی شود و همچنین بستگی به نوع AP ، بار و غیره دارد. اتفاق می افتد ، با 0.5 ثانیه رفتار ناسازگار داشتم (گاهی اوقات نمی توان آن را وصل کرد). اگر کسی راه بهتری برای این کار می داند ، لطفاً آن را در نظرات بنویسید. فقط وقتی داده های DHT خوانده می شود و اتصال wifi برقرار می شود ، سعی می کند داده ها را به اسکریپت روی سرور وب ارسال کند. همه انواع توابع هدر دادن زمان مانند Serial.println () در حالت عادی عملکرد نیز غیرفعال هستند. من به عنوان سرور از IP برای جلوگیری از جستجوی غیر ضروری DNS استفاده می کنم ، در کد من هم دروازه پیش فرض و هم سرور dns روی 0.0.0.0 تنظیم شده است.

من نمی فهمم چرا ایجاد API خود بسیار سخت است در حالی که تنها چیزی که لازم است این است:

sprintf (answer، "temp =٪ d & hum =٪ d & hi =٪ d & sol =٪ d"، temp، hum، hi، sol)؛

int httpResponseCode = http. POST (پاسخ) ؛

شما این کد کوچک php را روی هر رزبری pi قرار می دهید و می توانید کارهای سیستم () را بر اساس تله متری فوراً انجام دهید مانند روشن کردن فن ها یا روشن شدن چراغ ها در صورت تاریکی کافی.

چند نکته در مورد کد:

WiFi.config (staticIP ، gateway ، subnet ، dns) ؛ // باید بعد از اینکه Wifi چقدر گنگ شروع شود…

WiFi.mode (WIFI_STA) ؛ // در غیر این صورت باید یک AP ناخواسته نیز ایجاد کند

بله خوب حالا می دانید همچنین ترتیب پیکربندی IP می تواند از طریق پلتفرم ها تغییر کند ، ابتدا مثالهای دیگری را امتحان کردم که مقادیر دروازه و زیر شبکه تغییر کرده اند. چرا IP ثابت را تنظیم کنیم؟ خوب ، کاملاً واضح است ، اگر یک جعبه اختصاصی در شبکه خود مانند یک سرور لینوکس دارید که isc dhcpd را اجرا می کند ، نمی خواهید صد میلیون ورودی log از زمان بیدار شدن ESP و دریافت IP از DHCP داشته باشید. روترها معمولاً انجمن ها را وارد نمی کنند تا ناپدید شوند. این قیمت صرفه جویی در مصرف برق است.

V2 به دلیل کیفیت بد باتری هرگز نتوانست خود را حفظ کند و من آن را به سادگی روی آداپتور گذاشتم ، بنابراین اگر می خواهید V1 یا V2 بسازید ، باتری ذکر شده را خریداری نکنید ، خودتان در مورد باتری ها تحقیق کنید (هر 18650 ظرفیت تبلیغ شده بیش از 2000 میلی آمپر ساعت در Ebay یک کلاهبرداری با احتمال زیاد است).

توصیه شده: