概要

Raspberry Piで、ESP-WROOM-32開発ボードとUSB経由でシリアル通信してみた。


背景と目的

Raspberry PiとESP-WROOM-32で通信する必要が出たので、USB経由でシリアル通信してみることにする。


詳細

1.pipのインストール

本筋とは関係ないが、たまたま手持ちのRaspberry Pi Zero Wはセットアップしたばかりで、pipが入っていなかったので、インストール。こちらを参考に、以下を実行。3番目は、バージョンの確認。

curl -kL https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
pip -V

2.python用シリアル通信モジュール

pipのインストールが完了したので、続いてPython用のシリアル通信制御モジュールpyserialをインストールした。

sudo pip install pyserial

上記実施後、Pythonで以下を実行したところ、エラーなくインポートできた。

import serial


3.ESP-WROOM-32を接続

ESP-WROOM-32開発ボードは、[[これ>]]を使用。USBで接続すればシリアル通信できるもの。Raspberry Piとの接続は、以下のようにUSBでつなぐだけ。白いケーブルが、ESP32とつながっている。(Raspberry Pi ZeroWは、microB端子しかないので、いったんA端子に変換している。)

DSC_0204

確認のため、

python -m serial.tools.list_ports

を実行し、

/dev/ttyAMA0
/dev/ttyUSB0
2 ports found

という感じで、ttyUSB0というシリアルポートが認識されていればOK。


4.シリアルで受信

以下をPythonにて実行し、1行を読み取ってみた。

import serial
s = serial.Serial()
s.port = '/dev/ttyUSB0'
s.baudrate = 115200 # これはESP32側の設定による
print s.readline()

無事、読み取ることができた。というわけで、シリアル通信ができた。


まとめ

Raspberry Piで、ESP-WROOM-32開発ボードとUSB経由でシリアル通信することができた。