Мазмұны:

Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: 12 қадам (суреттермен)
Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: 12 қадам (суреттермен)

Бейне: Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: 12 қадам (суреттермен)

Бейне: Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: 12 қадам (суреттермен)
Бейне: Производство чиа в Китае ОГРОМНОЕ. "Залы ожидания на участке Чиа" - это вещь!? 2024, Шілде
Anonim
Pool Pi Guy - AI басқаратын дабыл жүйесі және Raspberry Pi көмегімен пулды бақылау
Pool Pi Guy - AI басқаратын дабыл жүйесі және Raspberry Pi көмегімен пулды бақылау

Үйде бассейннің болуы көңілді, бірақ үлкен жауапкершілікпен келеді. Менің ең үлкен алаңдаушылығым - бассейннің жанында қараусыз жүргендердің бар -жоғын бақылау (әсіресе кішкентай балалар). Менің ең үлкен ренжітуім - бұл бассейндегі су құбыры ешқашан сорғының кіруінен төмен түспеуін қамтамасыз етеді, бұл сорғыны құрғатып жібереді және оны жөндеуге $$$ жұмсайды.

Мен жақында OpenCV және TensorFlow көмегімен Raspberry Pi -ді қалай қолдану керектігін білдім, сонымен қатар екі мәселені шешу үшін су деңгейінің сенсоры мен электромагнитті клапанды қолдандым және мұны көңілді өткіздім!

Бұл сондай -ақ керемет дабыл жүйесі болып табылады - қозғалыс белсендірілген, AI басқарылатын, шексіз теңшелетін.

Кірейік.

1 -қадам: Үлкен жоспар

Бұл нұсқаулықта біз мыналарды көрсетеміз:

  1. OpenCV және TensorFlow көмегімен Raspberry Pi орнатыңыз
  2. Веб -камераны ұзын USB кабелі арқылы қосыңыз
  3. Қозғалысты анықтау үшін OpenCV алгоритмін жазыңыз
  4. Объектілерді анықтау үшін TensorFlow пайдаланыңыз
  5. Қызықты суреттерді көрсету үшін Raspberry Pi -де веб -сервер орнатыңыз
  6. Егер адам анықталса, ұялы ескертулерді іске қосу үшін IFTTT -пен біріктіріңіз
  7. HAT релесін Raspberry Pi -ге бекітіңіз және оны бассейнге су қосатын электромагниттік клапанға қосыңыз.
  8. Raspberry Pi -ге су деңгейінің сенсорын бекітіңіз және онымен Pi GPIO көмегімен интерфейс жасаңыз
  9. Барлығын біріктіру үшін бірнеше код жазыңыз

2 -қадам: сатып алу тізімі

Сатып алу тізімі
Сатып алу тізімі

Барлық компоненттер Amazon -дан оңай қол жетімді. Эксперимент жасаңыз және компоненттермен алмасыңыз - бұл қызықтың жартысы!

  1. Raspberry Pi
  2. Raspberry Pi қуат көзі (мұнда үнемдемеңіз)
  3. Жад картасы (үлкенірек болса жақсы)
  4. Корпус (бұл Pi мен HAT -ты орналастыруға жеткілікті үлкен)
  5. USB веб -камерасы (кез келген веб -камера жасайды, бірақ сіз жақсы суретке ие болуды және жарықтандыруды жақсы теңестіргіңіз келеді)
  6. USB ұзартқыш кабелі (қажет болған жағдайда - Pi арасындағы қашықтықты және камераны орналастыратын жерді өлшеңіз)
  7. HAT релелік тақтасы (оның 3 релесі бар, бізге тек біреуі қажет, бірақ сіз басқаларына тез арада пайда табасыз!)
  8. Соленоид
  9. Электромагниттік фитинг 1 және фитинг 2 (бұл шын мәнінде соленоидқа сәйкес келетініне байланысты, бірақ бұл мен үшін жұмыс істеді)
  10. Соленоидты қуат көзі (кез келген 24В айнымалы ток)
  11. Кабель (тағы да кез келген 2 сымды кабель жасайды - ток минималды)
  12. Су деңгейінің өзгермелі қосқышы (бұл жай ғана мысал, сіздің бассейнге нені оңай қосуға болатынын тексеріңіз)
  13. Кейбір Jumper сымдары мен сым қосқыштары

3 -қадам: Raspberry Pi орнатыңыз

Raspberry Pi орнатыңыз
Raspberry Pi орнатыңыз

Raspberry Pi - бұл тамаша компьютер. Оның бағасы небәрі 35 доллар, тұрақты жұмыс істейді және көптеген үйлесімді бағдарламалық жасақтама мен жабдықтар бар. Оны орнату өте қарапайым:

  1. SD картасын пішімдеңіз. Бұл ерекше күтімді қажет етеді - Raspberry Pi тек FAT форматталған SD картасынан жүктей алады. Осы нұсқауларды орындаңыз.
  2. Raspberry Pi -ді USB пернетақтасы мен тінтуіріне, сонымен қатар HDMI дисплейіне қосыңыз және Raspberry Pi NOOBS оқулығындағы нұсқауларды орындаңыз. WiFi -ді орнатып, SSH қатынасын қосқаныңызға көз жеткізіңіз. Әдепкі pi есептік жазбасына құпия сөз орнатуды ұмытпаңыз.
  3. Үй желісінде Raspberry Pi үшін тұрақты 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 жеке файлдарында сипатталған. Debian GNU/Linux қолданыстағы заңмен рұқсат етілген дәрежеде КЕПІЛДІКСІЗ келеді. Соңғы кіру: Дүйсенбі 13 мамыр 10:41:40 2019 ж. Бастап 104.36.248.13 pi@raspberrypi: ~ $

4 -қадам: OpenCV орнатыңыз

OpenCV орнату
OpenCV орнату

OpenCV - бұл компьютерді көруге арналған кескіндерді өңдеу функциясының таңғажайып жиынтығы. Бұл бізге веб -камерадан суреттерді оқуға, қозғалыс аймақтарын табуға, оларды сақтауға және т.б. Raspberry Pi -ді орнату қиын емес, бірақ мұқият болуды қажет етеді.

Virtaulenvwrapper орнатудан бастаңыз: біз барлық бағдарламалауды орындау үшін python қолданамыз, ал virtualenv OpenCV мен TensorFlow қарсы Flask немесе GPIO үшін тәуелділікті бөлек ұстауға көмектеседі:

pi@raspberrypi: ~ $ sudo pip install virtualenvwrapper

Енді сіз жаңа ортаны құру үшін «mkvirtualenv», онымен жұмыс істеу үшін «workon» және т.б.

Сонымен, суретті манипуляциялау үшін ортаны құрайық, әдепкі аудармашы ретінде python 3 (бұл 2019 ж., Ескі питон 2 -мен қалуға ешқандай себеп жоқ):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Біз қазір OpenCV орнатуға дайынбыз. Біз, негізінен, OpenCV үйренудегі тамаша оқулықты ұстанамыз. Атап айтқанда, олардың 1 және 2 қадамдарын орындаңыз:

sudo apt -y updatesudo apt -y жаңарту ## Тәуелділікті орнату sudo apt-get -y install-essential checkinstall 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 орнату libtiff5-dev sudo apt-get -y орнату libtiff-dev sudo apt-get -y орнату libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- 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 орнату libgtk2.0-dev libtbb-dev qt5-әдепкі sudo apt-get -y орнату libatlas-base-dev sudo apt-get -y орнату libmp3lame-dev libtheora-dev sudo apt-get -y libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y орнату libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y орнату 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 ішіндегі python байланыстарымен орната аламыз (сіз әлі де солайсыз ба?)

opencv-салым-python орнатыңыз

Және бұл! Бізде Raspberry Pi -де OpenCV орнатылған, ол фотосуреттер мен бейнелерді түсіруге, оларды басқаруға және салқын болуға дайын.

Python аудармашысын ашып, opencv импорттау арқылы тексеріңіз және қателер жоқ екенін тексеріңіз:

(cv) pi@raspberrypi: ~ $ python

Python 3.5.3 (әдепкі, 27 қыркүйек 2018 ж. 17:25:39) [GCC 6.3.0 20170516] linux -те Қосымша ақпарат алу үшін «анықтама», «авторлық құқық», «несие» немесе «лицензия» теріңіз. >>> cv2 импорттау >>>

5 -қадам: TensorFlow орнатыңыз

TensorFlow орнату
TensorFlow орнату

TensorFlow - бұл Google әзірлеген және қолдайтын машиналық оқыту / AI жүйесі. Ол әр түрлі тапсырмалар үшін тереңдетілген оқыту модельдерін қолдайды, оның ішінде суреттердегі объектілерді анықтау және Raspberry Pi-ге орнату өте қарапайым. Кішкентай 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 жастық lxml jupyter орнату matplotlib cython (cv)) pi@raspberrypi: ~ $ sudo apt-get install python-tk

Енді біз Google протобуфын құрастыруымыз керек. Сол керемет оқулықтың 4 -қадамындағы нұсқауларды орындаңыз

Соңында, TensorFlow моделінің анықтамаларын клондау және орнату - Edje Electronics оқулығындағы 5 -қадамды орындаңыз.

6 -қадамда олардың үлгісін ұстануға тырысыңыз, бұл Raspberry Pi -де объектілерді табуға тамаша кіріспе.

6 -қадам: OpenCV көмегімен қозғалысты анықтау

OpenCV біздің веб -камерамен жұмыс жасай алатынын тексеруден бастайық: ssh Raspberry Pi ішіне, cv virtualenv -ге (workon cv) өтіңіз, python интерпретаторын ашыңыз (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 {}').формат (frame.shape [1], frame.shape [0])

Кез келген сәтте сіз OpenCV камерадан HD кадрды оқи алатынын көресіз.

Сіз бұл кадрды дискіге жазу үшін cv2.imwrite (жол, кадр) қолдана аласыз және оны шынайы көрініс алу үшін оны қайта sftp аласыз.

Қозғалысты анықтау стратегиясы өте дәл:

  1. Төмен ажыратымдылықтағы кадрларда жұмыс жасаңыз - мұнда толық HD форматында жұмыс істеудің қажеті жоқ
  2. Сонымен қатар, мүмкіндігінше аз шу болу үшін суреттерді бұлдыратыңыз.
  3. Соңғы N кадрлардың орташа жүгіруін сақтаңыз. Бұл кадр жиілігі 1 FPS шамасында болатын (TensorFlow кадрға біраз уақыт алатындықтан) N = 60 жақсы нәтиже беретінін білдім. Мұқият іске асыру көп кадрлармен жақсы процессорды қажет етпейтіндіктен (ол көбірек жадты қажет етеді, бірақ біз төменгі ажыратымдылықтағы кадрлармен жұмыс істегенде бұл шамалы)
  4. Орташа мәннен ағымдағы кескінді алып тастаңыз (теру кезінде абай болыңыз - оң және теріс мәндерге рұқсат беру керек [-255.. 255], сондықтан кадрды int түрлендіру қажет)
  5. Сіз кадрды сұр масштабты түрлендіруге (және орташаға) немесе RGB арналарының әрқайсысы үшін бөлек жасай аласыз, содан кейін нәтижелерді біріктіре аласыз (бұл мен таңдаған стратегия, бұл түс өзгеруіне сезімтал етеді)
  6. Дельтадағы табалдырықты қолданыңыз және эрозия мен кеңею арқылы шуды кетіріңіз
  7. Ақырында дельтасы бар аймақтардың контурын іздеңіз - бұл аймақтар қозғалыс болған жерде және қазіргі сурет алдыңғы суреттердің орташа мәнінен өзгеше. Қажет болса, біз осы контурлар үшін шектеу қораптарын таба аламыз.

Мен мұны менің github -да таба алатын DeltaFinder python класында жасау үшін кодты инкапсуляцияладым

7 -қадам: TensorFlow көмегімен объектілерді анықтау

Егер сіз TensorFlow орнату процедурасын орындаған болсаңыз, сізде TensorFlow орнатылғанын және жұмыс істейтінін тексергенсіз.

Сыртқы көріністе адамдарды анықтау үшін COCO деректер жиынтығында алдын ала дайындалған модельдер өте жақсы жұмыс істейді - бұл дәл біз жүктеген модель TensorFlow. Біз оны тек қорытынды жасау үшін қолдануымыз керек!

Тағы да, мен TFClassify питон сыныбында модельді жүктеу мен қорытынды жасауды жеңілдету үшін инкапсуляцияладым.

8 -қадам: Raspberry Pi -де веб -серверді орнатыңыз

Raspberry Pi -де веб -серверді орнатыңыз
Raspberry Pi -де веб -серверді орнатыңыз

Объектілерді анықтау нәтижелеріне қол жеткізудің ең оңай жолы - бұл веб -шолғыш, сондықтан Raspberry Pi -де веб -сервер орнатамыз. Содан кейін біз оны берілген каталогтағы суреттерді орналастыру үшін орната аламыз.

Веб -сервер құрылымының көптеген нұсқалары бар. Мен флаконды таңдадым. Бұл өте конфигурацияланған және Python көмегімен кеңейтуге оңай. Бізге қажет «масштаб» тривиальды болғандықтан, бұл жеткілікті болды.

Мен оны жаңа виртуалды жүйеге орнатуды ұсынамын, сондықтан:

pi@raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip Flask орнатыңыз

Есіңізде болсын, қалыпты желілік қондырғыда оған сіздің шолғыш Raspberry Pi сияқты сымсыз жергілікті желіде болғанда ғана қол жеткізуге болады. Сыртқы қатынауға рұқсат беру үшін Интернет -маршрутизаторда портты салыстыру / NAT конфигурациясын жасауға болады - бірақ мен бұған қарсы кеңес беремін. Мен жазған код Raspberry Pi -ге жалпы Интернетке кіруге рұқсат беру кезінде қажет болатын қауіпсіздікті қамтамасыз етуге тырыспайды.

Flask жылдам іске қосу нұсқаулығын орындау арқылы орнатуды тексеріңіз

9 -қадам: IFTTT көмегімен Raspberry Pi -ден мобильді хабарландырулар

IFTTT көмегімен Raspberry Pi мобильді хабарландырулары
IFTTT көмегімен Raspberry Pi мобильді хабарландырулары

Мен оқиғалар болған кезде мобильді хабарландыруларды алғым келеді. Бұл жағдайда адам анықталған кезде және су деңгейі төмендегенде. Мобильді қосымша жазбай -ақ, мұны істеудің қарапайым әдісі - IFTTT. IFTTT «Егер бұл солай болса» дегенді білдіреді және көптеген іс -әрекеттерге көптеген әрекеттер түрлерін іске қосуға мүмкіндік береді. Біздің жағдайда бізді IFTTT Maker Webhook триггері қызықтырады. Бұл бізге IFTTT әрекетін іске қосуға мүмкіндік береді, ол үшін IFTTT серверіне HTTP POST сұрауын енгізіп, біздің шотқа арнайы кілт тағайындайды, сонымен бірге не болғанын көрсететін деректермен бірге. Біз жасайтын әрекет IFTTT мобильді қосымшасының көмегімен мобильді құрылғыда хабарландыру жасау сияқты қарапайым болуы мүмкін немесе одан да күрделі нәрсе.

Міне, мұны қалай жасауға болады:

  1. Ifttt.com сайтында IFTTT есептік жазбасын жасаңыз
  2. Жүйеге кірген кезде, Webhook қызметінің параметрлері бетіне өтіп, шолғышқа URL мекенжайын енгізіңіз (https://maker.ifttt.com/use/ сияқты. Бұл веб -бет сізге кілт пен әрекеттерді іске қосу үшін қолданылатын URL мекенжайын көрсетеді).
  3. Оқиғаның егжей -тегжейі бойынша Webhook іске қосылған кезде мобильді хабарландыру беретін IFTTT апплетін жасаңыз:

    1. «Менің апплеттерім», содан кейін «Жаңа апплет» түймесін басыңыз.
    2. «+This» түймесін басып, «webhooks» таңдаңыз. Мәліметтерге өту үшін «Веб -сұрауды алу» түймесін басыңыз
    3. Іс -шараға атау беріңіз, мысалы. «PoolEvent» және «Триггер құру» түймесін басыңыз.
    4. «+Сол» түймесін басып, «хабарландыруларды» таңдаңыз. Содан кейін «IFTTT қосымшасынан бай хабарландыру жіберуді» таңдаңыз.
    5. «Тақырып» үшін «PoolPi» сияқты нәрсені таңдаңыз
    6. «Хабар» үшін «Пул анықталды:» деп жазыңыз және «ингредиент қосу» түймесін басыңыз. «Мән1».
    7. 2 -қадамда көшірілген URL мекенжайына оралыңыз. Ол жаңадан жасалған апплетті шақыру үшін қолданылатын URL мекенжайын көрсетеді. Оқиға атауымен {event} толтырғышын ауыстыратын URL мекенжайын көшіріңіз (мысалы, PoolEvent)
  4. Мобильді құрылғыға арналған IFTTT қосымшасын жүктеңіз, орнатыңыз және кіріңіз
  5. Оның жұмыс істеуін көру үшін Raspberry Pi -де осы питон сценарийін іске қосыңыз (мобильді құрылғыда іске қосылу үшін бірнеше секунд немесе минут қажет болуы мүмкін):

импорттық сұраныстар

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {«value1»: «Сәлем хабарландырулары»})

10 -қадам: Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз

Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз
Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз
Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз
Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз
Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз
Raspberry Pi -ге HAT релесін қосыңыз және оны соленоидты клапанға қосыңыз

Бұл қадамды бастамас бұрын Raspberry Pi: ssh -ді өшіріп, «sudo shutdown now» деп теріңіз, содан кейін оны қуат көзінен ажыратыңыз.

Біздің мақсат - электромагниттік клапанның электрмен жабдықтауын қосу және өшіру - ол 24В айнымалы токқа негізделген су беруді ашатын немесе жабатын клапан. Реле - бұл біздің Raspberry Pi беретін цифрлық сигналға негізделген тізбекті ашатын немесе жабатын электрлік компоненттер. Бұл жерде біз Raspberry Pi цифрлық сигналдық түйреуіштеріне реле қосу және оны 24В айнымалы ток көзі мен электромагниттік клапан арасындағы тізбекті жабу.

Сандық кіріс немесе шығыс ретінде жұмыс істей алатын Raspberry Pi түйреуіштері GPIO - General Purpose Input/Output деп аталады және олар Pi жағындағы 40 түйреуіштер қатарынан тұрады. Пи өшірулі және оған HAT релесін мықтап салыңыз. Мен таңдаған шляпаның ішінде 3 реле бар, біз олардың біреуін ғана қолданамыз. Қалған екеуімен жасай алатын нәрсені елестетіп көріңіз:)

Енді Raspberry Pi қосыңыз. HAT релесіндегі қызыл «қуат» жарық диоды қосылуы керек, бұл GPO арқылы Pi -ден қуат алатынын көрсетеді. Біз оны басқара алатындығымызды тексерейік: ssh -ке Pi -ге қайтадан кіріңіз, питон енгізіңіз және теріңіз:

gpiozero импорттау

dev = gpiozero. DigitalOutputDevice (26, initial_value = True) dev.off ()

Сіз реленің қосылғанын білдіретін дыбыстық «шертуді» естуіңіз керек және бірінші реле қосылған күйде екенін көрсететін жарық диодты қосуды көруіңіз керек. Енді теруге болады

dev.on ()

Бұл релені «өшірулі» күйге бұрады (тақ, білемін …) және питоннан () шығады.

Енді өтпелі кабельдер мен ұзынырақ кабельді қолдана отырып, 24В қуат көзі мен электромагниттік клапан арасындағы реле қосылады. Диаграмманы қараңыз. Соңында, соленоидты клапанды адаптерлер көмегімен кранға жалғаңыз және жоғарыдағы пәрмендерді қайталап, бәрін тексеруге дайын болыңыз - олар суды қосып, өшіруі керек.

Шлангты соленоид клапанына бекітіп, екінші ұшын бассейнге терең қойыңыз. Сізде қазір компьютермен басқарылатын пулды толтыру жүйесі бар және оны іске қосу уақытын айту үшін сенсорды қосу уақыты келді.

11 -қадам: Су деңгейінің сенсорын қосыңыз

Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз
Су деңгейінің сенсорын қосыңыз

Су деңгейінің сенсоры - бұл жүзу кезінде электр тізбегін қосатын және қалқып тұрған кезде оны үзетін қалтқы. Егер сіз оны бассейнге дұрыс биіктікте салсаңыз, су деңгейі жеткілікті болған кезде қалқыма көтеріледі, бірақ су жеткіліксіз болған кезде құлап кетеді.

Raspberry Pi су деңгейінің сенсорының күйін білу үшін бізге ашық немесе жабық тізбекті сезіну үшін Pi қажет. Бақытымызға орай, бұл өте қарапайым: біз релені басқару үшін цифрлық шығыс ретінде пайдаланатын GPIO қосқыштары кіріс ретінде әрекет ете алады (демек GPIO -дағы I). Дәлірек айтқанда, егер сенсордың бір сымын GPIO коннекторындағы +3.3 В-қа, ал басқа сенсорлық сымды біз ашылатын кіріс ретінде конфигурациялайтын түйреуішке қосатын болсақ (ол әдетте GND кернеу деңгейінде болады), бұл түйреуіш өлшенеді. цифрлық «жоғары» немесе «қосулы» кернеу тек су деңгейі сенсоры тізбекті жабқанда - су деңгейі төмен болғанда. Мен кіріс ретінде GPIO pin 16 қолдандым, оны мен жоғарыдағы суретте белгілеп қойдым.

Пинтті кіріс ретінде конфигурациялауға және оның ағымдағы күйін тексеруге арналған питон коды:

gpiozero импорттау

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

Потенциалды қиындықтардың бірі - сенсор жай ғана өзгергенде, ол қосулы және өшірілген күйлер арасында тез ауытқып кетеді. Мұның шешімі «дебютант» деп аталады және әрекет жасамас бұрын күйдің дәйекті өзгеруін іздейді. GPIOZERO кітапханасында бұл үшін код бар, бірақ қандай да бір себептермен бұл код мен үшін жақсы жұмыс істемеді. Мен IFTTT ескертулерін іске қосу үшін қарапайым цикл жаздым, егер сіз оны репозиторийден таба аласыз.

12 -қадам: Барлығын біріктіру үшін код жазыңыз

Барлығын біріктіру үшін код жазыңыз
Барлығын біріктіру үшін код жазыңыз

Міне бітті. Біздің баптау аяқталды. Сіз өзіңіздің кодыңызды жаза аласыз, ол заттарды толық жүйеге біріктіреді немесе мен берген кодты қолдана аласыз. Мұны істеу үшін каталог құрылымын жасаңыз және репозиторийді клондаңыз, мысалы:

mkdir poolpi

cd poolpi git clone

Әрі қарай, IFTTT веб -ілгегінің URL мекенжайын құпия кілтіңізбен бірге motion_alert және water_level каталогтарындағы ifttt_url.txt деп аталатын файлдарды өңдеңіз. Әр түрлі әрекеттер үшін екі түрлі веб ілгегін қолдануға болады.

Ақырында, біз бұл кодтың автоматты түрде жұмыс істеуін қалаймыз. Мұны істеудің ең оңай жолы - Linux 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 -delete @reboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.py @reboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.py @reboot python3 /home/pi/poolpi/water_level/test_water_level.py

Соңында, Raspberry Pi құрылғысын қайта жүктеңіз. Ол енді сіздің бассейніңізді толық және қауіпсіз ұстауға дайын.

Орнату, код туралы ойлаңыз және менің github репозиторийіме жұлдызша қоюды және пайдалы деп тапсаңыз, нұсқаулыққа түсініктеме беруді ұмытпаңыз. Мен үнемі көбірек білуге тырысамын.

Бақытты жасау!

IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

IoT Challenge -де екінші орын

Ұсынылған: