สารบัญ:

Bird Feeder Monitor V2.0: 12 ขั้นตอน (พร้อมรูปภาพ)
Bird Feeder Monitor V2.0: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Bird Feeder Monitor V2.0: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Bird Feeder Monitor V2.0: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: funcy chicks growth videos 2024, พฤศจิกายน
Anonim
Image
Image
จอภาพป้อนนก V2.0
จอภาพป้อนนก V2.0

เป็นโครงการเพื่อติดตาม ถ่ายภาพ และบันทึกจำนวนและเวลาที่นกใช้ในการให้อาหารนกของเรา โครงการนี้ใช้ Raspberry Pi (RPi) หลายตัว หนึ่งถูกใช้เป็นเซ็นเซอร์สัมผัสแบบ capacitive Adafruit CAP1188 เพื่อตรวจจับ บันทึก และกระตุ้นภาพถ่ายของการให้อาหารนก RPi อื่นได้รับการกำหนดค่าให้ควบคุมการทำงานของระบบการตรวจสอบนี้ ตลอดจนจัดเก็บและบำรุงรักษาข้อมูลสำหรับการตรวจสอบและวิเคราะห์ RPi ตัวสุดท้ายได้รับการกำหนดค่าให้เป็นกล้องถ่ายรูปเพื่อถ่ายภาพนกแต่ละตัวที่มาเยี่ยมเยียนป้อนอาหาร

เสบียง

  1. 1 ชิ้น - Raspberry Pi W
  2. 1 ชิ้น - Raspberry Pi 3 - รุ่น B+ - สำหรับ MQTT Server
  3. 1 ชิ้น - Raspberry Pi พร้อมกล้อง - อุปกรณ์เสริม
  4. 2 ชิ้น - เคสทนฝนและแดดสำหรับเซ็นเซอร์ RPi และ CAP1188
  5. 1 ea - เทปฟอยล์ทองแดงพร้อมกาวนำไฟฟ้า
  6. ลวด - 18-22 AWG
  7. หัวแร้งและหัวแร้ง
  8. ฟลักซ์บัดกรีสำหรับอุปกรณ์อิเล็กทรอนิกส์
  9. กาวซิลิโคน*
  10. สกรูเครื่อง 8 ตัว - M3 x 25*
  11. 8 ชิ้น - M3 Nuts*
  12. 1 ชิ้น - Proto Board สำหรับติดตั้ง CAP1188
  13. 1 ea - ขั้วต่อ Dupont ตัวเมีย 1x8 ตัว
  14. 1 ea - ขั้วต่อ Dupont ตัวผู้ 1x6 ตัว
  15. 1 ชิ้น - CAP1188 - 8-Key Capacitive Touch Sensor
  16. 2 ea - PG7 Waterproof IP68 Nylon Cable Gland Joint ตัวล็อคแบบปรับได้สำหรับ 3mm-6.5mm Dia Cable Wire
  17. 1 ชุด - 2 Pin Way Car ปลั๊กไฟฟ้าแบบกันน้ำพร้อมสายไฟ AWG Marine Pack of 10
  18. 3 ชิ้น - แหล่งจ่ายไฟ 5VDC - หนึ่งชุดสำหรับ RPi. แต่ละตัว
  19. 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 บน Bird Feeder Monitor
การติดตั้ง 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

การเดินสายไฟของ RPi และ CAP1188
การเดินสายไฟของ 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 มิติ

ชิ้นส่วนพิมพ์ 3 มิติ
ชิ้นส่วนพิมพ์ 3 มิติ
ชิ้นส่วนพิมพ์ 3 มิติ
ชิ้นส่วนพิมพ์ 3 มิติ
ชิ้นส่วนพิมพ์ 3 มิติ
ชิ้นส่วนพิมพ์ 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

เซิร์ฟเวอร์ MQTT
เซิร์ฟเวอร์ MQTT
เซิร์ฟเวอร์ MQTT
เซิร์ฟเวอร์ MQTT
เซิร์ฟเวอร์ MQTT
เซิร์ฟเวอร์ 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 ที่กล่าวถึงข้างต้นจะโหลดโฟลว์ซึ่งต้องมีการปรับแต่งเล็กน้อยเพื่อให้เหมาะกับความต้องการของคุณ

  1. เชื่อมต่อ "MQTT Publish" และ "monitor/feeder/#" กับเซิร์ฟเวอร์ MQTT ของคุณ
  2. ตั้งค่าละติจูดและลองจิจูดเป็นตำแหน่งของคุณในโหนด Big Timer "Dawn & Dusk Timer (config)"
  3. กำหนดค่าโหนด "จอภาพ/ตัวป้อน/ดาราศาสตร์ (config)" กล้องสามารถเปิด/ปิดได้สำหรับแต่ละคอน ตัวอย่างเช่น คอนสองตัวของฉันอยู่ด้านหลัง และกล้องถูกปิดใช้งานสำหรับคอนเหล่านี้
  4. ตั้งค่าโหนด "ตัวนับเวลา (config)" เป็นช่วงเวลาที่ต้องการ ค่าเริ่มต้น = 5 นาที
  5. ตั้งค่าละติจูดและลองจิจูดเป็นตำแหน่งของคุณในโหนด "DarkSky (config)" ประการที่สอง ป้อนคีย์ DarkSky API ของคุณในโหนด darksky-credentials
  6. ตั้งค่าความเข้มของการตกตะกอนในโหนดฟังก์ชัน "monitor/feeder/recalibrate (config)" ค่าเริ่มต้น = 0.001 นิ้ว/ชม.
  7. แก้ไขโหนดฟังก์ชัน "ตัวกรองหัวข้อสำหรับโหนดดีบักตัวรับ MQTT (config)" เพื่อกรองข้อความ MQTT ที่คุณไม่ต้องการเห็น
  8. ไม่บังคับ: หากคุณต้องการจัดเก็บข้อมูลในสเปรดชีตบน Google Drive คุณจะต้องแก้ไขโหนดฟังก์ชัน "Build Google Docs Payload (config)" ด้วยรหัสฟิลด์ของฟอร์ม
  9. ไม่บังคับ: เพิ่ม 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

InfluxDB
InfluxDB
InfluxDB
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

กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง Raspberry Pi
กล้อง 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 อันน่าจะดีที่สุดสำหรับการ "นับ" นก

การประกวดเซนเซอร์
การประกวดเซนเซอร์
การประกวดเซนเซอร์
การประกวดเซนเซอร์

รางวัลรองชนะเลิศการประกวดเซนเซอร์

แนะนำ: