Lập trình vi điều khiển: ESP32 nâng cao và các nền tảng khác

Nhóm bài lập trình vi điều khiển cho người đã viết được chương trình đầu tiên và muốn chương trình chạy ổn định, gọn và dễ mở rộng.

  • Lập trình ESP32 nâng cao: FreeRTOS, timer phần cứng, watchdog, LittleFS, bảng phân vùng flash, PSRAM, HTTPS, âm thanh I2S.
  • ESP8266 và NodeMCU: ESP-01, NodeMCU, Wemos D1 R2: nạp code bằng Arduino IDE, chế độ khởi động, sơ đồ chân, so sánh với ESP32.
  • MicroPython: cài firmware, Thonny, boot.py và main.py tự chạy, đọc cảm biến, bài MicroPython cho học sinh.

Thứ tự nên đọc và các nhóm chủ đề khác có ở Góc kỹ thuật.

boot.py và main.py trong MicroPython: chương trình tự chạy khi cấp nguồn, chế độ an toàn, ghi lỗi
boot.py và main.py trong MicroPython: chương trình tự chạy khi cấp nguồn, chế độ an toàn, ghi lỗi

boot.py và main.py trong MicroPython: thứ tự chạy khi khởi động, nên đặt gì vào mỗi file, chế độ an toàn bằng nút BOOT, bắt lỗi và ghi lỗi ra file, watchdog, chép file bằng Thonny, mpremote.

Cách nạp code cho ESP-01 và ESP-01S bằng USB-TTL, đế nạp: sơ đồ chân và lỗi thường gặp
Cách nạp code cho ESP-01 và ESP-01S bằng USB-TTL, đế nạp: sơ đồ chân và lỗi thường gặp

Cách nạp code cho ESP-01, ESP-01S: sơ đồ 8 chân, khác nhau giữa hai bản, nối USB-TTL đúng cách, cấp nguồn 3,3 V đủ dòng, chế độ nạp GPIO0, cài Arduino IDE, chương trình đầu tiên và lỗi hay gặp.

Cấu trúc dự án ESP-IDF: CMakeLists, component, Kconfig, menuconfig, sdkconfig cho người từ Arduino
Cấu trúc dự án ESP-IDF: CMakeLists, component, Kconfig, menuconfig, sdkconfig cho người từ Arduino

Giải thích cấu trúc một dự án ESP-IDF qua ví dụ: ba loại CMakeLists.txt, viết component riêng, thêm menu bằng Kconfig vào menuconfig, sdkconfig và sdkconfig.defaults, các bước idf.py build.

PSRAM trên ESP32 là gì: bo nào có, nhanh chậm ra sao, khi nào cần và cách cấp phát bộ nhớ
PSRAM trên ESP32 là gì: bo nào có, nhanh chậm ra sao, khi nào cần và cách cấp phát bộ nhớ

PSRAM là RAM ngoài chip của ESP32: module nào có, chậm hơn SRAM bao nhiêu, dữ liệu nào nên đặt vào PSRAM, ps_malloc và heap_caps_malloc, chương trình kiểm tra bộ nhớ trên mọi bo.

Bảng phân vùng flash ESP32: app, OTA, NVS, LittleFS, chọn Partition Scheme và tự đặt partitions.csv
Bảng phân vùng flash ESP32: app, OTA, NVS, LittleFS, chọn Partition Scheme và tự đặt partitions.csv

Bảng phân vùng flash ESP32 gồm những gì, so sánh các Partition Scheme có sẵn, vì sao OTA cần hai ô app, tự đặt partitions.csv đúng quy tắc, chương trình đọc bảng đang nạp.

HTTPS trên ESP32: nhúng chứng chỉ gốc đúng cách và vì sao setInsecure() nguy hiểm
HTTPS trên ESP32: nhúng chứng chỉ gốc đúng cách và vì sao setInsecure() nguy hiểm

HTTPS bảo vệ được gì, chuỗi tin cậy của chứng chỉ, nhúng chứng chỉ gốc ISRG Root X1 vào ESP32, vì sao setInsecure() mở đường cho tấn công xen giữa, chương trình thử ba trường hợp.

Phát âm thanh trên ESP32: PWM, DAC 8 bit và I2S với MAX98357A, tạo sóng sin không cần thư viện
Phát âm thanh trên ESP32: PWM, DAC 8 bit và I2S với MAX98357A, tạo sóng sin không cần thư viện

So sánh ba cách phát âm thanh trên ESP32: PWM, DAC 8 bit có DMA và I2S với MAX98357A; tạo sóng sin bằng bảng tra và bộ cộng pha, tránh tiếng tạch, phát giai điệu mẫu.

LittleFS trên ESP32: lưu file trong flash, ghi log CSV xoay vòng và phục vụ trang web qua Wi-Fi
LittleFS trên ESP32: lưu file trong flash, ghi log CSV xoay vòng và phục vụ trang web qua Wi-Fi

LittleFS nằm ở đâu trong flash ESP32, khác Preferences và thẻ nhớ thế nào, đọc ghi file, ghi log CSV xoay vòng để flash bền, phục vụ trang web và file log từ LittleFS.

Watchdog trên ESP32: vì sao mạch tự khởi động lại, đọc lý do reset và tự cứu khi chương trình treo
Watchdog trên ESP32: vì sao mạch tự khởi động lại, đọc lý do reset và tự cứu khi chương trình treo

Watchdog là gì, task watchdog, interrupt watchdog, panic và brownout trên ESP32, in lý do khởi động lại bằng esp_reset_reason, đếm số lần khởi động, cho task tự đăng ký watchdog.

Timer phần cứng trên ESP32: ngắt định kỳ chính xác tới micro giây, API mới của gói esp32 3.x
Timer phần cứng trên ESP32: ngắt định kỳ chính xác tới micro giây, API mới của gói esp32 3.x

Timer phần cứng ESP32 hoạt động thế nào, API timerBegin, timerAlarm của gói esp32 3.x, quy tắc viết hàm ngắt, thí nghiệm so ngắt timer 500 µs với vTaskDelay(1) khi CPU bận.

Queue, semaphore, mutex trong FreeRTOS: chia sẻ dữ liệu an toàn giữa các task trên ESP32
Queue, semaphore, mutex trong FreeRTOS: chia sẻ dữ liệu an toàn giữa các task trên ESP32

Vì sao biến dùng chung bị sai trên ESP32 hai nhân, queue chuyển dữ liệu, semaphore để ngắt báo cho task, mutex bảo vệ Serial, thí nghiệm hai nhân cùng tăng một biến.

FreeRTOS trên ESP32: task, độ ưu tiên, hai nhân, vTaskDelay và vTaskDelayUntil cho người mới
FreeRTOS trên ESP32: task, độ ưu tiên, hai nhân, vTaskDelay và vTaskDelayUntil cho người mới

Task trong FreeRTOS là gì, bốn trạng thái, độ ưu tiên, chọn nhân với xTaskCreatePinnedToCore, stack tính bằng byte, vTaskDelay và vTaskDelayUntil, chương trình ba task trên hai nhân.


Hiển thị 1 - 12 / 19 kết quả

Đã thêm vào giỏ hàng