Raspberry Pi Cảm Biến Chuyển Động Servo Motor

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng Raspberry Pi và cảm biến chuyển động để điều khiển servo motor. Cụ thể:

Ứng dụng này có thể được áp dụng trong quy trình tự động hóa kích hoạt các hành động khi phát hiện sự hiện diện của con người.

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Cảm Biến Chuyển Động HC-SR501
1×động cơ servo
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Raspberry Pi
1×(Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit
1×(Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Servo Motor và Cảm Biến Chuyển Động

Nếu bạn chưa quen thuộc với servo motor và cảm biến chuyển động (bao gồm pinout, cách hoạt động và cách lập trình), các hướng dẫn sau sẽ hữu ích:

Sơ Đồ Đấu Nối

sơ đồ đấu nối Raspberry Pi cảm biến chuyển động động cơ servo

This image is created using Fritzing. Click to enlarge image

Xin lưu ý rằng sơ đồ đấu nối ở trên chỉ phù hợp với servo motor có mô-men xoắn thấp. Trong trường hợp motor rung thay vì quay, cần sử dụng nguồn điện bên ngoài để cung cấp thêm năng lượng cho servo motor. Sơ đồ bên dưới minh họa cách đấu nối với nguồn điện bên ngoài cho servo motor.

TO BE ADD IMAGE

Vui lòng không quên kết nối GND của nguồn điện bên ngoài với GND của Raspberry Pi.

Thiết Lập Ban Đầu

Núm Điều Chỉnh Độ Trễ Thời GianVặn ngược chiều kim đồng hồ hết cỡ.
Núm Điều Chỉnh Phạm Vi Phát HiệnVặn theo chiều kim đồng hồ hết cỡ.
Chọn Chế Độ Kích Hoạt LặpĐặt jumper như hình minh họa.
thiết lập ban đầu cảm biến chuyển động

Code Raspberry Pi - Cảm Biến Chuyển Động Điều Khiển Servo Motor

Các Bước Nhanh

  • Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích với Raspberry Pi khác trên Pi của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng cục bộ với PC.
  • Đảm bảo Raspberry Pi của bạn được kết nối internet nếu cần cài đặt thư viện.
  • Nếu đây là lần đầu sử dụng Raspberry Pi, hãy xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC với Raspberry Pi qua SSH sử dụng SSH client có sẵn trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
  • Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Tạo file Python script motion_sensor_servo.py và thêm code sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi này được cung cấp để sử dụng công khai, không có ràng buộc. # Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: # https://newbiely.vn/tutorials/raspberry-pi/raspberry-pi-motion-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants won't change MOTION_SENSOR_PIN = 14 # Raspberry Pi GPIO pin connected to the OUTPUT pin of the motion sensor SERVO_PIN = 12 # Raspberry Pi GPIO pin connected to the servo motor # Variables will change angle = 0 # The current angle of the servo motor prev_motion_state = None # The previous state of the motion sensor motion_state = None # The current state of the motion sensor # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(MOTION_SENSOR_PIN, GPIO.IN) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency # Initialize servo position servo_pwm.start(0) try: while True: prev_motion_state = motion_state # Save the last state motion_state = GPIO.input(MOTION_SENSOR_PIN) # Read new state if motion_state == GPIO.LOW and prev_motion_state == GPIO.HIGH: print("Motion detected!") servo_pwm.ChangeDutyCycle(7.5) # Adjust duty cycle for 90 degrees elif motion_state == GPIO.HIGH and prev_motion_state == GPIO.LOW: print("Motion stopped!") servo_pwm.ChangeDutyCycle(2.5) # Adjust duty cycle for 0 degrees time.sleep(0.1) # Add a small delay to avoid rapid sensor readings except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Lưu file và chạy Python script bằng cách thực hiện lệnh sau trong terminal:
python3 motion_sensor_servo.py
  • Vẫy tay trước cảm biến.
  • Quan sát sự thay đổi góc của servo motor.

Script sẽ chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.