فهرست مطالب:

Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi: 12 مرحله (همراه با تصاویر)
Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi: 12 مرحله (همراه با تصاویر)

تصویری: Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi: 12 مرحله (همراه با تصاویر)

تصویری: Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi: 12 مرحله (همراه با تصاویر)
تصویری: Use Cases in UTXO DeFi / 1.10.2024 on Spaces (Chapters in Description) 2024, جولای
Anonim
Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi
Pool Pi Guy - سیستم هشداردهنده هوش مصنوعی و نظارت بر استخر با استفاده از Raspberry Pi

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

من اخیراً چگونگی استفاده از Raspberry Pi را با OpenCV و TensorFlow ، به همراه سنسور سطح آب و شیر برقی برای حل هر دو مشکل پیدا کرده ام - و از انجام آن لذت ببرید!

همچنین به نظر می رسد یک سیستم هشداردهنده عالی نیز باشد - حرکت فعال شده ، با هوش مصنوعی کنترل می شود ، بی نهایت قابل تنظیم است.

بیایید شیرجه بزنیم

مرحله 1: برنامه بزرگ

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

  1. Raspberry Pi را با OpenCV و TensorFlow راه اندازی کنید
  2. یک وب کم را از طریق یک کابل USB طولانی متصل کنید
  3. برای تشخیص حرکت یک الگوریتم OpenCV بنویسید
  4. برای تشخیص شی از TensorFlow استفاده کنید
  5. برای نمایش تصاویر جالب ، یک سرور وب روی رزبری پای تنظیم کنید
  6. با IFTTT ادغام کنید تا در صورت شناسایی فرد ، هشدارهای تلفن همراه را فعال کند
  7. یک HAT رله به رزبری پای وصل کنید و آن را به یک شیر برقی وصل کنید که آب را به استخر اضافه می کند
  8. یک سنسور سطح آب را به رزبری پای وصل کنید و با استفاده از GPIO Pi با آن ارتباط برقرار کنید
  9. کمی کد بنویسید تا همه را به هم بچسبانید

مرحله 2: لیست خرید

لیست خرید
لیست خرید

همه اجزای آن به راحتی از آمازون در دسترس هستند. با خیال راحت آزمایش و تبادل اجزا را انجام دهید - این نیمی از سرگرمی است!

  1. تمشک پای
  2. منبع تغذیه Raspberry Pi (در اینجا صرفه جویی نکنید)
  3. کارت حافظه (بزرگتر بهتر است)
  4. قاب (این مورد به اندازه کافی بزرگ است که Pi و HAT را در خود جای دهد)
  5. وب کم USB (هر وب کم می تواند انجام دهد ، اما شما می خواهید که تصاویری خوب داشته باشد و نور را به خوبی متعادل کند)
  6. کابل فرمت USB (در صورت نیاز - اندازه گیری فاصله بین Pi و محل قرارگیری دوربین)
  7. تخته رله HAT (این رله دارای 3 رله است و ما فقط به یک رله نیاز داریم ، اما به زودی از بقیه استفاده خواهید کرد!)
  8. شیر برقی
  9. اتصالات سلونوئید 1 و اتصالات 2 (این بستگی به این دارد که برقی را در چه زمینه ای قرار دهید ، اما این موارد برای من کار کرد)
  10. منبع تغذیه برقی (هر 24 ولت AC می تواند انجام دهد)
  11. کابل (دوباره ، تقریباً هر کابل 2 رشته ای انجام می دهد - جریان حداقل است)
  12. سوئیچ شناور سطح آب (این فقط یک مثال است ، آنچه را می توان به راحتی به استخر شما متصل کرد بررسی کنید)
  13. برخی از سیم های Jumper و اتصالات Wire

مرحله 3: رزبری پای خود را تنظیم کنید

Raspberry Pi خود را تنظیم کنید
Raspberry Pi خود را تنظیم کنید

Raspberry Pi یک کامپیوتر کوچک عالی است. هزینه آن فقط 35 دلار است ، به طور مداوم اجرا می شود و دارای نرم افزار و سخت افزارهای سازگار زیادی است. راه اندازی آن بسیار آسان است:

  1. کارت SD خود را فرمت کنید. این نیاز به مراقبت ویژه دارد - Raspberry Pi فقط می تواند از کارت SD با فرمت FAT بوت شود. این دستورالعمل ها را دنبال کنید.
  2. رزبری پای را به یک صفحه کلید و موس USB ، به علاوه یک صفحه نمایش HDMI وصل کنید و دستورالعمل های آموزش Raspberry Pi NOOBS را دنبال کنید. مطمئن شوید که WiFi را تنظیم کرده و دسترسی SSH را فعال کنید. فراموش نکنید که رمز عبور را برای حساب پیش فرض pi تنظیم کنید.
  3. در شبکه خانگی خود یک IP ثابت برای رزبری پای تنظیم کنید - SSH را بسیار ساده تر می کند.
  4. مطمئن شوید که یک کلاینت ssh روی دسکتاپ/لپ تاپ خود نصب کرده اید. برای رایانه شخصی من Putty را توصیه می کنم ، که می توانید از اینجا نصب کنید.
  5. USB و HDMI را از Raspberry Pi جدا کنید ، آن را راه اندازی مجدد کرده و به آن ssh وارد کنید - اگر همه چیز کار کرد ، باید چیزی شبیه به این را ببینید:

Linux raspberrypi 4.14.98-v7+ #1200 SMP سه شنبه 12 فوریه 20:27:48 GMT 2019 armv7l

برنامه های همراه سیستم Debian GNU/Linux نرم افزار رایگان هستند. شرایط دقیق توزیع برای هر برنامه در فایلهای جداگانه در/usr/share/doc/*/copyright توضیح داده شده است. دبیان گنو/لینوکس مطلقاً بدون ضمانت ، تا حدی که توسط قوانین قابل اجرا مجاز است ، ارائه می شود. آخرین ورود: دوشنبه 13 مه 10:41:40 2019 از 104.36.248.13 pi@raspberrypi: ~ $

مرحله 4: OpenCV را راه اندازی کنید

OpenCV را راه اندازی کنید
OpenCV را راه اندازی کنید

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

با نصب virtaulenvwrapper شروع کنید: ما برای انجام همه برنامه نویسی خود از پایتون استفاده می کنیم و virtualenv به ما کمک می کند تا وابستگی ها را برای OpenCV و TensorFlow در مقابل Flask یا GPIO جدا نگه داریم:

pi@raspberrypi: su $ sudo pip virtualenvwrapper را نصب کنید

اکنون می توانید "mkvirtualenv" را برای ایجاد یک محیط جدید ، "workon" برای کار بر روی آن و موارد دیگر را اجرا کنید.

بنابراین ، بیایید محیطی را برای دستکاری تصویر خود ایجاد کنیم ، با پایتون 3 به عنوان مترجم پیش فرض (سال 2019 است ، هیچ دلیلی برای پایبندی به پایتون 2 قدیمی وجود ندارد):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (cv) pi@raspberrypi:

اکنون آماده نصب OpenCV هستیم. ما بیشتر آموزش عالی OpenCV را دنبال می کنیم. به طور خاص مرحله 1 و 2 آنها را دنبال کنید:

sudo apt -y به روز رسانی سودو apt -y ارتقا ## نصب وابستگی ها sudo apt-get -y install build-important checkin install cmake pkg-config yasm sudo apt-get -y install git gfortran sudo apt-get -y install libjpeg8-dev libjasper- dev libpng12-dev sudo apt-get -y install libtiff5-dev sudo apt-get -y install libtiff-dev sudo apt-get -y نصب libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y نصب libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y نصب libgstreamer0.10-dev libgstreamer-plugins-base0. 10-dev sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt-get -y install libatlas-base-dev sudo apt-get -y install libmp3lame-dev libtheora-dev sudo apt-get -y install libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y install libavresample-dev sudo apt-get -y install x264 v4l-utils sudo apt -get -y libprotobuf را نصب کنید -dev protobuf-compiler sudo apt-get -y install libgoogle-glog-dev libgflags-dev sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-get install libqtgui4 sudo apt-get install libqt4- تست

اکنون ما فقط می توانیم OpenCV را با اتصالات پایتون در داخل cv virtualenv (هنوز هم در آن هستید ، درست کنید؟) با استفاده از

pip نصب opencv-contrib-python

و بس! ما OpenCV را روی Raspberry Pi خود نصب کرده ایم ، آماده ثبت عکس ها و فیلم ها ، دستکاری آنها و خونسرد بودن.

با باز کردن مترجم پایتون و وارد کردن opencv بررسی کنید که آیا خطایی وجود ندارد:

(cv) pi@raspberrypi: ~ $ پایتون

پایتون 3.5.3 (به طور پیش فرض ، 27 سپتامبر 2018 ، 17:25:39) [GCC 6.3.0 20170516] در لینوکس برای اطلاعات بیشتر "راهنما" ، "حق چاپ" ، "اعتبار" یا "مجوز" را تایپ کنید. >>> واردات cv2 >>>

مرحله 5: TensorFlow را راه اندازی کنید

TensorFlow را راه اندازی کنید
TensorFlow را راه اندازی کنید

TensorFlow یک چارچوب یادگیری ماشین / هوش مصنوعی است که توسط Google توسعه و نگهداری می شود. این برنامه از مدلهای یادگیری عمیق برای کارهای مختلف از جمله تشخیص اشیاء در تصاویر پشتیبانی گسترده ای دارد و اکنون نصب آن بر روی رزبری پای بسیار ساده است. عملکرد مدل های سبک وزن آن بر روی Pi کوچک در حدود 1 فریم در ثانیه است که برای برنامه هایی مانند برنامه ما کاملاً مناسب است.

ما اساساً آموزش عالی Edje Electronics را دنبال می کنیم ، با تغییرات ایجاد شده توسط توزیع های اخیر TensorFlow:

pi@raspberrypi:. $ workon cv

(cv) pi@raspberrypi: ~ $ pip install tensorflow (cv) pi@raspberrypi: ~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi@raspberrypi: ~ $ pip pill install lxml jupyter matplotlib cython (cv) pi@raspberrypi: $ sudo apt-get python-tk را نصب کنید

حالا باید protobuf گوگل را کامپایل کنیم. فقط دستورالعمل های مرحله 4 همان آموزش عالی را دنبال کنید

در نهایت ، تعاریف مدل TensorFlow را تنظیم و تنظیم کنید - مرحله 5 را در آموزش Edje Electronics دنبال کنید

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

مرحله 6: تشخیص حرکت با استفاده از OpenCV

بیایید با آزمایش اینکه OpenCV می تواند با وب کم ما ارتباط برقرار کند ، شروع کنیم: ssh را در Raspberry Pi حرکت دهید ، به cv virtualenv (workon cv) بروید ، مفسر پایتون را باز کنید (فقط python را تایپ کنید) و دستورات زیر را وارد کنید:

واردات cv2

cap = cv2. VideoCapture (0) cap.set (cv2. CAP_PROP_FRAME_WIDTH، 1920) cap.set (cv2. CAP_PROP_FRAME_HEIGHT، 1080) ret، frame = cap.read () print ('اندازه فریم را بخوانید: {} x {}'.format (frame.shape [1] ، frame.shape [0])

با خوش شانسی خواهید دید که OpenCV قادر به خواندن یک فریم HD از دوربین است.

می توانید از cv2.imwrite (مسیر ، فریم) برای نوشتن آن قاب بر روی دیسک استفاده کرده و آن را به حالت sftp برگردانید تا ظاهر واقعی را مشاهده کنید.

استراتژی تشخیص حرکت نسبتاً مستقیم است:

  1. روی فریم های با وضوح پایین کار کنید - در اینجا نیازی به کار با فول اچ دی نیست
  2. علاوه بر این ، تصاویر را تار کنید تا حداکثر نویز تا حد ممکن تضمین شود.
  3. میانگین در حال اجرا از آخرین فریم N را حفظ کنید. برای این برنامه ، جایی که نرخ فریم در حدود 1 FPS است (فقط به این دلیل که TensorFlow در هر فریم زمان می برد) ، متوجه شدم که N = 60 نتایج خوبی را برمی گرداند. و از آنجا که پیاده سازی دقیق CPU بیشتری با فریم های بیشتر ندارد (حافظه بیشتری را می طلبد - اما وقتی با فریم های با وضوح پایین کار می کنیم این مقدار قابل اغماض است)
  4. تصویر فعلی را از میانگین اجرا کم کنید (فقط در تایپ دقت کنید - باید مقادیر مثبت و منفی را اجازه دهید [-255.. 255] ، بنابراین فریم باید به int تبدیل شود)
  5. می توانید تفریق را در تبدیل مقیاس خاکستری قاب (و میانگین) انجام دهید ، یا این کار را برای هر یک از کانال های RGB جداگانه انجام دهید و سپس نتایج را ترکیب کنید (که استراتژی من انتخاب شده است ، و به تغییرات رنگ حساس می شود)
  6. از یک آستانه روی دلتا استفاده کنید و با فرسایش و اتساع صدا را حذف کنید
  7. سرانجام به دنبال خطوط ناحیه ای با یک دلتا باشید - این مناطق محل حرکت است و تصویر فعلی با میانگین تصاویر قبلی متفاوت است. در صورت نیاز می توانیم جعبه های محدود کننده برای این خطوط پیدا کنیم.

من کد این کار را در کلاس DeltaFinder python قرار داده ام که می توانید در github من در اینجا پیدا کنید

مرحله 7: تشخیص اشیاء با استفاده از TensorFlow

اگر روش نصب TensorFlow را دنبال کرده اید ، قبلاً آزمایش کرده اید که TensorFlow را نصب کرده اید و در حال کار است.

به منظور تشخیص افراد در یک صحنه عمومی در فضای باز ، مدل هایی که از قبل روی مجموعه داده های COCO آموزش دیده اند عملکرد خوبی دارند - که دقیقاً همان مدلی است که ما در انتهای نصب TensorFlow بارگیری کرده ایم. ما فقط باید از آن برای نتیجه گیری استفاده کنیم!

باز هم ، من بارگذاری و استنتاج مدل را در کلاس TFClassify python محاسبه کرده ام تا کارها آسان تر شود ، که می توانید در اینجا پیدا کنید.

مرحله 8: راه اندازی وب سرور روی رزبری پای

یک سرور وب روی رزبری پای تنظیم کنید
یک سرور وب روی رزبری پای تنظیم کنید

ساده ترین راه برای دسترسی به نتایج تشخیص شیء ، مرورگر وب است ، بنابراین اجازه دهید یک سرور وب را روی Raspberry Pi راه اندازی کنیم. سپس می توانیم آن را برای نمایش تصاویر از یک دایرکتوری مشخص تنظیم کنیم.

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

پیشنهاد می کنم آن را در virtualenv جدید نصب کنید ، بنابراین:

pi@raspberrypi: webs $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip Flask را نصب کنید

توجه داشته باشید که با یک راه اندازی معمولی شبکه فقط زمانی می توان به آن دسترسی داشت که مرورگر شما در همان LAN بی سیم رزبری پای شما باشد. شما می توانید یک پیکربندی نگاشت / پیکربندی NAT را در روتر اینترنت خود ایجاد کنید تا دسترسی خارجی امکان پذیر باشد - اما من توصیه نمی کنم. کدی که من نوشتم سعی نمی کند امنیت لازم را برای دسترسی عمومی به اینترنت به رزبری پای شما ارائه دهد.

با دنبال کردن راهنمای راه اندازی سریع Flask ، نصب خود را آزمایش کنید

مرحله 9: اعلانات تلفن همراه از Raspberry Pi با استفاده از IFTTT

اعلان های تلفن همراه از Raspberry Pi با استفاده از IFTTT
اعلان های تلفن همراه از Raspberry Pi با استفاده از IFTTT

من واقعاً می خواهم هنگام وقوع حوادث اعلان های تلفن همراه دریافت کنم. در این حالت ، هنگامی که فردی تشخیص داده می شود و هنگامی که سطح آب پایین می آید. ساده ترین راهی که برای انجام این کار پیدا کردم ، بدون نیاز به نوشتن یک برنامه تلفن همراه سفارشی ، استفاده از IFTTT است. IFTTT مخفف "If This Then That" است و بسیاری از انواع رویدادها را قادر می سازد تا انواع مختلفی از اقدامات را آغاز کنند. در مورد ما ، ما به ماشه IFTTT Maker Webhook علاقه داریم. این به ما امکان می دهد با درخواست HTTP POST به سرور IFTTT با یک کلید ویژه اختصاص داده شده به حساب ما ، همراه با داده هایی که مشخص می کند چه اتفاقی افتاده است ، اقدام IFTTT را آغاز کنیم. اقدامی که ما انجام می دهیم می تواند به سادگی ایجاد اعلان در دستگاه تلفن همراه ما با استفاده از برنامه تلفن همراه IFTTT یا هر چیز پیچیده تر از آن باشد.

در اینجا نحوه انجام این کار آمده است:

  1. یک حساب IFTTT در ifttt.com ایجاد کنید
  2. در حالی که وارد سیستم شده اید ، به صفحه تنظیمات سرویس Webhook بروید و URL را در مرورگر خود وارد کنید (چیزی مانند https://maker.ifttt.com/use/. آن صفحه وب کلید و نشانی اینترنتی شما را برای استفاده از اقدامات نشان می دهد. به
  3. یک برنامه کاربردی IFTTT ایجاد کنید که هنگام فعال شدن Webhook با جزئیات رویداد ، اعلان تلفن همراه ایجاد کند:

    1. روی "My Applets" و سپس "New Applet" کلیک کنید.
    2. روی "+this" کلیک کنید و "webhooks" را انتخاب کنید. روی "دریافت درخواست وب" کلیک کنید تا به جزئیات بروید
    3. نام رویداد خود را بگذارید ، به عنوان مثال "PoolEvent" و روی "ایجاد ماشه" کلیک کنید
    4. روی "+that" کلیک کنید و "اعلان ها" را انتخاب کنید. سپس "ارسال یک اعلان غنی از برنامه IFTTT" را انتخاب کنید
    5. برای "عنوان" چیزی مانند "PoolPi" را انتخاب کنید
    6. برای "پیام" بنویسید "Pool Pi found:" و روی "افزودن عنصر".. "Value1" کلیک کنید.
    7. به نشانی اینترنتی که در مرحله 2 کپی کرده اید بازگردید. در این قسمت نشانی اینترنتی نشان داده می شود که می توانید از آن برای فراخوانی اپلت جدید خود استفاده کنید. آن نشانی اینترنتی را کپی کنید ، جای رویداد {event} را با نام رویداد جایگزین کنید (در مثال PoolEvent)
  4. برنامه IFTTT را برای دستگاه تلفن همراه خود بارگیری ، نصب و وارد شوید
  5. این اسکریپت پایتون را روی Raspberry Pi خود اجرا کنید تا کار کنید (توجه داشته باشید که ممکن است چند ثانیه یا چند دقیقه طول بکشد تا روی دستگاه تلفن همراه شما فعال شود):

درخواست های واردات

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/'، json = {"value1": "اعلان های سلام"})

مرحله 10: یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید

یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید
یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید
یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید
یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید
یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید
یک HAT رله به رزبری پای اضافه کنید و آن را به شیر برقی وصل کنید

قبل از ادامه این مرحله رزبری پای خود را خاموش کنید: ssh را به آن وارد کرده و "sudo shutdown now" را تایپ کنید ، سپس آن را از برق جدا کنید

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

پین های رزبری پای که می توانند به عنوان ورودی یا خروجی دیجیتال عمل کنند GPIO - ورودی/خروجی هدف عمومی نامیده می شوند و ردیف 40 پین در کنار Pi هستند. با خاموش بودن Pi و رله HAT را محکم در آن قرار دهید. HAT که من انتخاب کردم دارای 3 رله است و ما فقط از یکی از آنها استفاده می کنیم. تنها کاری را که می توانید با دو مورد دیگر انجام دهید تصور کنید:)

حالا رزبری پای را دوباره روشن کنید. چراغ قرمز "قدرت" روی رله HAT باید روشن شود که نشان می دهد از طریق GPIO از Pi نیرو می گیرد. بیایید آزمایش کنیم که می توانیم آن را کنترل کنیم: ssh را دوباره در Pi قرار دهید ، پایتون را وارد کرده و تایپ کنید:

gpiozero را وارد کنید

dev = gpiozero. DigitalOutputDevice (26 ، مقدار_ اولیه = درست) dev.off ()

شما باید یک "کلیک" شنیدنی را که نشان می دهد رله درگیر است بشنوید و یک LED را روشن کنید که نشان می دهد رله اول در موقعیت متصل است. اکنون می توانید تایپ کنید

dev.on ()

که می تواند رله را به موقعیت "خاموش" (عجیب ، من می دانم …) و () از پایتون خارج می کند.

اکنون با استفاده از کابل های بلوز و کابل بلندتر رله را بین منبع تغذیه 24 ولت و شیر برقی وصل کنید. نمودار را ببینید. در نهایت ، شیر برقی را با استفاده از آداپتورها به یک شیر آب وصل کنید و با تکرار دستورات بالا آماده آزمایش همه آن ها شوید - آنها باید آب را خاموش و روشن کنند.

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

مرحله 11: سنسور سطح آب را وصل کنید

سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید
سنسور سطح آب را وصل کنید

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

برای اینکه رزبری پای وضعیت سنسور سطح آب را بداند به Pi نیاز داریم تا یک مدار باز یا بسته را حس کند. خوشبختانه این بسیار ساده است: همان کانکتورهای GPIO که ما به عنوان خروجی دیجیتال برای کنترل رله ها استفاده می کنیم ، می توانند به عنوان ورودی عمل کنند (از این رو I در GPIO). به طور خاص ، اگر یک سیم سنسور را روی +3.3V روی کانکتور GPIO و سیم سنسور دیگر را به پینی که به عنوان ورودی کشویی پیکربندی می کنیم (یعنی معمولاً در سطح ولتاژ GND است) وصل کنیم ، آن پین اندازه گیری می شود یک ولتاژ دیجیتالی "بالا" یا "روشن" فقط هنگامی که سنسور سطح آب مدار را می بندد - هنگامی که سطح آب پایین است. من از پین GPIO 16 به عنوان ورودی استفاده کردم ، که در تصویر بالا مشخص کردم.

کد پایتون برای پیکربندی پین به عنوان ورودی و آزمایش وضعیت فعلی آن عبارت است از:

gpiozero را وارد کنید

level_input = gpiozero. Dutton (16) water_low = level_input.is_pressed

یکی از چالش های احتمالی این است که وقتی سنسور فقط حالت خود را تغییر می دهد ، بین حالت روشن و خاموش سریع نوسان می کند. راه حل آن "حذف" است و به دنبال تغییر حالت مداوم قبل از اقدام است. کتابخانه GPIOZERO دارای کد برای انجام این کار است ، اما به دلایلی آن کد برای من خوب کار نکرد. من یک حلقه ساده نوشتم تا هشدارهای IFTTT را هنگام تغییر حالت ثابت تشخیص دهد ، که می توانید در مخزن من در اینجا پیدا کنید.

مرحله دوازدهم: کد بنویسید تا همه را با هم گره بزنید

کد بنویسید تا همه را با هم گره بزنید
کد بنویسید تا همه را با هم گره بزنید

خودشه. راه اندازی ما کامل است. می توانید کد خود را برای اتصال همه چیز به یک سیستم کامل بنویسید یا از کدی که من ارائه می دهم استفاده کنید. برای انجام این کار ، فقط ساختار دایرکتوری را ایجاد کرده و مخزن را شبیه سازی کنید ، مانند این:

mkdir poolpi

cd poolpi git clone

در مرحله بعد ، فایلهایی با نام ifttt_url.txt را در فهرست motion_alert و water_level ویرایش کنید تا آدرس کلید وب مخفی IFTTT خود را با کلید مخفی خود داشته باشید. می توانید از دو قلاب وب مختلف برای اقدامات مختلف استفاده کنید.

در نهایت ، ما می خواهیم این کد به صورت خودکار اجرا شود. ساده ترین راه برای انجام این کار از طریق سرویس crontab لینوکس است. ما می توانیم چند خط crontab را برای دو وظیفه اصلی اضافه کنیم:

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

برای انجام آن نوع crontab -e را باز کنید که ویرایشگر متن نانو را باز می کند. خطوط زیر را به انتهای فایل اضافه کنید:

0 1 * * * find/home/pi/poolpi/output -type f -name " *.avi" -mtime +1 -delete

0 2 * * * find/home/pi/poolpi/output -type f -name " *.jpg" -mtime +7 -deletereboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.pyreboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.pyreboot python3 /home/pi/poolpi/water_level/test_water_level.py

در نهایت ، Raspberry Pi خود را راه اندازی مجدد کنید. در حال حاضر آماده است تا استخر شما را پر و ایمن نگه دارد.

با تنظیمات ، کد کار کنید و فراموش نکنید که مخزن github من را ستاره گذاری کنید و اگر مفید است ، در مورد دستورالعمل ها نظر دهید. من همیشه به دنبال یادگیری بیشتر هستم.

ساخت خوشحالم!

چالش اینترنت اشیا
چالش اینترنت اشیا
چالش اینترنت اشیا
چالش اینترنت اشیا

نفر دوم در چالش IoT

توصیه شده: