Như đã biết để lập trình hay nạp code (firmware) cho ESP thì chúng ta hay sử dụng IDE Arduino, nó vừa có thể lập trình, biên dịch (compile) hay nạp code (upload) xuống Kit ESP. Tuy nhiên nếu 1 ngày 1 người bạn của bạn hay người lạ gửi cho bạn chỉ có file code đã được biên dịch (file .bin or .hex, mà với esp thì biên dịch là ra file .bin) để nạp cho ESP. Thì lúc này chúng ta sẽ nạp file .bin đó vào ESP bằng cách như thế nào, đó chính là nội dung của bài chia sẻ này. Mình sẽ hướng dẫn các bạn dùng tool, kết hợp vài lệnh command line là có thể nạp file .bin xuống ESP.
1. Chuẩn bị
- Kit esp32 hoặc esp8266 (Mình dùng thử với esp32).
- 1 file code firmware để nạp (file .bin).
- Python 2.7 (Dùng version 2.7 nhé, dùng version 3.x là không được đâu).
2. Tiến hành
- Tải và cài đặt python 2.7 ở đây nếu chưa có: https://www.python.org/downloads/release/python-2715/
- Nếu máy bạn chưa có driver CP210x cho kit ESP thì tải tại đây và cài để nhận cổng COM:
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
ESP thường sử dụng chip CP2102 để giao tiếp PC.
- Để biên dịch code trên IDE Arduino có thể xuất ra file .bin thì làm theo hướng dẫn:
- Vào preferences của IDE tích chọn Compilation
- Khi biên dịch code nó sẽ tạo file .bin theo đường dẫn, để xem đường dẫn đó thì xem trong phần log
- Vào Run của window chạy cmd.
- Chuyển địa chỉ hiện thời theo địa chỉ cài đặt python trong máy của bạn.
Mình dùng: cd C:\Python27\Scripts
- Chạy để cài esptool:
pip install esptool
Nếu chạy command trên không được thì bạn có thể thử: pip2 install esptool
- Nạp firmware cho esp32 bằng lệnh:
esptool.py --chip esp32 --port
<serial_port> write_flash -z 0x10000 <esp_file.bin>
– Với esp8266 thì đổi esp32 thành esp8266
– <Serial_port> là cổng COM của esp, vd: COM1, COM2….
– <esp_file.bin> là địa chỉ file .bin firmware cần nạp.
Ví dụ: esptool.py –chip esp32 –port COM3 write_flash -z 0x10000 C:\Users\Wiki\AppData\Local\Temp\arduino_build_500706 \ sketch_jun08a.ino.bin
Chú ý: Bạn nên để ý địa chỉ ghi vào flash cho đúng, với esp của mình mình thấy nó nạp firmware từ địa chỉ 0x10000 nên mình dùng địa chỉ này, nếu bạn ghi sai địa chỉ flash, thì esp sẽ reset liên tục, không chạy được. Kinh nghiệm để mình biết địa chỉ ghi này thì mình dùng IDE arduino mình nạp 1 code chạy trước, để biết cái địa chỉ này (Như ảnh bên dưới).
- Như vậy là đã nạp firmware xong. Bạn check lại thử nhé.
3. Kết luận
Tuy cách trên ít sử dụng tới, bởi đa số các bạn đều làm ở dạng code trực tiếp trên IDE rồi nạp luôn, hay có sẵn sourcecode. Chứ hiếm khi chỉ có file .bin để nạp thôi, thường cái này sẽ ở mức độ bảo mật, người khác không muốn chia sẻ sourcecode mà chỉ chia sẻ file bin để nạp. Nhưng cũng có khi loại kiểu này dành cho các bạn không chuyên, không code, không biết sử dụng IDE Arduino mà chỉ cần nạp firmware về để chạy esp, làm các ứng dụng IoT vui vui. Hy vọng bài chia sẻ trên sẽ giúp ích cho những ai đang cần.
Xem thêm: Tổng hợp hướng dẫn Internet of Things với NodeMCU ESP8266 và ESP32
Chúc bạn thành công!
Tấn Lĩnh – Wiki