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

Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 để đọc nhiệt độ từ cảm biến DS18B20 và sau đó hiển thị lên màn hình OLED.

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×SSD1306 I2C OLED Display 128x64
1×SSD1306 I2C OLED Display 128x32
1×DS18B20 Temperature Sensor (WITH Adapter)
1×DS18B20 Temperature Sensor (WITHOUT Adapter)
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ề màn hình OLED và cảm biến nhiệt DS18B20

Nếu bạn chưa quen với màn hình OLED và cảm biến nhiệt DS18B20 (bố trí chân, chức năng, lập trình, v.v.), các bài hướng dẫn sau đây có thể giúp bạn:

Sơ đồ đấu dây

sơ đồ nối dây cho ESP8266 NodeMCU, cảm biến nhiệt ds18b20 và màn hình oLED

This image is created using Fritzing. Click to enlarge image

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

Chúng tôi khuyến nghị mua cảm biến DS18B20 cùng với bộ điều hợp dây đi kèm của nó để có một thiết lập liền mạch. Bộ điều hợp này tích hợp một điện trở, loại bỏ nhu cầu sử dụng thêm một điện trở trong phần dây dẫn.

Mã ESP8266 - Nhiệt độ từ cảm biến DS18B20 và hiển thị trên OLED

/* * 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-temperature-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <OneWire.h> #include <DallasTemperature.h> #define OLED_WIDTH 128 // OLED display width, in pixels #define OLED_HEIGHT 64 // OLED display height, in pixels #define SENSOR_PIN 2 // The ESP8266 pin connected to DS18B20 sensor's DQ pin Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature DS18B20(&oneWire); // pass oneWire to DallasTemperature library String temperature_str; void setup() { Serial.begin(9600); // initialize OLED display with address 0x3C for 128x64 if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); while (true); } delay(2000); // wait for initializing oled.clearDisplay(); // clear display oled.setTextSize(2); // text size oled.setTextColor(WHITE); // text color oled.setCursor(0, 10); // position to display DS18B20.begin(); // initialize the sensor temperature_str.reserve(10); // to avoid fragmenting memory when using String } void loop() { DS18B20.requestTemperatures(); // send the command to get temperatures float temperature_C = DS18B20.getTempCByIndex(0); // read temperature in Celsius temperature_str = String(temperature_C, 2); // two decimal places temperature_str += char(247) + String("C"); Serial.println(temperature_str); // print the temperature in Celsius to Serial Monitor oled_display_center(temperature_str); } void oled_display_center(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // center the display both horizontally and vertically oled.clearDisplay(); // clear display oled.setCursor((OLED_WIDTH - width) / 2, (OLED_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

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 tiên bạn sử dụng ESP8266.
  • Nối các thành phầ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 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “SSD1306” và tìm thư viện SSD1306 của Adafruit.
  • Sau đó, nhấn nút Install để hoàn tất việc cài đặt.
thư viện oLED cho ESP8266 NodeMCU
  • Bạn sẽ được nhắc nhở cài đặt thêm các phụ thuộc thư viện.
  • Để cài đặt tất cả chúng, hãy nhấp vào nút Cài đặt tất cả.
thư viện cảm biến adafruit gfx cho ESP8266 NodeMCU
  • Tìm kiếm “Dallas” và tìm thư viện DallasTemperature của Miles Burton.
  • Nhấn nút Install để cài đặt thư viện DallasTemperature.
thư viện dallas temperature cho ESP8266 NodeMCU
  • Bạn sẽ được yêu cầu cài đặt phụ thuộc. Nhấn nút Cài đặt Tất cả để cài đặt thư viện OneWire.
thư viện onewire cho ESP8266 NodeMCU
  • Sao chép mã và mở nó trong Arduino IDE.
  • Nhấp vào nút Tải lên để truyền mã vào ESP8266 của bạn.
  • Đặt cảm biến vào nước nóng và nước lạnh, hoặc giữ nó trong tay bạn.
  • Xem kết quả trên màn hình OLED.

※ Lưu ý:

Mã được đề cập sẽ căn giữa văn bản theo cả hai chiều ngang và dọc trên màn hình OLED.

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.