Raspberry Pi Cảm Biến Siêu Âm Servo Motor

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

Linh Kiện Cần Thiết

1×Raspberry Pi 5
1×Cảm Biến Siêu Âm
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 Siêu Âm

Nếu bạn chưa quen với servo motor và cảm biến siêu âm (pinout, cách hoạt động, cách lập trình...), các hướng dẫn sau có thể giúp bạn tìm hiểu:

Sơ Đồ Đấu Nối

sơ đồ đấu nối Raspberry Pi cảm biến siêu Âm động cơ servo

This image is created using Fritzing. Click to enlarge image

Lưu ý rằng sơ đồ đấu nối hiển thị ở trên chỉ phù hợp cho servo motor có mô-men xoắn thấp. Trong trường hợp motor rung thay vì quay, bạn phải 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

Đừ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 Siêu Âm Điều Khiển Servo Motor

Các Bước Thực Hiện

  • Đảm bảo bạn đã cài đặt Raspbian hoặc hệ điều hành tương thích khác trên Raspberry Pi.
  • Đảm bảo Raspberry Pi của bạn đã 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 đã kết nối internet nếu cần cài đặt 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 ultrasonic_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-ultrasonic-sensor-servo-motor import RPi.GPIO as GPIO import time # Constants TRIG_PIN = 2 # Raspberry Pi GPIO pin connected to TRIG pin of ultrasonic sensor ECHO_PIN = 3 # Raspberry Pi GPIO pin connected to ECHO pin of ultrasonic sensor SERVO_PIN = 18 # Raspberry Pi GPIO pin connected to servo motor DISTANCE_THRESHOLD = 50 # in centimeters # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency servo_pwm.start(0) # Initialize servo position def measure_distance(): # Generate 10-microsecond pulse to TRIG pin GPIO.output(TRIG_PIN, GPIO.HIGH) time.sleep(0.00001) GPIO.output(TRIG_PIN, GPIO.LOW) # Measure duration of pulse from ECHO pin pulse_start = time.time() pulse_end = pulse_start while GPIO.input(ECHO_PIN) == 0 and time.time() - pulse_start < 0.1: pulse_start = time.time() while GPIO.input(ECHO_PIN) == 1 and time.time() - pulse_end < 0.1: pulse_end = time.time() duration = pulse_end - pulse_start # Calculate the distance distance_cm = duration * 34300 / 2 return distance_cm try: while True: # Measure distance distance_cm = measure_distance() if distance_cm < DISTANCE_THRESHOLD: # Rotate servo motor to 90 degrees servo_pwm.ChangeDutyCycle(7.5) else: # Rotate servo motor to 0 degrees servo_pwm.ChangeDutyCycle(2.5) # Print the value print(f"Distance: {distance_cm:.2f} cm") time.sleep(0.5) 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 ultrasonic_servo.py

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

  • Vẫy tay trước cảm biến.
  • Quan sát chuyển động của servo motor.

※ Lưu ý:

Code trên chỉ dành cho mục đích giáo dục. Cảm biến siêu âm rất nhạy cảm với nhiễu. Nếu bạn dự định sử dụng cảm biến siêu âm trong thực tế, nên áp dụng bộ lọc nhiễu. Để biết thêm thông tin về cách lọc nhiễu từ các phép đo khoảng cách của cảm biến siêu âm, vui lòng tham khảo hướng dẫn này.

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.