RaspberryPi Picoと、ESP32を搭載したATOM Lite(M5stackシリーズ)で、どちらもMicroPythonを使って、シリアル通信(UART)を行いました。
あるシステムを作ろうとしたとき、ATOM LiteだとGPIO端子が足りない、RaspberryPi Picoだと無線通信ができないっとなることもあると思いますが、その際、一方にGPIO増設モジュールあるいは無線モジュールを取り付けるより、この2つを通信させた方が安価だなって思いまして。

■ ループバックテスト
(1)RaspberryPi Pico
【GPIO配線】
今回はTXにGP4に、RXにGP5を使うので、GP4とGP5を直結します。
【スクリプト】
import utime
from machine import UART, Pin
uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))
uart1.write('hello')
utime.sleep_ms(4)
print(uart1.read().decode('utf-8'))
実施バージョン:MicroPython v1.16 on 2021-06-18; Raspberry Pi Pico with RP2040
最初、データがバッファリングされるまでのタイムラグがあるので、少し待たないといけないことを認識していなくて、なんでできないんだろうと悩みました^^;
(2)ATOM Lite
【GPIO配線】
今回はTXにG21に、RXにG25を使うので、GP21とGP25を直結します。
ピンはどれでも指定できるようです(ただし、G33は入力専用で出力はできません)

【スクリプト】
import utime
from machine import UART
uart1 = UART(1, baudrate=9600, tx=21, rx=25)
uart1.write('hello')
utime.sleep_ms(16)
print(uart1.read().decode('utf-8'))
実施バージョン:MicroPython v1.17 on 2021-09-02; ESP32 module with ESP32
ラズパイPicoでは、tx・rxをPin(21)などと指定するのですが、若干作法が違いました。
(その他、NoneTypeのデコードでエラーを吐かないあたりの処理も違いました)
また、同じボーレートですが、ラグタイムには少し違いがあるみたいです(ハードウェアの違い?)。
■ ラズパイPico→ATOM Liteへ送信
【GPIO配線】
RPi Pico ATOM Lite GP4(TX) --- G25(RX) GP5(RX) --- G21(TX) GND --- GND
ラズパイPicoからATOM Liteに送るだけなら、GP5とG21の接続は無くても大丈夫。

【スクリプト:ラズパイPicoから送信】
import utime
from machine import UART, Pin
led = Pin(25, Pin.OUT)
uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))
while True:
led.on()
uart1.write(b'Hello! Im Pico.')
utime.sleep(0.5)
led.off()
utime.sleep(0.5)
1秒おきに送信。LEDを点滅させているのは、稼働確認のためで特に意味はありません。
なお送信テキストはバイト変換しなくても(bがなくても)、自動で変換されるみたいです。
【スクリプト:ATOM Liteで受信】
import utime
from machine import UART
uart1 = UART(1, baudrate=9600, tx=21, rx=25)
while True:
rxData = bytes()
while uart1.any() > 0:
rxData += uart1.read(1)
if len(rxData) > 0:
print(rxData.decode('utf-8'))
utime.sleep(0.2)
ピンの指定のところの作法を変えれば、上記スクリプトを入れ替えて、ラズパイPico→ATOM Liteへの通信もできました。
また、ATOM Lite側はピンを変更して試しましたが、任意のピンに使えました(ただしG33は入力専用)。
■ 参考サイト
MicroPython的午睡(21) ラズパイPico、M5AtomLiteとUART通信
https://jhalfmoon.com/dbc/2021/05/13/micropython的午睡21-ラズパイpico、m5atomliteとuart通信/

