본문 바로가기

프로그래밍/Arduino

[Arduino] 4. Wemos D1 mini 온도 센서(DS18B20) 연결하기

아두이노 연결까지 성공적으로 했다면, 이제는 아두이노에 센서를 연결해 볼 수 있을 것이다.

Wemos D1 Mini에서도 마찬가지로 다양한 센서를 연결해 볼 수 있는데, 본 게시글에서는 온도 센서를 연결해 보려고 한다.

연결할 온도 센서는 DS18B20이라는 이름을 가지고 있다. Maxim IC에서 제작한 이 센서의 특징은 아래를 참조하자.

Dallas DS18B20 Temperature Sensor 특징

  • -55°C 에서 +125°C까지 측정 가능
  • 1-Wire Inerface를 사용한다.
  • 각 센서마다 64-bit Serial number를 가지고 있어 여러개의 센서를 동시에 연결해 제어할 수 있다.
  • Data Line을 이용해 전원공급 가능
  • 3.0V ~ 5.5V 범위의 전원공급 요구
  • 온도는 9bit ~ 12bit 범위의 데이터로 bit수는 사용자가 선택가능


1. 센서 연결하기

아래의 사진과 위의 DS18B20 센서의 Pin 정보를 잘 참조하여 연결한다. V_DQ선은 5V에, DQ는 Data부분에, GND는 G에 연결한다. DS18B20은 5V의 전압은 괜찮으나, 혹시 모르니 4.7K 저항을 준비하는 것도 나쁘지 않다.


2. 온도 측정하기

DS18B20 온도 센서를 보드에 연결했다면, 센서를 이용해 온도를 측정할 수 있도록, 프로그래밍해서 Wemos D1 Mini 보드에 올려주어야한다. 센서를 제어하기 위해서 제공된 라이브러리를 이용하도록 하자. DS18B20 온도 센서를 제어하기 위해서는 OneWire 라이브러리와 DallasTemperature 라이브러리가 필요하다.

설치를 위해서 [스케치]-[라이브러리 포함하기]-[라이브러리 추가]를 선택한다.

[라이브러리 매니저] 창에서 OneWire를 검색한다.

OneWire를 눌러 라이브러리를 설치하자.(OneWireHub가 아니다.)

마찬가지로 라이브러리 매니저에서 DallasTemperature를 검색하고, 라이브러리를 설치하자.

이제 아래의 코드를 Arduino Sketch를 이용해서 Wemos D1 Mini 보드에 업로드하도록 하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <OneWire.h> 
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS D4   //  <------------------------
 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
void setup(void
 // start serial port 
 Serial.begin(115200); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
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 temperature readings 
 Serial.println("DONE"); 
 
/********************************************************************/
 Serial.print("Temperature is: "); 
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?  
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire 
   delay(1000); 
cs

GitHub 코드 : https://github.com/LamFSangUk/Capstone-Design-1/blob/master/nodeMCU_Mission/Mission_5/temperaturetest.ino


3. 결과 확인하기

센서를 아래와 같이 설치하고, 위의 코드를 업로드해보자.



온도 측정의 결과는 Arduino Sketch에서 [툴]-[시리얼 모니터]를 이용해 확인할 수 있다.

위와 같이 현재 온도를 잘 측정하는 것을 확인해볼 수 있다.


반응형