ESP8266 Biến trở

Tutorial này hướng dẫn bạn cách sử dụng ESP8266 với một potentiometer, còn được biết đến với các tên pot, trimmer, biến trở (variable resistor), rheostat, hoặc cảm biến góc quay. Cụ thể, chúng ta sẽ học:

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×Chiết áp
1×Alternatively, 10k Ohm Trimmer Potentiometer
1×Mô-đun chiết áp có núm xoay
1×(Hoặc) Potentiometer Kit
1×(Hoặc) Potentiometer Module with Knob
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về biến trở

Một biến trở quay còn được biết đến với các tên gọi là pot, trimmer, biến trở điều chỉnh, rheostat, hoặc cảm biến góc quay. Nó được dùng để điều chỉnh bằng tay giá trị của một thứ gì đó. Ví dụ bao gồm âm lượng của máy stereo, độ sáng của một bóng đèn, và mức phóng đại của một máy hiện dao động.

bố trí chân biến trở

Bố trí chân của biến trở

Một biến trở thường có ba chân:

  • Chân GND nên được kết nối với đất (0V).
  • Chân VCC nên được kết nối với nguồn điện áp (5V hoặc 3.3V).
  • Chân đầu ra gửi điện áp đến chân đầu vào của Arduino.
bố trí chân biến trở

※ Lưu ý:

Các chân GNDVCC có thể hoán đổi cho nhau.

Cách hoạt động

Độ quay của trục biến trở có thể từ 0°, tương ứng với vị trí gần nhất với GND, đến một góc tối đa, gần nhất với chân VCC, được gọi là ANGLE_MAX.

※ Lưu ý:

Giá trị của ANGLE_MAX được xác định bởi nhà sản xuất. Nói chung, chúng ta không cần xem xét giá trị này trừ khi chúng ta đang tính toán một góc quay (xem phần các trường hợp sử dụng).

cách hoạt động của biến trở

Nguyên lý hoạt động:

  • Người dùng xoay trục của biến trở
  • ⇒ Góc của biến trở được thay đổi
  • ⇒ Điện trở của biến trở được thay đổi
  • ⇒ Điện áp tại chân đầu ra của biến trở được thay đổi
  • ⇒ Giá trị tương tự ESP8266 đọc được bị thay đổi

ESP8266 - Biến trở xoay

Một số chân của ESP8266 có thể hoạt động như đầu vào tương tự. Các chân đầu vào tương tự này chuyển đổi điện áp (từ 0 V đến VCC) thành các giá trị số nguyên (từ 0 đến 1023), được gọi là giá trị ADC hoặc giá trị tương tự.

Chúng ta có thể kết nối một chân đầu ra của biến trở với một chân đầu vào analog. Điều này cho phép chúng ta đọc giá trị analog từ chân và chuyển đổi nó thành một giá trị có ý nghĩa.

Giá trị mà ESP8266 nhận được không phải là một góc hay điện áp; thay vào đó, nó là một giá trị số nguyên nằm trong khoảng từ 0 đến 1023.

Một khi chúng ta đã thu được giá trị số nguyên từ chân đầu vào analog, chúng ta có thể quy đổi giá trị này sang một giá trị khác. Hãy xem xét các ứng dụng.

Các trường hợp sử dụng

  • Điều chỉnh lại tỷ lệ theo góc của biến trở.
  • Điều chỉnh lại tỷ lệ theo điện áp của biến trở.
  • Điều chỉnh lại tỷ lệ về một giá trị có thể điều khiển, chẳng hạn như âm lượng của một dàn stereo, độ sáng, hoặc tốc độ của động cơ DC - đây là trường hợp sử dụng phổ biến nhất.

Phạm vi tái tỷ lệ

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

Sơ đồ đấu dây

sơ đồ kết nối biến trở ESP8266 NodeMCU.

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Cách Lập Trình Cho Biến Trở

  • Truy cập chân đầu ra của biến trở bằng analogRead() và đọc giá trị từ chân đầu vào.
analog_value = analogRead(A0);
  • Sử dụng hàm map() để điều chỉnh góc quay của biến trở.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Điều chỉnh điện áp về mức của biến trở.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Điều chỉnh lại giá trị sao cho có thể kiểm soát được, ví dụ như âm lượng của một dàn stereo, độ sáng, hoặc tốc độ của động cơ DC.
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Ví dụ, chúng ta có thể điều chỉnh độ sáng của một LED bằng cách tái chuẩn hóa. Như được nêu trong , độ sáng của LED có thể được điều chỉnh bằng một giá trị PWM dao động từ 0 (hoàn toàn tắt) đến 255 (hoàn toàn bật). Do đó, chúng ta có thể ánh xạ giá trị tương tự (analog) tới độ sáng của LED (từ tắt đến sáng nhất) như sau:
brightness = map(analog_value, 0, 1023, 0, 255);

Nếu bạn muốn điều chỉnh LED từ đèn ngủ mờ sang sáng nhất của nó,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 1023, nightlight , 255);

※ Lưu ý:

Hàm map() bị giới hạn ở việc tái chuẩn hóa một giá trị analog về kiểu int hoặc long. Nếu giá trị điều khiển là kiểu float, thì hàm floatMap() nên được sử dụng thay cho map().

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Mã nguồn ESP8266

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp8266/esp8266-potentiometer */ #define POTENTIOMETER_PIN A0 float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // The setup function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin: int analog_value = analogRead(POTENTIOMETER_PIN); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các thành phần như được vẽ trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, chẳng hạn như (ví dụ NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
  • Sao chép mã và mở nó trong Arduino IDE.
  • Khi đã mở, nhấn nút Upload để tải mã lên ESP8266.
tải mã lên Arduino ide
  • Mở Serial Monitor.
  • Quay biến trở.
  • Xem kết quả trên Serial Monitor.
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Hướng dẫn này sử dụng hàm analogRead() để lấy dữ liệu từ một ADC (Bộ chuyển đổi tương tự sang số) được kết nối với một cảm biến hoặc một bộ phận khác. ADC của ESP8266 hoạt động tốt cho các dự án mà bạn không cần các giá trị đo đạc quá chính xác. Tuy nhiên, hãy nhớ rằng ADC của ESP8266 không quá chính xác cho các phép đo chi tiết. Nếu dự án của bạn cần độ chính xác cao, bạn có thể muốn sử dụng một ADC riêng như ADS1115 với ESP8266, hoặc sử dụng Arduino như Arduino Uno R4 WiFi, vốn có một ADC đáng tin cậy hơn.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Thách thức bản thân

Sử dụng biến trở để thực hiện một trong các nhiệm vụ sau:

Kiến thức bổ sung

  • Các chân GNDVCC có thể hoán đổi cho nhau mà không có quy ước cụ thể. Tất cả những gì bạn cần lưu ý là giá trị điện áp tại chân đầu ra sẽ bị đảo ngược khi hai chân này được hoán đổi.

Tham khảo hàm