Ich lese schon eine Weile hier mit und nun habe ich eine Frage. Wie in der Überschrift steht will ich mittels Pico Messwerte von
DS18B20 Fühlern weiterleiten. Dazu habe ich mir für den Pico RS485 Module gekauft: https://eckstein-shop.de/WaveShare-2-Ch ... T-To-RS485
Bisher habe ich mit Raspberry Pi und Arduino/Nano in C und Python ein wenig gebastelt. Für die UART-Geschichte habe ich die Beispiele von
Waveshare als Basis genommen und erweitert. Es klappt erstmal, aber vielleicht kann hier jemand ein paar Tips geben worauf ich
achten sollte oder was man besser machen kann. Es sind 2 Picos mit jeweils einem RS485-Modul.
Firmware ist "MicroPython v1.19.1 on 2022-06-18; Raspberry Pi Pico with RP2040"
Ich stelle meine Skripte mal hier ein.
RS485_send.py
Code: Alles auswählen
from machine import UART, Pin
import time
uart1 = UART(1, baudrate=115200, tx=Pin(4), rx=Pin(5))
#uart0 = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
a=0
#txData = b'RS485 send test...\r\n'
#uart1.write(txData)
print('RS485 send test...')
time.sleep(0.1)
while True:
a=a+1
if a > 4:
a = 1
time.sleep(0.5)
print ('request...')#shell output
uart1.write("{}\r".format(a))
time.sleep(0.1)
rxData = bytes()
while uart1.any() > 0:
rxData += uart1.read(1)
print('Sensor {}:'.format(a),rxData.decode('utf-8'))
Code: Alles auswählen
from machine import UART, Pin
import time
sensorlist = [10, 20, 30, 40] #Sensorsimulation
#uart1 = UART(1, baudrate=115200, tx=Pin(4), rx=Pin(5))
uart1 = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1))
flag = 1
#txData = 'RS485 receive test...\r\n'
#uart1.write(txData)
print('RS485 receive test')
time.sleep(0.1)
def sensorsend(rxData):
zahl = int(float(rxData))
return(sensorlist[zahl - 1])
while True:
rxData = bytes()
while uart1.any() > 0:
rxData = uart1.read()
sensorwert = sensorsend(rxData)
if(flag == 1):
time.sleep(0.05)
flag=0
#uart1.write("{}".format(rxData.decode('utf-8')))
uart1.write('{}'.format(sensorwert))
#print(rxData.decode('utf-8'))
if(uart1.any()==0):
uart1.write("\r")
flag=1
f91w