ESP32 ADC với Arduino IDE - Ví dụ đo điện áp

ESP32 ADC với Arduino IDE - Ví dụ đo điện áp

Ánh xạ chân ESP32 ADC1

Sau đây là ánh xạ ghim với bảng DOIT devkit ESP32. Mặc dù chip ESP32 ADC1 có tám kênh, nhưng bo mạch Devkit DOIT chỉ hỗ trợ 6 kênh. Tuy nhiên, chúng ta vẫn có đủ các kênh tương tự để giao tiếp cảm biến analog.

  • ADC1_CH0 >>>GPIO36 ·

  • ADC1_CH1 >>>Không có sẵn trên bo mạch này Devkit DoIT (phiên bản 30 chân)

  • ADC1_CH2 >>> NA

  • ADC1_CH3 >>>GPIO39 ·

  • ADC1_CH6 >>>GPIO34 ·

  • ADC1_CH7 >>> GPIO35 ·

  • ADC1_CH4 >>> GPIO32 ·

  • ADC1_CH5 >>>GPIO33 ·

Ánh xạ chân ESP32 ADC2

Ánh xạ ghim cho kênh ADC2 được đưa ra bên dưới. Bảng Devkit DOIT ADC2 hỗ trợ 10 kênh analog và tất cả các kênh tương tự này đều có sẵn trên Devkit do it board.

  • ADC2_CH0 >>>GPIO0

  • ADC2_CH1 >>> Kênh này không khả dụng trên bảng Devkit DOIT

  • ADC2_CH2 >>>GPIO2

  • ADC2_CH3 >>> GPIO15

  • ADC2_CH4 >>> GPIO13

  • ADC2_CH5 >>> GPIO12

  • ADC2_CH6 >>>GPIO14

  • ADC2_CH7 >>> GPIO27

  • ADC2_CH8 >>> GPIO25

  • ADC2_CH9 >>> GPIO26

Mặc dù chúng tôi có 10 kênh tương tự có sẵn trong ADC2, nhưng tất cả các kênh này đều được chia sẻ giữa các tài nguyên khác. Ví dụ: ADC2 được chia sẻ với trình điều khiển WiFi, do đó bạn chỉ có thể sử dụng nó sau khi trình điều khiển WiFi không được khởi động. Bạn phải làm cho chương trình của mình đủ thông minh để chuyển đổi giữa hai tài nguyên. Cách dễ dàng là tắt trình điều khiển WiFi khi bạn muốn sử dụng ADC2 và đọc giá trị tương tự và sau đó bật trình điều khiển WiFi khi bạn muốn cập nhật giá trị lên máy chủ, v.v. Tôi sẽ giải thích thêm về nó trong các phần sau của loạt bài hướng dẫn này. Hình dưới đây cho thấy các chân của các kênh tương tự trên Devkit DOIT:

Sơ đồ chân kênh ESP32 ADC

Cách sử dụng các kênh chuyển đổi Analog sang kỹ thuật số của ESP32

Bây giờ, chúng ta hãy xem cách viết mã hoặc chương trình để đọc các giá trị ADC với bất kỳ kênh nào trong số 15 kênh này có sẵn trên bảng này. Sau đó, chúng ta sẽ thấy một ví dụ, trong đó chúng ta kết nối một điện trở thay đổi với kênh tương tự và đo điện áp và hiển thị nó trên màn hình nối tiếp của Arduino IDE. Các kênh tương tự ESP32 có kích thước 12 bit, có nghĩa là bước tối thiểu của mỗi mức điện áp nằm giữa0 và 4095. Kênh tương tự tạo ra giá trị kỹ thuật số từ 0 đến 4095 theo điện áp ở đầu vào của kênh tương tự. Chẳng hạn

  • Nếu điện áp bằng 0 ở đầu vào của kênh tương tự, giá trị kỹ thuật số sẽ bằng không.

  • Nếu điện áp là 3,3 volt ở đầu vào, giá trị kỹ thuật số sẽ là 4095. Vì vậy, giới hạn điện áp tối đa là 3,3 volt.

  • Nhưng chúng ta có thể đo điện áp cao hơn khác bằng cách sử dụng các phương pháp giảm điện áp như phương pháp chia điện áp, phương pháp máy biến áp bước xuống trong trường hợp đo điện áp xoay chiều.

Bạn có thể muốn kiểm tra dự án trước đây của chúng tôi về đo điện áp cao với các vi điều khiển khác. Mặc dù một bộ vi điều khiển khác được sử dụng trong các dự án này, bạn có thể áp dụng các khái niệm tương tự cho ESP32 ADC để đo dòng điện, điện áp, hệ số công suất và công suất xoay chiều.

Một nhược điểm chính của ESP32 ADC là nó có một hành vi phi tuyến tính. Biểu đồ dưới đây cho thấy đường cong phi tuyến tính của nó. Bạn có thể tìm thêm thông tin về nó trên liên kết này.

ESP32 adc đường cong phi tuyến tính

Chương trình chuyển đổi tương tự sang kỹ thuật số ESP32

Vì vậy, chúng tôi đang sử dụng Arduino IDE trong các hướng dẫn này. Arduino IDE cung cấp một chức năng tích hợp để đọc các giá trị tương tự analog chức năng đọc.

  • AnalogRead(analog_pin_number) : Chúng tôi sẽ sử dụng chức năng này để đọc giá trị tương tự. Hàm analogRead này chỉ có một đối số là số pin của kênh tương tự mà bạn muốn sử dụng. Tôi đã cung cấp ánh xạ pin của tất cả các kênh tương tự với các chân GPIO ở trên. Vì vậy, bạn sẽ chỉ chuyển tên của chân GPIO cho chức năng này như analogRead (36), nó sẽ đọc giá trị từ ADC1 kênh XNUMX. Hình trên cũng cho thấy số pin và các kênh tương ứng.

  • Bạn chỉ cần lưu trữ đầu ra của hàm này trong bất kỳ biến nào khác ngoài các loại ký tự. Bởi vì biến loại ký tự chỉ có thể lưu trữ các giá trị từ 0 đến 255.

ESP32 ADC Chức năng Arduino hữu ích

Các chức năng này được sử dụng để thiết lập các thông số khác nhau của chân ESP32 ADC như độ phân giải, suy giảm, cài đặt điện áp tham chiếu, v.v.

void analogReadResolution (uint8_t bit)

Hàm này đặt độ phân giải của các giá trị trả về analogRead. Mặc định là 12 bit (phạm vi từ 0 đến 4096). Nếu từ 9 đến 12, nó sẽ bằng độ phân giải phần cứng đã đặt, nếu không giá trị sẽ bị dịch chuyển. Phạm vi nằm trong khoảng từ 1 - 16.

void analogSetWidth(uint8_t bit)

Hàm analogSetWidth đặt các bit mẫu và độ phân giải đọc tương tự. Theo mặc định, nó là 12bit (0 - 4095) và phạm vi nằm trong khoảng từ 9 - 12.

void analogSetClockDiv(uint8_t đồng hồDiv)

Phương pháp này chọn dải phân cách cho đồng hồ ADC. Theo mặc định, nó là 1 và phạm vi nằm trong khoảng từ 1 - 255.

void analogSetAttenuation(adc_attenuation_t suy giảm)

Hàm analogSetAttenuation() đặt độ suy giảm cho tất cả các kênh ADC. Theo mặc định, nó là 11db. Ngoài ra, sự suy giảm có thể là một trong những giá trị sau:

typedef enum {

    ADC_0db,

    ADC_2_5db,

    ADC_6db,

    ADC_11db

} adc_attenuation_t;

Suy giảm

Dải điện áp đầu vào có thể đo lường được

ADC_ATTEN_DB_0

100 mV ~ 950 mV

ADC_ATTEN_DB_2_5

100 mV ~ 1250 mV

ADC_ATTEN_DB_6

150 mV ~ 1750 mV

ADC_ATTEN_DB_11

150 mV ~ 2450 mV

int hallRead()

Hàm hallRead() được sử dụng để lấy giá trị cho cảm biến HALL (không có LNA). Đầu ra cảm biến Hall được kết nối với chân 36 (SVP) và 39 (SVN)

void analogSetVRefPin (uint8_t pin)

Hàm analogSetVRefPin() đặt chân để sử dụng cho hiệu chuẩn ADC hoặc đặt điện áp tham chiếu cho ADC nếu esp chưa được hiệu chỉnh (25, 26 hoặc 27). Bạn có thể sử dụng điện áp tham chiếu trên 25, 26 và 27 chân

Bây giờ hãy tạo sơ đồ mạch này trên bảng bánh mì của bạn và sau đó, chúng tôi sẽ viết mã để đo điện áp bằng cách sử dụng điện trở thay đổi.

đo điện áp tương tự ESP32

Trong sơ đồ mạch trên, một điện trở thay đổi được sử dụng. Một cực của điện trở biến được kết nối với mặt đất và một cực khác có 3,3 volt. Thiết bị đầu cuối Trung tâm của điện trở biến được kết nối với GPIO15 là ADC2 kênh ba hoặc ADC2_CH3.

Mã để đo điện áp tương tự bằng ESP32 ADC

Mã để đo điện áp tương tự được hiển thị bên dưới. Tất cả các hàm được sử dụng trong code này đã được giải thích trong hướng dẫn trước và trong hướng dẫn này ngoại trừ nối tiếp.begin() và nối tiếp.println() Chức năng.

const int Analog_channel_pin= 15;

int ADC_VALUE = 0;

int voltage_value = 0; 

void setup() 

{

Serial.begin(115200);

}

void loop() 

{

ADC_VALUE = analogRead(Analog_channel_pin);

Serial.print("ADC VALUE = ");

Serial.println(ADC_VALUE);

delay(1000);

voltage_value = (ADC_VALUE * 3.3 ) / (4095);

Serial.print("Voltage = ");

Serial.print(voltage_value);

Serial.print("volts");

delay(1000);

}

Bây giờ tôi sẽ giải thích hoạt động của mã theo dòng. Trong những dòng này, đầu tiên chúng ta đặt tên cho ADC2_CH3 là Analog_channel_pin và sau đó, chúng ta khởi tạo hai biến số nguyên về không. Một biến được sử dụng để lưu trữ giá trị kỹ thuật số và biến khác được sử dụng để lưu trữ điện áp.

const int Analog_channel_pin= 15;

int ADC_VALUE = 0;

int voltage_value = 0;

Trong trang thiết lập() , chúng ta có hàm serial.begin được sử dụng để khởi tạo giao tiếp nối tiếp của ESP32 và tốc độ giao tiếp nối tiếp được xác định bằng tốc độ truyền. Vì vậy, chúng tôi đã khởi tạo tốc độ truyền là 115200. Giao tiếp nối tiếp sẽ được sử dụng để gửi dữ liệu từ bảng ESP32 đến màn hình nối tiếp của Arduino IDE.

Serial.begin(115200);

Bây giờ chức năng chính của mã này là một phần vòng lặp, nơi chúng ta đang lấy một đầu vào tương tự và hiển thị nó trên màn hình nối tiếp của Arduino IDE với sự trợ giúp của các dòng này. hàm serial.print được sử dụng để truyền dữ liệu mà không cần một dòng mới ở cuối và nối tiếp.println() function cũng được sử dụng để truyền dữ liệu nhưng nó cũng bao gồm ký tự dòng mới ở cuối chuỗi. Sau đó, hàm delay được sử dụng để thêm độ trễ một giây. Không cần thiết phải thêm độ trễ nhưng chúng tôi đã kiểm tra nó để nhận giá trị sau mỗi giây.

ADC_VALUE = analogRead(Analog_channel_pin);

Serial.print("ADC VALUE = ");

Serial.println(ADC_VALUE);

delay(1000);

Bây giờ trong phần cuối cùng, dòng đầu tiên sẽ chuyển đổi giá trị kỹ thuật số của ADC_VALUE thành điện áp. ADC_VALUE được nhân với một độ phân giải của ESP32 ADC đó là 3,3 / 4095. Độ phân giải còn được gọi là bước tối thiểu của adc cho mỗi giá trị điện áp tương ứng. Ví dụ: nếu ADC_VALUE đếm 10, giá trị trung bình của nó đã thực hiện 10 bước hoặc giá trị tại chân đầu vào gấp 10 lần độ phân giải của adc. Vì vậy, để chuyển đổi ADC_VALUE trở lại thành điện áp, chúng tôi chỉ cần nhân nó với độ phân giải như chúng tôi đã làm trong dòng đầu tiên. Sau đó, hàm Serial.print gửi một chuỗi "voltage = " và sau đó giá trị điện áp và sau đó đơn vị điện áp đó được truyền đến màn hình nối tiếp.

voltage_value = (ADC_VALUE * 3.3 ) / (4095);

Serial.print("Voltage = ");

Serial.print(voltage_value);

Serial.print("volts");

delay(1000);

Vì vậy, khi bạn chạy mã này trên bảng ESP32, bạn sẽ nhận được giá trị của giá trị adc và điện áp sau mỗi một giây trên màn hình nối tiếp của Arduino IDE.

Giá trị ADC ESP32 trên màn hình nối tiếp

Hiển thị ADC và Điện áp trên OLED với ESP32

Trong phần trước, chúng ta đã thấy cách chuyển đổi tín hiệu tương tự thành giá trị kỹ thuật số bằng ESP32 trong Arduino IDE. Tương tự, chúng ta cũng có thể chuyển đổi giá trị kỹ thuật số đo được trở lại thành điện áp bằng cách nhân giá trị kỹ thuật số với độ phân giải của ADC là 3.3 / 4095 cho độ phân giải 12 bit của ESP32. Bây giờ chúng ta hãy xem một ví dụ để đo tín hiệu điện áp tương tự với ESP32.

Trong phần này, chúng ta sẽ xem cách hiển thị các giá trị điện áp tương tự trên màn hình OLED SSD0 96.1306 bằng ESP32 và Arduino IDE.

Cài đặt thư viện OLED trong Arduino IDE

Để sử dụng màn hình OLED trong dự án của mình, chúng ta phải cài đặt thư viện Adafruit SSD1306 và thư viện Adafruit GFX trong Arduino IDE. Làm theo các bước dưới đây để cài đặt chúng thành công.

Mở Arduino IDE và nhấp vào Sketch > Library > Manage Libraries. Nhập 'SSD1306' vào tab tìm kiếm và cài đặt thư viện Adafruit SSD1306 OLED.

Cài đặt Thư viện OLED SSD1306 Arduino IDE

Chúng tôi cũng sẽ yêu cầu thư viện Adafruit GFX là một phụ thuộc cho SSD1306. Nhập 'Adafruit GFX' vào tab tìm kiếm và cài đặt nó.

Cài đặt thư viện GFX Adafruit

Sau khi cài đặt các thư viện, hãy khởi động lại IDE của bạn.

Chân I32C ESP2

Các chân I2C đã nêu ở trên được đặt ở mặc định. Nếu chúng ta muốn thay đổi các chân GPIO, chúng ta phải đặt chúng trong mã. Sơ đồ dưới đây cho thấy sơ đồ chân cho ESP32.

Chân I32C ESP2Lưu ý: Nếu chúng tôi sử dụng các chân GPIO khác của ESP32 để giao tiếp I2C, chúng tôi có thể xác định các chân khác bên trong bản phác thảo Arduino của mình. Chúng tôi không phải sử dụng chân I2C mặc định.

Sơ đồ kết nối- OLED với ESP32 và chiết áp

Các thành phần bắt buộc:

  1. Bảng ESP32

  2. Chiết áp kế

  3. Màn hình OLED SSD 0 96,1306 inch

  4. Breadboard

  5. Dây kết nối

Như bạn có thể thấy ở trên, chúng tôi đã kết nối tất cả các thiết bị đầu cuối VCC của OLED với chân Vin của ESP32. Thiết bị đầu cuối SCL của OLED được kết nối với GPIO22 và thiết bị đầu cuối SDA của OLED được kết nối với chân GPIO21 của ESP32. Căn cứ của cả ba thiết bị là phổ biến.

Bảng ESP32

Màn hình OLED SSD1306

Vin

VCC

GPIO21 (I2C SDA)

SDA

GPIO22 (I2C SCL)

SCL

GND ·

GND ·

Các chân I2C đã nêu ở trên được đặt ở mặc định. Nếu bạn muốn sử dụng bất kỳ chân GPIO nào cho I2C, bạn sẽ phải đặt nó trong mã bằng SoftI2C ().

Lắp ráp mạch như thể hiện trong sơ đồ sơ đồ dưới đây:

giá trị adc esp32 trên OLED Arduino IDE

Như bạn có thể thấy ở trên, chân giữa của chiết áp được kết nối với chân D15 của bảng ESP32. Các thiết bị đầu cuối khác như trái và phải được kết nối với chân 3.3V và GND, tương ứng.

Arduino Sketch (Hiển thị ADC và chỉ số điện áp trên màn hình OLED)

Mở Arduino IDE của bạn và đi tới Tệp > Mới. Một tệp mới sẽ mở ra. Sao chép mã được cung cấp bên dưới trong tệp đó và lưu nó.

Bản phác thảo này sẽ hiển thị các giá trị ADC và điện áp tương ứng trên Màn hình nối tiếp cũng như trên OLED.

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

 

const int ADC_pin = 15;  

int sensor_reading = 0;  

float analog_voltage;

 

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

 

void setup() {

  Serial.begin(115200);

 

   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 

  Serial.println(F("SSD1306 allocation failed"));

  for(;;);}

  delay(2000);

display.clearDisplay();

display.setTextColor(WHITE);

}

 

void loop() {

  display.setCursor(0,0);

  display.setTextSize(1);

  display.clearDisplay();

  

  sensor_reading = analogRead(ADC_pin);

  Serial.print("ADC reading = ");

  Serial.println(sensor_reading);

  analog_voltage = sensor_reading * 3.3 / 4095;

  Serial.print("Volatge reading = ");

  Serial.println(analog_voltage);

  

 

  display.setTextSize(1);

  display.setCursor(0,0);

  display.print("ADC reading: ");

  display.setTextSize(2);

  display.setCursor(0,10);

  display.print(sensor_reading);

 

  display.setTextSize(1);

  display.setCursor(0,35);

  display.print("Voltage: ");

  display.setTextSize(2);

  display.setCursor(0,45);

  display.print(analog_voltage);

  display.print(" ");

  display.setTextSize(2);

  display.setCursor(60,45);

  display.print("V");

  

  Serial.println();

  display.display();

  delay(1000);

  

}

Mã hoạt động như thế nào?

Đầu tiên, chúng tôi sẽ bao gồm các thư viện OLED mà chúng tôi đã cài đặt trước đó để có chức năng phù hợp của màn hình OLED.

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

Thứ hai, chúng ta sẽ định nghĩa ba biến. Người ta sẽ giữ chân ADC GPIO15 mà chúng tôi sẽ kết nối với chiết áp. Cái thứ hai sẽ được gọi là 'sensor_reading' và sẽ lưu các giá trị ADC. Ban đầu nó được đặt thành 0. Đối với biến thứ ba, chúng ta sẽ định nghĩa nó là một kiểu nổi để lưu các giá trị cho điện áp tương tự.

const int ADC_pin = 15;  

int sensor_reading = 0;  

float analog_voltage;

Bây giờ, chúng ta sẽ tạo một đối tượng có tên là màn hình sẽ xử lý màn hình OLED và chỉ định chiều rộng, chiều cao, phiên bản I2C (&Dây) và -1 làm tham số bên trong nó.' -1 ′ chỉ định rằng màn hình OLED mà chúng ta đang sử dụng không có chân RESET. Nếu bạn đang sử dụng mã pin RESET thì hãy chỉ định GPIO mà qua đó bạn đang kết nối nó với bảng phát triển của mình.

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

Bên trong hàm setup(), chúng ta sẽ mở giao tiếp nối tiếp với tốc độ truyền là 115200.

void setup() {

  Serial.begin(115200);

}

Hơn nữa, chúng tôi cũng sẽ khởi tạo màn hình OLED bằng cách sử dụng display.begin(). Đảm bảo bạn chỉ định địa chỉ chính xác của màn hình. Trong trường hợp của chúng tôi, nó là 0X3C.

if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { 

  Serial.println(F("SSD1306 allocation failed"));

  for(;;);}

Sau đó, chúng ta sẽ xóa buffer bằng cách sử dụng clearDisplay() trên đối tượng Adafruit_SSD1306. Ngoài ra, chúng tôi sẽ đặt màu của văn bản là màu trắng.

 

display.clearDisplay();

display.setTextColor(WHITE);

Bây giờ, bên trong chức năng vòng lặp vô hạn (), chúng ta sẽ đặt vị trí của con trỏ của OLED và cũng đặt kích thước văn bản. Hàm clearDisplay() sẽ xóa sạch các số đọc trước đó khỏi màn hình sau mỗi vòng lặp() để có thể in các số đọc mới.

  display.setCursor(0,0);

  display.setTextSize(1);

  display.clearDisplay();

Lấy ADC và đọc số điện áp

Sau đó, trước tiên chúng ta sẽ tìm ra giá trị ADC theo điện áp thay đổi bằng cách sử dụng analogRead (). Chúng ta sẽ chuyển chân ADC được kết nối với chiết áp như một đối số bên trong nó. Điều này sẽ được lưu trữ trong biến số nguyên mà chúng ta đã định nghĩa trước đó 'sensor_reading.'

sensor_reading = analogRead(ADC_pin);

Tiếp theo, chúng tôi sẽ in các bài đọc này trong màn hình nối tiếp sau mỗi 1 giây.

Serial.print("ADC reading = ");

Serial.print(sensor_reading);

Tiếp theo, chúng ta sẽ tính điện áp tương tự, chúng ta nhân giá trị kỹ thuật số ADC với độ phân giải ESP32 ADC là 3.3 / 4095. Nó sẽ cung cấp đầu ra dưới dạng điện áp.

 analog_voltage = sensor_reading * 3.3 / 4095;

  Serial.print("Volatge reading = ");

  Serial.println(analog_voltage);

Hiển thị văn bản trên OLED

Bây giờ, chúng tôi sẽ hiển thị hai bài đọc này trên màn hình OLED. Đầu tiên, chúng ta sẽ thiết lập kích thước của văn bản bằng cách sử dụng setTextSize() và truyền kích thước như một tham số bên trong nó. 1 biểu thị kích thước nhỏ nhất và nó tăng tương đối sau khi tăng nó. Chúng tôi đã đặt kích thước phông chữ là '1' cho các tiêu đề và '2' cho các giá trị thực tế. Bất cứ khi nào chúng tôi tăng kích thước lên +1, độ phân giải pixel của văn bản sẽ tăng thêm 10 chiều cao.

Chúng ta sẽ sử dụng hàm setCursor() để biểu thị vị trí trục x và y từ đó văn bản sẽ bắt đầu. Chúng tôi đã truyền (0,0) làm tham số do đó văn bản bắt đầu từ góc trên bên trái. Tham số đầu tiên là vị trí trục x (+x) tăng về phía bên phải. Tham số thứ hai là vị trí trục y (+ y) tăng xuống dưới. Chúng tôi sẽ đặt con trỏ đến các vị trí mới cho mỗi văn bản.

Sau đó, bằng cách sử dụng println(), chúng ta sẽ truyền văn bản mà chúng ta muốn hiển thị trên OLED. Chỉ cần chỉ định nó giống như bạn làm khi in chuỗi / biến của các đối tượng nối tiếp.

Cuối cùng, chúng ta sẽ gọi hàm display() trên đối tượng display để văn bản hiển thị trên OLED.

display.setTextSize(1);

  display.setCursor(0,0);

  display.print("ADC reading: ");

  display.setTextSize(2);

  display.setCursor(0,10);

  display.print(sensor_reading);

 

display.setTextSize(1);

  display.setCursor(0,35);

  display.print("Voltage: ");

  display.setTextSize(2);

  display.setCursor(0,45);

  display.print(analog_voltage);

  display.print(" ");

  display.setTextSize(2);

  display.setCursor(60,45);

  display.print("V");

  

  Serial.println();

  display.display();

  delay(1000);

  

Demonstration

Chọn đúng bảng và cổng COM trước khi tải mã của bạn lên bảng ESP32. Đi tới Bảng > Công cụ và chọn Mô-đun ESP32 Dev.

Lựa chọn mô-đun phát triển ESP32 cho máy chủ web

Tiếp theo, đi tới Công cụ > Cổng và chọn cổng thích hợp mà qua đó bảng của bạn được kết nối.

Chọn COM PORT ESP32

Bây giờ hãy nhấp vào nút tải lên để tải mã lên ESP32. Sau đó, mở màn hình nối tiếp Arduino và nhấn nút bật trên ESP32:

Nút đặt lại bật ESP32

Màn hình OLED sẽ bắt đầu hiển thị các giá trị cho ADC và điện áp tương ứng tính bằng volt. Xoay núm của chiết áp và xem các giá trị thay đổi từ 0-1023 cho ADC và 0-3,3V cho điện áp.

Đo điện áp tương tự ESP32 ADC OLED Arduino IDE

Mở màn hình nối tiếp và đặt tốc độ truyền thành 115200. Bạn sẽ có thể thấy tất cả các số đọc ADC và điện áp khác nhau khi bạn xoay núm của chiết áp.

Giá trị ESP32 ADC trên màn hình nối tiếp ArduinoMàn hình nối tiếp

Kết luận

Tóm lại, chúng ta đã tìm hiểu về ESP32 ADC và cách đọc cả ADC và điện áp tương tự bằng Arduino IDE. Chúng tôi đã sử dụng chiết áp để cung cấp điện áp khác nhau cho chân ESP32 ADC GPIO15 và sau đó đọc tín hiệu thu được. Tương tự như vậy, chúng tôi cũng có thể hiển thị các bài đọc trên màn hình OLED.

>>> 100+ Mã Sản Phẩm Dây Rút: https://mecsu.vn/san-pham/day-rut-nhua.5op

>>> 1000+ Mã Sản Phẩm Đầu Cosse: https://mecsu.vn/san-pham/dau-cosse.Q1j

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn