CircuitPython has support for serial communications through the busio library. The CircuitPython Essentials guide has a page on UART Serial for CircuitPython which is a good reference.

The following code opens serial communications via busio.UART on the Circuit Playground Express TX and RX pads defined in the board library. 

The code then goes into a loop, waiting for a character to be received (any character), sending back the time (relative), the light intensity (relative) and the temperature in Celsius. The sleep time between reads can be adjusted.

import time
import board
import busio
from import cpx

uart = busio.UART(board.TX, board.RX, baudrate=115200)

while True:

    data =  # read a byte

    if data is not None:  # Data was received

        output = "%0.1f\t%d\t%0.1f\r\n" % (time.monotonic(),
                                           cpx.light, cpx.temperature)
        uart.write(output)         # Print to serial


The output is shown below. The data will not be displayed until you type in a character (any one character), then the program returns the time, the light value, and the temperature in Celsius. The read is not required, you can remove that if you like and have the data be written on every pass of the loop delayed by the sleep time.

The documentation for busio.UART is on Read The Docs.

Also see the CircuitPython Essentials guide UART Communications page.

This guide was first published on Aug 14, 2018. It was last updated on Aug 14, 2018. This page (CircuitPython) was last updated on Dec 12, 2018.