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
3 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ả

Làm hiệu ứng LED nhấp nháy rượt đuổi nhau đơn giản với 5 LED

Nhằm mang đến một ví dụ vui về các đèn LED, mình đã viết bài này. Hi vọng, các newbie cảm thấy thích thú với những gì Arduino làm được và cùng chúng tớ phát triển Arduino. Đây là một ví dụ cực kì dễ vì vậy đừng ngại gì mà không lắp thử, bạn nhé!

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

Lưu các biến CHỈ ĐỌC với PROGMEM

Trong bài Tiết kiệm RAM trong Arduino?, chúng ta đã biết cách lưu chuỗi hằng vào bộ nhớ FLASH thay cho việc lưu hết bọn chúng vào RAM. Như vậy, một hằng chuỗi có thể được lưu vào bộ nhớ FLASH thay vì lưu vào RAM. Vậy, câu hỏi đặt ra là, những biến hằng khác (hằng số, hẳng mảng, hẳng số thực) có thể được lưu vào FLASH thay vì vào RAM hay không?

Trong thực tế, các biến hằng (trừ hằng chuỗi) hầu hết chỉ tốn vài chục byte để lưu trữ nên RAM, nên chúng ta cũng chưa gặp vấn đề gì trong việc lưu trữ hằng số hay hằng mảng cả. Nhưng thỉnh thoảng, có những lúc, ta phải tìm cách lưu trữ chúng ở một nơi khác, ví dụ Bài 12: Phát nhạc bằng Arduino với một cái loa hoặc buzzer.

Chần chừ gì nữa, biết muốn phám khá khả năng của Arduino - hay không?

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