Lập trình ESP32 từ A tới Z

Lập trình ESP32 từ A tới Z là một serie giúp những bạn làm quen, tiếp cận với dòng chip ESP32 hiện đang rất nổi tiếng lúc bấy giờ. Nếu bạn có tiềm năng trở thành một lập trình viên IOT thì không hề bỏ lỡ được dòng chip này .
Hãy cùng mình tìm hiểu và khám phá về ESP32 và nguyên do tại sao nó đang được yêu thích đến vậy nhé

Giới thiệu về ESP32

ESP32 là một vi điều khiển và tinh chỉnh giá rẻ, nguồn năng lượng thấp có tương hỗ WiFi và dual-mode Bluetooth ( tạm dịch : Bluetooth chính sách kép ). Dòng ESP32 sử dụng bộ vi giải quyết và xử lý Tensilica Xtensa LX6 ở cả hai biến thể lõi kép và lõi đơn, và gồm có những công tắc nguồn antenna tích hợp, RF balun, bộ khuếch đại hiệu suất, bộ khuếch đại thu nhiễu thấp, bộ lọc và module quản trị nguồn 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.

Bạn đang đọc: Lập trình ESP32 từ A tới Z">Lập trình ESP32 từ A tới Z

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 thông dụng nhất là ESP32-WROM với dòng KIT Doit esp32 devkit v1 tầm cỡ khi học lập trình ESP32
Đây cũng là KIT tất cả chúng ta sẽ thực hành thực tế những bài học kinh nghiệm 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

61qEATbqCL. AC SY355

Điểm mạnh của ESP32 so với các dòng khác

Có thể nói ESP32 là sự tăng cấp tuyệt vời của ESP8266, với ESP8266 tương thích với những dự án Bất Động Sản nhỏ và tiết kiệm chi phí ngân sách. ESP32 lại tương thích với những dự án Bất Động Sản phức tạp hơn, vận tốc giải quyết và xử lý cao hơn và tích hợp nhiều ngoại vi can đảm và 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 vận tốc cao – 8 KB RAM RTC vận tốc thấp ( dùng ở chính sách DeepSleep ) .
ESP32 tương hỗ Bluetooth 4.2 và BLE ( Bluetooth Low Energy ). Việc tương hỗ cả bluetooth khiến ESP32 hoàn toàn có thể tương tác với những thiết bị như thể bàn phím, chuột, điện thoại cảm ứng khi mà không có wifi .
Ultra Low Power xử lý yếu tố nguồn năng lượng cho ESP chính bới sử dụng Wi-Fi sẽ rất ngốn điện đặc biệt quan trọng khi tất cả chúng ta sử dụng pin phải thống kê giám sát rất kĩ .
Ngoài ra ESP32 đang được rất nhiều những công ty trong và ngoài nước yêu thích, 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 những 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 những dòng chip khác. Cụ thể như sau :
Các dòng MCU thông thường khi làm nhúng tất cả chúng ta sẽ học đa phần về những ngoại vi, làm chủ những ngoại vi đó như GPIO, ADC, Timer, SPI …. Nếu những bạn sử dụng những bộ thư viện ( SDK ) như HAL hoặc SPL thì tất cả chúng ta học cách sử dụng những 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 thế nào cho chương trình hiệu suất cao đến mức tối đa .
Học ESP32 cũng tương tự như như vậy khi cũng cần nắm rõ những ngoại vi của ESP32, nhưng cạnh bên đó nắm vững được những 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 những mẫu sản phẩm IOT ( Internet of Things ), chính vì thế học cách liên kết ESP32 với Internet mới là quan trọng nhất so với dòng chip này. Ngoài ra Lowpower mode ( chính sách tiết kiệm ngân sách và chi phí nguồn năng lượng ) cho những ứng dụng dùng pin và FOTA ( Firmware over The Air ) nạp firmware từ xa cũng thiết yếu không kém .

Học lập trình ESP32 lúc bấy giờ đề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 tất cả chúng ta là học sử dụng những API trong những 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ị sẵn sàng máy tính và 1 ít USD ( để mua kit ấy ) và mở màn ngay nhé

Công cụ để khởi đầu học lập trình ESP32

Môi trường lập trình ( IDE)

Trên quốc tế mọi người lập trình ESP32 trải 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 thiết lập những bạn đọc trong bài :
Hướng dẫn thiết lập 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 điểm yếu kém của những gói này thế nào .

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 những bạn bằng thư viện Arduino, nguyên do là thuận tiện tiếp cận hơn và những bạn hoàn toàn có thể làm được ngay những loại sản phẩm không quá phức tạp sau khi hoàn thành xong Serie này .

structure project compilable Arduino IDE PlatformIO transp

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à những kiểu Wake up

Lập trình ESP32 WIFI Networking

Bài 1 : Lập trình ESP32 Webserver chính sách WIFI Station
Bài 2 : Lập trình ESP32 WIFI Webserver chính sách AP
Bài 3 : Lập trình ESP32 WIFI WebSocket webserver
Bài 4 : Lập trình ESP32 giao thức http lấy dũ liệu thời tiét trên openweather
Bài 5 : Lập trình ESP32 giao thức http gửi nhiệt độ, nhiệt độ lên Thingspeak
Bài 6 : Lập trình ESP32 Client giao thức MQTT tiếp xúc với Hivemq Broker
Bài 7 : Lập trình ESP32 Smartconfig thiết lập wifi bằng app
Bài 8 : Lập trình ESP32 OTA update firmware bằng web browser
Bài 9 : Lập trình ESP32 OTA update firmware bằng internet

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
Tổng quan về hệ quản lý thời hạn thực RTOS

Các dự án Bất Động Sả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 độ, nhiệt độ lên Thinkspeak
Trạm hiển thị số ca covid-19

Kết

Esp32 là một trong những dòng chip được ưu thích nhất lúc bấy giờ, bởi sự can đảm và mạnh mẽ, đa dụng nhưng cũng rất tiết kiệm chi phí. Nếu bạn thấy bài viết này có ích hãy phản hồi và đừng quên ra nhập Hội Anh Em Nghiện Lập trình nhé .

4.6 / 5 – ( 10 bầu chọn )

Các bài viết liên quan

Viết một bình luận