Làm thế nào để thay đổi baudrate của ESP8266 (12e) vĩnh viễn?


11

QUAN TRỌNG: KHÔNG SỬ DỤNG AT+IPR=9600! (xem cập nhật)

Tôi có một mô-đun ESP8266 12E giao tiếp với tốc độ 115.200 bauds. Vì tôi sử dụng nó với Arduino Nano với SoftwareSerial nên mọi thứ trở nên lộn xộn. Vì vậy, tôi thấy rằng tôi nên giảm tốc độ baud của mô-đun ESP.

Tôi tìm thấy liên kết này về cách làm điều đó.

tôi đang tự hỏi

  • Đây có phải là một thay đổi vĩnh viễn hay bạn cần phải làm điều này mỗi lần sau khi mô-đun được cấp nguồn?

  • Tôi có thể đạt được điều tương tự bằng cách gửi lệnh từ Arduino qua SoftSerial không? Vâng, tôi đoán không kể từ khi tôi cố gắng và tôi luôn luôn nhận được một lỗi trên AT+CIOBAUD=9600hay AT+IPR=9600.

  • Tôi đọc được ở đâu đó rằng trong các phiên bản phần mềm mới hơn của ESP8266, tốc độ baud mặc định là 9.600. Bất cứ ai cũng có thể xác nhận điều này và nếu vậy, tốt hơn là flash firmware mới hơn này?

Nhà cung cấp của mô-đun:

Ai-Thinker Technology Co.,Ltd.

Tôi nghĩ rằng phiên bản hiện tại của firmware là 0.3.0. Nếu tôi gửi AT+GMRtôi nhận được:

sending AT+GMR

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

Lại một số rác vì tốc độ baud quá cao.

Thông tin khác về mô-đun:

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.

CẬP NHẬT

(*) Tôi đã sử dụng một mô-đun FTDI232 để gửi AT+IPR=9600đến mô-đun ESP8266-12E của mình và tôi đã gạch nó !

KHÔNG SỬ DỤNG AT+IPR=9600TRÊN MỘT ESP8266 (-12E).

Tôi đã không quản lý để phục hồi nó cho đến nay! Tôi đã thử flash lại nó nhưng tôi nhận được ngoại lệ đầu không hợp lệ.

Trên một mô-đun mới, tôi đã gửi AT+CIOBAUD=9600lệnh và nó đã hoạt động. Vĩnh viễn!

Thông số mô-đun của tôi:

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 

Bạn có thể thử nối tiếp phần cứng? Hoặc kéo pin reset xuống thấp và sau đó nói chuyện trực tiếp với ESP thông qua USB. Có thể kiểm tra nếu những công việc.
Paul

@Paul: nano chỉ có một bộ cổng nối tiếp phần cứng. Vì vậy, nếu tôi sử dụng những dữ liệu đó, tôi không thể gửi dữ liệu tới Arduino serial Monitor nữa, khiến cho việc hiểu những gì đang xảy ra trở nên khó khăn ... Đoán tôi sẽ cần phải nâng cấp firmware.
mvermand

bạn có thể sử dụng phần mềm nối tiếp để gỡ lỗi không? Bạn sẽ cần cáp "usb-serial / ttl".
Paul

1
stackoverflow.com/questions/34248581/ Từ Điều này sẽ trả lời câu hỏi của bạn.
N.Sinha

1
Có vẻ như cài đặt tốc độ truyền với AT + IPR = 9600 cũng tạo ra một ESP01 . Tôi đã thử một số gợi ý trong chủ đề này để phục hồi nó. Các giải pháp trong liên kết Marco Andre Silva cung cấp làm việc cho tôi.
Steffe

Câu trả lời:


10

Tùy thuộc vào mức độ gần đây của phiên bản trình thông dịch AT Command Set mà chip của bạn có, hai hướng dẫn bạn đã thử có thể không hợp lệ; chúng không được liệt kê trong tài liệu Bộ hướng dẫn ESP8266 AT của Espressif . Tìm kiếm "CIOBAUD" hoặc "IPR" trong tài liệu hiện tại (phiên bản 1.5.3) không có kết quả.

Các lệnh tốc độ baud hiện là "AT + UART_CUR" và "AT + UART_DEF", cấu hình toàn bộ UART cho phiên hiện tại hoặc các phiên hiện tại và tương lai. Nguyên mẫu của hướng dẫn sử dụng cho lệnh là:

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

Tôi đã sử dụng những thứ này và có thể xác nhận rằng chúng hoạt động.

Những gì tôi đã tìm thấy bằng cách sử dụng nối tiếp phần mềm là nó có thể đẩy 115200 baud đủ tốt để gửi lệnh đến thiết bị (mặc dù tôi sẽ không xây dựng một ứng dụng phụ thuộc vào nó) nhưng nó chỉ có thể đọc đáng tin cậy lên đến 9600 baud. Tôi đã có thể thay đổi tốc độ truyền của thiết bị từ 115200 baud thành 9600 qua phần mềm nối tiếp; bạn chỉ cần mong đợi rác quay trở lại và bỏ qua nó:

// 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

Tôi đã kết nối một mô-đun FTDI232 ở mức 115200 baud và có thể đọc thông số kỹ thuật của mô-đun ESP8266 ngay bây giờ:

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 

Sau đó tôi đã gửi AT+IPR=9600lệnh, mà lần đầu tiên dường như thực hiện thủ thuật. Nhưng sau khi khởi động lại mô-đun, tất cả những gì tôi nhận được là phản hồi rác, ở bất kỳ tốc độ nào.

KHÔNG GỬI TẠI + IPR = 9600 ĐẾN MODULE ESP8266 (12e) CỦA BẠN

Có thể AT+UART_DEFlệnh - như được đề cập bởi JRobert - hoạt động, nhưng tôi đã sử dụng AT+CIOBAUD=9600lệnh và nó đã hoạt động. Vĩnh viễn!

Tôi hy vọng điều này có thể giúp đỡ người khác.


3

Tôi cũng gạch Esp của tôi với cùng một lệnh. Sau nhiều giờ tìm kiếm, tôi đã tìm được cách thiết lập lại đặc biệt. https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware Tôi phải đặt baudrate thành 115200 thay vì 9600 và giữa các tệp tải lên tôi phải ngắt kết nối với nguồn điện . Tôi hy vọng điều đó sẽ giúp bạn và tất cả những người đã làm như vậy và tìm thấy bài đăng của bạn trên Google.


Tăng sức mạnh cho ESP giữa mỗi tệp cũng là điều quan trọng đối với tôi - các trang web khác kết hợp tất cả các tệp thành một esptool.pylệnh duy nhất , nhưng điều đó không hiệu quả với tôi. Chỉ sau khi chia nó thành các lệnh riêng lẻ, mỗi lệnh một tệp và quay vòng giữa mỗi lệnh, cuối cùng tôi mới có thể khôi phục firmware AT. Cảm ơn các gợi ý!
davidA

Ngoài ra, tôi đã thử sử dụng esptool.pycái đi kèm với ESP32 IDF (v2.1-beta1) và một cái hoạt động thành công với một lệnh duy nhất để flash tất cả các tệp trên ESP8266 của tôi (nó cũng hỗ trợ) - vì vậy chỉ có một chu kỳ nguồn + GPIO0- Yêu cầu GND.
davidA


0

Có vẻ như bạn là bạn đang có vấn đề cung cấp điện. Đánh giá cung cấp điện của bạn là gì? và thử thêm một tụ điện nhỏ giữa vcc và mặt đất. Ngoài ra, ý tưởng tốt của bạn là cập nhật chương trình cơ sở lên 0.9 đã khắc phục sự cố baudrate.

Bạn có thể tìm thấy phần sụn mới tại https://github.com/espressif/esp8266_at


Tôi không nghĩ rằng đây là một vấn đề cung cấp điện. Tôi có một nguồn cung cấp năng lượng bên ngoài nhiều hơn khả năng. Tôi đã thử mà không có trước và sau đó Arduino tiếp tục khởi động lại ... Tôi tìm thấy trên một diễn đàn đó là do vấn đề cung cấp điện. Vì vậy, bây giờ tôi ổn ở đó. Tôi thực sự nghĩ rằng vấn đề là SoftSerial không thể đối phó với tốc độ baud 115k.
mvermand

1
Đặc biệt là rất kén chọn, thêm một tụ điện nhỏ giữa vcc và mặt đất. Tôi cũng cấp nguồn cho tôi từ nguồn điện bên ngoài và đang trải nghiệm khởi động lại.
NccWarp9
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.