Hướng dẫn nạp file binary (.bin) cho ESP8266

Mô tả dự án: 

Đôi khi chúng ta có file nạp cho chip .hex, hoặc các bạn làm xong một dự án trên board Arduino, các bạn không cần bootloader (nhất là chíp Atmega8), và các bạn muốn phát triển trên một bảng mạch riêng thì lúc đó ta sẻ nạp trực tiếp file .hex cho chip, và hôm nay mình sẻ hướng dẩn các bạn nào chưa biết một cách nạp file .hex (firmware) đơn giản và an toàn. Có rất nhiều cách nạp firmware các bạn có thể tìm hiểu trên Internet.

Chuẩn bị phần mềm

Bạn cần tải về phần mềm ESP8266 Flasher. Như vậy là đủ phần mềm để nạp firmware rồi.

  • Đối với Windows x86 (32 bit), bạn tải về tại đây.
  • Đối với Windows x64 (64 bit), bạn tải về tại đây.

Mirror cho hai phiên bản nếu các đường dẫn trên không hoạt động. https://drive.google.com/open?id=1xXH3aMSa1AJEljH2515n7CTkzPNzp_NH

 

Trích xuất file binary

Nếu bạn đã có một file binary rồi thì có thể bỏ qua bước này.

Bạn có thể tải một file binary tại bài viết (Phòng chống) Nghệ thuật hắc ám với ESP8266 - Phần 1: Thích thì phát beacon hoy

Hoặc bạn có thể tự xuất cho mình một chương trình Arduino đơn giản. Trong ví dụ này, tôi sẽ làm đèn TX - GPIO2 (đèn nhỏ nhỏ trên module ESP8266) sáng với hiệu ứng blink.

//Code Arduino cho ESP8266

void setup() {
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);   
  delay(1000);                    
  digitalWrite(2, LOW); 
  delay(1000);                      
}

Bạn nhấn tổ hợp phím Ctrl + Alt + S để lưu code Arduino thành file .bin. Các bạn có thể xem như trên hình nếu muốn rõ hơn nhé. Sau khi đã biên dịch thành công, sẽ có một file .bin sẽ xuất hiện trong thư mục chứa code.

Đây là file biên dịch (.bin) cho NodeMCU. Đối với board ESP8266v1, bạn cần chỉnh lại thông tin board cho phù hơp. Ví dụ: 

Okay, đến phần nạp code thôi.

Nạp code

Cũng như việc nạp code ESP8266 bình thường, bạn cũng cần chuẩn bị mạch nạp (mạch USB-to-Serial, ví dụ CP210x). Còn đối với các module NodeMCU thì đã có sẵn mạch nạp rồi.

Quy tắc chung khi nạp firmware hay nạp code cho ESP8266 là:

  • ESP8266 sẽ chạy chương trình của bạn nếu cả chân GPIO0 và chân RESET được thả (không bị nhấn).
  • ESP8266 sẽ bị reset khi nút reset được thả.
  • ESP8266 sẽ chấp nhận bị nạp chương trình khi cả chân GPIO0 và chân RESET được nhấn, sau đó thả chân RESET ra. Nói cách khác là khi gắn điện cho ESP8266, bạn phải đưa GPIO xuống LOW.

Như vậy, để nạp code cho ESP8266, bạn cần đưa GPIO xuống LOW sau đó cấp điện (gắn vào máy tính ví dụ thế). Sau đó, mở chương trình ESP8266Flasher nào!

Bạn cần chỉnh các thông số cần thiết như sau:

Chỉnh sửa tab Config để cập nhập đường dẫn đến file binary.

Chỉnh sửa tab Advanced để cập nhật các thông tin về:

  • baudrate nạp code (tùy thuộc và mạch nạp)
  • flash size (NodeMCU: 4MB, ESP8266v1 - 512KB, ESP8266v12 - 4MV, ESP8266v7 - 512KB).
  • flash speed (40mhz hoặc thấp hơn là chắc ăn).
  • SPI Mode chọn DIO.

Quay lại tab Operation bạn nhấn nút Flash và nó hiện ra các địa chỉ MAC như hình dưới là quá trình nạp sẽ diễn ra và thành công, còn lại bạn thử rút mạch nạp ra rồi nối GPIO0 xuống LOW rồi gắn vào máy tính nhé. Cứ lắp lại quy trình là ổn thôi à.

Nó hiển thị như thế này là xong rồi!

Chúc các bạn thành công!

lên
2 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Tiết kiệm RAM trong Arduino?

Như đã nói ở bài trước Cách lưu trữ các biến số, mảng, chuỗi trong Arduino, chúng ta đã biết rằng các loại biến trong Arduino được lưu ở những vùng nhớ khác nhau trong RAM, và khi hết RAM thì chương trình của bạn sẽ die một cách bất ngờ - vì lỗi không nằm trong code.

Vì vậy, hôm nay, chúng ta sẽ tìm cách giải quyết vấn đề "làm thế nào để giảm thiểu việc sử dụng RAM trong một sketch Arduino?".

lên
11 thành viên đã đánh giá bài viết này hữu ích.

Tạo một quy trình công nghiệp với các bước bằng Arduino

Như đã nói ở vấn đề trước Xử lý nhiều tiến trình cùng một lúc trên Arduino - Có thể hay không?, chúng ta có thể xử lý nhiều tiến trình trên Arduino theo cơ chế bất đồng bộ. Tuy nhiên, một vấn đề khá hay mà từ các bình luận ở bài viết đó, mình mới ngộ ra được, đó là làm thế nào để xây dựng một quy trình công việc thực sự trên một board mạch Arduino. Thiết nghĩ, điều đó, hoàn toàn có thể thực hiện được, và xin chia sẻ với mọi người qua bài viết này nhằm giúp tất cả chúng ta có một thư viện chuẩn để làm những công việc phức tạp hơn.

lên
10 thành viên đã đánh giá bài viết này hữu ích.