Isi kandungan:

Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)
Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)

Video: Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)

Video: Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi: 12 Langkah (dengan Gambar)
Video: (完整版)家宴上,我故意打破了姐姐最喜欢的古董。她面上波澜不惊,内心却在呐喊:「干得漂亮!我单方面承 2024, Julai
Anonim
Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi
Pool Pi Guy - Sistem Penggera Pemacu AI dan Pemantauan Kolam Renang Menggunakan Raspberry Pi

Mempunyai kolam renang di rumah memang menyeronokkan, tetapi mempunyai tanggungjawab yang besar. Kebimbangan terbesar saya adalah memantau sekiranya ada orang yang berada di dekat kolam tanpa pengawasan (terutama anak-anak yang lebih muda). Kekacauan terbesar saya ialah memastikan saluran air kolam tidak pernah berada di bawah pintu masuk pam, yang akan mengeringkan pam dan menghancurkannya dengan kos pembaikan $$$.

Saya baru-baru ini telah mengetahui cara menggunakan Raspberry Pi dengan OpenCV dan TensorFlow, bersama dengan sensor paras air dan injap solenoid untuk menyelesaikan kedua-dua masalah tersebut - dan bersenang-senang melakukannya!

Ternyata juga sistem penggera yang hebat - gerakan diaktifkan, dikendalikan AI, dapat disesuaikan tanpa batas.

Mari selami.

Langkah 1: Pelan Besar

Dalam arahan ini kami akan menunjukkan bagaimana:

  1. Sediakan Raspberry Pi dengan OpenCV dan TensorFlow
  2. Sambungkan Kamera Web melalui kabel USB yang panjang
  3. Tulis algoritma OpenCV untuk mengesan gerakan
  4. Gunakan TensorFlow untuk pengesanan objek
  5. Sediakan pelayan web di Raspberry Pi untuk menunjukkan gambar yang menarik
  6. Gabungkan dengan IFTTT untuk mencetuskan amaran mudah alih sekiranya seseorang dikesan
  7. Pasang relay HAT ke Raspberry Pi dan sambungkan ke injap solenoid yang akan menambahkan air ke kolam
  8. Pasang sensor paras air ke Raspberry Pi dan hubungkan dengannya menggunakan GPIO Pi
  9. Tulis beberapa kod untuk melekatkan semuanya

Langkah 2: Senarai Beli-belah

Senarai membeli-belah
Senarai membeli-belah

Semua komponen boleh didapati dari Amazon. Jangan ragu untuk bereksperimen dan menukar komponen - itu adalah keseronokan!

  1. Pai raspberi
  2. Bekalan Kuasa Raspberry Pi (jangan berhemat di sini)
  3. Kad Memori (lebih besar lebih baik)
  4. Kes (yang satu ini cukup besar untuk menempatkan Pi dan HAT)
  5. Kamera Web USB (mana-mana kamera web akan berfungsi, tetapi anda mahukan kamera yang mendapat gambar yang baik dan menyeimbangkan pencahayaan dengan baik)
  6. Kabel sambungan USB (jika diperlukan - ukur jarak antara Pi dan tempat anda meletakkan kamera)
  7. Relay board HAT (yang ini mempunyai 3 relay dan kami hanya memerlukannya, tetapi anda akan dapat digunakan untuk yang lain tidak lama lagi!)
  8. Solenoid
  9. Solenoid fitting 1 dan Fitting 2 (itu betul-betul bergantung pada apa yang anda gunakan untuk solenoid, tetapi ini sesuai untuk saya)
  10. Bekalan Kuasa Solenoid (mana-mana AC 24V akan dilakukan)
  11. Kabel (sekali lagi, hampir semua kabel 2 helai boleh dilakukan - arus minimum)
  12. Water Level Float Switch (ini hanyalah satu contoh, periksa apa yang boleh disambungkan dengan mudah ke kolam anda)
  13. Beberapa wayar Jumper dan penyambung Wire

Langkah 3: Sediakan Pi Raspberry Anda

Sediakan Pi Raspberry Anda
Sediakan Pi Raspberry Anda

Raspberry Pi adalah komputer kecil yang hebat. Harganya hanya $ 35, berjalan secara konsisten, dan mempunyai banyak perisian dan perkakasan yang serasi. Menyiapkannya cukup mudah:

  1. Format kad SD anda. Ini memerlukan penjagaan khas - Raspberry Pi hanya dapat boot dari kad SD berformat FAT. Ikut arahan ini.
  2. Sambungkan Raspberry Pi ke papan kekunci dan tetikus USB, ditambah paparan HDMI, dan ikuti arahan dalam tutorial Raspberry Pi NOOBS. Pastikan untuk menyediakan WiFi dan aktifkan akses SSH. Jangan lupa untuk menyediakan kata laluan untuk akaun pi lalai.
  3. Pada penyediaan rangkaian rumah anda, IP statik untuk Raspberry Pi - ini akan menjadikan SSH menjadi lebih mudah.
  4. Pastikan anda mempunyai klien ssh yang terpasang di desktop / komputer riba anda. Untuk PC saya akan mengesyorkan Putty, yang boleh anda pasangkan dari sini.
  5. Lepas USB dan HDMI dari Raspberry Pi, reboot, dan masukkan - jika semuanya berfungsi, anda akan melihat sesuatu seperti ini:

Linux raspberrypi 4.14.98-v7 + # 1200 SMP Sel 12 Feb 20:27:48 GMT 2019 armv7l

Program yang disertakan dengan sistem Debian GNU / Linux adalah perisian percuma; syarat pengedaran yang tepat untuk setiap program dijelaskan dalam fail individu di / usr / share / doc / * / copyright. Debian GNU / Linux hadir dengan TIDAK ADA JAMINAN, sejauh yang dibenarkan oleh undang-undang yang berlaku. Log masuk terakhir: Isnin 13 Mei 10:41:40 2019 dari 104.36.248.13 pi @ raspberrypi: ~ $

Langkah 4: Sediakan OpenCV

Sediakan OpenCV
Sediakan OpenCV

OpenCV adalah koleksi fungsi manipulasi gambar yang luar biasa untuk penglihatan komputer. Ini akan membolehkan kita membaca gambar dari Kamera Web, memanipulasinya untuk mencari kawasan gerakan, menyimpannya dan banyak lagi. Penyediaan pada Raspberry Pi tidak sukar tetapi memerlukan penjagaan.

Mulakan dengan memasang virtaulenvwrapper: kami akan menggunakan python untuk melakukan semua pengaturcaraan kami, dan virtualenv akan membantu kami memisahkan pergantungan untuk OpenCV dan TensorFlow vs. Flask atau GPIO:

pi @ raspberrypi: ~ $ sudo pip pasang virtualenvwrapper

Sekarang anda boleh melaksanakan "mkvirtualenv" untuk mewujudkan persekitaran baru, "workon" untuk mengerjakannya, dan banyak lagi.

Oleh itu, mari kita buat persekitaran untuk manipulasi gambar kita, dengan python 3 sebagai jurubahasa lalai (ini adalah tahun 2019, tidak ada alasan untuk berpegang pada python 2 yang lebih tua):

pi @ raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi @ raspberrypi: ~

Kami kini bersedia untuk memasang OpenCV. Kami akan mengikuti tutorial yang sangat baik dalam Learn OpenCV. Ikuti langkah 1 dan 2 mereka secara khusus:

sudo apt -y updatesudo apt -y upgrade ## Install dependencies sudo apt-get -y install build-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 install libtiff5-dev sudo apt-get -y install libtiff-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get - y pasang libxine2-dev libv4l-dev cd / usr / include / linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y install 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 pasang x264 v4l-utils sudo apt-get -y pasang 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- ujian

Sekarang kita hanya boleh memasang OpenCV dengan pengikat python di dalam cv virtualenv (anda masih di dalamnya, bukan?) Menggunakan

memasang pip opencv-contrib-python

Dan itu sahaja! Kami telah memasang OpenCV pada Raspberry Pi kami, siap untuk menangkap gambar dan video, memanipulasinya dan menjadi keren.

Periksa dengan membuka jurubahasa python dan mengimport opencv dan periksa bahawa tidak ada kesalahan:

(cv) pi @ raspberrypi: ~ $ python

Python 3.5.3 (lalai, 27 Sep 2018, 17:25:39) [GCC 6.3.0 20170516] pada linux Jenis "bantuan", "hak cipta", "kredit" atau "lesen" untuk maklumat lebih lanjut. >>> import cv2 >>>

Langkah 5: Siapkan TensorFlow

Sediakan TensorFlow
Sediakan TensorFlow

TensorFlow adalah kerangka pembelajaran mesin / AI yang dikembangkan dan dikendalikan oleh Google. Ia memiliki sokongan yang luas untuk model pembelajaran dalam untuk berbagai tugas termasuk pengesanan objek dalam gambar, dan sekarang cukup mudah dipasang di Raspberry Pi. Prestasi modelnya yang ringan pada Pi kecil sekitar 1 bingkai sesaat, yang sangat sesuai untuk aplikasi seperti milik kita.

Kami pada dasarnya akan mengikuti tutorial yang sangat baik oleh Edje Electronics, dengan pengubahsuaian yang dimungkinkan oleh pengedaran TensorFlow yang lebih baru:

pi @ raspberrypi: ~ $ workon cv

(cv) pi @ raspberrypi: ~ $ pip pasang tensorflow (cv) pi @ raspberrypi: ~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi @ raspberrypi: ~ $ pip pasang bantal lxml jupyter matplotlib cython (cv) pi @ raspberrypi: ~ $ sudo apt-get install python-tk

Sekarang kita perlu menyusun protobuf Google. Cukup ikuti arahan pada langkah 4 tutorial yang sangat baik

Akhirnya, klon dan tetapkan definisi model TensorFlow - ikuti langkah 5 dalam tutorial Edje Electronics

Jangan ragu untuk mengikuti contoh mereka di langkah 6 juga, ini adalah pengenalan yang baik untuk pengesanan objek di Raspberry Pi.

Langkah 6: Pengesanan Gerakan Menggunakan OpenCV

Mari mulakan dengan menguji bahawa OpenCV dapat berinteraksi dengan kamera web kami: ssh ke Raspberry Pi, pindah ke cv virtualenv (workon cv), buka jurubahasa python (hanya ketik python), dan masukkan arahan python berikut:

import 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 () cetak ('Ukuran bingkai baca: {} x {}'.format (frame.shape [1], frame.shape [0])

Dengan keberuntungan anda akan melihat bahawa OpenCV dapat membaca bingkai HD dari kamera.

Anda boleh menggunakan cv2.imwrite (jalan, bingkai) untuk menulis bingkai itu ke cakera dan mengembalikannya untuk melihat semula.

Strategi untuk mengesan gerakan agak lurus ke hadapan:

  1. Bekerja pada bingkai resolusi yang lebih rendah - tidak perlu beroperasi pada HD penuh di sini
  2. Selanjutnya, kaburkan gambar untuk memastikan bunyi sekecil mungkin.
  3. Pastikan rata-rata jangka panjang N bingkai terakhir. Untuk aplikasi ini, di mana kadar bingkai sekitar 1 FPS (hanya kerana TensorFlow memerlukan sedikit masa setiap bingkai), saya dapati N = 60 memberikan hasil yang baik. Dan kerana pelaksanaan yang teliti tidak memerlukan lebih banyak CPU dengan lebih banyak bingkai yang baik (memerlukan lebih banyak memori - tetapi itu dapat diabaikan ketika kita bekerja dengan bingkai resolusi yang lebih rendah)
  4. Kurangkan gambar semasa dari rata-rata berjalan (hanya berhati-hati dengan menaip - anda perlu membiarkan nilai positif dan negatif [-255.. 255], jadi bingkai perlu ditukar menjadi int)
  5. Anda boleh melakukan pengurangan pada penukaran bingkai kelabu (dan rata-rata), atau melakukannya secara berasingan untuk setiap saluran RGB dan kemudian menggabungkan hasilnya (yang merupakan strategi yang saya pilih, menjadikannya sensitif terhadap perubahan warna)
  6. Gunakan ambang batas di delta dan keluarkan bunyi dengan hakisan dan pelebaran
  7. Akhirnya cari kontur kawasan dengan delta - kawasan ini adalah tempat pergerakan telah berlaku dan gambar semasa berbeza dengan rata-rata gambar sebelumnya. Kami dapat menjumpai kotak pengikat untuk kontur ini sekiranya diperlukan.

Saya telah memasukkan kod untuk melakukan ini di kelas DeltaFinder python yang boleh anda dapati di github saya di sini

Langkah 7: Kesan Objek Menggunakan TensorFlow

Sekiranya anda telah mengikuti prosedur pemasangan TensorFlow, anda telah menguji bahawa anda telah memasang dan berfungsi TensorFlow.

Untuk tujuan mengesan orang di tempat kejadian luar umum, model yang telah dilatih terlebih dahulu pada set data COCO menunjukkan prestasi yang cukup baik - yang sebenarnya model yang telah kami muat turun pada akhir pemasangan TensorFlow. Kita hanya perlu menggunakannya untuk kesimpulan!

Sekali lagi, saya telah merangkum pemuatan dan kesimpulan model di kelas TFClassify python untuk mempermudah sesuatu, yang boleh anda temukan di sini.

Langkah 8: Sediakan Pelayan Web pada Raspberry Pi

Sediakan Pelayan Web pada Raspberry Pi
Sediakan Pelayan Web pada Raspberry Pi

Cara termudah untuk mengakses hasil pengesanan objek adalah penyemak imbas web, jadi mari kita siapkan pelayan web di Raspberry Pi. Kami kemudian dapat menyiapkannya untuk menayangkan gambar dari direktori tertentu.

Terdapat banyak pilihan untuk rangka pelayan web. Saya memilih Flask. Ia sangat boleh dikonfigurasikan dan senang diperluas dengan Python. Oleh kerana "skala" yang kita perlukan adalah sepele, itu lebih dari cukup.

Saya cadangkan memasangnya di virtualenv baru, jadi:

pi @ raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi @ raspberrypi: ~ $ pip pasang Flask

Perhatikan bahawa dengan penyediaan rangkaian biasa ia hanya dapat dicapai apabila penyemak imbas anda menggunakan LAN tanpa wayar yang sama dengan Raspberry Pi anda. Anda boleh membuat pemetaan port / konfigurasi NAT pada penghala Internet anda untuk membenarkan akses luaran - tetapi saya mengesyorkannya. Kod yang saya tulis tidak berusaha memberikan keselamatan yang anda perlukan semasa membenarkan akses Internet umum ke Raspberry Pi anda.

Uji pemasangan anda dengan mengikuti panduan permulaan cepat Flask

Langkah 9: Pemberitahuan Mudah Alih Dari Raspberry Pi Menggunakan IFTTT

Pemberitahuan Mudah Alih Dari Raspberry Pi Menggunakan IFTTT
Pemberitahuan Mudah Alih Dari Raspberry Pi Menggunakan IFTTT

Saya benar-benar mahu mendapatkan pemberitahuan mudah alih semasa peristiwa berlaku. Dalam kes ini, apabila seseorang dikesan dan ketika paras air turun. Cara termudah yang saya dapati untuk melakukannya, tanpa perlu menulis aplikasi mudah alih tersuai, adalah menggunakan IFTTT. IFTTT bermaksud "If This Then That" dan membolehkan banyak jenis peristiwa mencetuskan banyak jenis tindakan. Dalam kes kami, kami berminat dengan pencetus Pembuat WebTook IFTTT. Ini membolehkan kami memicu tindakan IFTTT dengan membuat permintaan HTTP POST ke pelayan IFTTT dengan kunci khas yang diberikan ke akaun kami, bersama dengan data yang menentukan apa yang berlaku. Tindakan yang kami lakukan semudah membuat pemberitahuan di peranti mudah alih kami menggunakan aplikasi mudah alih IFTTT, atau yang lebih rumit daripada itu.

Inilah cara untuk melakukannya:

  1. Buat akaun IFTTT di ifttt.com
  2. Semasa log masuk, pergi ke halaman tetapan perkhidmatan Webhook dan masukkan URL di penyemak imbas anda (seperti https://maker.ifttt.com/use/. Halaman web itu akan menunjukkan kunci dan URL yang akan anda gunakan untuk mencetuskan tindakan.
  3. Buat applet IFTTT yang akan menghasilkan pemberitahuan mudah alih ketika Webhook dipicu dengan perincian acara:

    1. Klik "My Applet" dan kemudian "Applet Baru".
    2. Klik "+ ini" dan pilih "webhooks". Klik "Terima permintaan web" untuk meneruskan perinciannya
    3. Beri nama acara anda, mis. "PoolEvent" dan klik "Buat pemicu"
    4. Klik "+ itu" dan pilih "pemberitahuan". Kemudian pilih "Kirim pemberitahuan kaya dari aplikasi IFTTT"
    5. Untuk "tajuk" pilih sesuatu seperti "PoolPi"
    6. Untuk "message" tulis "Pool Pi dikesan:" dan klik "tambah ramuan".. "Value1".
    7. Kembali ke URL yang anda salin pada langkah 2. Ini akan menunjukkan URL yang akan digunakan untuk memanggil applet anda yang baru dibuat. Salin URL itu, ganti placeholder {event} dengan nama acara (dalam contoh PoolEvent)
  4. Muat turun, pasang dan log masuk ke aplikasi IFTTT untuk peranti mudah alih anda
  5. Jalankan skrip python ini pada Raspberry Pi anda untuk melihatnya berfungsi (perhatikan mungkin memerlukan beberapa saat atau minit untuk mencetuskan pada peranti mudah alih anda):

permintaan import

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

Langkah 10: Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve

Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve
Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve
Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve
Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve
Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve
Tambahkan Relay HAT ke Raspberry Pi dan Sambungkannya ke Solenoid Valve

Sebelum meneruskan langkah ini, NONAKTIFKAN Raspberry Pi anda: ssh kepadanya dan ketik "sudo shutdown now", kemudian putuskan dari kuasa

Matlamat kami adalah untuk menghidupkan dan mematikan bekalan kuasa ke injap solenoid - injap yang dapat membuka atau menutup bekalan air berdasarkan kuasa AC 24V yang diperolehnya dari bekalan kuasa. Relay adalah komponen elektrik yang dapat membuka atau menutup litar berdasarkan isyarat digital yang dapat disediakan oleh Raspberry Pi kami. Apa yang kami lakukan di sini adalah memasang geganti ke pin isyarat digital Raspberry Pi ini, dan memintanya menutup litar antara bekalan kuasa AC 24V dan injap solenoid.

Pin pada Raspberry Pi yang dapat bertindak sebagai input atau output digital disebut GPIO - Input / Output Tujuan Umum dan mereka adalah barisan 40 pin di sisi Pi. Dengan Pi dimatikan dan masukkan relay HAT dengan kuat ke dalamnya. HAT yang saya pilih mempunyai 3 relay di dalamnya, dan kami akan menggunakan salah satu daripadanya. Bayangkan semua yang anda boleh lakukan dengan dua yang lain:)

Sekarang hidupkan kembali Raspberry Pi. LED "kuasa" merah pada relay HAT harus menyala, menunjukkan ia mendapat kuasa dari Pi melalui GPIO. Mari kita uji bahawa kita dapat mengawalnya: ssh ke Pi sekali lagi, masukkan python dan taip:

import gpiozero

dev = gpiozero. DigitalOutputDevice (26, nilai_ awal = Benar) dev.off ()

Anda mesti mendengar "klik" yang dapat didengar, yang menunjukkan bahawa geganti sudah aktif, dan melihat LED menyala menunjukkan bahawa geganti pertama berada dalam kedudukan yang bersambung. Anda kini boleh menaip

dev.on ()

Yang akan menghidupkan geganti ke kedudukan "mati" (ganjil, saya tahu …) dan keluar () dari ular sawa.

Kini menggunakan kabel jumper dan kabel yang lebih panjang menghubungkan geganti antara bekalan kuasa 24V dan injap solenoid. Lihat rajah. Akhirnya, sambungkan injap solenoid ke keran menggunakan penyesuai dan bersiaplah untuk menguji semuanya dengan mengulangi arahan di atas - mereka harus menghidupkan dan mematikan air.

Pasang selang ke injap solenoid dan letakkan ujung yang lain jauh ke dalam kolam. Anda kini mempunyai sistem top-off pool yang dikendalikan oleh komputer, dan sudah waktunya untuk menyambungkan sensor untuk memberitahunya bila hendak dijalankan.

Langkah 11: Sambungkan Sensor Tahap Air

Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air
Sambungkan Sensor Tahap Air

Sensor paras air hanyalah pelampung yang menghubungkan litar elektrik ketika apungan turun, dan memecahkannya ketika terapung. Sekiranya anda memasukkannya ke dalam kolam di ketinggian yang tepat, apungan akan naik ketika permukaan air sudah memadai tetapi jatuh ketika air tidak mencukupi.

Untuk Raspberry Pi mengetahui status sensor paras air, kita memerlukan Pi untuk merasakan litar terbuka atau tertutup. Nasib baik itu sangat mudah: penyambung GPIO yang sama yang kita gunakan sebagai output digital untuk mengawal relay boleh bertindak sebagai input (oleh itu I di GPIO). Khususnya, jika kita menyambungkan satu wayar sensor ke + 3.3V pada penyambung GPIO dan wayar sensor yang lain ke pin yang kita konfigurasikan sebagai input pull-down (yang bermaksud biasanya pada tahap voltan GND), pin itu akan mengukur voltan digital "tinggi" atau "hidup" hanya apabila sensor paras air menutup litar - apabila paras air rendah. Saya menggunakan pin GPIO 16 sebagai input, yang saya tandakan pada gambar di atas.

Kod python untuk mengkonfigurasi pin sebagai input dan menguji keadaannya sekarang adalah:

import gpiozero

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

Salah satu cabaran yang berpotensi adalah apabila sensor hanya berubah keadaan, ia akan bergetar dengan cepat antara keadaan hidup dan mati. Penyelesaian untuk itu dikenali sebagai "membantah" dan mencari perubahan keadaan yang konsisten sebelum mengambil tindakan. Perpustakaan GPIOZERO mempunyai kod untuk melakukannya, tetapi atas sebab tertentu kod itu tidak berfungsi dengan baik untuk saya. Saya menulis gelung sederhana untuk mencetuskan amaran IFTTT apabila perubahan keadaan yang konsisten dikesan, yang dapat anda temukan di repositori saya di sini.

Langkah 12: Tulis Kod untuk Mengikatnya Bersama

Tulis Kod untuk Mengikatnya Bersama
Tulis Kod untuk Mengikatnya Bersama

Itu sahaja. Penyediaan kami selesai. Anda boleh menulis kod anda sendiri untuk menyatukan sesuatu ke dalam sistem yang lengkap, atau menggunakan kod yang saya berikan. Untuk melakukannya, hanya buat struktur direktori dan klon repositori, seperti:

mkdir poolpi

cd poolpi git clone

Seterusnya, edit fail bernama ifttt_url.txt di direktori motion_alert dan water_level untuk mempunyai URL untuk cangkuk web IFTTT anda sendiri dengan kunci rahsia anda. Anda boleh menggunakan dua cangkuk web yang berbeza untuk tindakan yang berbeza.

Akhirnya, kami mahu kod ini dijalankan secara automatik. Cara termudah untuk mencapainya adalah melalui perkhidmatan crontab Linux. Kami dapat menambahkan beberapa baris crontab untuk dua tugas utama:

  1. Jalankan tiga program kami: pengesan objek, sensor paras air dan pelayan web pada setiap but semula
  2. Bersihkan direktori output, hapus gambar lama dan fail video lama (Saya memilih untuk menghapus fail yang lebih tua dari 1 hari dan gambar yang lebih tua dari 7 hari - jangan ragu untuk bereksperimen)

Untuk melakukan jenis crontab -e yang akan membuka penyunting teks nano anda. Tambahkan baris berikut ke bahagian bawah fail:

0 1 * * * cari / rumah / pi / poolpi / output -jenis f -name "*.avi" -mtime +1 -hapus

0 2 * * * cari / rumah / pi / poolpi / output -jenis f -nama "*.jpg" -mtime +7 -hapus @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

Akhirnya, but semula Raspberry Pi anda. Sekarang siap untuk menjaga kolam anda penuh dan selamat.

Berhati-hatilah dengan penyediaan, kodnya, dan jangan lupa untuk membintangi github repositori saya dan beri komen mengenai arahan jika anda menganggapnya berguna. Saya sentiasa ingin belajar lebih banyak.

Selamat membuat!

Cabaran IoT
Cabaran IoT
Cabaran IoT
Cabaran IoT

Naib Johan dalam Cabaran IoT

Disyorkan: