"Đ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

Hướng dẫn sử dụng cảm biến nhiệt độ DS18B20 (-55°C đến +125°C) sai số ±0.5°C

Lại quay về vấn đề đo nhiệt độ, như ở bài trước, mình đã dùng cả LM35, cả TMP36. Nhưng rốt cuộc vẫn không hiệu quả, lần này mình đang sử dụng con DS18B20 này và cảm thấy khá ổn hơn so với lần trước. Nhiệt độ ít bị chênh lệch hơn và như quảng cáo là chỉ có sai số ±0.5°C thôi (nếu nhiệt độ trong phạm vi -10°C to +85°C, đáng để thử phải không nào?

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

Hướng dẫn sử dụng cảm biến nhiệt độ TMP36 - Khoảng đo từ -40 đến 125 độ C

Mình thấy cảm biến nhiệt độ LM35 rất rẻ và hoạt động cũng tương đối chính xác. Tuy nhiên, độ bền của nó không cao vì mình thấy mình chỉ dùng cảm biến LM35 trong khoảng thời gian 3 tháng, sau đó phải thay cảm biến khác (để đo nhiệt độ luộc gà). Bản thân mình không thích điều đó nên thử dùng một cảm biến khác cũng có chức năng tương tự là TMP36 và thấy nó hoạt động bền hơn (đã đến tháng thứ 4 nhưng chưa hư). Mình xin chia sẻ với các bạn nhé. Loại này hơi khó tìm và không thông dụng, nhưng nó bền hơn hẳn LM35 các bạn nhé.

lên
10 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 - Học làm toán trên Raspberry Pi

Nếu các bạn học sinh cấp 3 từng đau đầu với các bài đạo hàm tích phân, vi phân thì có lẽ Wolfram trên Raspberry Pi sẽ là một công cụ hỗ trợ tuyệt vời. Ta hãy xem một số ứng dụng hay của ngôn ngữ này nha! Lưu ý là các bạn học sinh cấp 3 hay năm 1 đại học chỉ nên dùng Wolfram để kiểm tra kết quả thôi nha, đừng làm biếng làm bài tập. Tui hem chịu trách nhiệm về kết quả tương lai của các bạn được đâu!

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

Giới thiệu bo mạch 5 giao tiếp không giây đầu tiên trên thế giới | FiPy

Bạn đang muốn thực hiện dự án Internet của Vạn Vật nhưng vẫn đang loay hoay chọn chuẩn giao tiếp không dây? Nên dùng bluetooth để tiết kiệm năng lượng? Nên dùng wifi để truy cập từ mọi nơi trên thế giới? Nên dùng GPRS để điều khiển khắp ở những nơi có sự hiện diện của ông chú Viettel? Nên dùng LoraWAN để truyền thông tin cách hàng chục km? Nên dùng Sigfox vừa xa vừa miễn phí? Bạn yêu thích ngôn ngữ Python đơn giản? Bài này tui sẽ giới thiệu về bo mạch sắp ra lò từ xứ sở hoa tulip xinh đẹp mang tên FiPy. Giá của bo là 33 eur nếu đặt trên Kickstarter và 40 eur nếu bạn mua sau khi dự án kết thúc.Bài viết thu thập thông tin từ Kickstarter.

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