# Chuẩn bị

[![20251011_151947~2[1].jpg](https://knowledge.thanhdv.com/uploads/images/gallery/2025-10/scaled-1680-/20251011-15194721.jpg)](https://knowledge.thanhdv.com/uploads/images/gallery/2025-10/scaled-1680-/20251011-15194721.jpg)

- Linh kiện cần thiết
- **ESP32-C3 SuperMini**<span style="white-space: pre-wrap;"> (</span>[ESP32-C3 SuperMini datasheet.pdf](https://knowledge.thanhdv.com/attachments/1)<span style="white-space: pre-wrap;">). Ban đầu linh kiện này được sử dụng do </span>**nhỏ gọn**<span style="white-space: pre-wrap;"> và </span>**đủ mạnh**<span style="white-space: pre-wrap;"> để có thể nhét vào trong khung in 3D.</span>
- <span style="white-space: pre-wrap;">Module thẻ nhớ </span>**TF V474**<span style="white-space: pre-wrap;"> và thẻ nhớ </span>**MicroSD 2GB**. Dùng để lưu trữ dữ liệu vì bộ nhớ trong của ESP32 C3 là rất nhỏ (4MB).
- <span style="white-space: pre-wrap;">Module khuếch đại </span>**MAX98357A** <span style="white-space: pre-wrap;">và </span>**loa 4ohm 3W**<span style="white-space: pre-wrap;">. Chắc chắn là dùng để phát âm thanh rồi. Nhưng cần dùng </span>**MAX98357A** vì tín hiệu điện đầu ra của ESP32 là rất nhỏ không đủ để phát âm thanh qua loa.
- <span style="white-space: pre-wrap;">Pin 3.7v và mạch sạc </span>**HW-373.**<span style="white-space: pre-wrap;"> Chắc chắn là để cấp nguồn chứ còn làm gì nữa.</span>
- <span style="white-space: pre-wrap;">Cảm biến chạm </span>**TTP223**. Để người dùng có thể tương tác với robot (pet mà :)))))
- <span style="white-space: pre-wrap;">Màn hình </span>**TFT 1.3in 240\*240 IC ST7789VW.** Để hiển thị biểu cảm của robot. Ban đầu sử dụng màn hình OLED đơn sắc 0.96in nhưng gặp 2 vấn đề:
    - Giao tiếp I2C tốc độ chậm hiển thị hình ảnh không được mượt.
    - Màn hình đơn sắc hiển thị hình ảnh không có chi tiết, xấu.

### Phần mềm cần thiết

- **VSCode** <span style="white-space: pre-wrap;">và plugin </span>**PlatformIO.** <span style="white-space: pre-wrap;"> Chắc chắn là dùng để lập trình rồi.</span>
    - VSCode được sử dụng do mình đã quen dùng từ trước
    - Mạnh hơn Ardruino IDE. Có gợi ý code...
    - Nhẹ hơn Clion nhưng vẫn đầy đủ tính năng cần thiết

### Một vài kiến thức khác với ESP32

#### Giao tiếp với ESP32

<table id="bkmrk-ti%C3%AAu-ch%C3%ADi2c-%28inter-i" style="border-style: dotted;"><colgroup><col></col><col></col><col style="width: 216px;"></col><col></col><col></col></colgroup><tbody><tr><td>**Tiêu chí**

</td><td>**I2C (Inter-Integrated Circuit)**

</td><td>**I2S (Inter-IC Sound)**

</td><td>**SPI (Serial Peripheral Interface)**

</td><td>**UART (Universal Asynchronous Receiver/Transmitter)**

</td></tr><tr><td>**Số dây cần**

</td><td>2 (SDA, SCL)

</td><td>3 (BCLK, LRCLK/WS, DIN/DOUT) có thể có thêm MCLK

</td><td>4+ (SCK, MOSI, MISO, CS/SS)

</td><td>2 (TX/RX)

</td></tr><tr><td>**Kiểu giao tiếp**

</td><td>Đồng bộ (có clock)

</td><td>Đồng bộ (có clock)

</td><td>Đồng bộ (có clock)

</td><td>Không đồng bộ (không cần clock)

</td></tr><tr><td>**Số thiết bị**

</td><td>+++ (thiết bị có địa chỉ riêng)

</td><td>1 master vs 1 slave hoặc 1 master nhiều slave với thiết bị chia

</td><td>+++ (mỗi thiết bị cần một dây CS riêng)

</td><td>1 master vs 1 slave

</td></tr><tr><td>**Tốc độ**

</td><td>Thấp (100kHz - vài MHz)

</td><td>Cao (vài MHz tùy cấu hình)

</td><td>Rất cao (vài MHz đến vài chục MHz)

</td><td>Thấp (9.6kbps - vài Mbps)

</td></tr><tr><td>**Độ phức tạp**

</td><td>Ít dây =&gt; dễ nối

</td><td>Phức tạp, cần cấu hình và định dạng dữ liệu đúng

</td><td>Phức tạp, tốn chân GPIO

</td><td>Ít dây =&gt; dễ nối

</td></tr><tr><td>**Ưu điểm**

</td><td>Tiết kiệm chân  
Dễ thêm thiết bị

</td><td>Chuẩn hóa cho audio  
Chất lượng cao  
<span style="white-space: pre-wrap;">Hỗ trợ DMA </span>

</td><td>Tốc độ cao  
Truyền được dữ liệu lớn

</td><td>Đơn giản

</td></tr><tr><td>**Nhược điểm**

</td><td>Tốc độ hạn chế  
Dễ xung đột

</td><td>Chỉ dùng cho Audio  
Khó quản lý với buffer audio lớn  
Dễ nhiễu trên dây dài

</td><td>Thiết kế phức tạp  
Tốn chân

</td><td>Chỉ có thể kết nối 1 - 1

</td></tr><tr><td>**Ứng dụng**

</td><td>Cảm biến, màn hình OLED nhỏ....

</td><td>Xử lý âm thanh (thu, phát, truyền...)

</td><td>Màn hình TFT, thẻ nhớ,...

</td><td>Giao tiếp với PC, GPS, GSM...

</td></tr></tbody></table>

#### Các chân trên ESP32

Trên ESP32 có nhiều chân sẽ được dùng chung với nhiều thiết bị khác nhau. Nên cân nhắc để hàn chân sao cho hợp lý.

##### Dùng chung cho tất cả các module

Tất cả các module đều cần sử dụng đến nguồn (có thể trên mạch ESP32 hoặc nguồn cấp ngoài). Cần cân nhắc để nối chung hoặc chọn dây nguồn phù hợp.

- 5V
- 3.3V
- GND

##### Giao tiếp

Các chân giao tiếp này nằm chung với các chân GPIO có đánh số. Cần check datasheet để biết chính xác nó nằm ở đâu

- I2C (SDA, SCL)
- SPI (SCK. MOSI, MISO, CS/SS)
- UART (RX/TX)