ESP8266 Cảm biến nhiệt độ LM35

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để đọc nhiệt độ từ cảm biến LM35. 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×LM35 Temperature Sensor
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ề Cảm biến Nhiệt LM35

Sơ đồ chân của cảm biến nhiệt LM35

Cảm biến nhiệt độ LM35 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 VCC (5V)
  • Chân OUT: Chân tín hiệu này cung cấp một điện áp đầu ra tỉ lệ tuyến tính với nhiệt độ, và nên được kết nối với một chân analog trên ESP8266.
sơ đồ chân cảm biến nhiệt độ lm35

Cách hoạt động

LM35 tạo ra một điện áp tỉ lệ tuyến tính với nhiệt độ theo thang Celsius. Điện áp đầu ra của LM35 có hệ số tỉ lệ là 10 mV/°C. Điều này có nghĩa nhiệt độ có thể được xác định bằng cách chia điện áp tại đầu ra (đơn vị mV) cho 10.

Sơ đồ đấu dây

sơ đồ nối dây cảm biến nhiệt lm35 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 Cảm Biến Nhiệt LM35

  • Lấy giá trị ADC từ cảm biến nhiệt độ bằng cách sử dụng hàm analogRead().
int adcVal = analogRead(PIN_LM35);
  • Chuyển đổi giá trị ADC thành một điện áp ở đơn vị mili volt.
float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION);
  • Chuyển đổi điện áp sang nhiệt độ Celsius.
float temperature_C = milliVolt / 10;
  • Tuỳ chọn: chuyển đổi từ Celsius sang Fahrenheit.
float temperature_F = temperature_C * 9 / 5 + 32;

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-lm35-temperature-sensor */ #define ADC_VREF_mV 3300.0 // in millivolt #define ADC_RESOLUTION 1024.0 #define PIN_LM35 A0 // The ESP8266 pin ADC0 connected to LM35 void setup() { Serial.begin(9600); } void loop() { // read the ADC value from the temperature sensor int adcVal = analogRead(PIN_LM35); // convert the ADC value to voltage in millivolt float milliVolt = adcVal * (ADC_VREF_mV / ADC_RESOLUTION); // convert the voltage to the temperature in °C float temperature_C = milliVolt / 10; // convert the °C to °F float temperature_F = temperature_C * 9 / 5 + 32; // print the temperature in the Serial Monitor: Serial.print("Temperature: "); Serial.print(temperature_C); // print the temperature in °C Serial.print("°C"); Serial.print(" ~ "); // separator between °C and °F Serial.print(temperature_F); // print the temperature in °F Serial.println("°F"); delay(500); }

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:

  • 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 linh kiện như được thể hiện 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 đúng, ví dụ như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấn nút Upload trong IDE để tải mã lên ESP8266.
  • Giữ cảm biến trong tay bạn.
  • Kiểm tra kết quả trên Serial Monitor.
COM6
Send
Temperature: 26.31°C ~ 79.36°F Temperature: 26.44°C ~ 79.59°F Temperature: 26.50°C ~ 79.70°F Temperature: 26.56°C ~ 79.81°F Temperature: 27.06°C ~ 80.71°F Temperature: 27.75°C ~ 81.95°F Temperature: 28.37°C ~ 83.07°F Temperature: 29.00°C ~ 84.20°F Temperature: 29.56°C ~ 85.21°F Temperature: 30.00°C ~ 86.00°F Temperature: 30.31°C ~ 86.56°F Temperature: 30.62°C ~ 87.12°F Temperature: 30.87°C ~ 87.57°F
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ín hiệu từ 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 độ chính xác rất cao. Tuy nhiên, hãy nhớ rằng ADC của ESP8266 không đủ 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 dùng Arduino như Arduino Uno R4 WiFi, 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.

Tham khảo các hàm