สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ในโปรเจ็กต์ง่ายๆ นี้ เราจะใช้เซ็นเซอร์ตรวจจับความเคลื่อนไหวเพื่อตรวจจับว่ามีวัตถุผ่านหน้า Raspberry Pi ของเราหรือไม่ จากนั้นเราจะนับจำนวนครั้งที่เกิดขึ้น และส่งค่านี้ไปยัง Ubidots
เคาน์เตอร์ผู้คนมักเป็นอุปกรณ์ราคาแพงที่ใช้ในอุตสาหกรรมค้าปลีกเพื่อทำความเข้าใจว่าผู้ซื้อมีพฤติกรรมอย่างไร ขอบคุณ Raspberry Pi และ Ubidots เราสามารถสร้างเคาน์เตอร์ที่ใช้งานได้ภายในเวลาไม่กี่ชั่วโมงและด้วยเงินเพียงไม่กี่ดอลลาร์!
เมื่อเราส่งข้อมูลการนับจำนวนคนไปยัง Ubidots แล้ว เราสามารถสร้างกราฟที่ดีสำหรับการวิเคราะห์ รวมถึงการแจ้งเตือนทาง SMS/อีเมล
ขั้นตอนที่ 1: รับวัสดุที่เหมาะสม
เพื่อให้โครงการนี้เสร็จสมบูรณ์ คุณจะต้อง:
- ราสเบอร์รี่ Pi รุ่น B
- เซ็นเซอร์ PIR โดย Parallax
- USB WiFi Dongle ที่รองรับ Raspberry Pi
- ชุดแบตเตอรี่ USB สำหรับจ่ายไฟให้กับ Raspberry Pi (เป็นทางเลือกในกรณีที่คุณต้องการปล่อย Pi แบบไร้สายทั้งหมด)
- สายจัมเปอร์หญิง-หญิง 3 เส้น
- บัญชี Ubidots - หรือ - ใบอนุญาต STEM
ขั้นตอนที่ 2: การเดินสายไฟขึ้น
เซ็นเซอร์ตรวจจับความเคลื่อนไหว PIR ค่อนข้างใช้งานง่าย เพราะมีสามพินเท่านั้น:
- วี+
- GND
- พินสัญญาณที่ส่งออก "1" เมื่อมีการเคลื่อนไหวและ "0" เมื่อไม่มี
ไม่จำเป็นต้องบัดกรีหรือเขียน I2C ที่ซับซ้อนหรือฟังก์ชันอนุกรมเพื่อตรวจจับสัญญาณนี้ เพียงเสียบสายเคเบิลเข้ากับหมุด GPIO ของ Raspberry Pi ของคุณโดยตรง และใช้งานได้!
ขั้นตอนที่ 3: ปลอก
เนื่องจากเซ็นเซอร์ PIR มีความไวต่อการเคลื่อนไหวมาก ฉันจึงใช้สวิตช์จัมเปอร์ที่อยู่ด้านหลังเพื่อตั้งค่าความไวแสงที่เป็นไปได้ต่ำสุด นอกจากนี้ ฉันยังนำเคสเก่าจากแว่นกันแดดคู่หนึ่งมาทำเป็นรู จากนั้นจึงใส่ RPi และเซ็นเซอร์ PIR เข้าไปข้างใน ด้วยวิธีนี้ เซ็นเซอร์ตรวจจับความเคลื่อนไหวจะโฟกัสไปที่จุดเดียว แทนที่จะเป็นรอบทิศทาง
ขั้นตอนที่ 4: การเข้ารหัส RPi. ของคุณ
ณ จุดนี้ เราจะถือว่าคุณได้ตั้งค่าพื้นฐานของ Raspberry Pi แล้ว และคุณกำลังดูบรรทัดคำสั่ง Linux ถ้าไม่ เราแนะนำให้อ่านคู่มือนี้ก่อน คุณสามารถตรวจสอบโพสต์นี้เกี่ยวกับการใช้ Wicd เพื่อตั้งค่า WiFi ของ Raspberry Pi ของคุณได้
เริ่มต้นด้วยการทำให้แน่ใจว่าเรามีไลบรารีที่จำเป็นทั้งหมด:
$ sudo apt-get update$ sudo apt-get upgrade $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip ติดตั้ง ubidots
สร้างไฟล์ใหม่ชื่อ "peoplecounter.py":
$ sudo nano peoplecounter.py
และเขียนโค้ดด้านล่างลงไป ตรวจสอบให้แน่ใจว่าได้แทนที่ค่าของคีย์ API และ ID ตัวแปรด้วยค่าในบัญชี Ubidots ส่วนตัวของคุณ (หมายเหตุ: รหัสไม่หรูหราเกินไป แต่ฉันไม่ใช่นักพัฒนา Python เป็นแค่คนฮาร์ดแวร์:)
สคริปต์ประกอบด้วยลูปที่ตรวจสอบสถานะของพิน #7 (เซ็นเซอร์ตรวจจับความเคลื่อนไหว) หากอ่าน "1" ซึ่งหมายความว่ามีการเคลื่อนไหว ตัวแปร "จำนวนคน" จะเพิ่มขึ้นและรอ 1.5 วินาทีเพื่อให้เซ็นเซอร์ตรวจจับความเคลื่อนไหวกลับสู่สภาวะปกติ ดำเนินการ 10 ครั้ง ตรวจสอบให้แน่ใจว่าแต่ละรอบมีเวลาอย่างน้อย 1 วินาที จากนั้นจึงส่ง "การเคลื่อนไหว" ทั้งหมดไปยัง Ubidots หากคุณต้องการปรับเทียบ People Counter คุณควรเล่นกับบรรทัด "time.sleep" ด้วยค่าอื่นๆ
จาก ubidots นำเข้า ApiClient
นำเข้า RPi. GPIO เป็น GPIO
เวลานำเข้า
GPIO.setmode(GPIO. BCM)
GPIO.setup(7, GPIO. IN)
ลอง:
api =ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3")
คน = api.get_variable("5238cec3f91b282c7357a140")
ยกเว้น: พิมพ์ "ไม่สามารถเชื่อมต่อกับ API ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ"
ตัวนับ = 0
คนv = 0
ในขณะที่(1):
การมีอยู่ = GPIO.input (7)
ถ้า (การแสดงตน):
จำนวนคน += 1
การมีอยู่ = 0
เวลานอน(1.5)
เวลานอน(1)
เคาน์เตอร์ += 1
ถ้า(ตัวนับ==10):
พิมพ์คนนับ
people.save_value({'value':peoplecount})
ตัวนับ = 0
คนv = 0
ขั้นตอนที่ 5: แสดงข้อมูลของคุณ
สุดท้าย ไปที่แดชบอร์ด Ubidots ของคุณ และเพิ่มวิดเจ็ตประเภท "คำชี้แจง" ซึ่งจะแสดงจำนวนคนที่ตรวจพบภายในกรอบเวลาที่คุณระบุ
ขั้นตอนที่ 6: การสรุป
โครงการนี้ให้คำใบ้เกี่ยวกับจำนวนผู้คนที่ผ่านจุดใดจุดหนึ่ง ไม่ได้ระบุจำนวนคนที่แน่นอน เนื่องจากข้อจำกัดของเซ็นเซอร์ตรวจจับความเคลื่อนไหว แต่ในบางแอปพลิเคชัน อาจเพียงพอ
ข้อมูลที่รวบรวมได้สามารถส่งไปยัง Ubidots Cloud ได้อย่างง่ายดาย ซึ่งสามารถตีความได้โดยการสร้างการแจ้งเตือน แดชบอร์ดแบบสด หรือแม้กระทั่งการแชร์ข้อมูลนี้ในโซเชียลมีเดีย เป็นโค้ดสำหรับฝัง หรือเพียงแค่ในลิงก์สาธารณะ คุณยังสามารถอ่านข้อมูลนี้จากแอปพลิเคชันอื่นโดยใช้ Ubidots API