ESP32のシリアル出力をラズパイで受信する

ESP32などのUARTシリアル出力をラズパイのGPIOに接続してシリアルデータを確認する方法のメモです。
ESP32とRasPiのI/Oは3.3Vなのでジャンパ線で直結できます。

接続

ESP32-DevKitCのUART1をIO32, IO33で使用している場合です。
RasPiはポート /dev/ttyAMA0 GPIOピンの6,8,10を使用します。

ESP32      ——-  RasPi

GND          ——-  pin6 GND
IO33 (Rx)   ——   pin8 (Tx)
IO32 (Tx)   ——   pin10 (Rx)

ESP32とRasPiのTx, Rxはクロス接続です。

送信側: ESP32のプログラム

0~254の値を1秒間隔で送信し続けるコードです。

HardwareSerial Serial1(1); // UART1

void setup() {
  Serial.begin(115200);
  Serial1.begin(19200, SERIAL_8N1, 33, 32); // IO33 Rx, IO32 Tx
}

void loop() {
  for (int i=0; i<255; i++) {
    Serial1.write(i);
    delay(1000);
  }
}


受信側: RasPiでの受信コマンド

sttyで/dev/ttyAMA0のポート速度を設定します。hexdumpでシリアルポートから受信したデータをダンプします。

$ stty -F /dev/ttyAMA0 19200 raw`
$ hexdump -C /dev/ttyAMA0

00000000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |................|
00000010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f |................|
00000020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./|
00000030 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f |0123456789:;<=>?|
00000040 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f |@ABCDEFGHIJKLMNO|
00000050 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f |PQRSTUVWXYZ[\]^_|
00000060 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f |`abcdefghijklmno|
00000070 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f |pqrstuvwxyz{|}~.|
00000080 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f |................|

無事表示されました。

注意点

hexdumpの前にsttyで使用するシリアルポートの通信速度をESP32と合わせてください。
hexdump は16バイト毎に1行で表示しますので、16バイト受信するまでは何も表示されません。
連続してデータを受信する場合に使えるTipsです。

訂正

2019-04-26:
hexdumphdumpと肝心のコマンド名を間違っていましたので訂正しました。すいません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です