"Đi học dzìa": Phần 2 - Sử dụng PIR để kiểm tra người về nhà

Mô tả dự án: 

Đây là phần 2 của tutorial "Đi học dzìa" giúp các bạn làm quen với Pizero và Python. Hôm qua có bạn hỏi tui: "Nếu hem có wifi, dùng 3G hoặc là đạo chích KID 1412 thì sao?" Với các ca khó đỡ này thì ta sẽ dùng cảm biến hồng ngoại PIR nha.

Nguyên lý

Cảm biến hồng ngoại thụ động (Passive Infrared Sensor) dùng để phát hiện chuyển động. Một module PIR thực ra bao gồm 2 cảm biến hồng ngoại từ môi trường xung quanh. Khi có sự chênh lệch giữa 2 cảm biến tức là đã có chuyển động và cảm biến sẽ gửi 1 xung đến GPIO. Bạn có thể đọc thêm chi tiết về PIR ở đây: http://arduino.vn/bai-viet/522-pir-sensor-alarm.

Thay vì chỉ dùng còi đơn thuần quanh năm suốt tháng thì ta có thể dùng Raspberry Pi bật youtube khi có chuyển động cho đời thêm tươi vui mỗi khi papa/mama/anh/chị/em của bạn bước vào nhà. heart

Chuẩn bị

Sơ đồ nối như sau

Pi PIR
5V 5V
GD GD
P8 Out

Trên Raspberry Pi

Chép đoạn code dưới đây và lưu lại với tên di_hoc_ve_1.py

#!/usr/bin/bash
#By MonsieurVechai
import time
import webbrowser
import os, subprocess
import RPi.GPIO as GPIO



def main():
    url = "https://www.youtube.com/watch?v=eBVRZK6ktzE"
    
    GPIO.setmode(GPIO.BCM)
    GPIO_PIR = 14 #GPIO14 is PIN8 of Raspberry pi
    GPIO.setup(GPIO_PIR,GPIO.IN)

    try:
        # Loop until PIR output is 0
        while GPIO.input(GPIO_PIR)==1: 
            print "Waiting for PIR to settle ..."            
        print "  PIR is settled. Ready to detect new motion"
        Current_State  = 0
        Previous_State = 0

    
    while True:
        Current_State = GPIO.input(GPIO_PIR)     
        if Current_State==1 and Previous_State==0:
            print "Motion detected! Start playing movie."
            webbrowser.open(url)
            time.sleep(30)
        elif Current_State==0 and Previous_State==1:
            print "No more motion."
            Previous_State=0
            time.sleep(0.01)          

if __name__ == '__main__':
    main()    

Mở terminal trong thư mục bạn lưu file python và nhập lệnh 

sudo python di_hoc_ve_1.py

Gợi ý

  • Bạn có thể dùng module time của Python để giới hạn giờ hoạt động cho PIR hay chỉnh đường link youtube khác nhau vào mỗi giờ trong ngày.
  • Nếu bạn nhìn kỹ thì module PIR có 2 potentiometer để chỉnh độ nhạy. Bạn nên xoay về chế độ thấp nhất nếu không muốn nghe bài "Đi học vế" thường xuyên.
  • Bạn nên đứng xa PIR khi gõ lệnh python vì PIR cần 1 khoảng thời gian nhỏ để cân chỉnh (calibration).
  • Nếu bạn gặp lỗi GPIO thì có thể bạn phải cài gói GPIO bằng cách gõ.
sudo apt-get install python3-gpiozero python-gpiozero

Lần tới tui sẽ hướng dẫn dùng PIR kích hoạt chụp hình khi phát hiện chuyển động.

lên
13 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Vỏ hộp cho ARDUINO UNO

Tự làm 1 chiếc vỏ hộp bảo vệ cho ARDUINO UNO của bạn chưa bao giờ đơn giản như thế này. Chỉ việc đem file dxf của mình ra ngoài tiệm cắt laser (quảng cáo và cắt thôi)!

Mình mới học ARDUINO cũng được khoảng 1 tuần thôi, đọc bài viết trên page cũng nhiều nhưng chả đóng góp được gì. Hôm nay rãnh rỗi ngồi làm cái hộp cho con UNO vì mấy hôm trước mình toàn lót giấy phía dưới rồi đặt em nó lên thấy cũng bất tiện, nếu các bạn có hứng thú thì làm theo file cad mình để ở cuối bài nha.

lên
15 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Ngôn ngữ Wolfram - Nhấp nháy LED với GPIO

Ta cũng có thể điều khiển nhấp nháy LED GPIO với ngôn ngữ Wolfram. Hãy xem cấu trúc câu lệnh của nó thế nào nhé!

lên
5 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Arduino lưỡng quốc diễn nghĩa - Sự mâu thuẫn của thế giới Arduino, điều không tưởng?

Đa phần với dân "sanh dziên" sáng giảng đường trưa mỳ gói thì sở hữu một board Arduino gốc (không phải hàng clone Tàu xì) là một ước mơ khá là xa xỉ. Tuy nhiên không ai đánh thuế ước mơ, và nếu bạn hay ghé qua trang https://www.arduino.cc/ theo dõi tin tức sản phẩm, có bao giờ bạn để ý đến hình bên dưới không?

lên
22 thành viên đã đánh giá bài viết này hữu ích.