UART
-
Hello,
I have trouble understanding UART communication on the FiPy.I use a FiPy 1.0, and Pysense but only for Vin, GND, TX0 and RX0 (simpler for me), the rest is done on a breadboard.
Using ATOM text editor, and the following test code :
uart = UART(1) uart.init(9600, bits=8, parity=None, stop=1, pins=('P3','P4')) compteur = 0 while True: pycom.rgbled(0x001000) uart.write("\x30\x31\x32\x33") time.sleep_ms(100) input = uart.read() if input is not None: compteur += 1 print("INPUT : " + str(compteur)) print(input) pycom.rgbled(0x000000) time.sleep_ms(1000)
If I connect P3 and P4 with a jumper, I get :
INPUT : 1 b'0123' INPUT : 2 b'0123' INPUT : 3 b'0123' ...
in the ATOM editor log (as expected).
However, when I try to read the output with a USB->RS232 converter, my COM debuging software (Docklight) receives (in hex)
D6 B6 96 06
And the FiPy reads a giant byte string composed of hundreds (600-700) of '\x00', even though nothing is sent.
If I switch RX/TX then nothing happends, so that is not the issue. The FiPy is up to date.
Do you have any ideas or recommandations for further testing ?
PS : I can use this USB->RS232 converter and Docklight to succesfully chat with other devices such as industrial tiltmeters.
-
Solved : turns out I needed a USB<->TTL and not an USB<->RS232...
I did not know about the TTL standard, as I did not study eletronics at all. Gotta learn the hard way !
-
So in the first post, I was trying reading data sent by the Pycom.
I tried today to read data sent to the Pycom with the following code :uart=UART(1, 115200, bits=8, parity=None, stop=1, pins=('P3','P4')) while True: if(uart.any()>0): compteur += 1 print("INPUT : " + str(compteur) + " (" + str(uart.any()) + ")") buf=uart.read() print(buf)
I have a sensor wich sends an ASCII string (18 bytes long) every second. I can read it with an USB->RS232 converter. However, On the pycom, I get the following "gibberish", every 4-5 seconds :
INPUT : 9 (120) b'\x06\x06\xb4\x06d3yj\x06\x06\x06\xb4\x06\x0c\x19Z\r\x06\x06\x06\xb4\x06d3yj\x06\x06\x06\xb4\x06\x0c2Z\r\x06\x06\x06\xb4\x06dgyj\x06\x06\x06\xb4\x06\x0c\x19Z\r\x06\x06\x06\xb4\x06d3yj\x06\x06\x06\xb4\x06\x0c2Z\r\x06\x06\x06\xb4\x06d3yj\x06\x06\x06\xb4\x06\x0ceZ\r\x06\x06\x06\xb4\x06d\x19yj\x06\x06\x06\xb4\x06\x0c2Z\r\x06\x06\x06\xb4\x06d\x19yj\x06\x06\x06\xb4' INPUT : 10 (120) b'\x06\x0ceZ\r\x06\x06\x06\xb4\x06d\x19yj\x06\x06\x06\xb4\x06\x0ceZ\r\x06\x06\x06\xb4\x06d\x19yj\x06\x06\x06\xb4\x06\x0c2Z\r\x06\x06\x06\xb4\x06dfyj\x06\x06\x06\xb4\x06\x0c2Z\r\x06\x06\x06\xb4\x06d\x19yj\x06\x06\x06\xb4\x06\x0ceZ\r\x06\x06\x06\xb4\x06deyj\x06\x06\x06\xb4\x06\x0cfZ\r\x06\x06\x06\xb4\x06d2yj\x06\x06\x06\xb4\x06\x0c\x19Z\r\x06\x06\x06\xb4\x06de'
The COM parameters are correct (115200, 8, None, 1). I connected the COM GND of my sensor to the GND of the Pycom.
Does anyone has had a similar issue ? I can't find anything on the forum.
-
Thanks for noticing that, ATOM does not highlight "input" as a keyword...
However, renaming dit not change the result.
-
You are naming it wrong.
Have a look on the syntax highlighting of input. It is marked red, because input() is an internal function. Rename your variable to something safe like my_input and try it again.