🐣

Raspbrry pi pico同士でUART(PlatformIO)

に公開

1.はじめに

ラズピコにハマったのでとりあえずUARTをしてみようと思ってやりました。備忘録です。

2.環境

・OS: Arch Linux
・Raspberry pi pico
・VSCode + PlatformIO
 ・bord: pico
 ・framework: arduino

3.実験

3.1 ラズピコ1つでチェック

通常はマイコン2つのそれぞれのTXとRXを繋いでUARTを行いますが、1つのマイコンのTXとRXを繋いで確認することが可能です。

シリアルモニターはVSCodeのSerial Monitorという拡張機能を用いました。

プログラム

main.cpp
#include<Arduino.h>

void setup () {
    Serial.begin(115200);
    Serial1.begin(9600);
    Serial.println("UART test start");
}

void loop () {
    Serial.print("Sent: ");
    Serial1.write("Hello, UART") + String(millis());

    if (Serial1.available()) {
        String s = Serial1.readStringUntil('\n');
        Serial.print("Received: ");
        Serial.println(s);
    }

    delay(1000);
}
platformio.ini
[env:pico]
platform = raspberrypi
board = pico
framework = arduino
monitor_speed = 115200

補足

いくつか参考にしようとしたArduino IDEを用いたプログラム全てにsetTX()とsetRX()を用いてTXとRXのピンの指定を行っていましたが、PlatformIOで使用されているArduino.hにsetTX()とsetRX()が含まれていないようでした。そのため、デフォルトのピンがGPIO0とGPIO1なのでその2つを繋ぎます。

結果

Serial Monitorに"Sent: Received: Hello, UART"と表示されました。

3.2 ラズピコ同士を繋いでUART

2つのラズピコを用意し、片方のGPIO0と片方のGPIO1を交差させるように2本の線で繋ぎます。GND同士も繋いでおきます。
プログラムは3.1のものをそれぞれに書き込みます。

結果

4.まとめ

ピコ2つを使ってUARTをすることができました。SPIやCAN等他の通信をしたりこれからピコで沢山遊びたいです。
書き忘れたことがあればまた追記します。

Discussion