Skip to content

Latest commit

 

History

History
179 lines (138 loc) · 9.88 KB

README.vi.md

File metadata and controls

179 lines (138 loc) · 9.88 KB

ESP32 RPI FLASHER

flasher tool example flasher tool example

Ngôn ngữ: Tiếng Anh

Giới thiệu

Khi sản xuất hàng loạt các sản phẩm sử dụng ESP32 chúng ta cần phải thiết kế công cụ nạp chương trình cho sản phẩm một cách nhanh nhất có thể. Chúng ta có một số cách để tối ưu hoá và tăng tốc độ nạp cho ESP32 như sau:

  • Nạp cùng lúc nhiều sản phẩm
  • Giảm dung lượng chương trình cần nạp cho ESP32
  • Tăng tốc độ tải chương trình
  • Tự động hoá các bước nạp (tự động vào chế độ bootloader...)

ESP RPI FLASHER là một bộ công cụ hỗ trợ nạp nhiều board mạch ESP32 cùng lúc bao gồm:

  • Mạch nạp CP2102 tốc độ cao, hỗ trợ tốc độ nạp đến 2Mbps
  • Chương trình chạy trên Raspberry Pi có thể sử dụng nhiều mạch nạp CP2102 cùng lúc

flasher tool example

Các tính năng của chương trình chạy trên Raspberri Pi như sau:

  • Tự động nhận biết mạch nạp đang được kết nối (có thể cắm nhiều mạch nạp qua cổng USB)
  • Thay đổi firmware cho ESP32 một cách dễ dàng bằng file cấu hình
  • Cho phép nạp lại các board nạp thất bại.

Chuẩn bị

Các nút chức năng và đèn báo

Chức năng
Flash Button Nhấn để nạp chương trình
Reflash Button Nhấn để nạp lại cho các board nạp lỗi
Reboot Button Nhấn để khởi động lại Raspberry
Flash LED Báo thiết bị đang nạp chương trình
Reflash LED Báo có board nạp bị lỗi
Ready LED Báo raspberry sãn sàng được sử dụng

Các bước thực hiện

  • Bước 1: Kết nối phần cứng thiết bị
  • Bước 2: Cài đặt hệ điều hành Raspbian cho raspberry
  • Bước 3: Cài đặt script cho raspberry
  • Bước 4: Thiết lập tự động chạy script khi khởi động raspberry

Bước 1: Kết nối phần cứng thiết bị

Sơ đồ nối dây

Wiring

Raspberry Pin
Flash Button 16
Reflash Button 20
Reboot Button 21
Flash LED 12
Reflash LED 7
Ready LED 8

Tham khảo bảng mạch điều khiển sau khi được hàn cố định

wiring complete

Bước 2: Cài đặt hệ điều hành cho Raspberry

  • Tải bản Raspbian mới nhất tại đây.
  • Giải nén file mới tải về (file sau khi giải nén có đuôi .img).
  • Cắm thẻ nhớ vào máy tính, mở terminal lên và thực hiện lệnh sudo fdisk -l
  • Xác định tên disk khi cắm thẻ nhớ, thông thường là /dev/mmcblk0.
  • Tiếp tục thực hiện các lệnh:
    • cd Downloads/
    • sudo dd bs=4M if=2017-07-05-raspbian-jessie-lite.img of=/dev/mmcblk0
  • Lưu ý: Lệnh cd Downloads/ dùng để đi đến thư mục chứa file cài đặt.
  • Sau khi thực hiện xong thì chúng ta có thẻ nhớ có thể khởi động được Raspbian.

Tham khảo: Cách cài đặt hệ điều hành raspbian cho raspberry.

Kết nối Wifi và SSH tới Raspberry PI

  • Rút thẻ nhớ vừa khởi tạo ra, cắm lại vào máy tính. Lúc này trên máy Linux/Ubuntu sẽ mount 2 phân vùng, phân vùng boot và phân vùng rootfs.
  • Truy cập tới phân vùng rootfs, truy cập vào thư mục /etc/wpa-supplicant/ và file wpa-supplicant.conf trong thư mục này, ta thực hiện:
    • Di chuyển đến thư mục /etc/wpa-supplicant/
    • Mở terminal tại thư mục trên và thực hiện lệnh sudo nano wpa-supplicant.conf
    • Sửa file với nội dung như sau:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
  ssid="your ssid"
  psk="your pass"
}
  • Từ tháng 11/2016, Raspberry đã khóa SSH khi khởi động. Để mở khóa SSH, cần tạo 1 file ssh (lưu ý: file này không có phần đuôi mở rộng) trong phân vùng boot của SD Card.
  • Cắm thẻ nhớ vào RPI và chờ khởi động trong khoảng 1 phút.
  • Tìm địa chỉ IP của raspberry bằng cách đăng nhập vào trang cấu hình của Modem WiFi (ví dụ: http://192.168.1.1). Hầu hết tất cả các modem sẽ hiển thị DHCP Client list, tìm cái nào có host name là raspberrypi, lấy IP đó, ví dụ 192.168.1.12. Ngoài ra, một số phần mềm hỗ trợ scan IP như: Angry IP Scanner.
  • Mở terminal lên, ssh vào địa chỉ IP của raspberry: ssh [email protected] và gõ mật khẩu: raspberry (Lưu ý máy tính cần sử dụng chung mạng với raspberry).
  • Vậy là đã hoàn thành quá trình cài đặt Raspbian cho Raspberry Pi thông qua Linux/Ubuntu.

Bước 3: Cài đặt script cho raspberry

  • Mở terminal lên, ssh vào Raspberry bằng lệnh ssh [email protected] và gõ mật khẩu: raspberry.
  • Clone dự án bằng lệnh: git clone --recursive https://github.com/tuanpmt/esp_rpi_flasher.git

Lưu ý: Mặc định, dự án cần được lưu tại thư mục /home/pi, nếu muốn lưu script vào vị trí khác, tham khảo Cấu hình đường dẫn thư mục.

  • Cài đặt python và cung cấp firmware vào đúng thư mục (sử dụng firmware mẫu):
sudo pip install -r requirements.txt

Bước 4: Thiết lập tự động chạy script khi khởi động raspberry

  • Sau bước cài đặt script cho raspberry, kiểm tra đường dẫn thư mục hiện tại bằng lệnh: $PWD (đường dẫn mặc định là /home/pi/esp_rpi_flasher)
  • Gõ lệnh sudo nano /home/pi/.bashrc để edit file .bashrc
  • Thêm nội dung sau vào dòng cuối của file .bashrc
echo Running at boot 
sudo /usr/bin/python3 /home/pi/esp_rpi_flasher/flasher.py &

Trong đó: /home/pi/esp_rpi_flasher/flasher.py là đường dẫn mặc định của dự án, nếu đã lưu script vào vị trí khác, tham khảo Cấu hình đường dẫn thư mục

  • Nhấn Ctrol + x để save và reboot raspberry bằng lệnh sudo reboot.

Tham khảo thêm một số cách chạy script khi khởi động raspbian tại đây

Lưu ý

Các thiết lập cơ bản và firmware sẽ được lưu trong đường dẫn /boot/firmware theo cấu trúc như sau:

boot
├──firmware
    ├──config.ini
    ├──encrypted
        ├──app-encrypted.bin
        ├──bootloader-reflash-digest-encrypted.bin
        ├──ota_data_initial-encrypted.bin
        ├──partitions-encrypted.bin
        ├──flash_encryption_key_1.0.0.alpha.4.bin
        ├──secure-bootloader-key-256.bin
    ├──normal
        ├──app.bin
        ├──bootloader.bin
        ├──ota_data_initial.bin
        ├──partitions.bin

Trong đó:

  • config.ini: File lưu trữ các cấu hình như: chân LED, nút nhấn và đường dẫn firmware,...
  • encrypted: Thư mục chứa firmware đã được mã hoá (sử dụng khi nạp chương trình có secure boot and flash encryption).
  • normal: Thư mục chứa firmware chưa được mã hoá (sử dụng khi nạp chương trình thông thường).

Secure boot and flash encryption

Mặc định script sẽ nạp chương trình theo cách thông thường (không có secure boot and flash encryption). Vào thư mục /boot/firmware/ mở file config.ini và chỉnh sửa isEncrypt = True để nạp chương trình có secure boot and flash encryption.

Cấu hình đường dẫn thư mục

Mặc định script cần được lưu theo đường dẫn home/pi tuy nhiên, nếu muốn lưu script trong thư mục khác cần chỉnh sửa:

  • Khi hoàn thành bước 1, bước 2, bước 3, trong thư mục /boot/firmware/ mở file config.ini và thay đổi đường dẫn của projectPath
  • Ở bước 4: Tự động chạy script khi khởi động raspbian, cần thay đổi đường dẫn đến file flasher.py

Cấu hình chân LED và Button của Raspberry

LED và nút nhấn đã được khai báo mặc định như Bước 1: Kết nối phần cứng thiết bị nếu bạn muốn thay đổi chân kết nối LED và Button với raspberry, tiến hành vào thư mục /boot/firmware/ mở file config.ini và thay đổi chân LED và Button cho phù hợp.

Video hướng dẫn

esp-rpi-flasher

Tài liệu tham khảo