0件のコメント2本線での通信ですので、簡単に試せます。※現時点の情報ですので、最新情報はM5StickC非公式日本語リファレンスを確認してください。エラー処理まとめUARTとは送信と受信の通信線をクロスにつないだ通信方式です。2本の通信線で通信ができるので簡単ですが、フロー制御などがないので文字化けとか通信データの欠落などがでてきます。ESP32では3系統のUARTが利用することができます。3系統目のシリアル1系統目はPCとの接続に利用しています。2系統目と3系統目はどちらを使ってもいいですし、両方同時に使うことも可能です。Bluetooth経由でワイヤレス接続のBluetoothSerialってのもありますが、こちらは後日紹介します。入力専用のIO36を除き、外部接続可能な4PINはどんな組み合わせでもI2Cで通信が可能でした。サンプル配線M5StickCのみで実験をする場合の配線です。特徴としてはRXとTXを接続することです。RXがReciverで受信、TXはTransmitterで送信を意味しています。TX(33)上記にアサインしています。IOの0と26は逆でも構いませんが、I2Cと同じように若い番号から割り当てています。}}Arduinoのシリアルモニタから送信したデータをSerial(USB)で受信して、Serial1(EXT_IO)に出力。Serial1(EXT_IO)で受信したデータをSerial2(Grove)に送信。Serial2(Grove)で受信したデータをSerial(USB)に送信というサンプルです。通信速度についてサンプルは一番最速の「115200」を指定していますが、速度が早いとエラーになる可能性があがるので、もう少し遅い速度を指定したほうが安定すると思います。30012002400480096001440019200288003840057600115200あたりが指定できますが、相手と同じ速度を指定する必要があるので、相手が固定値だと選択肢がないですが、速度が必要ない場合には9600あたりか、少し早い19200あたりの方がエラーは少ないと思います。遅めで通信をして、速度が必要になった場合に早くするほうが苦労が少ないと思います。外部装置との接続例ESP32の開発ボードとM5StickCをUARTで接続する実験をしてみました。}}Grove側の32と33を使って接続しています。ESP32から送信されたデータをSerial2(Grove)で受信して、Serial(USB)に送信しています。Serial(USB)から送信されたデータをSerial2(Grove)に送信しています。}}ほぼ一緒ですが、M5.begin()の中で実行されているSerial.begin()を自分で呼び出す必要があります。IDEのシリアルモニタは1つのシリアルしか開けません。開発ボードを変更すると他の設定も一度に変わってしまうので、別のパソコンとかに繋げて実験するのが一番動かしやすいです。電圧差異M5StickCは内部は3.3Vで動いていますが、一般的なArduinoボードは5Vで動いています。そのまま接続すると電圧が異なりますので、繋げないほうがいいです。M5StickCは実際には5V信号を入力しても、壊れない気がしますがデータシート上は5Vは許容していませんので、電圧変換の回路やICを間にいれて接続する必要があります。物によっては12Vとかを流してくるシリアルもあるので、安易に繋ぐのはやめましょう。速度差異お互いに同じ速度を設定しないと通信ができません。複数機材を接続するのであれば、お互いに同じ値を設定するればよいのですが、LTEモジュールなどの通信機器と接続するためには、相手側の初期値で接続してから、変更するなどをする必要があるので注意しましょう。基本的に1バイト単位で送受信する機能しかありませんので、途中でエラーが発生したり、相手側が受信を失敗しているかを確認する方法が標準では提供されていません。エラー処理は自分で考慮する必要があるので注意して使ってください。まとめUART自体は簡単に利用することができます。長い距離を通信させることや、高速で通信する場合にはエラー処理などがちょっと不安ですので、注意が必要そうです。パソコンと接続するのであればBluetoothSerialを使うことで、速度とエラー処理などの心配がほぼ無くなるのでおすすめです。コメントをキャンセルメールアドレスが公開されることはありません。date*管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。スパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。その1ESP32のGPIO入力について関連記事はこちらです。関連記事はこちらです。Themegraphy。