UART
The uart module lets you talk to a device connected to your board using
a serial interface.
Functions
- microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, \*, tx=None, rx=None)
Initialize serial communication with the specified parameters on the specified
txandrxpins. Note that for correct communication, the parameters have to be the same on both communicating devices.Warning
Initializing the UART on external pins will cause the Python console on USB to become unaccessible, as it uses the same hardware. To bring the console back you must reinitialize the UART without passing anything for
txorrx(or passingNoneto these arguments). This means that callinguart.init(115200)is enough to restore the Python console.The
baudratedefines the speed of communication. Common baud rates include:9600
14400
19200
28800
38400
57600
115200
The
bitsdefines the size of bytes being transmitted, and the board only supports 8. Theparityparameter defines how parity is checked, and it can beNone,microbit.uart.ODDormicrobit.uart.EVEN. Thestopparameter tells the number of stop bits, and has to be 1 for this board.If
txandrxare not specified then the internal USB-UART TX/RX pins are used which connect to the USB serial converter on the micro:bit, thus connecting the UART to your PC. You can specify any other pins you want by passing the desired pin objects to thetxandrxparameters.Note
When connecting the device, make sure you “cross” the wires – the TX pin on your board needs to be connected with the RX pin on the device, and the RX pin – with the TX pin on the device. Also make sure the ground pins of both devices are connected.
- uart.any()
Return
Trueif any data is waiting, elseFalse.
- uart.read([nbytes])
Read bytes. If
nbytesis specified then read at most that many bytes, otherwise read as many bytes as possible.Return value: a bytes object or
Noneon timeout.A bytes object contains a sequence of bytes. Because ASCII characters can fit in single bytes this type of object is often used to represent simple text and offers methods to manipulate it as such, e.g. you can display the text using the
print()function.You can also convert this object into a string object, and if there are non-ASCII characters present the encoding can be specified:
msg_bytes = uart.read() msg_str = str(msg, 'UTF-8')
Note
The timeout for all UART reads depends on the baudrate and is otherwise not changeable via Python. The timeout, in milliseconds, is given by:
microbit_uart_timeout_char = 13000 / baudrate + 1Note
The internal UART RX buffer is 64 bytes, so make sure data is read before the buffer is full or some of the data might be lost.
Warning
Receiving
0x03will stop your program by raising a Keyboard Interrupt. You can enable or disable this usingmicropython.kbd_intr().
- uart.readall()
Removed since version 1.0.
Instead, use
uart.read()with no arguments, which will read as much data as possible.
- uart.readinto(buf[, nbytes])
Read bytes into the
buf. Ifnbytesis specified then read at most that many bytes. Otherwise, read at mostlen(buf)bytes.Return value: number of bytes read and stored into
buforNoneon timeout.
- uart.readline()
Read a line, ending in a newline character.
Return value: the line read or
Noneon timeout. The newline character is included in the returned bytes.
- uart.write(buf)
Write the buffer to the bus, it can be a bytes object or a string:
uart.write('hello world') uart.write(b'hello world') uart.write(bytes([1, 2, 3]))
Return value: number of bytes written or
Noneon timeout.