Đo Nhiệt độ Từ Cảm Biến DS18B20 | VBLUno51 Board - VNGIoTLab!

Toggle navigation Bo mạch VBLUno51 VBLUno51 - VNG Bluetooth Low Energy UNO nRF51822 - Mạch phát triển ứng dụng cho IoT
  • Tin mới
  • Tài nguyên liên kết
    • VBLUno trên Facebook
    • Cửa hàng bán VBLUno
    • Mô đun DAPLink (CMSIS-DAP)
    • VBLUno trên diễn đàn Arduino.vn
  • SDK & OS hỗ trợ
    • Arduino IDE
    • ARM mbed-OS
    • Apache Mynewt-OS
    • Zephyr
    • RIOT-OS
    • Nordic SDK
  • Ý kiến
    • Gửi yêu cầu trên Github
    • Gửi tin nhắn trực tiếp trên Facebook
  • ENGLISH
  • Bo mạch VBLUno51
  • Tổng quan
    • Giới thiệu VBLUno51
    • Chú ý các phiên bản phần cứng (quan trọng)
    • Software Development Kit
    • Bạn có thể tạo được các ứng dụng gì với VBLUno51?
  • Tài liệu
    • Đặc tả Nordic nRF51822
    • Sơ đồ nguyên lý & PCB
    • Pinout
    • Fritzing Part
    • Nâng cấp firmware cho DAPLink
    • mbed Serial driver (Chỉ với Windows)
  • ==Các module BLE==
    • Module VNG BLE nRF51822
    • Module VNG BLE nRF52832
  • Bắt đầu thôi!
    • Sử dụng Arduino IDE
    • Sử dụng mbed-OS
      • mbed Online Compiler
      • GNU ARM Embedded & Eclipse IDE (khuyên dùng)
      • Keil uVision
    • Sử dụng Zephyr-OS
  • Công nghệ Bluetooth Low Energy (BLE)
    • Giới thiệu công nghệ Bluetooth Low Energy
    • Hướng dẫn BLE với mbed-OS
  • Loạt bài hướng dẫn
    • Adruino
      • Tut1 - Thiết bị đo nhịp tim (HRM) với VBLUno51
      • Tut2 - Thiết bị Beacons với VBLUno
      • Tut3 - Đo nhiệt độ bên trong chip nRF51822
      • Tut4 - Nhiệt kế y tế (HTM) với VBLUno
      • Tut5 - Truyền thông giữa Smartphone và máy tính với “UART over BLE”
      • Tut6 - Điều khiển/Giám sát một thiết bị bất kỳ bằng Smartphone thông qua BLE
      • Tut7 - Sử dụng màn hình I2C OLED
      • Tut8 - Sử dụng màn hình GLCD trên máy GPhone
      • Tut9 - Đo nhiệt độ từ cảm biến DS18B20
      • Tut10 - Đo nhiệt độ, độ ẩm từ cảm biến DHT11
      • Tut11 - Ứng dụng giám sát nhiệt độ, độ ẩm môi trường
      • Tut12 - Ứng dụng tránh quên chìa khóa hoặc bảo vệ tài sản
    • mbed-OS
      • Tut1 - Lập trình/Gỡ lỗi cho VBLUno bằng pyOCD, OpenOCD trên GNU ARM Embedded + Eclipse
      • Tut2 - BLE Beacons
    • Zephyr-OS
      • Tut1 - BLE Beacons
      • Tut2 - Điều khiển thiết bị bằng ứng dụng mobile qua BLE
    • Viết phần mềm trên Smartphone
      • Tut1 - Sử dụng Android Studio viết phần mềm thu tín hiệu Beacons
      • Tut2 - Sử dụng Android Studio viết phần mềm điều khiển, giám sát thiết bị qua BLE
      • Tut3 - Sử dụng MIT App Inventor viết phần mềm kết nối thiết bị qua BLE
  • Mã nguồn ví dụ
    • Arduino
    • mbed-OS
    • Zephyr-OS
    • Ứng dụng Android-OS
  • Video
    • Ví dụ BLE Serial
    • Robot điều khiển từ xa qua BLE với VBLUno
  • Ứng dụng mobile cho BLE
    • iBeacon & Eddystone Scanner (Android)
    • Nordic nRF Toolbox
      • Android
      • iOS
    • nRF UART 2.0 (Android)
    • Mã nguồn (mở)
      • Nordic nRFToolbox (Android)
      • BluetoohLeGatt Example (Android)
  • Liên kết
    • Cửa hàng IoTViet
    • VNG ZaloPay – (Ứng dụng thanh toán tự động, có dùng BLE)
    • VNG CSM Router (Chuyên dụng cho Phòng máy)
    • Vietnam IoT Alliance page
    • ARM mbed OS developer site
    • Cửa hàng IoTMakerVN
  • Liên hệ
    • Cửa hàng
    • Bluetooth Low Energy – BLE Vietnam page
Đo nhiệt độ từ cảm biến DS18B20

1. Cảm biến nhiệt độ DS18B20

Chuẩn giao tiếp One Wire

(Nguồn tham khảo: https://vi.wikipedia.org/wiki/1-Wire)

DS18B20

(Nguồn tham khảo: http://codientu.org/threads/5207/)

DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, đóng gói dạng TO-92 3 chân nhỏ gọn.

Đặc điểm chính của DS18B20 như sau:

  • Lấy nhiệt độ theo giao thức 1 dây (1wire)

  • Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng. Trong trường hợp không config thì nó tự động ở chế độ 12 bit. Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit​

+Có thể đo nhiệt độ trong khoảng -55 -> +125°C. Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C. theo số bít config.

  • Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.

  • Cảm biến nhiệt độ DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này. Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo ý muốn.

  • Điện áp sử dụng : 3 – 5.5 V​

  • Dòng tiêu thụ tại chế độ nghỉ rất nhỏ.​

2. Thư viện DS18B20 cho VBLUno51

Trên Adruino, để bo mạch VBLUno51 điều khiển, đọc giá trị nhiệt độ từ cảm biến DS18B20, ta cần sử dụng các thư viện sau:

OneWire

  • Thư viện mức thấp, hỗ trợ vi điều khiển giao tiếp với các IC qua chuẩn OneWire

  • Download tại đây https://github.com/VNGIoTLab/OneWire

  • Đã sửa để làm việc tốt trên các bo mạch VBLUno của VNG

Arduino-Temperature-Control-Library

  • Download tại đây https://github.com/milesburton/Arduino-Temperature-Control-Library

  • Có sử dụng thư viện OneWire làm thư viện cơ sở

Các thư viện hiển thị lên màn hình OLED

  • Tham khảo tại Tutorial 7 dành cho Arduino trên mạch VBLUno51

3. Kết nối phần cứng

TT Chân của DS18B20 Kết nối với mạch VBLUno51
1 GND GND
2 DQ D2
3 VDD +3.3V

Mắc một điện trở 4.7KOhm giữa DQ(2) và VDD(3).

4. Mã nguồn

Mã nguồn Arduino dưới đây thực hiện việc đo nhiệt độ từ cảm biến nhiệt độ số DS18B20, sau đó hiển thị giá trị lên màn hình OLED I2C và gửi lên máy tính qua cổng Serial.

//Onewire sensor library #include <OneWire.h> #include <DallasTemperature.h> //I2C OLED SSD1306 screen library #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define ONE_WIRE_BUS 2 // Data wire is plugged into port 2 on the Arduino OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) DallasTemperature sensors(&oneWire); // Pass our oneWire reference to Dallas Temperature. #define OLED_RESET 4 Adafruit_SSD1306 oled(OLED_RESET); /* * The setup function. We only start the sensors here */ void setup(void) { // start serial port Serial.begin(115200); Serial.println("------------------------------------------"); Serial.println("Example for VBLUno51 board"); Serial.println("Dallas Temperature IC Control Library Demo"); //start oled oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); oled.clearDisplay(); oled.setTextSize(1); oled.setTextColor(WHITE); oled.setCursor(0,0); oled.println("VBLUno51 board:"); oled.display(); // Start up the library sensors.begin(); delay(1000); } /* * Main function, get and show the temperature */ double temp = 0.0f; void loop(void) { // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("DONE"); // After we got the temperatures, we can print them here. // We use the function ByIndex, and as an example get the temperature from the first sensor only. Serial.print("Temperature for the device 1 (index 0) is: "); temp = sensors.getTempCByIndex(0); Serial.println(temp); oled.clearDisplay(); oled.setCursor(0,0); oled.println("Temperature (C):\r\n"); oled.println(temp); oled.display(); delay(1000); }

5. Kết quả

  • Xem video demo tại ĐÂY
Tags: huong_dan

Từ khóa » Sơ đồ Chân Ds18b20