Raspberry Pi Cảm Biến Cửa Servo Motor

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

Quá trình này được thực hiện lặp đi lặp lại.

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Cảm Biến Cửa
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 Cửa

Nếu bạn chưa quen thuộc với servo motor và cảm biến cửa (bao gồm sơ đồ chân, hoạt động và lập trình), các hướng dẫn sau có thể giúp bạn:

Sơ Đồ Đấu Nối

Raspberry Pi cảm biến cửa động cơ servo sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

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ơ đồ dưới đây 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

Đừ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.

Code Raspberry Pi - Cảm Biến Cửa Đ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 khác với Raspberry Pi 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 của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt các thư viện.
  • Nếu đây là lần đầu bạn sử dụng Raspberry Pi, hãy xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC của bạn 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, hãy cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Tạo file Python script door_sensor_servo.py và thêm đoạn 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-door-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants won't change DOOR_SENSOR_PIN = 18 # Raspberry Pi GPIO pin connected to the door sensor's pin SERVO_PIN = 20 # Raspberry Pi GPIO pin connected to the servo motor's pin # Variables will change angle = 0 # The current angle of the servo motor prev_door_state = None # The previous state of the door sensor door_state = None # The current state of the door sensor # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(DOOR_SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) 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_door_state = door_state # Save the last state door_state = GPIO.input(DOOR_SENSOR_PIN) # Read new state if prev_door_state == GPIO.LOW and door_state == GPIO.HIGH: print("The door-opening event is detected") # Change angle of servo motor if angle == 0: angle = 90 else: angle = 0 # Control servo motor according to the angle duty_cycle = (angle / 18) + 2.5 # Convert angle to duty cycle servo_pwm.ChangeDutyCycle(duty_cycle) 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 thi lệnh sau trong terminal:
python3 door_sensor_servo.py

Script 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.

  • Đưa nam châm lại gần reed switch, sau đó di chuyển ra xa. Lặp lại điều này vài lần.
  • Quan sát góc quay của servo motor thay đổi.

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.