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

Trong hướng dẫn này, chúng ta sẽ học cách lập trình Arduino để đọc nhiệt độ từ cảm biến DS18B20 một dây và hiển thị nó trên màn hình OLED.

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

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (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 Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về OLED và cảm biến nhiệt độ DS18B20

Nếu bạn chưa biết về màn hình OLED và cảm biến nhiệt DS18B20 (bố trí chân, cách hoạt động, cách lập trình ...), hãy tìm hiểu về chúng trong các bài hướng dẫn sau:

Sơ đồ đấu dây

sơ đồ nối dây Arduino với cảm biến nhiệt độ và oLED

This image is created using Fritzing. Click to enlarge image

Chúng tôi khuyên bạn nên mua một cảm biến DS18B20 đi kèm với một bộ điều hợp dây để dễ kết nối. Bộ điều hợp có điện trở tích hợp, loại bỏ nhu cầu sử dụng một điện trở riêng trong dây dẫn.

sơ đồ đấu nối oLED cho cảm biến nhiệt ds18b20 trên Arduino

This image is created using Fritzing. Click to enlarge image

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

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino/arduino-temperature-sensor-oled */ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <OneWire.h> #include <DallasTemperature.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define SENSOR_PIN 2 // Arduino pin connected to DS18B20 sensor's DQ pin Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // create SSD1306 display object connected to I2C OneWire oneWire(SENSOR_PIN); // setup a oneWire instance DallasTemperature tempSensor(&oneWire); // pass oneWire to DallasTemperature library String tempString; 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 tempSensor.begin(); // initialize the sensor tempString.reserve(10); // to avoid fragmenting memory when using String } void loop() { tempSensor.requestTemperatures(); // send the command to get temperatures float tempCelsius = tempSensor.getTempCByIndex(0); // read temperature in Celsius tempString = String(tempCelsius, 2); // two decimal places tempString += char(247) + String("C"); Serial.println(tempString); // print the temperature in Celsius to Serial Monitor oledDisplayCenter(tempString); } void oledDisplayCenter(String text) { int16_t x1; int16_t y1; uint16_t width; uint16_t height; oled.getTextBounds(text, 0, 0, &x1, &y1, &width, &height); // display on horizontal and vertical center oled.clearDisplay(); // clear display oled.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2); oled.println(text); // text to display oled.display(); }

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

  • Mở Arduino IDE trên máy tính của bạn.
  • Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “SSD1306”, sau đó tìm thư viện SSD1306 của Adafruit.
  • Nhấn nút Cài đặt để cài đặt thư viện.
thư viện oLED cho Arduino
  • Bạn sẽ được yêu cầu cài đặt một số phụ thuộc thư viện khác.
  • Nhấp vào nút Cài đặt Tất cả để cài đặt tất cả các phụ thuộc của thư viện.
thư viện cảm biến Arduino adafruit gfx
  • Tìm kiếm “DallasTemperature”, sau đó tìm thư viện DallasTemperature do Miles Burton.
  • Nhấn nút Install để cài đặt thư viện DallasTemperature.
thư viện dallas temperature cho Arduino
  • Bạn sẽ được yêu cầu cài đặt phụ thuộc của thư viện.
  • Nhấn nút Cài đặt Tất cả để cài đặt thư viện OneWire.
thư viện onewire cho Arduino
  • Sao chép mã ở trên và mở bằng Arduino IDE.
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên Arduino.
  • Đặt cảm biến vào nước nóng và nước lạnh, hoặc nắm cảm biến bằng tay của bạn.
  • Xem kết quả trên màn hình OLED.

※ Lưu ý:

Đoạn mã trên tự động 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.