LinuxでシリアルターミナルエミュレータにRTSとDTRを無視させる方法は?

LinuxでシリアルターミナルエミュレータにRTSとDTRを無視させる方法は?

Amazonからユニバーサル8ピンESP8266を購入しました。一部の「AT」コマンドファームウェアがロードされ、モデムのように動作します。シリアルポートのように動作するUSB​​接続UARTであるFTDI1232にモジュールを接続しました。

USB IDは次のとおりです。

Bus 002 Device 010: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

/dev/ttyUSB0私のシステムではそうです。 Ubuntu 14.04システムにCuteComをインストールし、速度115200、パリティなし、8ビット文字、および1ストップビットを選択しました。 CuteComを利用して正常に通信し、データの送受信ができます。

ただし、このデフォルトのファームウェアはあまり使用されません。 Arduino IDEの最新バージョンをダウンロードし、追加のコアパッケージを介してESP8266サポートを追加しました。

このデバイスをプログラムするために、この図に従ってESP8266を接続しました。

ここに画像の説明を入力してください。

これは基本的に私がすでに持っている回路です。RTSとDTRラインを追加する必要があります。これを完了するには。

以下のように非常に簡単なスケッチを作成しました。

void setup(){
  Serial.begin(115200); // 8 bit char, no parity, 1 stop bit
  while(!Serial){};
}

void loop(){
  int v = Serial.read();
  if(-1 != v){
    Serial.write((uint8_t)v);
  }else{
    delay(10)
  }
}

これは、デバイスに書き込まれたすべての内容を書き換える必要がある基本的な「エコー」タイプのスケッチです。

スケッチをアップロードしたら、ツール - >シリアルモニタを使用して対話できます。私は送信されたデータを変換し、再びエコーするいくつかのものを作成しました。彼らはすべて動作します。

この時点では、CuteComはまったく機能しません。原因を検索した後、ついにJavaコードでシリアルモニタの実装を見ました。私が見つけたのはこの行でした。

  !BaseNoGui.getBoardPreferences().getBoolean("serial.disableRTS"),
  !BaseNoGui.getBoardPreferences().getBoolean("serial.disableDTR"));

から:https://github.com/arduino/Arduino/blob/ee1967cd530ceb9a1d638875e385157e90d532e8/arduino-core/src/processing/app/Serial.java#L68

デフォルトでは、各「ボード」(SDKがESP8266と通信できるようにするコードの用語)は、RTSとDTRを有効にする必要があるかどうかを定義するようです。その後、コードはjccsライブラリを呼び出してRTSとCTSを有効または無効にします。

この時点で、ESP8266はRTSとCTSに接続されたラインを分離しました。また、CuteComを使用して、アップロードした新しいスケッチと会話することができました。ただし、Arduino IDEでプログラムするたびにワイヤを外して再接続したくありません。

Arduino IDEの「シリアルモニタ」が正常に動作するため、接続を切断せずにデバイスと通信することが可能です。

Ubuntu 14.04でRTSとDTRを無視できるシリアル端末エミュレータを取得するにはどうすればよいですか?また、ポートをこのモードに設定してsocat同様に使用できるようにするコマンドも受け入れます。

重要ではないかもしれませんが、実際のデバイスの写真は次のとおりです。

ここに画像の説明を入力してください。

ベストアンサー1

picocom -b 115200 --lower-rts --lower-dtr /dev/ttyUSB0

ESP-C3-32S-Kitにこの問題があります。デバイスを開くとリセットが生成されますが、通常の起動モードではシリアルを使用できます。

おすすめ記事