Trong một ngôi nhà, nếu đèn có thể tự bật một cách thông minh khi có người hoặc khi trời bắt đầu tối thì sẽ rất thuận tiện đấy. Một số ví dụ phổ biến là đèn ngoài cửa khi ta đi về nhà hoặc đèn cầu thang khi ta đi lên xuống buổi tối.
Trong bài này, chúng ta cùng nhau làm một đèn ngoài cửa nhà thông minh với các tính năng sau:
Để phát hiện được có người, chúng ta sẽ dùng một cảm biến mới là cảm biến phát hiện chuyển động bằng hồng ngoại (Passive Infrared, gọi tắt là PIR).
Cảm biến PIR
Khi phát hiện có chuyển động, chân tín hiệu của module sẽ được bật ở mức HIGH. Bình thường, chân tín hiệu này sẽ ở mức LOW.
import time light_sensor = 0 # giá trị của cảm biến ánh sáng pir_value = 0 # trạng thái của cảm biến chuyển động PIR led_value = 0 # trạng thái bật tắt hiện tại của đèn LED led_on_time = 0 # thời gian lúc đèn được bật lên while True: light_sensor = pin41.read_analog() pir_value = pin51.read_digital() if pir_value == 1 and light_sensor < 200: pin61.write_digital(1) led_on_time = time.ticks_ms() led_value = 1 now = time.ticks_ms() if led_value == 1 and now - led_on_time >= 10000: pin61.write_digital(0) led_on_time = 0 led_value = 0
light_sensor = pin41.read_analog() pir_value = pin51.read_digital()
Chúng ta sử dụng các hàm đơn giản đã học là read_digital() để đọc tín hiệu Digital từ cảm biến PIR và hàm read_analog() để đọc giá trị cảm biến ánh sáng.
if pir_value == 1 and light_sensor < 200: pin61.write_digital(1) led_on_time = time.ticks_ms() led_value = 1
Sau đó, chương trình kiểm tra điều kiện có phát hiện sự chuyển động (pir_value = 1) và trời có đang tối không (light_sensor < 200) để bật đèn.
now = time.ticks_ms() if led_value == 1 and now - led_on_time >= 10000: pin61.write_digital(0) led_on_time = 0 led_value = 0
Sau khi bật đèn, chúng ta sử dụng cách thức đo thời gian như trong project 2 để biết đến lúc phải tắt đèn (sau 10 giây tính từ lúc bật đèn).