MicroPythonで使うWio Terminal - machine.UART
MicroPythonで使うWio Terminal - 目次
machine.UART の使用例
# Wio Terminal machine.UARTのサンプル# This code is provided under a CC0 Public Domain License.# http://creativecommons.org/publicdomain/zero/1.0/# 2022年6月20日 佐藤恭一 https://kyoutan.jpn.org
import timefrom machine import UART, Pin, Map
# UART1とUART2があるけど、40ピンコネクタに接続されているのはUART1# TXD(pin 8)とRXD(pin 10)をジャンパー線で接続して通信テストした(ループバック)uart = UART(Map.UART1, 115200, UART.config.SERIAL_8N1)  # 初期化uart = UART(Map.UART1, 115200)  # これでもよい
print("write test")uart.write('hello world!')  # 書き込む。戻り値は書き込んだ数
txdata = bytearray(b"0123456789")  # メモ:bytearray 値の変更可能 / bytes 値の変更不可能uart.write(txdata, 3)     # バッファの先頭から3バイト書き込む。戻り値は書き込んだ数uart.write(txdata, 5, 4)  # バッファの5番目から4バイト書き込む。戻り値は書き込んだ数time.sleep(1)          # UARTの送信が完了するまで待つ
print("rxdata {}".format(uart.any()))   # 受信バッファにあるデータ数print(uart.read())  # バッファのデータをタイムアウトするまで全て読んで表示する# 受信バッファは 255バイト# タイムアウトは 1~2秒くらい? 変更方法がわからない
print()print("read test")txdata = bytearray(range(ord("0"), ord("z")))rxdata = bytearray(127)uart.write(txdata)  # バッファにデータを貯めるuart.write(txdata)uart.write(txdata)uart.write(txdata)time.sleep(1)print("rxdata {}".format(uart.any()))
# 読み込みは指定したバイト数に満たなくてもタイムアウトで終了する場合があるprint("10 byte : {}".format(uart.read(10)))  # 10byte読み込む
uart.readinto(rxdata,20)  # 20byte読み込んでバッファに格納print("20 byte : {}".format(rxdata))print()uart.readinto(rxdata)     # 受信バッファをrxdataのサイズ分読み込んでバッファに格納print(rxdata)
print()print(uart.read(uart.any()))  # 受信バッファを全部読むprint("empty")  # サイズを指定すればタイムアウトしないので素早く終了する
uart.write("line 1\r\nline 2\r\nline 3\r\n")  # 3行書き込むtime.sleep(1)
print()print("1 line : {}".format(uart.readline()))  # 1行読むprint()print(uart.read(uart.any()))  # 受信バッファを全部読む
UARTも簡単に使えました。
送信はDMAか割り込みで処理されているようで、書き込みを行うと送信が完了する前にすぐ処理が戻ってきます。
受信バッファは 255バイトありました。バッファにデータが何バイトあるのかを調べる関数もあって便利に使えます。受信タイムアウトが 1~2秒くらいに設定されているようなのですが、変更の方法がわかりませんでした。
動作テストで、TXD (pin8) と RXD (pin10) をジャンパー線で接続して Wio Terminalで送信したデータを Wio Terminal自身で受信させました。
UARTで使うピンは TXD (pin8) と RXD (pin10) です。
関数と通信フォーマット一覧
>>> help(UART)object <class 'UART'> is of type type  deinit -- <function>  __enter__ -- <function>  __exit__ -- <function>  any -- <function>  read -- <function>  readline -- <function>  readinto -- <function>  write -- <function>  config -- <class 'config'>
>>> help(uart.config)object <class 'config'> is of type type  SERIAL_5N1 -- 275  SERIAL_6N1 -- 531  SERIAL_7N1 -- 787  SERIAL_8N1 -- 1043  SERIAL_5N2 -- 307  SERIAL_5N1 -- 563  SERIAL_7N2 -- 819  SERIAL_8N2 -- 1075  SERIAL_5E1 -- 273  SERIAL_6E1 -- 529  SERIAL_7E1 -- 785  SERIAL_8E1 -- 1041  SERIAL_5E2 -- 305  SERIAL_6E2 -- 561  SERIAL_7E2 -- 817  SERIAL_8E2 -- 1073  SERIAL_5O1 -- 275  SERIAL_6O1 -- 530  SERIAL_7O1 -- 786  SERIAL_8O1 -- 1042  SERIAL_5O2 -- 306  SERIAL_6O2 -- 562  SERIAL_7O2 -- 818  SERIAL_8O2 -- 1074



 
