Lập Trình ESP32 Từ A Tới Z - Khuê Nguyễn
Có thể bạn quan tâm
Lập trình ESP32 từ A tới Z là một serie giúp các bạn làm quen, tiếp cận với dòng chip ESP32 hiện đang rất nổi tiếng hiện nay. Nếu bạn có mục tiêu trở thành một lập trình viên IOT thì không thể bỏ qua được dòng chip này.
Hãy cùng mình tìm hiểu về ESP32 và lý do tại sao nó đang được ưa chuộng đến vậy nhé
Table of Contents
- Giới thiệu về ESP32
- Cấu hình của ESP32
- CPU
- Hỗ trợ 2 giao tiếp không dây
- Hỗ trợ tất cả các loại giao tiếp
- Cảm biến tích hợp trên chip esp32
- Bảo mật
- Nguồn điện hoạt động
- Sơ đồ chân của ESP32 (Pinout)
- Điểm mạnh của ESP32 so với các dòng khác
- Cấu hình của ESP32
- Học lập trình ESP32 là học những gì?
- Công cụ để bắt đầu học lập trình ESP32
- Môi trường lập trình ( IDE)
- Thư viện lập trình (SDK)
- Lộ trình học ESP32
- Lập trình ESP32 với các ngoại vi cơ bản
- Lập trình ESP32 Webserver cục bộ (local webserver)
- Lập trình ESP32 với các giao thức
- Lập trình ESP32 Bluetooth
- Lập trình ESP32 giao tiếp với IOT Platform và các hệ thống khác trên Internet
- Các hướng dẫn hữu ích khi lập trình ESP32
- Lập trình ESP32 RTOS
- Các dự án lập trình ESP32 trong IOT
- Kết
Giới thiệu về ESP32
ESP32 là một vi điều khiển giá rẻ, năng lượng thấp có hỗ trợ WiFi và dual-mode Bluetooth (tạm dịch: Bluetooth chế độ kép). Dòng ESP32 sử dụng bộ vi xử lý Tensilica Xtensa LX6 ở cả hai biến thể lõi kép và lõi đơn, và bao gồm các công tắc antenna tích hợp, RF balun, bộ khuếch đại công suất, bộ khuếch đại thu nhiễu thấp, bộ lọc và module quản lý năng lượng.
ESP32 được chế tạo và phát triển bởi Espressif Systems, một công ty Trung Quốc có trụ sở tại Thượng Hải, và được sản xuất bởi TSMC bằng cách sử dụng công nghệ 40 nm. ESP32 là sản phẩm kế thừa từ vi điều khiển ESP8266.
Cấu hình của ESP32
CPU
- CPU: Xtensa Dual-Core LX6 microprocessor.
- Chạy hệ 32 bit
- Tốc độ xử lý 160MHZ up to 240 MHz
- Tốc độ xung nhịp đọc flash chip 40mhz --> 80mhz (tùy chỉnh khi lập trình)
- RAM: 520 KByte SRAM
- 520 KB SRAM liền chip –(trong đó 8 KB RAM RTC tốc độ cao – 8 KB RAM RTC tốc độ thấp (dùng ở chế độ DeepSleep).
Hỗ trợ 2 giao tiếp không dây
- Wi-Fi: 802.11 b/g/n/e/i
- Bluetooth: v4.2 BR/EDR and BLE
Hỗ trợ tất cả các loại giao tiếp
- 8-bit DACs( digital to analog) 2 cổng
- Analog(ADC) 12-bit 16 cổng.
- I²C – 2 cổng
- UART – 3 cổng
- SPI – 3 cổng (1 cổng cho chip FLASH )
- I²S – 2 cổng
- SD card /SDIO/MMC host
- Slave (SDIO/SPI)
- Ethernet MAC interface with dedicated DMA and IEEE 1588 support
- CAN bus 2.0
- IR (TX/RX)
- Băm xung PWM (tất cả các chân )
- Ultra low power analog pre-amplifier’
Cảm biến tích hợp trên chip esp32
- 1 cảm biến Hall (cảm biến từ trường)
- 1 cảm biến đo nhiệt độ
- Cảm biến chạm (điện dung) với 10 đầu vào khác nhau.
Bảo mật
- IEEE 802.11 standard security features all supported, including WFA, WPA/WPA2 and WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, up to 768-bit for customers
- Cryptographic hardware acceleration: AES, SHA-2, RSA, elliptic curve cryptography (ECC), random number generator (RNG)
Nguồn điện hoạt động
- Nhiệt độ hoạt động -40 + 85C
- Điện áp hoạt động: 2.2-3.6V
- Số cổng GPIOs : 34
Sơ đồ chân của ESP32 (Pinout)
Hiện nay module ESP32 phổ biến nhất là ESP32-WROM với dòng KIT Doit esp32 devkit v1 kinh điển khi học lập trình ESP32
Đây cũng là KIT chúng ta sẽ thực hành các bài học của ESP32.
Chi tiết về KIT bác bạn đọc bài viết:
Tổng quan về DOIT ESP32 devkit ngoại vi và sơ đồ chân
Điểm mạnh của ESP32 so với các dòng khác
Có thể nói ESP32 là sự nâng cấp hoàn hảo của ESP8266, với ESP8266 phù hợp với các dự án nhỏ và tiết kiệm chi phí. ESP32 lại phù hợp với các dự án phức tạp hơn, tốc độ xử lý cao hơn và tích hợp nhiều ngoại vi mạnh mẽ hơn.
ESP8266 là 17 chân GPIO, ADC độ phân giải 10 bit, 8 kênh PWM mềm trong khi đó ESP 32 có tới 30/36 chân GPIO, 18 kênh ADC độ phân giải 12-bit, 16 kênh PWM mềm, Touch Sensor, Hall Effect Sensor, Ethernet MAC Interface, Cảm biến nhiệt độ được tích hợp sẵn.
Về bộ nhớ ESP32 có thêm 4MB External Flash và 520KB SRAM (static random access memory) trong đó 8 KB RAM RTC tốc độ cao – 8 KB RAM RTC tốc độ thấp (dùng ở chế độ DeepSleep).
ESP32 hỗ trợ Bluetooth 4.2 và BLE (Bluetooth Low Energy). Việc hỗ trợ cả bluetooth khiến ESP32 có thể tương tác với các thiết bị như là bàn phím, chuột, điện thoại khi mà không có wifi.
Ultra Low Power giải quyết vấn đề năng lượng cho ESP bởi vì sử dụng Wi-Fi sẽ rất ngốn điện đặc biệt khi chúng ta sử dụng pin phải tính toán rất kĩ.
Ngoài ra ESP32 đang được rất nhiều các công ty trong và ngoài nước ưa chuộng, vậy nên làm chủ được dòng chip này sẽ giúp bạn kiếm được thu nhập tốt hơn là điều hiển nhiên. Vậy thì còn chần chừ gì mà không học lập trình ESP32 nhỉ?
Học lập trình ESP32 là học những gì?
Nếu bạn từng học qua các dòng chip như 8051, AVR, PIC, STM32, STM8 thì khi học ESP32 bạn sẽ thấy nó cũng không giống lắm so với các dòng chip khác. Cụ thể như sau:
Các dòng MCU bình thường khi làm nhúng chúng ta sẽ học chủ yếu về các ngoại vi, làm chủ các ngoại vi đó như GPIO, ADC, Timer, SPI…. Nếu các bạn sử dụng các bộ thư viện (SDK) như HAL hoặc SPL thì chúng ta học cách sử dụng các API của thư viện đó. Còn nếu học sâu hơn nữa thì can thiệp vào đến phần thanh ghi, làm sao cho chương trình hiệu quả đến mức tối đa.
Học ESP32 cũng tương tự như vậy khi cũng cần nắm rõ các ngoại vi của ESP32, nhưng bên cạnh đó nắm vững được các giao thức truyền nhận thông tin như Wifi, Bluetooth mới là quan trọng nhất.
Bới vì ESP32 là chip sinh ra cho các sản phẩm IOT (Internet of Things), chính vì vậy học cách kết nối ESP32 với Internet mới là quan trọng nhất đối với dòng chip này. Ngoài ra Lowpower mode (chế độ tiết kiệm năng lượng) cho các ứng dụng dùng pin và FOTA ( Firmware over The Air) nạp firmware từ xa cũng cần thiết không kém.
Học lập trình ESP32 hiện nay đều sử dụng 2 gói thư viện chính đó là Arduino và ESP-IDF (Espressif IoT Development Framework). Việc của chúng ta là học sử dụng các API trong các gói thư viện này.
Ok, Vậy là bạn đã có cái nhìn tổng quát về cách học lập trình ESP32 rồi chứ. Tiếp sau đây hãy chuẩn bị máy tính và 1 ít $ (để mua kit ấy) và bắt đầu ngay nhé
Công cụ để bắt đầu học lập trình ESP32
Môi trường lập trình ( IDE)
Trên thế giới mọi người lập trình ESP32 thông qua 2 IDE là VS Code và Arduino.
Với Arduino thì quá là nổi tiếng rồi, thế nhưng có những điểm hạn chế như:
- Không có khả năng tự hoàn thiện code, gợi ý (dẫn đến sai chính tả tùm lum) và mình cực ghét bởi điểm này
- Không thể view source các thư viện include vào. Dẫn tới việc bạn không biết dùng thư viện đó như thế nào, và phải dùng 1 trình xoạn thảo khác đi mở ra
- Không thể tìm tới hàm gốc. Khi lập trình bạn quên mất việc truyền tham số nào vào thì với VS Code chỉ cần thao tác đơn giản là Ctr + Click, nó sẽ mở file chứa hàm gốc đó lên, thế nhưng Arduino thì không có điều này ảnh hưởng rất nhiều tới quá trình code của bạn
- Không cool ngầu và Pro. Một điều chắc chắn là khi bạn sử dụng VS code, bạn sẽ chả muốn dùng lại arduino đâu
Vậy nên mình sử dụng VS Code và Extension Platform io để lập trình ESP32 ( kể cả lập trình Arduino cũng vẫn được nhé). Hướng dẫn cài đặt các bạn đọc trong bài:
Hướng dẫn cài đặt Platform IO trên VS code lập trình ESP32
Thư viện lập trình (SDK)
Như mình nói ở trên có 2 gói thư viện chính đó là Arduino và ESP-IDF. Vậy ưu nhược điểm của các gói này ra sao.
Arduino: Được viết dựa trên ESP-IDF, cũng có thể nói Arduino lib là thư viện con của ESP-IDF
Điểm mạnh:
- Quen thuộc với người sử dụng Arduino
- Code nhanh dễ, có nhiều nguồn hỗ trợ
Điểm yếu:
- Không tối ưu code
- Thiếu một số chức năng
ESP-IDF: là gói thư viện do hãng phát hành, có nguyên 1 bản hướng dẫn sử dụng API, phù hợp với các bạn học được tiếng anh.
Tham khảo: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/index.html
Điểm mạnh:
- Tối ưu
- Được các nhà phát triển sử dụng trong các sản phẩm thương mại
- Tài liệu đầy đủ, chính xác
Điểm yếu:
- Ít được cộng đồng hỗ trợ hơn
Trong serie này, mình sẽ hướng dẫn các bạn bằng thư viện Arduino, lý do là dễ dàng tiếp cận hơn và các bạn có thể làm được ngay các sản phẩm không quá phức tạp sau khi hoàn thành Serie này.
Lộ trình học ESP32
Lập trình ESP32 với các ngoại vi cơ bản
Bài 1: Lập trình ESP32 GPIO Input Ouput
Bài 2: Lập trình ESP32 ADC
Bài 3: Lập trình ESP32 PWM
Bài 4: Lập trình ESP32 DAC
Bài 5: Lập trình ESP32 Ngắt Ngoài EXTI
Bài 6: Lập trình ESP32 Timer và ngắt Timer
Bài 7: Lập trình ESP32 Touch Pin
Bài 8: Lập trình ESP32 Sleep Mode và các kiểu Wake up
Lập trình ESP32 Webserver cục bộ (local webserver)
Bài 1: Lập trình ESP32 Webserver chế độ WIFI Station
Bài 2: Lập trình ESP32 WIFI Webserver chế độ AP
Bài 3: Lập trình ESP32 WIFI WebSocket webserver
Bài 4: Lập trình ESP32 SPIFFS Webserver
Bài 5: Lưu trữ dữ liệu trên SPIFFS Webserver
Bài 6: Giao tiếp giữa hai ESP32 Webserver trong mạng cục bộ
Các bài Webserver với các loại cảm biến khác nhau.
Lập trình ESP32 với các giao thức
Bài 1: Lập trình ESP32 giao thức http lấy dũ liệu thời tiét trên openweather
Bài 2: Lập trình ESP32 giao thức http gửi nhiệt độ, độ ẩm lên Thingspeak
Bài 3: Lập trình ESP32 Client giao thức MQTT giao tiếp với Hivemq Broker
Bài 4: Lập trình ESP32 giao thức https
Bài 5: Lập trình ESP32 giao thức TCP/IP
Bài 6: Lập trình ESP32 giao thức UDP
Bài 7: Lập trình ESP32 giao thức WIFI MESH
Bài 8: Lập trình ESP32 với ESP NOW
Lập trình ESP32 Bluetooth
Bài 1: Lập trình ESP32 Bluetooth Classic
Bài 2: Lập trình ESP32 BLE Chế độ Client
Bài 3: Lập trình ESP32 BLE Chế độ Server
Lập trình ESP32 giao tiếp với IOT Platform và các hệ thống khác trên Internet
Lập trình Esp32 giao tiếp với Firebase
Lập trình Esp32 giao tiếp Node-Red
Ghi dữ liệu từ Esp32 lên google sheet
Tự động gửi email với Esp32
Tạo chatbot trên Esp32 telegram
Các hướng dẫn hữu ích khi lập trình ESP32
Bài 1: Lập trình ESP32 Smartconfig thiết lập wifi bằng app
Bài 2: Lập trình ESP32 OTA cập nhật firmware bằng web browser
Bài 3: Lập trình ESP32 FOTA nạp firmware qua mạng Internet với OTA Drive
Lập trình ESP32 RTOS
Tổng quan về hệ điều hành thời gian thực RTOS
Lập trình ESP32 với Free RTOS
Các dự án lập trình ESP32 trong IOT
Trạm dư báo thời tiết với Openweather
Hiển thị nhiệt độ, độ ẩm lên Thinkspeak
Làm đèn nhiều màu với ESP32 Neon pixel ws2811
Làm máy chơi điện tử với ESP32
Làm thiết bị định vị GPS với ESP32
Kết
Esp32 là một trong những dòng chip được ưa chuộng nhất hiện nay, bởi sự mạnh mẽ, đa dụng nhưng cũng rất tiết kiệm. Nếu bạn thấy bài viết này có ích hãy bình luận và đừng quên ra nhập Hội Anh Em Nghiện Lập trình nhé.
4.7/5 - (13 bình chọn)Từ khóa » Thư Viện Esp32 Arduino
-
Hướng Dẫn Cài đặt Arduino IDE để Lập Trình Cho ESP32 - TAPIT
-
Cài đặt Arduino IDE Và Upload Code Cho ESP32 - Ohtech
-
Cách Thêm Board ESP32 Vào Phần Mềm Arduino IDE
-
Cài đặt ESP32 Trên Arduino IDE (Window, Linux, Mac OS X)
-
Esp32 | Cộng đồng Arduino Việt Nam
-
Thư Viện — Tài Liệu ESP32 1.0
-
Arduino Core For The ESP32 - GitHub
-
Lập Trình ESP32 Với Arduino. Cài đặt Môi Trường - Vidieukhien.Xyz
-
Hướng Dẫn Cách Cài đặt ESP32 Trong Arduino IDE
-
ESP32Servo - Arduino Reference
-
ESP32httpUpdate - Arduino Reference
-
Installing ESP32 In Arduino IDE (Windows, Mac OS X, Linux)