สารบัญ:
- ขั้นตอนที่ 1: แผนใหญ่
- ขั้นตอนที่ 2: รายการช้อปปิ้ง
- ขั้นตอนที่ 3: ตั้งค่า Raspberry Pi. ของคุณ
- ขั้นตอนที่ 4: ตั้งค่า OpenCV
- ขั้นตอนที่ 5: ตั้งค่า TensorFlow
- ขั้นตอนที่ 6: การตรวจจับการเคลื่อนไหวโดยใช้ OpenCV
- ขั้นตอนที่ 7: ตรวจจับวัตถุโดยใช้ TensorFlow
- ขั้นตอนที่ 8: ตั้งค่าเว็บเซิร์ฟเวอร์บน Raspberry Pi
- ขั้นตอนที่ 9: การแจ้งเตือนมือถือจาก Raspberry Pi โดยใช้ IFTTT
- ขั้นตอนที่ 10: เพิ่มรีเลย์ HAT ให้กับ Raspberry Pi และเชื่อมต่อกับโซลินอยด์วาล์ว
- ขั้นตอนที่ 11: เชื่อมต่อเซ็นเซอร์ระดับน้ำ
- ขั้นตอนที่ 12: เขียนโค้ดเพื่อผูกมันไว้ด้วยกัน
วีดีโอ: Pool Pi Guy - ระบบเตือนภัยที่ขับเคลื่อนด้วย AI และการตรวจสอบสระว่ายน้ำโดยใช้ Raspberry Pi: 12 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
การมีสระว่ายน้ำที่บ้านเป็นเรื่องสนุก แต่มาพร้อมกับความรับผิดชอบที่ยิ่งใหญ่ ความกังวลที่ใหญ่ที่สุดของฉันคือการเฝ้าติดตามว่ามีใครอยู่ใกล้สระว่ายน้ำโดยไม่มีใครดูแล (โดยเฉพาะเด็กที่อายุน้อยกว่า) ความรำคาญที่ใหญ่ที่สุดของฉันคือการทำให้แน่ใจว่าท่อส่งน้ำในสระไม่เคยต่ำกว่าทางเข้าปั๊ม ซึ่งจะทำให้ปั๊มแห้งและทำลายค่าใช้จ่ายในการซ่อมแซม $$$
ฉันเพิ่งค้นพบวิธีใช้ Raspberry Pi กับ OpenCV และ TensorFlow พร้อมกับเซ็นเซอร์ระดับน้ำและโซลินอยด์วาล์วเพื่อแก้ไขปัญหาทั้งสอง - และสนุกกับการทำมัน!
กลายเป็นระบบเตือนภัยที่ยอดเยี่ยมเช่นกัน - เปิดใช้งานการเคลื่อนไหว ควบคุมโดย AI และปรับแต่งได้ไม่จำกัด
มาดำน้ำกันเถอะ
ขั้นตอนที่ 1: แผนใหญ่
ในคำแนะนำนี้เราจะแสดงวิธี:
- ตั้งค่า Raspberry Pi ด้วย OpenCV และ TensorFlow
- เชื่อมต่อเว็บแคมผ่านสาย USB ยาว
- เขียนอัลกอริทึม OpenCV เพื่อตรวจจับการเคลื่อนไหว
- ใช้ TensorFlow สำหรับการตรวจจับวัตถุ
- ตั้งค่าเว็บเซิร์ฟเวอร์บน Raspberry Pi เพื่อแสดงภาพที่น่าสนใจ
- ผสานรวมกับ IFTTT เพื่อกระตุ้นการแจ้งเตือนทางมือถือในกรณีที่ตรวจพบบุคคล
- ติดรีเลย์ HAT กับ Raspberry Pi และเชื่อมต่อกับโซลินอยด์วาล์วที่จะเติมน้ำลงในสระ
- แนบเซ็นเซอร์ระดับน้ำเข้ากับ Raspberry Pi และเชื่อมต่อโดยใช้ GPIO. ของ Pi
- เขียนโค้ดเพื่อติดกาวเข้าด้วยกัน
ขั้นตอนที่ 2: รายการช้อปปิ้ง
ส่วนประกอบทั้งหมดพร้อมใช้งานจาก Amazon ทดลองและแลกเปลี่ยนส่วนประกอบได้ตามสบาย - ความสนุกเพียงครึ่งเดียว!
- ราสเบอร์รี่ปี่
- Raspberry Pi Power Supply (อย่าหวงที่นี่)
- เมมโมรี่การ์ด (ใหญ่ยิ่งดี)
- เคส (อันนี้ใหญ่พอที่จะใส่ทั้ง Pi และ HAT)
- เว็บแคม USB (เว็บแคมใดก็ได้ แต่คุณต้องการกล้องที่ให้ภาพที่ดีและให้แสงที่สมดุล)
- สายต่อ USB (ถ้าจำเป็น - วัดระยะห่างระหว่าง Pi และตำแหน่งที่คุณจะวางกล้อง)
- บอร์ดรีเลย์ HAT (ตัวนี้มี 3 รีเลย์ และเราต้องการเพียงตัวเดียว แต่คุณจะพบการใช้งานสำหรับตัวอื่นในไม่ช้านี้!)
- โซลินอยด์
- ข้อต่อโซลินอยด์ 1 และข้อต่อ 2 (ขึ้นอยู่กับว่าคุณเหมาะกับโซลินอยด์อะไร แต่สิ่งเหล่านี้ใช้ได้สำหรับฉัน)
- โซลินอยด์พาวเวอร์ซัพพลาย (24V AC ใด ๆ ที่จะทำ)
- สายเคเบิล (อีกครั้งเกือบทุกสาย 2 เส้นจะทำ - กระแสไฟน้อยที่สุด)
- สวิตช์ลอยระดับน้ำ (นี่เป็นเพียงตัวอย่าง ตรวจสอบว่าอะไรเชื่อมต่อกับสระว่ายน้ำของคุณได้ง่ายๆ)
- สายจัมเปอร์และขั้วต่อสายไฟบางตัว
ขั้นตอนที่ 3: ตั้งค่า Raspberry Pi. ของคุณ
Raspberry Pi เป็นคอมพิวเตอร์ขนาดเล็กที่ยอดเยี่ยม มีค่าใช้จ่ายเพียง 35 ดอลลาร์ ทำงานอย่างสม่ำเสมอ และมีซอฟต์แวร์และฮาร์ดแวร์ที่เข้ากันได้มากมาย การตั้งค่านั้นค่อนข้างง่าย:
- ฟอร์แมตการ์ด SD ของคุณ สิ่งนี้ต้องการการดูแลเป็นพิเศษ - Raspberry Pi สามารถบู๊ตจากการ์ด SD ที่ฟอร์แมต FAT เท่านั้น ทำตามคำแนะนำเหล่านี้
- เชื่อมต่อ Raspberry Pi กับแป้นพิมพ์และเมาส์ USB พร้อมจอแสดงผล HDMI และทำตามคำแนะนำในบทช่วยสอน Raspberry Pi NOOBS ตรวจสอบให้แน่ใจว่าได้ตั้งค่า WiFi และเปิดใช้งานการเข้าถึง SSH อย่าลืมตั้งรหัสผ่านสำหรับบัญชี pi เริ่มต้น
- บนเครือข่ายในบ้านของคุณ ตั้งค่า IP แบบคงที่สำหรับ Raspberry Pi - มันจะทำให้ SSH เข้าไปได้ง่ายขึ้นมาก
- ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไคลเอนต์ ssh บนเดสก์ท็อป/แล็ปท็อปของคุณ สำหรับพีซี ฉันขอแนะนำ Putty ซึ่งคุณสามารถติดตั้งได้จากที่นี่
- ปลด 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 เป็นชุดฟังก์ชันการจัดการภาพที่น่าทึ่งสำหรับการมองเห็นด้วยคอมพิวเตอร์ จะช่วยให้เราอ่านรูปภาพจากเว็บแคม ปรับแต่งรูปภาพเพื่อค้นหาพื้นที่เคลื่อนไหว บันทึกรูปภาพ และอื่นๆ การติดตั้ง Raspberry Pi นั้นไม่ใช่เรื่องยาก แต่ต้องใช้ความระมัดระวัง
เริ่มต้นด้วยการติดตั้ง virtaulenvwrapper: เราจะใช้ python เพื่อเขียนโปรแกรมทั้งหมดของเรา และ virtualenv จะช่วยให้เราแยกการพึ่งพาสำหรับ OpenCV และ TensorFlow กับ Flask หรือ GPIO:
pi@raspberrypi:~ $ sudo pip ติดตั้ง virtualenvwrapper
ตอนนี้คุณสามารถเรียกใช้ "mkvirtualenv" เพื่อสร้างสภาพแวดล้อมใหม่ "workon" เพื่อทำงานกับมัน และอีกมากมาย
ดังนั้น มาสร้างสภาพแวดล้อมสำหรับการจัดการภาพของเรา โดยที่ python 3 เป็นล่ามเริ่มต้น (คือปี 2019 ไม่มีเหตุผลที่จะยึดติดกับ python รุ่นเก่า 2):
pi@raspberrypi:~ $ mkvirtualenv cv -p python3
… (cv) pi@raspberrypi:~
ตอนนี้เราพร้อมที่จะติดตั้ง OpenCV แล้ว ส่วนใหญ่เราจะทำตามบทช่วยสอนที่ยอดเยี่ยมใน Learn OpenCV ทำตามขั้นตอนที่ 1 และ 2: โดยเฉพาะ
sudo apt -y updatessudo apt -y upgrade ## ติดตั้งการพึ่งพา sudo apt-get -y ติดตั้ง build-essential 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 - 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 ติดตั้ง libgtk2.0-dev libtbb-dev qt5-default 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 ติดตั้ง x264 v4l-utils sudo apt-get -y ติดตั้ง libprotobuf -dev protobuf-คอมไพเลอร์ sudo apt-get -y ติดตั้ง libgoogle-glog-dev libgflags-dev sudo apt-get -y ติดตั้ง libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-get ติดตั้ง libqtgui4 sudo apt-get ติดตั้ง libqt4- ทดสอบ
ตอนนี้เราสามารถติดตั้ง OpenCV ด้วยการผูก python ภายใน cv virtualenv (คุณยังอยู่ในนั้นใช่ไหม) โดยใช้
pip ติดตั้ง opencv-contrib-python
และนั่นแหล่ะ! เราได้ติดตั้ง OpenCV บน Raspberry Pi ของเราแล้ว พร้อมที่จะถ่ายภาพและวิดีโอ ปรับแต่ง และเจ๋ง
ตรวจสอบว่าโดยการเปิดล่ามหลามและนำเข้า opencv และตรวจสอบว่าไม่มีข้อผิดพลาด:
(cv) pi@raspberrypi:~ $ python
Python 3.5.3 (ค่าเริ่มต้น 27 ก.ย. 2018, 17:25:39 น.) [GCC 6.3.0 20170516] บน linux พิมพ์ "help", "copyright", "credits" หรือ "license" สำหรับข้อมูลเพิ่มเติม >>> นำเข้า cv2 >>>
ขั้นตอนที่ 5: ตั้งค่า TensorFlow
TensorFlow เป็นเฟรมเวิร์กการเรียนรู้ของเครื่อง / AI ที่พัฒนาและดูแลโดย Google มีการสนับสนุนอย่างกว้างขวางสำหรับโมเดลการเรียนรู้เชิงลึกสำหรับงานที่หลากหลาย รวมถึงการตรวจจับวัตถุในรูปภาพ และตอนนี้ติดตั้งบน Raspberry Pi ค่อนข้างง่าย ประสิทธิภาพของรุ่นน้ำหนักเบาใน Pi ขนาดเล็กอยู่ที่ประมาณ 1 เฟรมต่อวินาที ซึ่งเพียงพอสำหรับการใช้งานอย่างของเรา
โดยพื้นฐานแล้วเราจะปฏิบัติตามบทช่วยสอนที่ยอดเยี่ยมโดย Edje Electronics โดยมีการปรับเปลี่ยนที่เป็นไปได้โดยการแจกแจง TensorFlow ล่าสุด:
pi@raspberrypi:~ $ ทำงาน 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
ตอนนี้เราต้องรวบรวม protobuf ของ Google เพียงทำตามคำแนะนำในขั้นตอนที่ 4 ของบทช่วยสอนที่ยอดเยี่ยมเดียวกัน
สุดท้าย โคลนและตั้งค่าคำจำกัดความแบบจำลองของ TensorFlow - ทำตามขั้นตอนที่ 5 ในบทช่วยสอน Edje Electronics
ทำตามตัวอย่างในขั้นตอนที่ 6 ได้ตามสบาย นี่เป็นการแนะนำที่ดีในการตรวจจับวัตถุบน Raspberry Pi
ขั้นตอนที่ 6: การตรวจจับการเคลื่อนไหวโดยใช้ OpenCV
เริ่มต้นด้วยการทดสอบว่า OpenCV สามารถเชื่อมต่อกับเว็บแคมของเรา: ssh ใน Raspberry Pi ย้ายไปที่ cv virtualenv (workon cv) เปิดล่าม python (เพียงพิมพ์ 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() พิมพ์ ('อ่านขนาดเฟรม: {}x{}'.format(frame.shape[1], frame.shape[0])
หากโชคดีคุณจะเห็นว่า OpenCV สามารถอ่านเฟรม HD จากกล้องได้
คุณสามารถใช้ cv2.imwrite(พาธ, เฟรม) เพื่อเขียนเฟรมนั้นไปยังดิสก์และ sftp กลับเพื่อดูจริง
กลยุทธ์ในการตรวจจับการเคลื่อนไหวค่อนข้างตรงไปตรงมา:
- ทำงานบนเฟรมที่มีความละเอียดต่ำ - ไม่จำเป็นต้องใช้งานแบบ Full HD ที่นี่
- นอกจากนี้ ให้เบลอภาพเพื่อให้แน่ใจว่ามีสัญญาณรบกวนน้อยที่สุด
- รักษาค่าเฉลี่ยการวิ่งของเฟรม N สุดท้าย สำหรับแอปพลิเคชันนี้ โดยที่อัตราเฟรมอยู่ที่ 1 FPS (เพียงเพราะ TensorFlow ใช้เวลาต่อเฟรม) ฉันพบว่า N=60 ให้ผลลัพธ์ที่ดี และเนื่องจากการใช้งานอย่างระมัดระวังไม่ได้ใช้ CPU มากขึ้นด้วยเฟรมที่มากกว่าปกติ (มันใช้หน่วยความจำมากกว่า - แต่นั่นก็ไม่สำคัญเมื่อเราทำงานกับเฟรมที่มีความละเอียดต่ำกว่า)
- ลบภาพปัจจุบันออกจากค่าเฉลี่ยวิ่ง (เพียงระวังด้วยการพิมพ์ - คุณต้องอนุญาตให้มีค่าบวกและลบ [-255.. 255] ดังนั้นเฟรมจะต้องแปลงเป็น int)
- คุณสามารถทำการลบด้วยการแปลงระดับสีเทาของเฟรม (และค่าเฉลี่ย) หรือทำแยกกันสำหรับแต่ละช่อง RGB แล้วรวมผลลัพธ์ (ซึ่งเป็นกลยุทธ์ที่ฉันเลือก ทำให้ไวต่อการเปลี่ยนแปลงสี)
- ใช้ธรณีประตูบนเดลต้าและขจัดเสียงรบกวนโดยการกัดเซาะและการขยาย
- สุดท้าย ให้มองหารูปทรงของพื้นที่ที่มีเดลต้า - พื้นที่เหล่านี้เป็นบริเวณที่เกิดการเคลื่อนไหวและภาพปัจจุบันแตกต่างจากภาพก่อนหน้าโดยเฉลี่ย เราสามารถค้นหากรอบสำหรับเส้นขอบเหล่านี้เพิ่มเติมได้หากต้องการ
ฉันได้ห่อหุ้มโค้ดเพื่อทำสิ่งนี้ในคลาส DeltaFinder python ที่คุณสามารถหาได้ใน github ของฉันที่นี่
ขั้นตอนที่ 7: ตรวจจับวัตถุโดยใช้ TensorFlow
หากคุณปฏิบัติตามขั้นตอนการติดตั้ง TensorFlow แสดงว่าคุณได้ทดสอบแล้วว่าติดตั้ง TensorFlow และใช้งานได้
เพื่อจุดประสงค์ในการตรวจจับบุคคลในฉากกลางแจ้งทั่วไป โมเดลที่ได้รับการฝึกอบรมล่วงหน้าในชุดข้อมูล COCO นั้นทำงานได้ดีทีเดียว ซึ่งเป็นโมเดลที่เราได้ดาวน์โหลดเมื่อสิ้นสุดการติดตั้ง TensorFlow อย่างแน่นอน เราแค่ต้องการใช้มันเพื่อการอนุมาน!
อีกครั้ง ฉันได้สรุปการโหลดโมเดลและการอนุมานในคลาส TFClassify python เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น ซึ่งคุณสามารถหาได้ที่นี่
ขั้นตอนที่ 8: ตั้งค่าเว็บเซิร์ฟเวอร์บน Raspberry Pi
วิธีที่ง่ายที่สุดในการเข้าถึงผลการตรวจจับวัตถุคือเว็บเบราว์เซอร์ ดังนั้นเรามาตั้งค่าเว็บเซิร์ฟเวอร์บน Raspberry Pi กัน จากนั้นเราสามารถตั้งค่าให้แสดงรูปภาพจากไดเร็กทอรีที่กำหนดได้
มีหลายตัวเลือกสำหรับเฟรมเวิร์กเว็บเซิร์ฟเวอร์ ฉันเลือกขวด มันสามารถกำหนดค่าได้อย่างมากและง่ายต่อการขยายด้วย Python เนื่องจาก "มาตราส่วน" ที่เราต้องการนั้นไม่สำคัญ มันมากเกินพอ
ฉันแนะนำให้ติดตั้งใน virtualenv ใหม่ ดังนั้น:
pi@raspberrypi:~ $ mkvirtualenv เว็บเซิร์ฟเวอร์
(webserv) pi@raspberrypi: ~ $ pip ติดตั้ง Flask
โปรดทราบว่าด้วยการตั้งค่าเครือข่ายปกติ จะสามารถเข้าถึงได้ก็ต่อเมื่อเบราว์เซอร์ของคุณใช้ LAN ไร้สายเดียวกันกับ Raspberry Pi ของคุณ คุณสามารถสร้างการแมปพอร์ต / การกำหนดค่า NAT บนเราเตอร์อินเทอร์เน็ตของคุณเพื่ออนุญาตการเข้าถึงจากภายนอก - แต่ฉันขอแนะนำว่า รหัสที่ฉันเขียนไม่ได้พยายามให้การรักษาความปลอดภัยที่คุณต้องการเมื่ออนุญาตให้เข้าถึงอินเทอร์เน็ตทั่วไปกับ Raspberry Pi ของคุณ
ทดสอบการติดตั้งของคุณโดยทำตามคู่มือเริ่มใช้งานฉบับย่อของ Flask
ขั้นตอนที่ 9: การแจ้งเตือนมือถือจาก Raspberry Pi โดยใช้ IFTTT
ฉันต้องการรับการแจ้งเตือนทางมือถือเมื่อมีเหตุการณ์เกิดขึ้น ในกรณีนี้เมื่อตรวจพบบุคคลและเมื่อระดับน้ำลดลง วิธีที่ง่ายที่สุดที่ฉันพบว่าทำได้โดยไม่ต้องเขียนแอปบนอุปกรณ์เคลื่อนที่ที่กำหนดเองคือการใช้ IFTTT IFTTT ย่อมาจาก "ถ้าเป็นอย่างนั้น" และเปิดใช้งานเหตุการณ์หลายประเภทเพื่อทริกเกอร์การกระทำหลายประเภท ในกรณีของเรา เราสนใจทริกเกอร์ IFTTT Maker Webhook ซึ่งช่วยให้เราสามารถทริกเกอร์การดำเนินการ IFTTT โดยส่งคำขอ HTTP POST ไปยังเซิร์ฟเวอร์ IFTTT ด้วยคีย์พิเศษที่กำหนดให้กับบัญชีของเรา พร้อมด้วยข้อมูลที่ระบุสิ่งที่เกิดขึ้น การดำเนินการที่เราทำสามารถทำได้ง่ายพอๆ กับการสร้างการแจ้งเตือนบนอุปกรณ์มือถือของเราโดยใช้แอปมือถือ IFTTT หรืออะไรก็ตามที่ซับซ้อนกว่านั้น
นี่คือวิธีการ:
- สร้างบัญชี IFTTT บน ifttt.com
- ขณะเข้าสู่ระบบ ให้ไปที่หน้าการตั้งค่าบริการ Webhook และป้อน URL ในเบราว์เซอร์ของคุณ (เช่น https://maker.ifttt.com/use/ หน้าเว็บนั้นจะแสดงคีย์ของคุณและ URL เพื่อใช้ทริกเกอร์การดำเนินการ.
-
สร้างแอปเพล็ต IFTTT ที่จะสร้างการแจ้งเตือนบนมือถือเมื่อ Webhook ถูกทริกเกอร์พร้อมรายละเอียดของเหตุการณ์:
- คลิก "แอปเพล็ตของฉัน" จากนั้น "แอปเพล็ตใหม่"
- คลิก "+นี่" และเลือก "เว็บฮุค" คลิก "รับคำขอเว็บ" เพื่อไปยังรายละเอียด
- ตั้งชื่อกิจกรรมของคุณ เช่น "PoolEvent" และคลิก "สร้างทริกเกอร์"
- คลิก "+ที่" และเลือก "การแจ้งเตือน" จากนั้นเลือก "ส่งการแจ้งเตือนที่หลากหลายจากแอป IFTTT"
- สำหรับ "ชื่อเรื่อง" ให้เลือกบางอย่างเช่น "PoolPi"
- สำหรับ "ข้อความ" ให้เขียนว่า "ตรวจพบ Pool Pi:" และคลิก "เพิ่มส่วนผสม".."Value1"
- กลับไปที่ URL ที่คุณคัดลอกไว้ในขั้นตอนที่ 2 ซึ่งจะแสดง URL ที่ใช้เรียกแอปเพล็ตที่สร้างขึ้นใหม่ คัดลอก URL นั้นโดยแทนที่ตัวยึดตำแหน่ง {event} ด้วยชื่อเหตุการณ์ (ในตัวอย่าง PoolEvent)
- ดาวน์โหลด ติดตั้ง และลงชื่อเข้าใช้แอป IFTTT สำหรับอุปกรณ์มือถือของคุณ
- เรียกใช้สคริปต์หลามนี้บน Raspberry Pi ของคุณเพื่อดูว่ามันทำงาน (โปรดทราบว่าอาจใช้เวลาสองสามวินาทีหรือนาทีในการทริกเกอร์บนอุปกรณ์มือถือของคุณ):
คำขอนำเข้า
Request.post('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json={"value1":"สวัสดีการแจ้งเตือน"})
ขั้นตอนที่ 10: เพิ่มรีเลย์ HAT ให้กับ Raspberry Pi และเชื่อมต่อกับโซลินอยด์วาล์ว
ก่อนดำเนินการตามขั้นตอนนี้ ให้ปิด Raspberry Pi ของคุณ: ssh ไปที่มันแล้วพิมพ์ "sudo shutdown now" จากนั้นถอดออกจากแหล่งจ่ายไฟ
เป้าหมายของเราคือการเปิดและปิดแหล่งจ่ายไฟของโซลินอยด์วาล์ว ซึ่งเป็นวาล์วที่สามารถเปิดหรือปิดการจ่ายน้ำโดยใช้ไฟ AC 24V ที่ได้รับจากแหล่งจ่ายไฟ รีเลย์เป็นส่วนประกอบทางไฟฟ้าที่สามารถเปิดหรือปิดวงจรโดยอาศัยสัญญาณดิจิตอลที่ Raspberry Pi ของเราสามารถให้ได้ สิ่งที่เราทำที่นี่คือการต่อรีเลย์ไปยังพินสัญญาณดิจิทัลของ Raspberry Pi และให้ปิดวงจรระหว่างแหล่งจ่ายไฟ 24V AC และโซลินอยด์วาล์ว
หมุดบน Raspberry Pi ที่สามารถทำหน้าที่เป็นอินพุตหรือเอาต์พุตดิจิทัลเรียกว่า GPIO - อินพุต/เอาต์พุตวัตถุประสงค์ทั่วไป และเป็นแถวของ 40 พินที่ด้านข้างของ Pi เมื่อปิด Pi แล้วใส่รีเลย์ HAT เข้าไปอย่างแน่นหนา HAT ที่ฉันเลือกมีรีเลย์อยู่ 3 ตัว และเราจะใช้เพียงหนึ่งในนั้น ลองนึกภาพสิ่งที่คุณทำได้กับอีกสองคน:)
ตอนนี้เปิด Raspberry Pi อีกครั้ง ไฟ LED "เปิด/ปิด" สีแดงบนรีเลย์ HAT ควรเปิดขึ้น แสดงว่าได้รับพลังงานจาก Pi ผ่าน GPIO มาทดสอบกันว่าเราสามารถควบคุมมันได้: ssh เข้าไปใน Pi อีกครั้ง ป้อน python แล้วพิมพ์:
นำเข้า gpiozero
dev = gpiozero. DigitalOutputDevice (26, initial_value = True) dev.off ()
คุณควรได้ยินเสียง "คลิก" แสดงว่ารีเลย์ทำงานอยู่ และเห็นไฟ LED ติดแสดงว่ารีเลย์แรกอยู่ในตำแหน่งที่เชื่อมต่อ ตอนนี้คุณสามารถพิมพ์
dev.on()
ซึ่งจะเปลี่ยนรีเลย์ไปที่ตำแหน่ง "ปิด" (แปลกฉันรู้…) และออกจาก () จาก python
ตอนนี้ใช้สายจัมเปอร์และสายยาวเชื่อมต่อรีเลย์ระหว่างแหล่งจ่ายไฟ 24V และโซลินอยด์วาล์ว ดูแผนภาพ สุดท้าย เชื่อมต่อโซลินอยด์วาล์วกับ faucet โดยใช้อะแดปเตอร์ และเตรียมพร้อมสำหรับการทดสอบทั้งหมดโดยทำซ้ำคำสั่งด้านบน - พวกเขาควรจะเปิดและปิดน้ำ
ต่อสายยางเข้ากับโซลินอยด์วาล์วและใส่ปลายอีกด้านลงไปในสระ ตอนนี้คุณมีระบบปิดสระว่ายน้ำที่ควบคุมด้วยคอมพิวเตอร์ และถึงเวลาเชื่อมต่อเซ็นเซอร์เพื่อบอกว่าเมื่อใดควรเรียกใช้
ขั้นตอนที่ 11: เชื่อมต่อเซ็นเซอร์ระดับน้ำ
เซ็นเซอร์ระดับน้ำเป็นเพียงลูกลอยที่เชื่อมต่อวงจรไฟฟ้าเมื่อลูกลอยลดลง และแตกเมื่อลอยขึ้น หากคุณใส่ลงในสระที่ความสูงที่เหมาะสม ทุ่นจะลอยขึ้นเมื่อระดับน้ำเพียงพอ แต่จะตกลงมาเมื่อมีน้ำไม่เพียงพอ
เพื่อให้ Raspberry Pi ทราบสถานะเซ็นเซอร์ระดับน้ำ เราต้องใช้ Pi เพื่อตรวจจับวงจรเปิดหรือปิด โชคดีที่ง่ายมาก: ตัวเชื่อมต่อ GPIO เดียวกันกับที่เราใช้เป็นเอาต์พุตดิจิตอลเพื่อควบคุมรีเลย์สามารถทำหน้าที่เป็นอินพุตได้ (ด้วยเหตุนี้ I ใน GPIO) โดยเฉพาะอย่างยิ่ง หากเราเชื่อมต่อสายเซ็นเซอร์หนึ่งเส้นกับ +3.3V บนขั้วต่อ GPIO และสายเซ็นเซอร์อีกเส้นกับพินที่เรากำหนดค่าเป็นอินพุตแบบดึงลง (หมายถึงปกติที่ระดับแรงดัน GND) ขานั้นจะวัด แรงดันไฟฟ้า "สูง" หรือ "เปิด" แบบดิจิตอลเฉพาะเมื่อเซ็นเซอร์ระดับน้ำปิดวงจร - เมื่อระดับน้ำต่ำ ฉันใช้ GPIO pin 16 เป็นอินพุตซึ่งฉันทำเครื่องหมายไว้ในภาพด้านบน
รหัสหลามเพื่อกำหนดค่าพินเป็นอินพุตและทดสอบสถานะปัจจุบันคือ:
นำเข้า gpiozero
level_input = gpiozero. Button (16) water_low = level_input.is_pressed
ความท้าทายที่อาจเกิดขึ้นอย่างหนึ่งคือเมื่อเซ็นเซอร์เปลี่ยนสถานะจะสั่นอย่างรวดเร็วระหว่างสถานะเปิดและปิด วิธีแก้ปัญหาเรียกว่า "หักล้าง" และมองหาการเปลี่ยนแปลงสถานะที่สอดคล้องกันก่อนดำเนินการ ไลบรารี GPIOZERO มีโค้ดที่ต้องทำ แต่ด้วยเหตุผลบางอย่างโค้ดนั้นใช้ไม่ได้ผลสำหรับฉัน ฉันเขียนลูปง่าย ๆ เพื่อกระตุ้นการแจ้งเตือน IFTTT เมื่อตรวจพบการเปลี่ยนแปลงสถานะที่สอดคล้องกัน ซึ่งคุณสามารถหาได้ในที่เก็บของฉันที่นี่
ขั้นตอนที่ 12: เขียนโค้ดเพื่อผูกมันไว้ด้วยกัน
แค่นั้นแหละ. การตั้งค่าของเราเสร็จสมบูรณ์ คุณสามารถเขียนโค้ดของคุณเองเพื่อเชื่อมโยงสิ่งต่างๆ เข้าด้วยกันเป็นระบบเต็มรูปแบบ หรือใช้รหัสที่ฉันให้ไว้ ในการทำเช่นนั้น เพียงแค่สร้างโครงสร้างไดเร็กทอรีและโคลนที่เก็บ เช่น:
mkdir poolpi
cd poolpi git โคลน
ถัดไป แก้ไขไฟล์ชื่อ ifttt_url.txt ในไดเร็กทอรี motion_alert และ water_level เพื่อให้มี URL สำหรับเว็บเบ็ด IFTTT ของคุณเองด้วยรหัสลับของคุณ คุณสามารถใช้ Web hook สองแบบสำหรับการกระทำที่ต่างกัน
สุดท้าย เราต้องการให้โค้ดนี้ทำงานโดยอัตโนมัติ วิธีที่ง่ายที่สุดในการทำให้สำเร็จคือผ่านบริการ Linux crontab เราสามารถเพิ่มบรรทัด crontab สำหรับงานหลักสองอย่าง:
- เรียกใช้โปรแกรมสามโปรแกรมของเรา: ตัวตรวจจับวัตถุ เซ็นเซอร์ระดับน้ำ และเว็บเซิร์ฟเวอร์ในการรีบูตทุกครั้ง
- ล้างข้อมูลไดเร็กทอรีเอาต์พุต ลบรูปภาพเก่าและไฟล์วิดีโอเก่า (ฉันเลือกลบไฟล์ที่เก่ากว่า 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
แนะนำ:
Atlas WiFi Pool Meter: 18 ขั้นตอน
Atlas WiFi Pool Meter: บทช่วยสอนนี้จะแสดงวิธีตั้งค่าชุด WiFi Pool จาก Atlas Scientific มิเตอร์วัดค่า pH ศักยภาพในการลดการเกิดออกซิเดชัน (ORP) และอุณหภูมิ ข้อมูลถูกอัปโหลดไปยังแพลตฟอร์ม ThingSpeak ซึ่งสามารถตรวจสอบได้จากระยะไกลผ่าน mo
Crocodile Solar Pool Sensor: 7 ขั้นตอน (พร้อมรูปภาพ)
Crocodile Solar Pool Sensor: คำแนะนำนี้แสดงวิธีสร้างเซ็นเซอร์สระว่ายน้ำที่ค่อนข้างพิเศษเพื่อวัดอุณหภูมิของสระและส่งผ่าน WiFi ไปยังแอพ Blynk และไปยังนายหน้า MQTT ฉันเรียกมันว่า "เซ็นเซอร์ Crocodile Solar Pool"มันใช้การเขียนโปรแกรม Arduino en
Arduino 101: หลักสูตรจาก Tech Guy: 4 ขั้นตอน
Arduino 101: หลักสูตรจากนักเทคโนโลยี: ฉันหวังว่าหลาย ๆ คนโดยเฉพาะมือใหม่ที่ต้องการดำดิ่งสู่โลกของ Arduino จะพบว่าสิ่งนี้และบทความ / คำแนะนำอื่น ๆ ของฉัน (ซึ่งฉันจะโพสต์เป็นประจำ) มีประโยชน์ .สิ่งนี้จะไม่เหมือนกับบทเรียนการคัดลอก&วางปกติ มัน
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
Supercapacitor เครื่องไร้ประโยชน์หรือกล่องโต้ตอบกับ Smart Guy: 7 ขั้นตอน (พร้อมรูปภาพ)
Supercapacitor เครื่องไร้ประโยชน์หรือโต้ตอบกับ Smart Guy: Smart Guy อะไร?! เครื่องเปล่า! อีกครั้ง! หลายร้อยหลายพันช่อง YouTube อุดตันไม่เพียงพอ?Jumbleview ส่วนใหญ่ทำด้วยสวิตช์สลับ อันนี้มี rocker.SG แล้วไง? ทุกคนรู้ว่าพวกเขาทำงานเหมือนกัน แล้วคุณล่ะ