Raspberry Pi ADC

Raspberry Pi không có chân đầu vào analog tích hợp, nên nó không thể đọc trực tiếp giá trị từ các cảm biến analog như biến trở, nhiệt trở, và cảm biến khí gas. Để giải quyết vấn đề này, chúng ta sử dụng bộ chuyển đổi Analog-to-Digital Converter (ADC). Hướng dẫn này sẽ chỉ cho bạn cách sử dụng module ADC ADS1115 để đọc giá trị cảm biến analog với Raspberry Pi.

Hướng dẫn này bao gồm:

Phần Cứng Cần Thiết

1×Raspberry Pi 5
1×mô-đun ADC ADS1115
1×Cảm biến analog (ví dụ: Potentiometer, Cảm biến ánh sáng, Cảm biến nước)
1×breadboard
1×Dây nối 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)

Tìm hiểu về Module ADS1115

ADS1115 là ADC 16-bit với 4 kênh và giao tiếp với Raspberry Pi sử dụng I2C (Inter-Integrated Circuit). Nó có thể đọc tín hiệu analog (0-3.3V) và cung cấp độ phân giải 16 bit.

Module ADS1115 có 4 kênh đầu vào analog, có nghĩa là bạn có thể kết nối tối đa 4 cảm biến analog khác nhau với một module ADS1115 cùng một lúc. Điều này cho phép bạn đo nhiều giá trị cảm biến đồng thời chỉ với một module ADC.

Sơ đồ chân ADS1115

ads1115 adc module sơ đồ chân
Chân Tên Mô tả
VDD Nguồn cung cấp (3.3V hoặc 5V)
GND Đất
SCL I2C clock (kết nối với Raspberry Pi GPIO3)
SDA I2C data (kết nối với Raspberry Pi GPIO2)
A0-A3 Kênh đầu vào analog
ADDR Chọn địa chỉ I2C
ALERT/RDY Đầu ra Alert/Ready (tùy chọn)

Đấu nối ADS1115 với Raspberry Pi

Chân ADS1115 Chân Raspberry Pi
VDD 3.3V (Pin 1)
GND GND (Pin 6)
SCL GPIO3 (Pin 5)
SDA GPIO2 (Pin 3)

Dưới đây là một số ví dụ về cách đấu nối Raspberry Pi, module ADS1115, và các cảm biến analog khác nhau:

  • Sơ đồ đấu nối giữa Raspberry Pi, module ADS1115, và potentiometer
Raspberry Pi chiết áp sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu nối giữa Raspberry Pi, module ADS1115, và cảm biến ánh sáng
Raspberry Pi cảm biến ánh sáng sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu nối giữa Raspberry Pi, module ADS1115, và cảm biến nước
Raspberry Pi water sensor sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu nối giữa Raspberry Pi, module ADS1115, và cảm biến độ ẩm đất
Raspberry Pi cảm biến độ ẩm đất sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Như đã đề cập trước đó, module ADS1115 có thể kết nối tối đa bốn cảm biến analog đồng thời. Hướng dẫn này trình bày cách sử dụng với một cảm biến, nhưng bạn có thể dễ dàng điều chỉnh cho nhiều cảm biến.

Cách sử dụng ADC với Raspberry Pi

  • Đảm bảo bạn đã cài đặt Raspbian hoặc bất kỳ hệ điều hành tương thích Raspberry Pi nào 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 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 một số thư viện.
  • Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, 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 bằng SSH client tích hợp 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.
  • Chạy lệnh sau để mở công cụ cấu hình Raspberry Pi:
sudo raspi-config
  • Điều hướng đến Interfacing Options > I2C và bật nó để kích hoạt giao diện I2C trên Raspberry Pi.
  • Khởi động lại Raspberry Pi:
sudo reboot
  • Kết nối lại PC của bạn 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 nó bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Cài đặt thư viện Adafruit_ADS1x15 bằng cách chạy các lệnh sau trên terminal Raspberry Pi của bạn:
sudo pip install Adafruit-ADS1x15

Đọc giá trị Analog bằng Python

  • Tạo file script Python adc_read.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-adc import time import Adafruit_ADS1x15 # Create an ADS1115 ADC object adc = Adafruit_ADS1x15.ADS1115() while True: analog_value = adc.read_adc(0, gain=1) # Read from channel 0 print(f"Analog Value: {analog_value}") time.sleep(1)
  • Lưu file và chạy script Python bằng cách thực hiện lệnh sau trong Terminal:
python3 adc_read.py

Nếu mọi thứ được kết nối đúng cách, bạn sẽ thấy các giá trị analog được in ra trong terminal.

Giải thích Code:

  • Thư viện Adafruit_ADS1x15 khởi tạo giao tiếp I2C.
  • Đối tượng ADS1115 đọc giá trị ADC 16-bit từ kênh được chỉ định.
  • Script liên tục đọc và in giá trị analog mỗi giây.

Kết luận

Sử dụng ADC như ADS1115 cho phép Raspberry Pi giao tiếp với các cảm biến analog, mở rộng khả năng của nó. Hướng dẫn này đã trình bày cách đấu nối và lập trình ADS1115 để đọc dữ liệu analog sử dụng giao tiếp I2C. Bây giờ bạn có thể tích hợp các cảm biến analog khác cho nhiều dự án khác nhau!

Dưới đây là các hướng dẫn toàn diện giải thích cách kết nối và sử dụng Raspberry Pi với các cảm biến analog khác nhau:

Bài hướng dẫn liên quan