Nội dung bài học:
- Ngôn ngữ và môi trường lập trình
- Các bước cài đặt để lập trình ESP32 trên Windows 10
- Kiểm tra cài đặt
- Các khối trong sơ đồ thuật toán
1. Ngôn ngữ và môi trường lập trình
– Để lập trình điều khiển vi điều khiển hoạt động theo mong muốn, chúng ta cần ngôn ngữ lập trình (Programming language) và môi trường lập trình tích hợp sẵn trình biên dịch/thông dịch (IDE- Integrated Development Environment) để vừa soạn thảo chương trình (code) đồng thời chuyển nó sang ngôn ngữ máy.
– Hiện nay, bên cạnh hỗ trợ lập trình các ngôn ngữ cấp thấp gần với ngôn ngữ máy như Assembly, C/C++ giống các dòng vi điều khiển khác thì ESP32 còn hỗ trợ thêm ngôn ngữ lập trình cấp cao như MicroPython rất thuận tiện cho người mới học, dù nó mới được ra mắt từ 2015 và vẫn còn đang trong giai đoạn nghiên cứu và phát triển thêm.
– Ngoài ra, do đặc thù của ESP32 là nhằm hướng tới các dự án IoT nên nó có thể lập trình với Mongoose OS- một hệ điều hành cho các thiết bị IoT hay sử dụng bộ kít phát triển phần mềm SDK (Software Development Kit) do chính hãng Espressif cung cấp [6]. Tất nhiên, mỗi nền tảng lập trình nêu ở trên sẽ khác nhau và tùy mục đích của người lập trình mà chọn công cụ cho phù hợp.
– Ở đây, ta hướng tới việc cho người không chuyên mới làm quen với lập trình, mong muốn làm việc với các thiết bị cảm biến, động cơ, màn hình hay kết nối Wifi, Bluetooth,…cho các dự án cá nhân nên ta lựa chọn môi trường Arduino IDE sẽ phù hợp nhất. Do Arduino IDE đơn giản, dễ sử dụng và đặc biệt là lượng cộng đồng đông đảo người dùng nhất.
2. Cài đặt lập trình ESP32 trên Windows 10
Để có thể tiến hành lập trình ESP32, ta cần chuẩn bị:
Phần cứng:
- Máy tính cài hệ điều hành Windows
- Bo mạch ESP32
- Cáp kết nối Micro USB giữa ESP32 và máy tính
Phần mềm:
- Tải về và cài đặt miễn phí Arduino IDE từ trang chủ Arduino.cc, hiện tại bản mới nhất vào thời điểm 01/2022 là bản 1.8.19
- Tải về driver CP210x/CH340 tại link https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers / https://sparks.gogo.co.nz/ch340.html để kết nối ESP32 với máy tính.
Sau khi đã có các công cụ trên chúng ta tiến hành cài đặt theo các bước sau:
- Bước 1: Trên giao diện phần mềm Arduino IDE mới cài đặt, ta vào File> Preferences:
- Bước 2: Tiếp theo là bạn cần nhập đường link: https://raw.githubusercontent.com/espressif/arduino-ESP32/gh-pages/package_ESP32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json vào mục “Additional Board Manager URLs” như trên hình 1 sau đó ấn chọn OK. (Chú ý, nếu muốn thêm đường link cho các bo mạch khác ví dụ như ESP8266 thì có thể thêm dấu phẩy (,), ngăn cách giữa các đường link.
- Bước 3: Trên giao diện Arduino, chọn Tools > Board > Boards Manager…
- Bước 4: Gõ từ khóa ESP32 và ấn phím cài đặt (install) cho mục “ESP32 by Espressif Systems như trên hình 2 để hoàn tất cài đặt.


Hình 1: Thêm đường link cho ESP32
Quá trình cài đặt sẽ cần vài phút tùy theo tốc độ kết nối Internet và máy tính để tải về và cài đặt các thư viện cần thiết.


Hình 2: Cài đặt công cụ lập trình cho ESP32
3. Kiểm tra cài đặt
Để xác nhận việc cài đặt thành công, ta có thể chạy thử chương trình mẫu theo các bước:
+ Bước 1: Sử dụng cáp Micro USB cắm vào để kết nối giữa ESP32 và Máy tính
+ Bước 2: Trên giao diện Arduino vào Tools>Board để chọn bo mạch ESP32, như đã đề cập, chúng ta sử dụng bo DOIT ESP32 DEVKIT V1
+ Bước 3: Lựa chọn cổng kết nối như trên hình 3
+ Bước 4: Từ giao diện Arduino, vào File>Examples, chạy thử 1 chương trình mẫu WifiScan ở mục Wifi (ví dụ này sẽ quét và phát hiện ra tên các mạng Wifi có ở xung quanh). Khi file chương trình được mở ra, ấn nút upload hình mũi tên sang phải , để chạy chương trình như trên hình 1.10. Nếu không có vấn đề gì, Arduino sẽ hiện tin nhắn “Done Uploading” để báo việc nạp chương trình vào ESP32 đã xong.
+ Bước 5: Kiểm tra kết quả chạy chương trình bằng cách mở Arduino IDE Serial Monitor ở tốc độ truyền tải 115200 ở biểu tượng .
Khi đó kết quả thu được là danh sách các mạng Wifi gần xung quanh sẽ được hiện lên như trên hình 5.


Hình 3: Lựa chọn bo mạch và cổng kết nối


Hình 4: Chạy thử chương trình WifiScan


Hình 5: Kết quả chạy chương trình
Trên MacOS:
+ Bước 1 : Trên giao diện phần mềm Arduino IDE mới cài đặt, ta ấn tổ hợp phím : Command + dấu “ ,” vào Preferences
+ Bước 2 : Nhập địa chỉ: https://raw.githubusercontent.com/espressif/arduino-ESP32/gh-pages/package_ESP32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json à sau đó ấn chọn OK. Ở đây là thư viện cho cả 2 loại board là ESP32 và esp8266
+ Bước 3: Trên giao diện Arduino, chọn Tools > Board > Boards Manager…
Bước 4: Gõ từ khóa ESP32 và ấn phím cài đặt (install) cho mục “ESP32 by Espressif Systems như trên hình 1.8 để hoàn tất cài đặt.
Các bước sau thao tác tương tự như trên window
Chú ý: Nếu bạn thử nạp chương trình vào ESP32 và gặp thông báo lỗi: “A fatal error occurred: Failed to connect to ESP32: Timed out… Connecting”. Lỗi này có thể do bo mạch ESP32 không ở chế độ nạp. Hãy kiểm tra lại bạn đã lựa chọn đúng tên bo mạch ESP32 và cổng COM, sau đó thực hiện các bước:
- Ấn và giữ phím “BOOT” trên bo mạch ESP32
- Nhấn nút Upload trên giao diện Arduino
- Sau khi bạn thấy dòng chữ “Connecting….” trên Arduino, bạn nhả ngón tay đang ấn giữ phím “BOOT” khi đó bạn sẽ thấy chương trình được nạp (Done uploading).
Nhấn phím “ENABLE” trên bo mạch để khởi động lại ESP32 và chạy chương trình đã nạp. Như vậy mỗi lần nạp chương trình bạn sẽ cần phải thực hiện các bước trên. Để giải quyết triệt để tình trạng này [9] nhằm tránh phải lặp lại các thao tác trên, bạn có thể kết nối 1 tụ điện hóa có điện dung 10uF giữa chân EN trên bo mạch ESP32 (nối với cực dương của tụ) và chân GND nối với cực âm của tụ như trên hình 1.12.

Hình 6: Kết nối tụ điện với bo mạch ESP32
Chú ý: Trong quá trình nạp chương trình vào ESP32, không nên để các chân của nó cấp nguồn cho các thiết bị khác để tránh hiện tượng bị nhiễu, không nạp được và gặp lỗi.
4. Các khối trong sơ đồ thuật toán
Sơ đồ thuật toán là cách để các lập trình viên trao đổi thông tin với nhau , hay là cách nhanh chóng để lên khung sườn cho 1 dự án để làm việc. Kể cả trong trường đại học lẫn khi đi làm ở các công ty thì đều sử dụng sơ đồ thuật toán để trình bày ý tưởng cũng như triển khai.
Ký hiệu | Ý nghĩa | Ký hiệu | Ý nghĩa |
![]() | Điều kiện rẽ nhánh. Khối này sẽ có 2 đầu ra và 1 đầu vào. 1 đầu ra là điều kiện là False còn 1 đầu ra là điều kiện True | ![]() | Khối này sẽ biểu thị cho việc xuất nhập dữ liệu từ bàn phím hoặc là từ người dùng. |
![]() | khối này dùng để lưu dữ liệu | ![]() | khối này dùng để biểu thị bắt đầu chương trình hoặc kết thúc chương trình |
![]() | đây là khối biểu thị quá trình xử lý và thực hiện dữ liệu | ![]() | biểu thị hướng đi của dữ liệu hay sơ đồ. |
![]() | biểu tượng này biểu thị có 1 tài liệu đi kèm | ![]() | khối này biểu thị khoảng thời gian trễ cho chương trình. |
![]() | biểu tượng này để kết nối giữa 2 biểu tượng ở 2 trang khác nahu | ![]() | khối này biểu thị chương trình con. |
![]() | biểu tượng này biểu thị có nhiều tài liệu đi kèm | ![]() | khối chuẩn bị. |
![]() | khối ghi chú, để chương trình của bạn dễ hiểu hơn | ![]() | khối này hiện thị các thông tin |

Hình 7: Mạch ESP32 mở rộng của AVN SMART
- Đây là vùng nguồn ngoài để cấp cho mạch. Chân phía bên phải của vùng 1 này là dùng để cấp nguồn 12V vào mạch, bạn cần phải chú ý nhìn rõ các ghi chú tên chân ở ngay bên dưới để biết được chân nào chân dương (power) chân nào chân âm (GND). Còn 2 chân còn lại phía bên phải vùng 1 là dùng để cấp nguồn ngoài cho loạt chân nguồn phía bên phải của vi điều khiển ESP32 (chân có ghi chữ Servo). Mục đích để bạn có thể dùng các nguồn khác nhau như 6,7,8,9V (các nguồn này thì bạn có thể dùng mạch hạ áp để điều chỉnh cho phù hợp với nguồn bạn mong muốn) chứ không phải mỗi 12V,5V hay 3,3V.
- Đây cũng là cấp nguồn để nuôi mạch giống như 2 chân bên phải của vùng 1 (lưu ý cả 2 chỗ cấp nguồn thì bạn chỉ được cấp 12V).
- Vùng 3 là công tắc gạt để chuyển nguồn điện nuôi vi điều khiển. Khi không gạt công tắc thì tất cả chân nguồn 5V và 3.3V sẽ chưa có điện. Nếu gạt công tắc thì nguồn 12V sẽ đi qua con hạ áp ở vùng số 4 để từ đó xuất ra chân 5V cho vi điều khiển và từ vi điều khiển sẽ xuất ra 3.3V cho các chân.
- Đây là mạch hạ áp để cung cấp nguồn nuôi ESP32.
- Đây là các terminal để bạn có thể lấy nguồn 3.3V hoặc 5V để sử dụng cho các việc khác. Các terminal này sẽ giúp các mối kết nối của bạn uy tín hơn.
- Đây là vùng để lắp vi điều khiển ESP32 lên và bạn có thể sử dụng các chân của ESP32 bằng các jump bên cạnh. Ở bên trái sẽ là từ D13 đến chân EN và bên phải từ chân D15 đến chân D23.
- Vùng 7 là vùng các chân mở rộng của giao thức SPI (cụ thể chân của HSPI)
- Vùng 8 là vùng mở rộng các chân, bạn có thẻ nhìn thấy ghi chú chân dưới mạch. Mục đích của mở rộng này là để tạo uy tín hơn cho các chân kết nối.
- Vùng số 9 này dùng để cấp nguồn cho driver điều khiển động cơ bước. Nguồn này sẽ có thể chịu được từ 7V đến 35V nhưng chỉ cần cấp nguồn 12V từ vùng 1 bên phải là đủ dùng rồi.
- Vùng 10 là cụm dùng để điều khiển động cơ bước gồm có 1 driver, 1 nút ấn SIP và 2 terminal. Driver thí sẽ nhận nguồn và từ đó điều khiển lẫn cấp nguồn cho động cơ. Nút ấn SIP dùng để điều chỉnh chế độ vi bước cho động cơ bước. Đối với nút SIP được lắp đúng như trên hình thì như trạng thái hiện tại ở trên hình là các chân MS1, MS2, MS3 đều đang ở mức thấp hết. Chân số 1 sẽ ứng với MS3, chân số 2 sẽ ứng với MS2, chân số 3 ứng với MS1 và cuối cùng chân số 4 ứng với chân bật tắt driver từ đó có thể bật tắt động cơ. Trong hình trên nếu tính từ trái sang phải thì terminal ở vùng 10 đầu tiên sẽ là chân STEP và chân bên cạnh sẽ là chân DIR.
- Vùng 11 là vùng của kết nối giao thức UART và I2C. Bản chất là các chân của UART sẽ nối từ bộ Rx2, Tx2 của vi điều khiển để từ đó có thể mở rộng cắm được nhiều chân hơn. Cũng giống UART thì I2C là nối từ chân D21 (SDA) và chân D22 (SCL) ra để mở rộng nhằm có thể kết nối được với nhiều thiết bị hơn.
Kết luận
Qua bài viết này, bạn đã nắm được cách cài đặt môi trường lập trình ESP32 trên Arduino IDE một cách chi tiết và dễ hiểu. Với môi trường đã được thiết lập, bạn có thể bắt đầu khám phá và phát triển các dự án đơn giản trong những bài học tiếp theo của chúng ta.
By: Lương Hưu Nhật Minh
Good https://lc.cx/xjXBQT
Very good https://is.gd/N1ikS2
Very good https://is.gd/N1ikS2
Very good https://is.gd/N1ikS2
https://shorturl.fm/XIZGD
https://shorturl.fm/5JO3e
Unlock exclusive affiliate perks—register now! https://shorturl.fm/Kjr27
Join our affiliate program today and start earning up to 30% commission—sign up now! https://shorturl.fm/AMeAQ
Turn referrals into revenue—sign up for our affiliate program today! https://shorturl.fm/FILDf
https://shorturl.fm/Qrgvo
https://shorturl.fm/79Jwv
https://shorturl.fm/I2nbg
https://shorturl.fm/T95Pd
https://shorturl.fm/yEsYe
https://shorturl.fm/v95xI
https://shorturl.fm/qIgXo
https://shorturl.fm/CIQI0
https://shorturl.fm/RZSYk
https://shorturl.fm/qPxat
https://shorturl.fm/tXJcd
https://shorturl.fm/r3THm
https://shorturl.fm/hczoX
https://shorturl.fm/qZf6M
https://shorturl.fm/AXaqj
https://shorturl.fm/b8VoG
https://shorturl.fm/eVjRD
https://shorturl.fm/sVuQ7
https://shorturl.fm/5omoK