สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ภาพรวมของระบบตรวจสอบตัวป้อนนก
- ขั้นตอนที่ 2: การติดตั้ง Raspbian บน Bird Feeder Monitor
- ขั้นตอนที่ 3: การเดินสายไฟของ RPi และ CAP1188
- ขั้นตอนที่ 4: การกำหนดค่าตัวตรวจสอบตัวป้อนนก
- ขั้นตอนที่ 5: ชิ้นส่วนที่พิมพ์ 3 มิติ
- ขั้นตอนที่ 6: ชุดตรวจสอบตัวป้อนนก
- ขั้นตอนที่ 7: การเดินสายเครื่องป้อนนก
- ขั้นตอนที่ 8: เซิร์ฟเวอร์ MQTT
- ขั้นตอนที่ 9: Grafana
- ขั้นตอนที่ 10: InfluxDB
- ขั้นตอนที่ 11: กล้อง Raspberry Pi
- ขั้นตอนที่ 12: สนุก
วีดีโอ: Bird Feeder Monitor V2.0: 12 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เป็นโครงการเพื่อติดตาม ถ่ายภาพ และบันทึกจำนวนและเวลาที่นกใช้ในการให้อาหารนกของเรา โครงการนี้ใช้ Raspberry Pi (RPi) หลายตัว หนึ่งถูกใช้เป็นเซ็นเซอร์สัมผัสแบบ capacitive Adafruit CAP1188 เพื่อตรวจจับ บันทึก และกระตุ้นภาพถ่ายของการให้อาหารนก RPi อื่นได้รับการกำหนดค่าให้ควบคุมการทำงานของระบบการตรวจสอบนี้ ตลอดจนจัดเก็บและบำรุงรักษาข้อมูลสำหรับการตรวจสอบและวิเคราะห์ RPi ตัวสุดท้ายได้รับการกำหนดค่าให้เป็นกล้องถ่ายรูปเพื่อถ่ายภาพนกแต่ละตัวที่มาเยี่ยมเยียนป้อนอาหาร
เสบียง
- 1 ชิ้น - Raspberry Pi W
- 1 ชิ้น - Raspberry Pi 3 - รุ่น B+ - สำหรับ MQTT Server
- 1 ชิ้น - Raspberry Pi พร้อมกล้อง - อุปกรณ์เสริม
- 2 ชิ้น - เคสทนฝนและแดดสำหรับเซ็นเซอร์ RPi และ CAP1188
- 1 ea - เทปฟอยล์ทองแดงพร้อมกาวนำไฟฟ้า
- ลวด - 18-22 AWG
- หัวแร้งและหัวแร้ง
- ฟลักซ์บัดกรีสำหรับอุปกรณ์อิเล็กทรอนิกส์
- กาวซิลิโคน*
- สกรูเครื่อง 8 ตัว - M3 x 25*
- 8 ชิ้น - M3 Nuts*
- 1 ชิ้น - Proto Board สำหรับติดตั้ง CAP1188
- 1 ea - ขั้วต่อ Dupont ตัวเมีย 1x8 ตัว
- 1 ea - ขั้วต่อ Dupont ตัวผู้ 1x6 ตัว
- 1 ชิ้น - CAP1188 - 8-Key Capacitive Touch Sensor
- 2 ea - PG7 Waterproof IP68 Nylon Cable Gland Joint ตัวล็อคแบบปรับได้สำหรับ 3mm-6.5mm Dia Cable Wire
- 1 ชุด - 2 Pin Way Car ปลั๊กไฟฟ้าแบบกันน้ำพร้อมสายไฟ AWG Marine Pack of 10
- 3 ชิ้น - แหล่งจ่ายไฟ 5VDC - หนึ่งชุดสำหรับ RPi. แต่ละตัว
- 1 ชิ้น - เครื่องให้อาหารนก (เครื่องให้อาหารนกแบบถังพลาสติก CedarWorks) หรือเครื่องให้อาหารนกที่มีคอนพลาสติกหรือไม้
*สำหรับเคสกันน้ำที่พิมพ์ 3 มิติ
ขั้นตอนที่ 1: ภาพรวมของระบบตรวจสอบตัวป้อนนก
นี่คือระบบตรวจสอบที่ออกแบบมาเพื่อนับ เวลา บันทึก และถ่ายภาพนกที่ป้อนอาหารจากเครื่องให้อาหารนกของเรา Bird Feeder Monitor รุ่นก่อนหน้าของฉันใช้ Arduino Yun และจัดเก็บข้อมูลในสเปรดชีตบน Google Drive ของฉัน เวอร์ชันนี้ใช้การสื่อสารของ Raspberry Pi, MQTT และการจัดเก็บข้อมูลและรูปถ่ายในเครื่อง
เครื่องป้อนนกมาพร้อมกับ Raspberry Pi Zero W และ Capacitive Touch Sensor (CAP1188) นกที่ส่องไฟบนคอนจะเปิดใช้งานเซ็นเซอร์สัมผัสซึ่งเริ่มจับเวลาเพื่อกำหนดระยะเวลาที่แต่ละเหตุการณ์จะคงอยู่ ทันทีที่สัมผัสถูกเปิดใช้งาน ข้อความ MQTT " จอภาพ/ตัวป้อน/รูปภาพ " จะถูกเผยแพร่โดย Bird Feeder Monitor ข้อความนี้จะแจ้งให้ Raspberry Pi Camera ถ่ายภาพ หากเซิร์ฟเวอร์ MQTT เผยแพร่ข้อความ " monitor/feeder/getcount " Bird Feeder Monitor จะตอบสนองด้วยข้อความ MQTT " monitor/feeder/count " ซึ่งเซิร์ฟเวอร์จะจัดเก็บ
MQTT Server ทำงานหลายอย่าง ร้องขอและจัดเก็บข้อมูลจาก Bird Feeder Monitor และควบคุมการทำงานของจอภาพ มันเปิดใช้งานจอภาพเมื่อรุ่งอรุณและปิดตัวลงเมื่อพลบค่ำ นอกจากนี้ยังควบคุมช่วงเวลาสำหรับการขอข้อมูล และยังตรวจสอบสภาพอากาศปัจจุบันผ่าน DarkSky สภาพอากาศได้รับการตรวจสอบด้วยเหตุผลสองประการ ประการแรก ปริมาณน้ำฝนอาจส่งผลต่อเซ็นเซอร์ หากเกิดเหตุการณ์นี้ขึ้น เซ็นเซอร์จะได้รับการปรับเทียบใหม่เป็นประจำในขณะที่ฝนตก เหตุผลที่สอง คือ การติดตามและบันทึกสภาพอากาศเพื่อให้สัมพันธ์กับข้อมูลจำนวนนก
กล้อง Raspberry Pi เป็นโมดูลกล้อง RPi + Raspberry Pi ซอฟต์แวร์กล้องที่ใช้สำหรับโปรเจ็กต์นี้ใช้ไม่ได้กับเว็บแคม USB กล้อง RPi ติดตั้ง WIFI และใช้งานซอฟต์แวร์ไคลเอ็นต์ MQTT มันสมัครรับข้อความ MQTT "จอภาพ/ตัวป้อน/รูปภาพ" และถ่ายภาพทุกครั้งที่ได้รับข้อความนี้ ภาพถ่ายจะถูกเก็บไว้ในกล้อง RPi และจัดการจากระยะไกล
ขั้นตอนที่ 2: การติดตั้ง Raspbian บน Bird Feeder Monitor
ติดตั้ง Raspbian Lite เวอร์ชันล่าสุดบน Raspberry Pi Zero W. ฉันแนะนำให้ทำตามคำแนะนำทีละขั้นตอนที่สามารถพบได้ที่ Raspberry Pi Zero Headless Quick Start ของ Adafruit
ขั้นตอนต่อไปนี้รวมอยู่ในคำแนะนำข้างต้น แต่ควรกล่าวซ้ำ:
เชื่อมต่อกับ RPi ผ่าน ssh และเรียกใช้คำสั่งต่อไปนี้:
sudo apt-get updatessudo apt-get upgrade
คำสั่งข้างต้นจะใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ แต่การรันคำสั่งเหล่านี้จะช่วยรับประกันว่าคุณจะได้รับข้อมูลล่าสุดเกี่ยวกับแพ็คเกจล่าสุด
ถัดไป เรียกใช้คำสั่งต่อไปนี้เพื่อกำหนดค่าซอฟต์แวร์ RPi:
sudo raspi-config
เปลี่ยนรหัสผ่าน เปิดใช้งาน SPI และ I2C และขยายระบบไฟล์ เมื่อดำเนินการเสร็จแล้ว ให้ออกจาก raspi-config
ขั้นตอนที่ 3: การเดินสายไฟของ RPi และ CAP1188
Raspberry Pi W (RPi) และ CAP1188 ต่อสายโดยใช้ I2C มีเซ็นเซอร์สัมผัสแบบ capacitive อื่น ๆ ที่มีอยู่ในเซ็นเซอร์หนึ่งห้าหรือแปดตัว ฉันเลือกแปดเพราะที่ป้อนนกของฉันมีหกด้าน
การเดินสายไฟ:
- CAP1188 SDA == RPi พิน 3
- CAP1188 SCK == RPi Pin 5
- CAP1188 VIN == RPi Pin 1 (+3.3VDC)
- CAP1188 GND == RPi Pin 9 (GND)
- CAP1188 C1-C8 == เชื่อมต่อกับสายไฟบนคอนแต่ละตัวผ่านตัวเชื่อมต่อ Dupont หญิง 1x8
- CAP1188 3Vo == CAP1188 AD - ต่อสายที่อยู่ I2C เป็น 0x28
- RPi Pin 2 == +5VDC
- RPi Pin 14 == GND
พลังงานสำหรับ RPi นั้นมาจากภายนอก โดยการเดินสายไฟใต้ดินจากโรงรถของฉัน และผ่านท่อที่ใช้เป็นที่ป้อนนก ขั้วต่อกันฝนและแดดแบบ 2 พินติดอยู่ที่ปลายสายสำหรับเชื่อมต่อ RPi Bird Feeder Monitor ปลายอีกด้านของสายไฟเชื่อมต่อกับแหล่งจ่ายไฟ 5-VDC แบบหลอมรวมในโรงรถ โปรเจ็กต์นี้ควรใช้กับแบตเตอรี่ แต่ฉันไม่ต้องการให้ยุ่งยากกับการเปลี่ยนแบตเตอรี่เป็นประจำ
ฉันสร้างสายเคเบิลยาว 16 นิ้วเพื่อเชื่อมต่อ Weatherproof Box ที่มี RPi กับ Weatherproof Box ที่มี CAP1188 เซ็นเซอร์ capacitive จะต้องอยู่ใกล้กับคอนให้มากที่สุด
RPi Zero และ CAP1188 สามารถบรรจุในกล่องที่ทนฝนและแดดได้เพียงกล่องเดียว แต่ฉันต้องการแยกบรรจุแยกกัน
ขั้นตอนที่ 4: การกำหนดค่าตัวตรวจสอบตัวป้อนนก
เข้าสู่ระบบ Raspberry Pi Zero W และทำตามขั้นตอนต่อไปนี้
ติดตั้ง pip:
sudo apt-get ติดตั้ง python3-pip
ติดตั้ง Adafruit CircuitPython:
sudo pip3 install --upgrade setuptools
ตรวจสอบอุปกรณ์ I2C และ SPI:
ls /dev/i2c* /dev/spi*
คุณควรเห็นการตอบสนองต่อไปนี้:
/dev/i2c-1 /dev/spidev0.0 /dev/spidev0.1
ถัดไปติดตั้งแพ็คเกจ GPIO และ Adafruit blinka:
pip3 ติดตั้ง RPI. GPIOpip3 ติดตั้ง adafruit-blinka
ติดตั้งโมดูล CAP1188 ของ Adafruit:
pip3 ติดตั้ง adafruit-circuitpython-cap1188
ติดตั้งเครื่องมือ I2C:
sudo apt-get ติดตั้ง python-smbussudo apt-get ติดตั้ง i2c-tools
ตรวจสอบที่อยู่ I2C ด้วยเครื่องมือด้านบน:
i2cdetect -y 1
หากเชื่อมต่อ CAP1188 คุณจะเห็นการตอบสนองแบบเดียวกับที่เห็นในภาพด้านบน ซึ่งระบุว่าเซ็นเซอร์อยู่ที่ที่อยู่ I2C 0x28 (หรือ 0x29 ขึ้นอยู่กับตัวเลือกที่อยู่ I2C)
ติดตั้ง mosquitto, mosquitto-clients และ paho-mqtt:
sudo apt-get ติดตั้ง mosquitto mosquitto-clients python-mosquitto
sudo pip3 ติดตั้ง paho-mqtt
ฉันแนะนำให้ใช้ Configuring MQTT ของ Adafruit บน Raspberry Pi เพื่อกำหนดค่าและตั้งค่า MQTT บน RPi นี้
ติดตั้งซอฟต์แวร์ Bird Feeder Monitor:
ซีดี ~
sudo apt-get ติดตั้ง git git clone "https://github.com/sbkirby/RPi_bird_feeder_monitor.git"
สร้างไดเรกทอรีบันทึก:
ซีดี ~
mkdir บันทึก
ต่อสายเซ็นเซอร์ CAP1188 เข้ากับ RPi และดำเนินการต่อไปนี้เพื่อทดสอบระบบหลังจากที่เซิร์ฟเวอร์ MQTT ทำงาน:
cd RPi_bird_feeder_monitor
sudo nano config.json
แทนที่ค่าสำหรับ "OIP_HOST", "MQTT_USER", "MQTT_PW" และ "MQTT_PORT" เพื่อให้ตรงกับการตั้งค่าในพื้นที่ของคุณ ออกและบันทึกการเปลี่ยนแปลงของคุณ
วิ่งที่ Startup
ในขณะที่ยังคงอยู่ในไดเร็กทอรี /home/pi/RPi_bird_feeder_monitor
nano launcher.sh
รวมข้อความต่อไปนี้ใน launcher.sh
#!/bin/sh
# launcher.sh # ไปที่โฮมไดเร็กทอรี จากนั้นไปที่ไดเร็กทอรีนี้ จากนั้นรันสคริปต์ python จากนั้นกลับบ้าน cd / cd home/pi/RPi_bird_feeder_monitor sudo python3 feeder_mqtt_client.py cd /
ออกและบันทึก launcher.sh
เราจำเป็นต้องทำให้สคริปต์สามารถเรียกใช้งานได้
chmod 755 launcher.sh
ทดสอบสคริปต์
sh launcher.sh
ต่อไป เราต้องแก้ไข crontab (ตัวจัดการงาน linux) เพื่อเรียกใช้สคริปต์เมื่อเริ่มต้น หมายเหตุ: เราได้สร้างไดเร็กทอรี /logs ไว้แล้วก่อนหน้านี้
sudo crontab -e
สิ่งนี้จะนำหน้าต่าง crontab ตามที่เห็นด้านบน ไปที่ส่วนท้ายของไฟล์และป้อนบรรทัดต่อไปนี้
@reboot sh /home/pi/RPi_bird_feeder_monitor/launcher.sh >/home/pi/logs/cronlog 2>&1
ออกและบันทึกไฟล์ แล้วรีบูต RPi สคริปต์ควรเริ่มต้นสคริปต์ feeder_mqtt_client.py หลังจากที่ RPi รีบูต สามารถตรวจสอบสถานะของสคริปต์ได้ในไฟล์บันทึกที่อยู่ในโฟลเดอร์ /logs
ขั้นตอนที่ 5: ชิ้นส่วนที่พิมพ์ 3 มิติ
ไฟล์ STL เหล่านี้มีไว้สำหรับชิ้นส่วนที่พิมพ์ 3 มิติที่ฉันสร้างสำหรับโปรเจ็กต์นี้ และส่วนเหล่านี้ทั้งหมดเป็นทางเลือก เคสที่ทนฝนและแดดสามารถประดิษฐ์หรือซื้อในท้องถิ่นได้ "ลิ่มยึด" สำหรับเครื่องป้อนนก CedarWorks ก็เป็นอุปกรณ์เสริมเช่นกัน ส่วนนี้จำเป็นสำหรับการติดตั้งเคสเซนเซอร์ CAP1188
ขั้นตอนที่ 6: ชุดตรวจสอบตัวป้อนนก
หลังจากติดตั้ง Raspbian กำหนดค่าและทดสอบเซ็นเซอร์ RPi และ CAP1188 ตามที่กล่าวไว้ก่อนหน้านี้ ตอนนี้ก็ถึงเวลาติดตั้งอุปกรณ์เหล่านี้ในกรณีที่ทนต่อสภาพอากาศ
ฉันใช้เคสกันน้ำสองแบบที่ฉันพิมพ์เพื่อติดตั้งเซ็นเซอร์ RPi และ CAP1188 ก่อนอื่น ฉันเจาะรู 1/2 ที่ปลายด้านหนึ่งของเคสแต่ละอัน เจาะรูบนเคส RPi ฝั่งตรงข้ามกับการ์ด SD ติดข้อต่อ Nylon Cable Gland พร้อมน็อตล็อคแบบปรับได้ในแต่ละรู เรียกใช้ทั้งสี่ สายเคเบิลตัวนำระหว่างแต่ละเคส ติดตั้งและบัดกรี 2 Pin Car Waterproof Electrical Female Connector เข้ากับ RPi ดังภาพด้านบน บัดกรีสายสีแดงเข้ากับ +5VDC Pin 2 ของ RPi และสายสีดำกับ GND หรือ Pin 14 ดูแผนภาพการเดินสายไฟสำหรับการเชื่อมต่ออื่นๆ ที่ใช้กับ RPi
เรียกใช้ปลายอีกด้านของสายตัวนำทั้งสี่ผ่าน Gland Joint บนเคส CAP1188 และต่อสายไฟตามที่ระบุในแผนภาพการเดินสาย เซ็นเซอร์สัมผัสแบบ capacitive CAP1188 ทั้ง 8 ตัวถูกบัดกรีเข้ากับขั้วต่อ Dupont ตัวเมีย 8 พิน ขั้วต่อนี้ปิดภาคเรียนที่ด้านข้างของเคสเพื่อให้สามารถผนึกแน่นกับน้ำได้เมื่อใช้ด้านบน หมายเหตุ: ส่วนบนของทั้งสองกรณีอาจต้องมีการดัดแปลงเพื่อให้สามารถใช้น็อตบน Gland Joint Connectors ได้
ก่อนปิด ฉันจะใช้กาวซิลิโคนที่ขอบของแต่ละเคส และรอบๆ สายไฟของ Gland Joints เพื่อปิดผนึกเคส ฉันยังเพิ่มซิลิโคนที่ด้านหลังของตัวเชื่อมต่อ Dupont เพื่อปิดผนึกจากองค์ประกอบต่างๆ
ขั้นตอนที่ 7: การเดินสายเครื่องป้อนนก
คอนแต่ละตัวบนตัวป้อนถูกปกคลุมด้วยเทปฟอยล์ทองแดงขนาดกว้าง 1/4 นิ้วที่มีกาวในตัว มีการเจาะรูเล็ก ๆ ผ่านเทปและคอน และลวดถูกบัดกรีเข้ากับเทปฟอยล์และเดินตามเส้นทางใต้ตัวป้อน แต่ละอัน สายไฟเชื่อมต่อกับขั้วต่อ Dupont 6 ขาตัวผู้
หมายเหตุ: ด้วยตัวป้อนนกที่แสดงด้านบน ขอแนะนำให้เว้นช่องว่างระหว่างปลายของแถบฟอยล์แต่ละแถบที่มีขนาด 1 1/4" - 1 1/2" ฉันค้นพบว่านกที่มีขนาดใหญ่กว่า เช่น นกเหยี่ยวนกเขาและนกเขา สามารถสัมผัสแถบฟอยล์สองแถบพร้อมกันได้ หากวางพวกมันไว้ใกล้กัน
"ลิ่มยึด" ที่กล่าวถึงก่อนหน้านี้ถูกพิมพ์และติดกาวที่ด้านล่างของตัวป้อนเพื่อให้มีพื้นที่ราบเรียบสำหรับติดตั้งกล่องกันฝนและอากาศที่มี CAP1188 เทปเวลโครถูกนำไปใช้กับกล่องเช่นเดียวกับบล็อกไม้เพื่อให้เป็นวิธีการติด สามารถเห็นได้จากภาพด้านบนของการประกอบที่เสร็จสมบูรณ์ ใช้สายรัดเวลโครพันรอบท่อและกล่อง RPi เพื่อยึดไว้ใต้ตัวป้อน
ตัวป้อนนกเติมด้วยเซ็นเซอร์และ RPi ที่ติดอยู่กับตัวป้อน และในขณะที่ยังอยู่บนขาตั้งท่อ โชคดีที่ฉันสูง 6'2 และเอื้อมมือไปหยิบภาชนะได้โดยไม่ต้องใช้ความพยายามมาก
ขั้นตอนที่ 8: เซิร์ฟเวอร์ MQTT
หากคุณเคยเล่นน้ำในโลก IOT แล้ว คุณอาจมีเซิร์ฟเวอร์ MQTT ทำงานบนเครือข่ายของคุณอยู่แล้ว หากคุณไม่ทำเช่นนั้น ฉันแนะนำให้ใช้ Raspberry Pi 3 สำหรับเซิร์ฟเวอร์ MQTT และคำแนะนำและไฟล์ภาพ IMG ที่พบในเว็บไซต์ของ Andreas Spiess "การติดตั้ง Node-Red, InfuxDB & Grafana" Andreas ยังมีวิดีโอที่ให้ข้อมูลเกี่ยวกับเรื่องนี้ #255 Node-Red, InfluxDB และ Grafana Tutorial บน Raspberry Pi
เมื่อเซิร์ฟเวอร์ Node-Red ทำงาน คุณสามารถนำเข้าโฟลว์ Bird Feeder Monitor ได้โดยคัดลอกข้อมูลใน ~/RPi_bird_feeder_monitor/json/Bird_Feeder_Monitor_Flow.json และใช้การนำเข้า > คลิปบอร์ดเพื่อวางคลิปบอร์ดลงในโฟลว์ใหม่
ขั้นตอนนี้จะต้องใช้โหนดต่อไปนี้:
- node-red-node-darksky - จำเป็นต้องมีบัญชี DarkSky API เพื่อใช้โหนดนี้
- node-red-contrib-bigtimer - ตัวจับเวลาครั้งใหญ่โดย Scargill Tech
- node-red-contrib-influxdb - ฐานข้อมูล InfluxDB
ข้อมูลสภาพอากาศสำหรับตำแหน่งของคุณมีให้ผ่าน DarkSky และขณะนี้ฉันกำลังตรวจสอบและบันทึก "precipIntensity", "temperature", "humidity", "windSpeed", "windBearing", "windGust" และ "cloudCover" "precipIntensity" มีความสำคัญเนื่องจากใช้เพื่อระบุว่าจำเป็นต้องปรับเทียบเซ็นเซอร์ใหม่อันเป็นผลมาจากฝนตกหรือไม่
โหนด Big Timer เป็นมีดทหารสวิสของตัวจับเวลา ใช้เพื่อเริ่มและหยุดการบันทึกข้อมูลในเวลาเช้าและค่ำในแต่ละวัน
InfluxDB เป็นฐานข้อมูลอนุกรมเวลาน้ำหนักเบาที่ใช้งานง่าย ฐานข้อมูลจะเพิ่มการประทับเวลาโดยอัตโนมัติทุกครั้งที่เราแทรกข้อมูล ไม่จำเป็นต้องกำหนดฟิลด์ต่างจาก SQLite จะถูกเพิ่มโดยอัตโนมัติเมื่อข้อมูลถูกแทรกลงในฐานข้อมูล
การกำหนดค่าโหนด-แดง
ไฟล์ JSON ที่กล่าวถึงข้างต้นจะโหลดโฟลว์ซึ่งต้องมีการปรับแต่งเล็กน้อยเพื่อให้เหมาะกับความต้องการของคุณ
- เชื่อมต่อ "MQTT Publish" และ "monitor/feeder/#" กับเซิร์ฟเวอร์ MQTT ของคุณ
- ตั้งค่าละติจูดและลองจิจูดเป็นตำแหน่งของคุณในโหนด Big Timer "Dawn & Dusk Timer (config)"
- กำหนดค่าโหนด "จอภาพ/ตัวป้อน/ดาราศาสตร์ (config)" กล้องสามารถเปิด/ปิดได้สำหรับแต่ละคอน ตัวอย่างเช่น คอนสองตัวของฉันอยู่ด้านหลัง และกล้องถูกปิดใช้งานสำหรับคอนเหล่านี้
- ตั้งค่าโหนด "ตัวนับเวลา (config)" เป็นช่วงเวลาที่ต้องการ ค่าเริ่มต้น = 5 นาที
- ตั้งค่าละติจูดและลองจิจูดเป็นตำแหน่งของคุณในโหนด "DarkSky (config)" ประการที่สอง ป้อนคีย์ DarkSky API ของคุณในโหนด darksky-credentials
- ตั้งค่าความเข้มของการตกตะกอนในโหนดฟังก์ชัน "monitor/feeder/recalibrate (config)" ค่าเริ่มต้น = 0.001 นิ้ว/ชม.
- แก้ไขโหนดฟังก์ชัน "ตัวกรองหัวข้อสำหรับโหนดดีบักตัวรับ MQTT (config)" เพื่อกรองข้อความ MQTT ที่คุณไม่ต้องการเห็น
- ไม่บังคับ: หากคุณต้องการจัดเก็บข้อมูลในสเปรดชีตบน Google Drive คุณจะต้องแก้ไขโหนดฟังก์ชัน "Build Google Docs Payload (config)" ด้วยรหัสฟิลด์ของฟอร์ม
- ไม่บังคับ: เพิ่ม URL ของแบบฟอร์มที่ไม่ซ้ำกันลงในช่อง URL ของโหนดคำขอ HTTP "Google Docs GET (config)"
เดสก์ท็อป UI โหนดสีแดง
Bird_Feeder_Monitor_Flow มีส่วนติดต่อผู้ใช้ (UI) สำหรับการเข้าถึงเซิร์ฟเวอร์ MQTT ผ่านโทรศัพท์มือถือ สามารถปิดหรือเปิดจอภาพ ปรับเซ็นเซอร์ใหม่ หรือถ่ายภาพด้วยตนเอง แสดง "การสัมผัส" ของเซ็นเซอร์ทั้งหมดด้วย ซึ่งจะช่วยให้คุณทราบคร่าวๆ เกี่ยวกับจำนวนนกที่มาเยี่ยมถาดป้อนอาหาร
ขั้นตอนที่ 9: Grafana
"Grafana เป็นชุดการวิเคราะห์และการสร้างภาพข้อมูลเมตริกแบบโอเพนซอร์ส โดยทั่วไปจะใช้สำหรับการแสดงข้อมูลอนุกรมเวลาสำหรับโครงสร้างพื้นฐานและการวิเคราะห์แอปพลิเคชัน แต่ส่วนใหญ่จะใช้ในโดเมนอื่นๆ เช่น เซ็นเซอร์อุตสาหกรรม ระบบอัตโนมัติในบ้าน สภาพอากาศ และการควบคุมกระบวนการ" อ้างอิง: Grafana Docs.
ซอฟต์แวร์นี้รวมอยู่ในไฟล์ภาพของ Andreas Spiess ที่ใช้สร้างเซิร์ฟเวอร์ MQTT ของฉัน หลังจากกำหนดค่าฐานข้อมูล InfluxDB บนเซิร์ฟเวอร์ MQTT แล้ว Grafana สามารถกำหนดค่าเพื่อใช้ฐานข้อมูลนี้ตามที่เห็นในภาพด้านบน ถัดไป แดชบอร์ดที่ใช้โดยโครงการนี้สามารถโหลดได้จากไฟล์ JSON ที่พบใน ~/RPi_bird_feeder_monitor/json/ Bird_Feeder_Monitor_Grafana.json คำแนะนำสำหรับการกำหนดค่า Grafana สามารถพบได้ที่เว็บไซต์ของ Andreas Spiess "การติดตั้ง Node-Red, InfuxDB & Grafana"
ขั้นตอนที่ 10: InfluxDB
ดังที่ได้กล่าวไว้ก่อนหน้านี้ Adreas Spiess มีคำแนะนำและวิดีโอที่ยอดเยี่ยมที่จะแนะนำคุณผ่านการกำหนดค่าของ InfluxDB นี่คือขั้นตอนที่ฉันใช้เพื่อกำหนดค่าฐานข้อมูลของฉัน
ก่อนอื่น ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์ MQTT ผ่าน SSH และสร้าง USER:
root@MQTTPi:~# influx เชื่อมต่อกับ "https://localhost:8086" เวอร์ชัน 1.7.6 เวอร์ชันเชลล์ InfluxDB: 1.7.6 ป้อนข้อความค้นหา InfluxQL > สร้างผู้ใช้ "pi" ด้วยรหัสผ่าน 'raspberry' พร้อมสิทธิ์ทั้งหมด > แสดงผู้ใช้ ผู้ดูแลระบบผู้ใช้ ---- ----- pi true
ต่อไปฉันสร้างฐานข้อมูล:
สร้างฐานข้อมูล BIRD_FEEDER_MONITOR> > แสดงชื่อฐานข้อมูล: ชื่อฐานข้อมูล ---- _internal BIRD_FEEDER_MONITOR >
หลังจากที่คุณสร้างฐานข้อมูลด้านบนแล้ว คุณสามารถกำหนดค่าโหนด InfluxDB ใน Node-Red ดังที่เห็นในภาพด้านบน ฉันตั้งชื่อเครื่องมือวัดว่า "ตัวป้อน" สามารถเห็นได้ใน InfluxDB หลังจากที่ข้อมูลเริ่มต้นแล้ว:
ใช้ BIRD_FEEDER_MONITORการใช้ฐานข้อมูล BIRD_FEEDER_MONITOR
แสดงชื่อการวัด: ชื่อหน่วยวัด ---- ตัวป้อน >
หนึ่งในคุณสมบัติมากมายของ InfluxDB คือการกำหนดค่า FIELDS ไม่จำเป็น ฟิลด์จะถูกเพิ่มและกำหนดค่าโดยอัตโนมัติเมื่อป้อนข้อมูล ต่อไปนี้คือ FIELDS และ FIELDTYPE สำหรับฐานข้อมูลนี้:
SHOW FIELD KEYSname: feeders fieldKey fieldType -------- --------- cloudcover float count_1 float count_2 float count_3 float count_4 float count_5 float count_6 floatความชื้นลอยชื่อสตริง precip_Int float temp float time_1 float time_2 ลอยตัว_3 ลอยตัว _4 ลอยตัว _5 ลอยตัว _6 ลอยลม ลอยลมแรงลม ลอยลมความเร็ว ลอยตัว >
รายการบางรายการจากฐานข้อมูลสามารถดูได้ด้านล่าง:
SELECT * FROM feeders LIMIT 10 ชื่อ: feeders time cloudcover count_1 count_2 count_3 count_4 count_5 count_6ความชื้นชื่อ precip_Int temp time_1 time_2 time_3 time_4 time_5 time_6 winddir windgust windspeed ---- ---------- ----- -- -------- ------- ------- ------- ------- -------- ---- - --------- ---- ------ ------ ------ ------ ------ ------ - ------ -------- --------- 1550270591000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550271814000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 155027223000000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550272530000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550272830000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550273130000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550273430000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 1550273730000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 155027403000000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 155027433000000000000 0 0 0 0 0 0 ตัวป้อน1 0 0 0 0 0 0 >
ขั้นตอนที่ 11: กล้อง Raspberry Pi
ฉันแนะนำให้ใช้คำสั่ง Remote CNC Stop and Monitor เพื่อประกอบกล้อง Raspberry Pi ทำตามขั้นตอนทั้งหมดที่กล่าวถึงยกเว้น 6 และ 8 เพื่อสร้างกล้องโปรดสังเกตว่าฉันกำลังใช้ Raspberry Pi รุ่นเก่าสำหรับกล้องของฉัน แต่ใช้งานได้ดีมากจากหน้าต่างร้านค้าของฉัน
อัพเกรด Rasbian:
sudo apt-get updatessudo apt-get upgrade
ติดตั้ง PIP:
sudo apt-get ติดตั้ง python3-pip
ติดตั้ง paho-mqtt:
sudo pip3 ติดตั้ง paho-mqtt
ติดตั้ง git และซอฟต์แวร์ตรวจสอบนก:
ซีดี ~
sudo apt-get ติดตั้ง git git clone "https://github.com/sbkirby/RPi_bird_feeder_monitor.git"
หากคุณต้องการสร้างวิดีโอจากภาพที่ถ่ายโดยกล้อง ให้ติดตั้ง ffmpeg:
git clone "https://git.ffmpeg.org/ffmpeg.git" ffmpeg
cd ffmpeg./configure make sudo make install
การกำหนดค่าการอนุญาตบนซอฟต์แวร์ Bird Feeder Monitoring:
cd RPi_bird_feeder_monitor
sudo chmod 764 make_movie.sh sudo chmod 764 take_photo.sh sudo chown www-data:www-data make_movie.sh sudo chown www-ข้อมูล:www-data take_photo.sh
โดยส่วนตัวแล้ว ฉันไม่แนะนำให้ใช้ make_movie.sh บนกล้อง RPi ต้องใช้ทรัพยากรจำนวนมากในการทำงานบน RPi ฉันแนะนำให้โอนภาพไปยังพีซีของคุณและเรียกใช้ ffmpeg ที่นั่น
วิ่งที่ Startup
ล็อกอินเข้าสู่ RPi และเปลี่ยนเป็นไดเร็กทอรี /RPi_bird_feeder_monitor
cd RPi_bird_feeder_monitor
nano launcher.sh
รวมข้อความต่อไปนี้ใน launcher.sh
#!/bin/sh
# launcher.sh # ไปที่โฮมไดเร็กทอรี จากนั้นไปที่ไดเร็กทอรีนี้ จากนั้นรันสคริปต์ python จากนั้นกลับบ้าน cd / cd home/pi/RPi_bird_feeder_monitor sudo python3 camera_mqtt_client.py cd /
ออกและบันทึก launcher.sh
เราจำเป็นต้องสร้างสคริปต์และเรียกใช้งานได้
chmod 755 launcher.sh
ทดสอบสคริปต์
sh launcher.sh
สร้างไดเร็กทอรีบันทึก:
ซีดี ~
mkdir บันทึก
ต่อไป เราต้องแก้ไข crontab (ตัวจัดการงาน linux) เพื่อเรียกใช้สคริปต์เมื่อเริ่มต้น
sudo crontab -e
สิ่งนี้จะนำหน้าต่าง crontab ตามที่เห็นด้านบน ไปที่ส่วนท้ายของไฟล์และป้อนบรรทัดต่อไปนี้
@reboot sh /home/pi/RPi_bird_feeder_monitor/launcher.sh >/home/pi/logs/cronlog 2>&1
ออกและบันทึกไฟล์ แล้วรีบูต RPi สคริปต์ควรเริ่มสคริปต์ camera_mqtt_client.py หลังจากที่ RPi รีบูต สามารถตรวจสอบสถานะของสคริปต์ได้ในไฟล์บันทึกที่อยู่ในโฟลเดอร์ /logs
ขั้นตอนที่ 12: สนุก
เราสนุกกับการดูนก อย่างไรก็ตาม เราไม่สามารถวางเครื่องให้อาหารในตำแหน่งเพื่อความเพลิดเพลินสูงสุด ที่เดียวที่พวกเราส่วนใหญ่สามารถมองเห็นได้จากโต๊ะอาหารเช้า และไม่ใช่ทุกคนที่จะเห็นเครื่องป้อนอาหารจากที่นั่น ดังนั้นด้วย Bird Feeder Monitor เราจึงสามารถชื่นชมนกได้ตามความสะดวกของเรา
สิ่งหนึ่งที่เราค้นพบด้วยจอภาพคือความถี่ของนกที่ตกลงบนคอนตัวหนึ่ง ตามด้วยกระโดดไปยังคอนตัวถัดไป จนกว่าพวกมันจะแล่นรอบตู้ปลาทั้งหมด ด้วยเหตุนี้ จำนวนนกจึงลดลงจากจำนวนนกแต่ละตัวที่มาเยี่ยมอาหารของเรา เครื่องให้อาหารที่มีคอนแคบเพียง 1-2 อันน่าจะดีที่สุดสำหรับการ "นับ" นก
รางวัลรองชนะเลิศการประกวดเซนเซอร์
แนะนำ:
Muscle Powered Flappy Bird: 9 ขั้นตอน (พร้อมรูปภาพ)
Muscle Powered Flappy Bird: คุณอาจจำได้เมื่อ Flappy Bird ยึดครองโลกโดยพายุ ในที่สุดก็กลายเป็นที่นิยมอย่างมาก ผู้สร้างจึงลบมันออกจาก App Store เพื่อหลีกเลี่ยงการเผยแพร่ที่ไม่ต้องการ นี่คือ Flappy Bird อย่างที่คุณไม่เคยเห็นมาก่อน โดยการรวมองค์ประกอบบางส่วนจากชั้นวาง
Alexa Controlled Dog Feeder: 6 ขั้นตอน (พร้อมรูปภาพ)
Alexa Controlled Dog Feeder: นี่คือสุนัขของเรา Bailey เธอเป็นส่วนหนึ่งของ Border Collie และ Australian Cattle Dog ดังนั้นบางครั้งเธอก็ฉลาดกว่าความดีของตัวเอง โดยเฉพาะอย่างยิ่งเมื่อพูดถึงการบอกเวลาและรู้ว่าเมื่อใดที่เธอควรรับประทานอาหารเย็น ปกติเราจะพยายามให้อาหารมันประมาณ 6 โมงเย็น
IoT Cat Feeder โดยใช้อนุภาคโฟตอนรวมกับ Alexa, SmartThings, IFTTT, Google ชีต: 7 ขั้นตอน (พร้อมรูปภาพ)
IoT Cat Feeder โดยใช้อนุภาคโฟตอนผสานรวมกับ Alexa, SmartThings, IFTTT, Google ชีต: ความจำเป็นในการให้อาหารแมวอัตโนมัติเป็นสิ่งที่อธิบายได้ด้วยตนเอง แมว (แมวเราชื่อ เบลล่า) เวลาหิวจะน่าสะอิดสะเอียน และถ้าแมวของคุณเป็นเหมือนของฉันก็จะกินชามให้แห้งทุกครั้ง ฉันต้องการวิธีจ่ายอาหารตามปริมาณที่ควบคุมได้โดยอัตโนมัติ
SMART FISH FEEDER "DOMOVOY": 5 ขั้นตอน (พร้อมรูปภาพ)
เครื่องให้อาหารปลาอัจฉริยะ "DOMOVOY": เครื่องป้อน "DOMOVOY" ออกแบบมาเพื่อให้อาหารปลาในตู้อัตโนมัติตามกำหนดเวลา คุณสมบัติ: ออกแบบมาเพื่อให้อาหารปลาในตู้อัตโนมัติ ให้อาหารตามเวลาที่กำหนดอัลกอริธึมพิเศษป้องกันการติดขัดของฟีด พารามิเตอร์สามารถเปลี่ยนแปลงได้
Smart Cat Feeder: 8 ขั้นตอน (พร้อมรูปภาพ)
เครื่องให้อาหารแมวอัจฉริยะ: หากคุณเบื่อหน่ายกับการที่แมวกรีดร้องหาคุณทุกเช้า คุณสามารถสร้างเครื่องให้อาหารแมวสำหรับมันได้ เราต้องการขวดวิตามิน 2 กระป๋องขวดวิตามินMG996 เซอร์โวมอเตอร์ที่รัดสายไฟ สายหนา ชามคู่ ชิ้นส่วนของโฟม เทปไฟฟ้าArduino หรือไมโครคอนโทรลเลอร์/ไมโครคอมพิวเตอร์ที่คล้ายกัน