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:
hexdump を hdumpと肝心のコマンド名を間違っていましたので訂正しました。すいません。