0

ESP8266 Wifi to serial モジュールをシリアル to USB コネクタに接続しました。

次の Python スクリプトと設定で ESP8266 に接続できます。

import serial

def echoCommand(cmd,expected_return,halt_on_fail,tOut = timeoutPeriod) :
    ser.write(cmd + '\r\n')

    if(echo_local_command):
        print('Sent --> '+cmd)

    if not echoFind(expected_return,tOut) and (halt_on_fail):
        print(cmd+" failed")
        sys.exit()

def echoFind(expected_return,tOut):
    timeoutTime = datetime.datetime.now() + datetime.timedelta(0,tOut)
    while datetime.datetime.now() < timeoutTime:
        while ser.inWaiting():
            ret = ser.readline().rstrip()
            print ret
            time.sleep(0.1)
            if expected_return in ret:
                return True
    return False 

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=5)

echoCommand('AT+RST', 'ready', True)

上記は魅力のように機能しますが、何らかの理由で、 minicom 、 GTKTerm 、 Putty などの端末では同じことができません。(Ubuntu を実行しています。CR と LF を表示する推奨端末はありますか?)

同じボーレートと設定を使用しましたが、うまくいきませんでした。ハードウェアとソフトウェアのフロー制御の切り替えを試み、CR と LF の追加を確認しました。

これがうまくいかない理由はありますか?

minicom を開いて Python スクリプトを実行すると、ESP8266 からの出力が minicom に表示され、問題を示して送信されることに気付きました (スクリプトが失敗すると、minicom が着信メッセージを傍受します)。

4

3 に答える 3

9

そうです...この問題の解決策を見つけました。問題は、ESP8266 が応答する各 AT コマンドの後に CR + LF を必要とすることでした。

Putty でこれを行うには、Ctrl+M と Ctrl+J を押して CR+LF を手動で挿入する必要があります。別の方法として、CR+LF を自動的に追加できる Arduino IDE - シリアル ウィンドウを使用することもできます (Arduino IDE はほとんどの OS でも動作します)。

于 2015-01-13T08:07:04.747 に答える
2

上記の CR+LF の問題に加えて、一部のボードではファームウェアをアップロードするために DTR が ESP8266 GPIO に接続されているため、ESP8266 が適切に応答するために端末プログラムで DTR を Low にプルしないでください。

ファームウェアを更新していない間は DTR を切断するか、制御に DTR を使用しない別の端末プログラムを試すことができます。

于 2015-02-04T18:01:55.870 に答える