วิธีการเปลี่ยน baudrate ของ ESP8266 (12e) อย่างถาวร?


11

สำคัญ: ห้ามใช้AT+IPR=9600! (ดูอัปเดต)

ฉันมีโมดูล ESP8266 12E ที่สื่อสารที่ 115,200 bauds เนื่องจากฉันใช้กับ Arduino Nano กับ SoftwareSerial สิ่งที่ได้รับยุ่ง ดังนั้นฉันจึงพบว่าฉันควรลดอัตราการรับส่งข้อมูลของโมดูล ESP

ฉันพบลิงค์นี้เกี่ยวกับวิธีการทำ

ฉันสงสัย

  • นี่เป็นการเปลี่ยนแปลงถาวรหรือคุณจำเป็นต้องทำสิ่งนี้ทุกครั้งหลังจากโมดูลได้รับพลังงานหรือไม่

  • ฉันสามารถทำสิ่งเดียวกันโดยการส่งคำสั่งจาก Arduino ผ่าน SoftSerial ได้หรือไม่ ดีฉันเดาไม่ได้เพราะผมพยายามและผมเคยได้รับข้อผิดพลาดในหรือAT+CIOBAUD=9600AT+IPR=9600

  • ฉันอ่านบางแห่งว่าใน ESP8266 เวอร์ชั่นใหม่กว่าเฟิร์มแวร์อัตราการรับส่งข้อมูลเริ่มต้นที่ 9,600 ทุกคนสามารถยืนยันได้และถ้าเป็นเช่นนั้นจะดีกว่าที่จะแฟลชเฟิร์มแวร์รุ่นใหม่นี้

ผู้ขายของโมดูล:

Ai-Thinker Technology Co.,Ltd.

ฉันคิดว่าเฟิร์มแวร์เวอร์ชั่นปัจจุบันคือ 0.3.0 ถ้าฉันส่ง AT+GMRฉันจะได้รับ:

sending AT+GMR

response: ?AT¥TJÕ¨H(Q�²•ÉÍ¥½¹é‚r¢‚r‚r‚BÕ��Â’‚ŠªŠ¢Ò¢ªÒªÂJm
 SDK versioo:0.3.0
 Ai�½½
 ‚Šj

ขยะอีกครั้งเนื่องจากอัตราการรับส่งข้อมูลซึ่งสูงเกินไป

ข้อมูลอื่น ๆ ในโมดูล:

sending AT+RST
response: ?AT+RST
OK
WRT
"%M
<99CT
 ets Jan  8 2013,rst catse:2, boot lode:(3,7)
load 0x40100000ntail 4
chksum 0x89
ld tail 4
chm3 tail 8 r 0 aM
 ón't use rtc mem dat`
sl��oÌÿ
Ai-Thinker Technology Co.,Ltd.

UPDATE

(*) ฉันใช้โมดูล FTDI232 เพื่อส่งAT+IPR=9600ไปยังโมดูล ESP8266-12E ของฉันและฉันปิดมัน !

ห้ามใช้กับAT+IPR=9600ESP8266 (-12E)

ฉันไม่สามารถกู้คืนได้จนถึงตอนนี้! ฉันลองกระพริบอีกครั้ง แต่ได้รับข้อยกเว้นหัวไม่ถูกต้อง

ในโมดูลใหม่ฉันส่งAT+CIOBAUD=9600คำสั่งและใช้งานได้ ถาวร!

รายละเอียดโมดูลของฉัน:

AT+GMR 
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK 

คุณสามารถลองอนุกรมฮาร์ดแวร์หรือไม่ หรือดึงพินรีเซ็ตต่ำแล้วพูดคุยกับ ESP โดยตรงผ่าน USB อาจตรวจสอบว่างานเหล่านั้น
พอล

@ พอล: นาโนมีพอร์ตอนุกรมของฮาร์ดแวร์เพียงชุดเดียว ดังนั้นหากฉันใช้สิ่งที่ฉันไม่สามารถส่งข้อมูลไปยัง Arduino Serial Monitor อีกต่อไปทำให้ยากที่จะเข้าใจสิ่งที่เกิดขึ้น ... เดาว่าฉันจะต้องไปอัพเกรดเฟิร์มแวร์
mvermand

คุณสามารถใช้ประโยชน์จากซอฟต์แวร์ serialport เพื่อแก้จุดบกพร่องได้หรือไม่ คุณจะต้องใช้สายเคเบิล "usb-serial / ttl"
พอล

1
stackoverflow.com/questions/34248581/…นี่จะตอบคำถามของคุณ
N.Sinha

1
ดูเหมือนว่าการตั้งอัตราบอดกับAT + ทรัพย์สินทางปัญญา = 9600 ยังอิฐ ESP01 ฉันลองหลายคำแนะนำในกระทู้นี้เพื่อกู้คืน การแก้ปัญหาในลิงค์มาร์โกอังเดรซิลวาที่จัดหาให้ทำงานได้สำหรับฉัน
Steffe

คำตอบ:


10

ขึ้นอยู่กับว่าล่าม AT ของชุดคำสั่งรุ่นล่าสุดของคุณมีสองคำแนะนำที่คุณลองใช้อาจไม่ถูกต้อง พวกเขาไม่ได้อยู่ในเอกสารชุดคำสั่งชุดคำสั่ง AT8ของ Espressif ค้นหา "CIOBAUD" หรือ "IPR" ในเอกสารปัจจุบัน (รุ่น 1.5.3) ไม่มีผลลัพธ์

คำสั่งอัตรารับส่งข้อมูลขณะนี้ "AT + UART_CUR" และ "AT + UART_DEF" ซึ่งกำหนดค่า UART ทั้งหมดสำหรับเซสชันปัจจุบันหรือเซสชันปัจจุบันและอนาคตตามลำดับ ต้นแบบของคู่มือสำหรับคำสั่งคือ:

AT+UART_DEF=<baudrate>, <databits>, <stopbits>, <parity>, <flow control>
Example:
AT+UART_DEF=115200, 8, 1, 0, 3

ฉันใช้สิ่งเหล่านี้แล้วและสามารถยืนยันได้ว่ามันใช้งานได้

สิ่งที่ฉันพบโดยใช้ซอฟต์แวร์อนุกรมคือมันสามารถผลักดัน 115200 baud ได้ดีพอที่จะส่งคำสั่งไปยังอุปกรณ์ (แม้ว่าฉันจะไม่สร้างแอปพลิเคชันที่ขึ้นอยู่กับมัน) แต่มันสามารถอ่านได้อย่างน่าเชื่อถือมากถึง 9600 baud ฉันสามารถเปลี่ยนอัตรา baud ของอุปกรณ์จาก 115200 baud เป็น 9600 ผ่านซอฟต์แวร์อนุกรม คุณเพียงแค่คาดหวังว่าขยะจะกลับมาและไม่สนใจ:

// Set ESP8266 baud rate to 9600. You only need to do this once per device
set software serial baud to 115200;
send "AT+UART_DEF=9600,8,1,0,0";
set software serial baud to 9600;
// From now on, communicate with your device at 9600 baud.

3

ฉันเชื่อมต่อโมดูล FTDI232 ที่ 115200 baud และสามารถอ่านรายละเอียดของโมดูล ESP8266 ได้ทันที:

AT+GMR 
AT version:0.40.0.0(Aug  8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK 

หลังจากนั้นฉันก็ส่งAT+IPR=9600คำสั่งซึ่งครั้งแรกดูเหมือนจะทำเคล็ดลับ แต่หลังจากรีบูทโมดูลสิ่งที่ฉันได้รับก็คือการตอบสนองขยะเมื่อใดก็ได้

อย่าส่ง AT + IPR = 9600 ให้กับโมดูล ESP8266 (12e) ของคุณ

อาจAT+UART_DEFคำสั่ง - ตามที่ JRobert พูดถึง - ใช้ได้ แต่ฉันใช้ AT+CIOBAUD=9600คำสั่งแล้วก็ใช้ได้ ถาวร!

ฉันหวังว่านี่จะช่วยผู้อื่นได้


3

ฉันปิดกั้น Esp ของฉันด้วยคำสั่งเดียวกันด้วย หลังจากการค้นหาหลายชั่วโมงฉันพบวิธีที่จะรีเซ็ต esp ที่ถูกบล็อก https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmwareฉันต้องตั้งค่า baudrate เป็น 115200 แทนที่จะเป็น 9600 และระหว่างการอัปโหลดไฟล์ที่ฉันต้องตัดการเชื่อมต่อจากพลังงาน . ฉันหวังว่าจะช่วยคุณและทุกคนที่ทำเช่นเดียวกันและพบโพสต์ของคุณผ่าน Google


การหมุนเวียนพลังงาน ESP ระหว่างแต่ละไฟล์เป็นสิ่งสำคัญสำหรับฉันเช่นกันไซต์อื่น ๆ รวมไฟล์ทั้งหมดไว้ในesptool.pyคำสั่งเดียวแต่นั่นก็ไม่ได้ผลสำหรับฉัน หลังจากแบ่งมันออกเป็นคำสั่งแต่ละคำสั่งหนึ่งไฟล์ต่อหนึ่งไฟล์และการหมุนเวียนระหว่างแต่ละคำสั่งในที่สุดฉันก็สามารถกู้คืนเฟิร์มแวร์ AT ได้ในที่สุด ขอบคุณสำหรับคำใบ้!
davidA

นอกจากนี้ฉันลองใช้esptool.pyที่มาพร้อมกับ ESP32 IDF (v2.1-beta1) และทำงานได้สำเร็จด้วยคำสั่งเดียวในการแฟลชไฟล์ทั้งหมดใน ESP8266 ของฉัน (ซึ่งรองรับด้วย) - ดังนั้นหนึ่งรอบพลังงาน + GPIO0- ต้องการ GND
davidA


0

ดูเหมือนว่าคุณกำลังมีปัญหาเกี่ยวกับแหล่งจ่ายไฟ คะแนนพลังงานของคุณคืออะไร? และลองเพิ่มตัวเก็บประจุขนาดเล็กระหว่าง vcc และกราวด์ นอกจากนี้ขอแนะนำให้อัปเดตเฟิร์มแวร์เป็น 0.9 ซึ่งแก้ไขปัญหาการรับส่งข้อมูล

คุณสามารถค้นหาเฟิร์มแวร์ใหม่ได้ที่ https://github.com/espressif/esp8266_at


ฉันไม่คิดว่านี่เป็นปัญหาด้านแหล่งจ่ายไฟ ฉันมีแหล่งจ่ายไฟภายนอกซึ่งมีความสามารถมากกว่า ฉันลองโดยไม่ใช้มาก่อนแล้ว Arduino ก็เริ่มต้นใหม่ ... ฉันพบในฟอรัมที่เกิดจากปัญหาของแหล่งจ่ายไฟ ดังนั้นตอนนี้ฉันสบายดี ฉันคิดว่าปัญหาคือ SoftSerial ไม่สามารถรับมือกับการรับส่งข้อมูลขนาด 115k ได้
mvermand

1
โดยเฉพาะอย่างยิ่งพิถีพิถันเพิ่มตัวเก็บประจุขนาดเล็กระหว่าง vcc และพื้นดิน ฉันยังใช้พลังงานของฉันจากแหล่งพลังงานภายนอกและพบว่ามีการรีสตาร์ท
NccWarp9
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.