ที่ Max485 โมดูลช่วยให้ Raspberry Pi สื่อสารโดยใช้ไฟล์ โปรโตคอล RS485ซึ่งใช้กันอย่างแพร่หลายสำหรับระบบอัตโนมัติอุตสาหกรรมการสื่อสาร Modbus และการส่งข้อมูลอนุกรมทางไกล คู่มือนี้จะแสดงวิธีการเชื่อมต่อกำหนดค่าและใช้ไฟล์ โมดูล Max485 RS485 พร้อม Raspberry Pi ใช้ Python
สิ่งที่คุณต้องการ
- Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
- โมดูล Max485 RS485
- อุปกรณ์ RS485 (เช่นเซ็นเซอร์ Modbus, ตัวควบคุมอุตสาหกรรม)
- สายจัมเปอร์
- ติดตั้ง Python บนราสเบอร์รี่ pi
ขั้นตอนที่ 1: ทำความเข้าใจโมดูล Max485
ที่ Max485 คือ ตัวรับส่งสัญญาณ TTL-to-RS485 ที่อนุญาตให้ Raspberry Pi ส่งและรับสัญญาณ RS485
คุณสมบัติที่สำคัญ:
- รองรับการสื่อสารแบบครึ่งดูเพล็กซ์ RS485
- ทำงานบน พลังงาน 5V (เข้ากันได้กับตรรกะ 3.3V บน Raspberry Pi)
- ใช้ TX, RX, DE และ RE หมุดสำหรับการควบคุมการสื่อสาร
ขั้นตอนที่ 2: เดินสาย Max485 ไปยัง Raspberry Pi
Max485 PIN | Raspberry Pi Pin | การทำงาน |
---|---|---|
VCC | 5V (พิน 2) | แหล่งจ่ายไฟ |
gnd | GND (พิน 6) | พื้น |
RO | GPIO15 (พิน 10) | ข้อมูล RS485 ได้รับ (RX) |
DI | GPIO14 (พิน 8) | RS485 Data Transmit (TX) |
อีกครั้ง | GPIO18 (พิน 12) | รับเปิดใช้งาน (ต่ำที่จะรับ) |
เดอ | GPIO18 (พิน 12) | เปิดใช้งานไดรเวอร์ (สูงในการส่ง) |
อัน | RS485 A บรรทัด | เชื่อมต่อกับอุปกรณ์ RS485 |
ข | RS485 B สาย | เชื่อมต่อกับอุปกรณ์ RS485 |
บันทึก: ที่ อีกครั้ง และ เดอ พินถูกควบคุมโดย gpio18, การเปิดใช้งานหรือปิดการใช้งานการส่ง
ขั้นตอนที่ 3: เปิดใช้งาน UART บน Raspberry Pi
-
เปิดเครื่องมือกำหนดค่า Raspberry Pi:
sudo raspi-config
-
นำทางไปยัง ตัวเลือกอินเตอร์เฟส> พอร์ตอนุกรม.
-
ปิดการใช้งานคอนโซลอนุกรม แต่ เปิดใช้งานฮาร์ดแวร์อนุกรม.
-
รีบูตราสเบอร์รี่ pi:
sudo reboot
-
ตรวจสอบว่า มีอุปกรณ์อนุกรม:
ls /dev/serial*
คุณควรเห็น
/dev/serial0
.
ขั้นตอนที่ 4: ติดตั้งไลบรารี Python ที่ต้องการ
- อัปเดต Raspberry Pi ของคุณ:
sudo apt update && sudo apt upgrade -y
- ติดตั้งไลบรารีการสื่อสารแบบอนุกรม Python:
pip3 install pyserial
ขั้นตอนที่ 5: รหัส Python เพื่อสื่อสารผ่าน RS485
รหัส Python พื้นฐานเพื่อส่งและรับข้อมูลผ่าน RS485
import serial
import RPi.GPIO as GPIO
import time
# Define GPIO pin for RE/DE control
RS485_CONTROL = 18
# Set up GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(RS485_CONTROL, GPIO.OUT)
# Configure the serial connection
ser = serial.Serial(
port='/dev/serial0', # Raspberry Pi UART port
baudrate=9600, # Set baud rate to match RS485 device
timeout=1
)
def send_data(data):
GPIO.output(RS485_CONTROL, GPIO.HIGH) # Enable transmission
time.sleep(0.01) # Small delay before sending
ser.write(data.encode()) # Send data as bytes
time.sleep(0.01) # Small delay to ensure data is sent
GPIO.output(RS485_CONTROL, GPIO.LOW) # Enable receiving
def receive_data():
GPIO.output(RS485_CONTROL, GPIO.LOW) # Enable reception
data = ser.readline().decode('utf-8').strip()
return data
try:
while True:
send_data("Hello RS485 Device!\n")
print("Data sent!")
# Wait for a response
response = receive_data()
if response:
print(f"Received: {response}")
time.sleep(2)
except KeyboardInterrupt:
print("Exiting...")
finally:
ser.close()
GPIO.cleanup()
ขั้นตอนที่ 6: แอปพลิเคชันของการสื่อสาร RS485 กับ Raspberry Pi
- ระบบอัตโนมัติอุตสาหกรรม - สื่อสารกับ PLCs เซ็นเซอร์และคอนโทรลเลอร์โดยใช้ Modbus RTU
- การสื่อสารทางไกล - รองรับ RS485 การส่งข้อมูลระยะยาว สูงถึง 1200 เมตร
- เครือข่ายหลายอุปกรณ์ - เชื่อมต่ออุปกรณ์หลายตัวบนบัส RS485 เดียวกัน
- มิเตอร์พลังงานอัจฉริยะ -อ่านมิเตอร์พลังงานที่เข้ากันได้ของ Modbus
- IoT และการบันทึกข้อมูล - รวบรวมข้อมูลเซ็นเซอร์และส่งไปยังคลาวด์เซิร์ฟเวอร์
การแก้ไขปัญหา
-
ไม่มีการสื่อสาร
- ตรวจสอบการเชื่อมต่อสายไฟมั่นใจ สาย A และ B เชื่อมต่ออย่างถูกต้อง
- ตรวจสอบว่า เปิดใช้งาน UART โดยใช้
sudo raspi-config
. - ตรวจสอบให้แน่ใจว่า อุปกรณ์ RS485 ใช้อัตราการรับส่งข้อมูลเดียวกัน ตามที่ตั้งไว้ใน Python
-
การอนุญาตถูกปฏิเสธข้อผิดพลาด
- เพิ่มผู้ใช้ในไฟล์
dialout
กลุ่มสำหรับการเข้าถึงพอร์ตอนุกรม:sudo usermod -aG dialout $USER sudo reboot
- เพิ่มผู้ใช้ในไฟล์
-
อักขระขยะในข้อมูลที่ได้รับ
- ตรวจสอบให้แน่ใจว่าอุปกรณ์ทั้งสองใช้งาน อัตราการรับส่งข้อมูลและการตั้งค่าอนุกรมเดียวกัน.
- ตรวจสอบว่า สายเคเบิลป้องกัน จำเป็นสำหรับระยะทางไกล
บทสรุป
ที่ โมดูล Max485 ช่วยให้ Raspberry Pi สื่อสารได้มากกว่า RS485ทำให้เหมาะสำหรับ ระบบอัตโนมัติอุตสาหกรรมอุปกรณ์ modbus และการส่งข้อมูลอนุกรมทางไกลในระยะยาว- โดยทำตามคำแนะนำนี้คุณสามารถสร้างได้ การสื่อสารแบบสองทิศทางระหว่างอุปกรณ์ Raspberry Pi และ Rs485 สำหรับโครงการ IoT และระบบฝังตัว 🚀