RS485是有线传输串行数据的标,支持同时传输485总线上的多点数据。传输速率为10Mbps,传输距离可达50英尺。传输速率为100Kbps时,传输距离可达4000英尺。
RS485总线通常为4芯或2芯,现在普遍采用2芯总线。一条总线最多支持32个设备。总线之间还可以串接,从而支持成百以上的节点。
RS485和树莓派的连接:使用树莓派GPIO口与485相连
配置
$ sudo apt-get update
$ sudo apt-get install python-pip
$ sudo pip install wiringpi
Use pip to install WiringPi (WiringPi is designed for raspberry pi to behave similarly to that of the wiring library under Arduino. After this library is installed, c or shell or python can use the function to configure and control GPIOs directly.
$ sudo apt-get install python-serial
Installed the associated library files of serial ports.
$ sudo apt-get install python-rpi.gpio
测试
Test whether the GPIO library and the serial library is installed or not:
$ python
$ import RPi.GPIO #注意RPi.PGIO中i是小写
$ import serial
If there is no error , then the two libraries are installed correctly.
We need to configure file ‘/boot/cmdline.txt’ to remove the kernel booting information and debug message:
$ sudo nano /boot/cmdline.txtYou can see the following information:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwaitRemove “console=ttyAMA0,115200 kgdboc=ttyAMA0,115200″,
so that the information becomes:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwaitDisable log in from the serial port:
$ sudo nano /etc/inittab
comment out ”T0: 23: respawn:/sbin/getty-L ttyAMA0 115200 vt100″Restart Raspberry Pi:
$ sudo reboot
Now you can use /dev/ttyAMA0 like the regular COM port.
Test code(serial_test.py) :
import serial
port = “/dev/ttyAMA0”usart = serial.Serial(port,9600)
usart.flushInput()
print (“serial test: BaudRate = 9600”)usart.write(“please enter the character:\r”)
while True:
if( usart.inWaiting()>0 ) :
receive = usart.read(1)
print “receive:”,receive
usart.write(“send:”)
usart.write(receive)
usart.write(“\r”)
RS485 Shield ‘A’ ——-> RS232-RS485 converter ‘T/R +’
RS485 Shield ‘B’ ——-> RS232-RS485 converter ‘T/R-’
RS485 Shield ‘GND’—> RS232-RS485 converter ‘GND’
RS485-RS232的转换器有3个接口,A、B接地。其中A口是TR+,B口是TR-。
管脚定义如下: