ในโครงการง่าย ๆ นี้เราจะใช้เซ็นเซอร์ตรวจจับความเคลื่อนไหวเพื่อตรวจสอบว่าวัตถุผ่านหน้าราสเบอร์รี่ Pi ของเราหรือไม่ จากนั้นเราจะนับจำนวนครั้งที่เกิดขึ้นและส่งค่านี้ไปยัง Ubidots
โดยทั่วไปตัวนับคนเป็นอุปกรณ์ราคาแพงที่ใช้ในอุตสาหกรรมค้าปลีกเพื่อทำความเข้าใจกับพฤติกรรมของผู้ซื้อ ขอบคุณ Raspberry Pi และ Ubidots เราสามารถสร้างคนที่ทำงานได้ในเวลาไม่กี่ชั่วโมงและด้วยเงินเพียงไม่กี่!
เมื่อเราส่งข้อมูลการนับจำนวนคนไปยัง Ubidots แล้วเราสามารถสร้างกราฟที่ดีสำหรับการวิเคราะห์เช่นเดียวกับการแจ้งเตือนทาง SMS / อีเมล์
วัสดุ:
ขั้นตอนที่ 1: การได้รับวัสดุที่เหมาะสม
เพื่อให้โครงการนี้สำเร็จคุณจะต้อง:
- ราสเบอร์รี่ Pi รุ่น B
- เซ็นเซอร์ PIR โดย Parallax
- Dongle USB WiFi ที่รองรับ Raspberry Pi
- ก้อนแบตเตอรี่ USB สำหรับใช้พลังงาน Raspberry Pi (เป็นตัวเลือกในกรณีที่คุณต้องการปล่อยให้ Pi ไร้สายโดยสมบูรณ์)
- สายจัมเปอร์หญิง - หญิงสามสาย
ขั้นตอนที่ 2: เดินสายสิ่งต่างๆ
เซ็นเซอร์ตรวจจับความเคลื่อนไหว PIR นั้นค่อนข้างใช้งานง่ายเพราะมีเพียงสามพิน:
- V +
- 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 และรหัสตัวแปรด้วยค่าในบัญชี Ubidots ส่วนตัวของคุณ (หมายเหตุ: รหัสไม่หรูหราเกินไป แต่เดี๋ยวก่อนฉันไม่ใช่นักพัฒนา Python แค่เป็นฮาร์ดแวร์ :)
สคริปต์ประกอบด้วยลูปที่ตรวจสอบสถานะของพิน # 7 (เซ็นเซอร์ตรวจจับความเคลื่อนไหว) หากมันอ่าน "1" หมายความว่ามีการเคลื่อนไหวก็จะเพิ่มตัวแปร "peoplecount" และรอ 1.5 วินาทีเพื่อให้เซ็นเซอร์ตรวจจับความเคลื่อนไหวกลับมาเป็นปกติ ทำ 10 ครั้งทำให้แน่ใจว่ามีอย่างน้อย 1 วินาทีระหว่างแต่ละรอบจากนั้นจะส่งผลรวมของ "การเคลื่อนไหว" ทั้งหมดไปยัง Ubidots หากคุณต้องการปรับเทียบตัวนับคนคุณควรเล่นด้วย "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
peoplev = 0
ในขณะที่ (1):
สถานะ = GPIO.input (7)
ถ้า (แสดงตน):
peoplecount + = 1
สถานะ = 0
time.sleep (1.5)
time.sleep (1)
เคาน์เตอร์ + = 1
ถ้า (เคาน์เตอร์ == 10):
พิมพ์ peoplecount
people.save_value ({ 'ค่า': peoplecount})
ตัวนับ = 0
peoplev = 0
ขั้นตอนที่ 5: แสดงข้อมูลของคุณ
สุดท้ายไปที่แดชบอร์ด Ubidots ของคุณและเพิ่มวิดเจ็ตประเภท "คำแถลง"นี้จะแสดงจำนวนคนทั้งหมดที่ตรวจพบภายในกรอบเวลาที่คุณระบุ
ขั้นตอนที่ 6: การตัดคำ
โครงการนี้ให้คำแนะนำเกี่ยวกับจำนวนคนที่เดินผ่านจุดใดจุดหนึ่ง มันไม่ได้ให้จำนวนคนที่แน่นอนเนื่องจากข้อ จำกัด ของเซ็นเซอร์ตรวจจับความเคลื่อนไหว แต่ในบางแอปพลิเคชั่นนี่อาจจะเพียงพอ
ข้อมูลที่เก็บรวบรวมสามารถส่งไปยัง Ubidots Cloud ได้อย่างง่ายดายซึ่งสามารถตีความได้โดยการสร้างการแจ้งเตือนแดชบอร์ดสดหรือแม้แต่การแบ่งปันข้อมูลนี้ในโซเชียลมีเดียเช่นรหัสฝังหรือในลิงก์สาธารณะ คุณยังสามารถอ่านข้อมูลนี้จากแอปพลิเคชันอื่นโดยใช้ Ubidots API