Bài viết này sẽ hướng dẫn bạn làm quen với board phát triển ESP32. Nếu bạn đã quen với ESP8266, thì ESP32 chính là thành công của nó. ESP32 đem đến rất nhiều tính năng mới. Điều thường được nhắc đến nhiều nhất chính là: nó kết hợp khả năng WiFi và Bluetooth và nó là lõi kép (dual core).
Bạn có thể tìm hiểu những điểm khác nhau giữa ESP32 và ESP8266: ESP32 vs ESP8266 – Pros and Cons
ESP32 DEVKIT DOIT
Trong bài viết này, chúng ta sẽ sử dụng board ESP32 DEVKIT DOIT để hướng dẫn. Tuy nhiên, những thông tin trong các bài hướng dẫn này đều có có thể áp dụng với những board phát triển ESP32 khác, sử dụng chip ESP-WROOM-32.
Đây là một vài ví dụ về board ESP32:
Bạn có thể đọc thêm bài viết này so sánh một số board phát triển ESP32: ESP32 Development Boards.
Thông số kỹ thuật
Khi nói đến thông số kỹ thuật chip ESP32, bạn sẽ thấy rằng:
- ESP32 là lõi kép, điều này có nghĩa là nó có 2 bộ vi xử lý.
- Nó được tích hợp Wi-Fi và bluetooth.
- Nó chạy các chương trình 32 bit.
- Xung nhịp (clock frequency) có thể lên đến 240MHz và nó có RAM 512 kB.
- Loại board này có 30 hoặc 36 chân, mỗi hàng có 15 chân.
- Nó cũng có sẵn nhiều loại ngoại vi (peripheral), như: cảm ứng điện dung (capacitive touch), ADC, DAC, UART, SPI, I2C và nhiều hơn nữa.
- Nó được tích hợp với cảm biến hiệu ứng Hall (Hall effect sensor) và cảm biến nhiệt độ.
Thông số kỹ thuật – ESP32 DEVKIT V1 DOIT
Số lượng lõi | 2 (dual core) |
Wi-Fi | 2,4 GHz lên đến 150 Mbits / s |
Bluetooth | BLE (Bluetooth Low Energy) và legacy Bluetooth |
Kiến trúc | 32 bit |
Clock frequency | Lên đến 240 MHz |
RAM | 512 KB |
Số chân (Pin) | 30 hoặc 36 (phụ thuộc vào model) |
Peripheral | Cảm ứng điện dung, ADC (Analog to Digital Converter), DAC (Digital to Analog Converter), I2C (Inter-Integrated Circuit), UART (universal asynchronous receiver/transmitter), CAN 2.0 (Controller Area Netwokr), SPI (Serial Peripheral Interface), I2S (Integrated Inter-IC Sound), RMII (Reduced Media-Independent Interface), PWM (Pulse Width Modulation), v.v. |
Môi trường lập trình
ESP32 có thể được lập trình trên nhiều môi trường lập trình khác nhau. Bạn có thể sử dụng
- Arduino IDE
- Espressif IDF (IoT Development Framework)
- MicroPython
- JavaScript
- LUA
- v.v.
Trong những dự án này, chúng ta sẽ lập trình ESP32 chủ yếu bằng Arduino IDE hoặc MicroPython.
Hướng dẫn sơ đồ chân của ESP32
ESP32 có nhiều chân GPIO cùng với nhiều chức năng hơn so với ESP826.
Với ESP32, bạn có thể quyết định chọn chân nào là UART, I2C hoặc SPI – bạn chỉ cần cài đặt chân đó trên code. Điều này có được là do chức năng ghép kênh của chip ESP32, cho phép gán nhiều chức năng cho cùng một chân (pin). Nếu bạn không cài đặt trên code, các chân sẽ được sử dụng theo mặc định – như mô tả trong hình bên dưới (vị trí chân có thể thay đổi tùy thuộc vào nhà sản xuất).
Phiên bản có 30 GPIO
Phiên bản có 36 GPIO
Upload Code cho ESP32 sử dụng Arduino IDE
Để giới thiệu với bạn cách upload code cho board ESP32, chúng ta sẽ build một ví dụ đơn giản để chớp tắt một LED.
Copy đoạn code sau vào Arduino IDE của bạn:
/* Blink */ // ledPin refers to ESP32 GPIO 23 const int ledPin = 23; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin ledPin as an output. pinMode(ledPin, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Trong đoạn code này, chúng ta sẽ điều khiển một LED được kết nối vô chân GPIO 23.
const int ledPin = 23;
Do đó, kết nối một LED vô ESP32 theo sơ đồ sau
Quan trọng: luôn kiểm tra sơ đồ chân cho board mạch của bạn trước khi xây dựng bất kỳ mạch điện nào.
Đây là danh sách những linh kiện cần thiết để xây dựng mạch trên:
Cắm board phát triển ESP32 của bạn vô máy tính và làm theo chỉ dẫn sau
1) Đi tới Tools > Board, cuộn xuống khu vực ESP32 và chọn tên của board ESP32 của bạn. Trong trường hợp của tôi là DOIT ESP32 DEVKIT V1 board.
2) Đi tới Tools > Port và chọn một cổng COM có sẵn.
3) Bấm nút upload
Lưu ý: Nếu bạn gặp lỗi sau khi cố gắng upload code, điều đó có nghĩa là ESP32 của bạn không ở chế độ flashing/uploading.
Failed to connect to ESP32: Timed out... Connecting...
Để upload code, bạn cần làm theo những bước tiếp theo (đảm bảo rằng bạn đã chọn đúng loại board).
- Nhấn-giữ nút “BOOT” trên board ESP32 của bạn
- Sau khi thấy dòng chữ “Connecting….” trong Arduino IDE của bạn, buông nút “BOOT” ra.
Sau đó, bạn sẽ thấy dòng chữ “Done uploading”.
Vậy đó. Sau khi upload xong sketch mới, bạn có thể bấm nút “ENABLE” để restart ESP32 và chạy sketch mới vừa upload.
Lưu ý: Tìm hiểu cách sửa vĩnh viễn lỗi “Failed to connect to ESP32: Timed out waiting for packet header” khi cố gắng upload new code cho ESP32 của bạn một lần duy nhất.
Demonstration
Sau khi upload xong code, LED đã kết nối với GPIO 23 sẽ chớp tắt mỗi giây.
Tóm tắt
Chúng tôi hi vọng bài viết hướng dẫn làm quen này hữu ích với các bạn. Blinking LED chỉ là một ví dụ đơn giản để bạn bắt đầu với ESP32. Đây cũng là một cách tuyệt vời để tìm hiểu quy trình cần thiết để upload code lên board của mình.
Nếu bạn yêu thích ESP32, hãy tìm hiểu thêm hơn 20 dự án liên quan về ESP32:
Bạn có lẽ sẽ hứng thú với khóa học ESP32 này: Learn ESP32 with Arduino IDE
(Nguồn: randomnerdtutorials.com)
Hãy để lại lời nhắn ở phần bình luận nếu bạn có câu hỏi thắc mắc nhé.
Pingback: Lập trình ESP32 PWM với Arduino IDE (Analog Output) - Tạ Lục Gia Hoàng