Chuẩn bị
- Linh kiện cần thiết
- ESP32-C3 SuperMini (ESP32-C3 SuperMini datasheet.pdf). Ban đầu linh kiện này được sử dụng do nhỏ gọn và đủ mạnh để có thể nhét vào trong khung in 3D.
- Module thẻ nhớ TF V474 và thẻ nhớ MicroSD 2GB. Dùng để lưu trữ dữ liệu vì bộ nhớ trong của ESP32 C3 là rất nhỏ (4MB).
- Module khuếch đại MAX98357A và loa 4ohm 3W. Chắc chắn là dùng để phát âm thanh rồi. Nhưng cần dùng 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.
- Pin 3.7v và mạch sạc HW-373. Chắc chắn là để cấp nguồn chứ còn làm gì nữa.
- Cảm biến chạm TTP223. Để người dùng có thể tương tác với robot (pet mà :)))))
- Màn hình 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 và plugin PlatformIO. Chắc chắn là dùng để lập trình rồi.
- 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
Tiêu chí | I2C (Inter-Integrated Circuit) | SPI (Serial Peripheral Interface) | UART (Universal Asynchronous Receiver/Transmitter) |
Số dây cần | 2 (SDA, SCL) | 4+ (SCK, MOSI, MISO, CS/SS) | 2 (TX/RX) |
Kiểu giao tiếp | Đồng bộ (có clock) | Đồng bộ (có clock) | Không đồng bộ (không cần clock) |
Số thiết bị | +++ (thiết bị có địa chỉ riêng) | +++ (mỗi thiết bị cần một dây CS riêng) | 1 master vs 1 slave |
Tốc độ | Thấp (100kHz - vài MHz) | Rất cao (vài MHz đến vài chục MHz) | Thấp (9.6kbps - vài Mbps) |
Độ phức tạp | Ít dây => dễ nối | Phức tạp, tốn chân GPIO | Ít dây => dễ nối |
Ưu điểm | Tiết kiệm chân | Tốc độ cao | Đơn giản |
Nhược điểm | Tốc độ hạn chế | Thiết kế phức tạp | Chỉ có thể kết nối 1 - 1 |
Ứng dụng | Cảm biến, màn hình OLED nhỏ.... | Màn hình TFT, thẻ nhớ,... | Giao tiếp với PC, GPS, GSM... |
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)