Мазмуну:

Pool Pi Guy - Raspberry Pi колдонуу менен AI башкарылган сигнализация системасы жана бассейн мониторинги: 12 кадам (сүрөттөр менен)
Pool Pi Guy - Raspberry Pi колдонуу менен AI башкарылган сигнализация системасы жана бассейн мониторинги: 12 кадам (сүрөттөр менен)

Video: Pool Pi Guy - Raspberry Pi колдонуу менен AI башкарылган сигнализация системасы жана бассейн мониторинги: 12 кадам (сүрөттөр менен)

Video: Pool Pi Guy - Raspberry Pi колдонуу менен AI башкарылган сигнализация системасы жана бассейн мониторинги: 12 кадам (сүрөттөр менен)
Video: БУЛ L4D2 МЕНИН ЖОЛУМ 2024, Июль
Anonim
Pool Pi Guy - Raspberry Pi колдонулган AI сигнализация системасы жана бассейн мониторинги
Pool Pi Guy - Raspberry Pi колдонулган AI сигнализация системасы жана бассейн мониторинги

Үйдө бассейнге ээ болуу кызыктуу, бирок чоң жоопкерчилик менен келет. Менин эң чоң тынчсыздануум - кимдир бирөө бассейндин жанында кароосуз калса (өзгөчө жаш балдар). Менин эң чоң кыжырдануум - бул бассейндеги суу түтүгү эч качан насостун кире беришине түшпөйт, бул насосту кургатып иштетет жана ремонтто $$$ турат.

Мен жакында эле эки маселени чечүү үчүн суунун деңгээлинин сенсору жана электромагниттик клапан менен бирге 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 -кадам: соода тизмеси

Сатып алуулар тизмеси
Сатып алуулар тизмеси

Бардык компоненттер Амазонкадан жеткиликтүү. Эксперимент жасоо жана компоненттерди алмашуу - бул кызыктын жарымы!

  1. Raspberry Pi
  2. Raspberry Pi Power Supply (бул жерде үнөмдөбөңүз)
  3. Эстутум картасы (чоңураак болсо жакшы)
  4. Кап (бул Pi жана HATти жайгаштырууга жетиштүү чоң)
  5. USB веб -камерасы (каалаган веб -камера жасайт, бирок сиз жакшы сүрөттөрдү алып, жарыкты тең салмакташтыргыңыз келет)
  6. USB узартуу кабели (эгер керек болсо - Pi ортосундагы аралыкты өлчөп, камераны кайсы жерге коюңуз)
  7. HAT эстафеталык тактасы (бул 3 релеге ээ жана бизге бирөө гана керек, бирок экинчилери үчүн бат эле пайда табасың!)
  8. Соленоид
  9. Соленоидди орнотуу 1 жана Фитинг 2 (бул чындыгында электромагниттин туура келгенине жараша болот, бирок бул мен үчүн иштеген)
  10. Соленоиддик энергия менен камсыздоо (каалаган 24V AC кылмак)
  11. Кабель (дагы, дээрлик 2 талдуу кабель жасайт - ток минималдуу)
  12. Суу деңгээлинин калкып чыгуусу
  13. Кээ бир Jumper зымдары жана Wire коннекторлору

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. Raspberry Piден USB жана HDMI ажыратып, кайра жүктөңүз жана ага ssh - эгер баары иштесе, сиз мындай нерсени көрүшүңүз керек:

Linux raspberrypi 4.14.98-v7+ #1200 SMP Сш 12 Февраль 20:27:48 GMT 2019 armv7l

Debian GNU/Linux системасына кирген программалар акысыз программалык камсыздоо болуп саналат; ар бир программанын так бөлүштүрүү шарттары жеке файлдарда/usr/share/doc/*/автордук укукта жазылган. 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 vs. Flask же GPIO үчүн көз карандылыкты өзүнчө сактоого жардам берет:

pi@raspberrypi: ~ $ sudo pip virtualenvwrapper орнотуу

Эми сиз жаңы чөйрөнү түзүү үчүн "mkvirtualenv" аткарсаңыз болот, анын үстүндө иштөө үчүн "workon" ж.б.

Ошентип, келгиле, биздин сүрөттөр менен иштөө үчүн шарт түзөлү, демейки котормочу катары python 3 (бул 2019, эски питон 2 менен карманууга эч кандай себеп жок):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Биз азыр OpenCV орнотууга даярбыз. Биз, негизинен, OpenCV үйрөнүү боюнча эң сонун окуу куралын ээрчийбиз. Тактап айтканда, алардын 1 жана 2 -кадамын аткарыңыз:

sudo apt -y updateudo apt -y upgrade ## Көз карандылыкты орнотуу sudo apt-get -y орнотуу-эң зарыл checkinstall cmake pkg-config yasm sudo apt-get -y орнотуу git gfortran sudo apt-get -y орнотуу 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-default sudo apt-get -y install libatlas-base-dev sudo apt-get -y install 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 libqtgui4 sudo apt-get 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ге орнотуу азыр абдан жөнөкөй. Кичинекей Пидеги анын жеңил моделдеринин иштеши секундасына 1 кадрдын тегерегинде, бул биздикине окшош тиркеме үчүн эң ылайыктуу.

Биз негизинен Edje Electronicsтин эң сонун окуу куралын ээрчип, акыркы TensorFlow бөлүштүрүүлөрүнүн жардамы менен өзгөртүүлөрдү киргиздик:

pi@raspberrypi: ~ $ workon cv

(cv) pi@raspberrypi: ~ $ pip орнотуу 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. Акыры дельтасы бар аймактардын контурларын издеңиз - бул жерлер кыймыл болгон жерде жана азыркы сүрөт мурунку сүрөттөрдүн орточо көрсөткүчүнөн айырмаланат. Керек болсо бул контурлар үчүн чектөө кутучаларын дагы таба алабыз.

Мен муну кодду DeltaFinder python классында капсулалап койдум, аны менин гитубумдан бул жерден таба аласыз

7 -кадам: TensorFlow аркылуу объекттерди аныктоо

Эгерде сиз TensorFlow орнотуу процедурасын аткарган болсоңуз, анда сизде TensorFlow орнотулганын жана иштеп жатканын текшергенсиз.

Жалпы сырткы көрүнүштө адамдарды табуу үчүн, COCO маалымат топтомунда алдын ала даярдалган моделдер абдан жакшы иштейт - дал ушул модель, биз TensorFlow орнотуунун аягында жүктөп алганбыз. Биз аны жыйынтык чыгаруу үчүн гана колдонушубуз керек!

Дагы, мен TFClassify python классындагы моделди жүктөөнү жана корутунду чыгарууну жеңилдетүү үчүн бул жерден таба аласыз.

8 -кадам: Raspberry Piде веб -серверди орнотуңуз

Raspberry Piде веб -серверди орнотуңуз
Raspberry Piде веб -серверди орнотуңуз

Объекттерди аныктоонун натыйжаларына жетүүнүн эң оңой жолу - бул веб -браузер, андыктан Raspberry Piде веб -серверди орнотолу. Андан кийин биз аны берилген каталогдогу сүрөттөрдү тейлөө үчүн орното алабыз.

Веб -сервердин бир нече варианттары бар. Мен Flaskти тандадым. Бул өтө конфигурацияланган жана Python менен кеңейтүү оңой. Бизге керек болгон "масштаб" майда -чүйдө нерсе болгондуктан, ал жетишээрлик деңгээлде болду.

Мен аны жаңы virtualenvге орнотууну сунуштайм, андыктан:

pi@raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip Flask орнотуу

Эске алыңыз, кадимки тармак орнотуусу менен браузериңиз Raspberry Pi менен бир эле зымсыз LANда болгондо гана жеткиликтүү болот. Сырткы кирүүгө уруксат берүү үчүн Интернет роутериңизде порттун картасын / 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. "+Бул" баскычын чыкылдатып, "webhooks" тандаңыз. Чоо -жайына өтүү үчүн "Желе өтүнүчүн алуу" дегенди басыңыз
    3. Иш -чараңызга ат бериңиз, мис. "PoolEvent" жана "Триггер түзүү" баскычын чыкылдатыңыз.
    4. "+" Баскычын чыкылдатып, "эскертмелерди" тандаңыз. Андан кийин "IFTTT колдонмосунан бай билдирүү жөнөтүүнү" тандаңыз.
    5. "Title" үчүн "PoolPi" сыяктуу нерсени тандаңыз
    6. "Билдирүү" үчүн "Pool Pi found:" деп жазыңыз жана "ингредиент кошууну" чыкылдатыңыз.. "Value1".
    7. 2 -кадамда көчүргөн URL'иңизге кайтыңыз. Ал жаңы түзүлгөн апплетти иштетүү үчүн колдонула турган URLди көрсөтөт. {URL} толтургучун окуя аты менен алмаштырып, ошол URLди көчүрүңүз (мисал PoolEvent)
  4. Мобилдик түзмөгүңүз үчүн IFTTT колдонмосун жүктөп алыңыз, орнотуңуз жана кириңиз
  5. Бул питон скриптин Raspberry Pi түзмөгүңүздө иштетип көрүңүз (мобилдик түзмөгүңүздө иштетүү үчүн бир нече секунд же мүнөт кетиши мүмкүн):

импорттук сурамдар

request.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Hello Notifications"})

10 -кадам: Raspberry Pi -ге РЕЛА КАЛПЫН кошуп, аны электромагниттик клапанга туташтырыңыз

Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз
Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз
Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз
Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз
Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз
Raspberry Piге HAT релесин кошуп, аны электромагниттик клапанга туташтырыңыз

Бул кадамды улантуудан мурун Raspberry Pi: sshти ӨЧҮРҮҢҮЗ жана "sudo shutdown now" деп териңиз, андан кийин аны кубаттуулуктан ажыратыңыз.

Биздин максат электромагниттик электр клапанын күйгүзүү жана өчүрүү - 24V AC кубаттуулугуна негизделген суу менен камсыздоону ачып же жаба ала турган клапан. Реле - бул биздин Raspberry Pi камсыз кыла турган санариптик сигналга негизделген чынжырды ачуучу же жабуучу электрдик компоненттер. Биз бул жерде эмне кылабыз, бул Raspberry Pi санариптик сигнал казыктарына реле кошуп, 24V AC электр менен электромагниттик клапандын ортосундагы схеманы жабуу.

Санариптик киргизүү же чыгаруу катары иштей турган Raspberry Pi'деги казыктар GPIO - Жалпы Максаттуу Киргизүү/Чыгуу деп аталат жана алар Пи тарабындагы 40 казыктын катарлары. Пи өчүрүлүп, HAT релесин ага бекем салыңыз. Мен тандаган Шляпанын ичинде 3 реле бар, биз алардын бирин гана колдонобуз. Калган экөө менен эмне кыла алаарыңызды элестетиңиз:)

Эми Raspberry Pi'ни кайра күйгүзүңүз. HAT релесиндеги кызыл "күч" светодиоду күйгүзүлүшү керек, бул GPIO аркылуу Piден энергия алып жатканын билдирет. Келгиле, аны башкара аларыбызды текшерип көрөлү: sshти кайра Pi'ге киргизип, python киргизип, териңиз:

gpiozero импорттоо

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

Сиз реленин иштетилгенин көрсөтүүчү үн "чыкылдатуусун" угушуңуз керек жана биринчи реле туташкан абалда экенин көрсөткөн LEDдин күйүп турганын көрүшүңүз керек. Сиз азыр тере аласыз

dev.on ()

Бул релени "өчүрүү" абалына бурат (кызык, билем …) жана pythonдон () чыгат.

Азыр секирүүчү кабелдерди жана узунураак кабелди колдонуп, 24В электр энергиясы менен электромагниттик клапандын ортосундагы релени туташтырыңыз. Диаграмманы караңыз. Акыр -аягы, электромагниттик клапанды адаптерлерди колдонуп, кранга туташтырыңыз жана жогорудагы буйруктарды кайталап баарын текшерүүгө даяр болуңуз - алар сууну күйгүзүп, өчүрүшү керек.

Соленоид клапанына шланганы тиркеп, экинчи учун бассейнге терең коюңуз. Сизде азыр компьютер көзөмөлдөгөн бассейн толуктоо системасы бар жана качан иштетүү керектигин айтуу үчүн сенсорду туташтырууга убакыт келди.

11 -кадам: Суунун деңгээлинин сенсорун туташтырыңыз

Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз
Суу деңгээлинин сенсорун туташтырыңыз

Суунун деңгээлинин сенсору - жөн гана калкып жүрүүчү электрдик схеманы туташтырып турган жана калкып чыкканда аны үзүүчү флот. Эгер сиз аны бассейнге туура бийиктикте салсаңыз, суунун деңгээли жетиштүү болгондо калкып кетүүчү жер жогору болот, бирок суу жетишсиз болгондо түшүп кетет.

Raspberry Pi суунун деңгээлинин сенсорунун статусун билиши үчүн бизге Pi ачык же жабык чынжырды сезүү үчүн керек. Бактыга жараша, бул абдан жөнөкөй: биз релени башкаруу үчүн санариптик чыгаруу катары колдонгон GPIO бириктиргичтери кириш катары иштей алат (демек GPIOдогу I). Тактап айтканда, эгерде сенсордун бир зымын GPIO туташтыргычындагы +3.3Вга, ал эми башка сенсор зымын биз түшүүчү кириш катары конфигурацияланган пинге туташтырсак (демек, ал GND чыңалуу деңгээлинде болот), ал пин өлчөнөт санариптик "жогорку" же "күйүк" чыңалуусу суунун деңгээлинин сенсору схеманы жапканда гана - суунун деңгээли төмөн болгондо. Мен GPIO пин 16ны киргизүү катары колдондум, аны мен жогорудагы сүрөттө белгилеп койгом.

Пинти код катары киргизүү катары конфигурациялоо жана учурдагы абалын текшерүү:

gpiozero импорттоо

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

Потенциалдуу кыйынчылыктардын бири - сенсор жөн эле абалын өзгөрткөндө, ал күйүк жана өчүк абалдын ортосунда тез термелет. Муну чечүү "дебюндоо" деп аталат жана чара көрүүдөн мурун мамлекеттин ырааттуу өзгөрүүсүн издейт. GPIOZERO китепканасында бул үчүн код бар, бирок эмнегедир ал код мен үчүн жакшы иштеген жок. Мен ырааттуу абал өзгөргөндө IFTTT эскертүүлөрүн иштетүү үчүн жөнөкөй цикл жаздым, аны бул жерден менин репозиторийимден таба аласыз.

12 -кадам: Баарын бириктирүү үчүн код жазыңыз

Баарын бириктирүү үчүн код жазыңыз
Баарын бириктирүү үчүн код жазыңыз

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

mkdir poolpi

cd poolpi git clone

Андан кийин, ifttt_url.txt деп аталган motion_alert жана water_level каталогдорунда жашыруун ачкычыңыз бар IFTTT веб -илгичиңиздин URL дареги болушу үчүн түзөтүңүз. Ар кандай аракеттер үчүн эки башка веб илгичти колдонсоңуз болот.

Акыр -аягы, биз бул коддун автоматтык түрдө иштешин каалайбыз. Муну аткаруунун эң оңой жолу - 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 чакырыгында экинчи орун

Сунушталууда: