Modul PI-RSX umožňuje přidat rozhraní RS-232, RS-485 nebo RS-422 pro Raspberry Pi. Vše v jednom modulu a typ rozhraní je navíc volen propojkami na DPS. Podívejme se, jak ho použít v pythonu.
Nejprve musíme systému říci, že chceme rozhraní používat. Záleží na typu Raspberry, typicky ale přidáme do konfiguračního souboru /boot/firmware/config.txt řádku:
dtoverlay=uart0,txd0_pin=14,rxd0_pin=15
Rozhraní je připojeno na headeru na pinech 14 a 15. Způsob nastavení se může měnit podle typu Raspberry Pi, návod najdete v systému Raspberry OS v souboru /boot/firmware/overlays/README. Také hledejte v dokumentaci konkrétního Rasberry, jaké rozhraní můžete použít. My použijeme uart0.
Nyní k programu v pythonu při použití s RS-485 nebo RS-422:
import serial
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(18, GPIO.OUT)
ser = serial.Serial(
port='/dev/ttyAMA0',
baudrate = 115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
GPIO.output(18,1) #set high/transmit
TxData = "Hello world"
ser.write(TxData.encode("utf8"))
time.sleep(len(TxData)*10/115200) #8 bits + start bit + stop bit
GPIO.output(18, 0) #pin set to low/receive
ReceivedData = ""
while (ReceivedData == ""):
RxData = ser.readline();
if (RxData != b""):
print(RxData)
Ukázková aplikace otevře sériový port, nastaví GPIO18 (pin 12 na 40-pinovém headeru) pro ovládání směru budiče, vyšle "Hello world" a poté poslouchá a vypisuje přijmutá data.
Při použití s RS-232 je to stejné, jen nemusíme použít ovládání GPIO.