반응형

 

 

 

아두이노(Arduino)에서 자주 사용하는 센서 및 모듈을 소개하는 시간으로 오늘은 적외선 센서에 대해 알아보겠습니다. 적외선 PIR (Passive Infrared Sensor) 센서는 외부에서 발생하는 적외선을 감지하는 센서입니다. 여기서 Passive가 붙은 이유는 센서가 수동적으로 주변의 적외선을 detecting하여 주변을 감지하기 때문입니다. 이와 반대로 센서에서 적외선을 방출하여 주변을 감지하는 적외선 센서도 있습니다.

 

지난 포스팅에서 초음파 센서 HC-SR04를 이용하여 사람의 동작을 감지할 수 있는 것을 살펴보았는데요. 초음파 센서에 비해 적외선 PIR 센서가 view angle이 더 넓습니다. 즉, 주변을 감지할 수 있는 범위가 더 넓은데, 이는 초음파 센서는 센서에서 초음파가 발생하여 물체에 반사되어 다시 센서가 detecting하기까지 경로가 있기 때문에 적외선 센서에 비해 좁은 영역을 감지할 수밖에 없습니다.

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(

it-g-house.tistory.com


 

1. 적외선 PIR (Passive InfraRed) 센서 HC-SR501

 

아두이노에서 자주 사용되고 온라인에서 쉽게 구할 수 있는 HC-SR501 적외선 PIR 센서 모듈입니다. 가격도 저렴한 편인데 사용하기도 편하고 생각보다 많은 설정이 가능해서 널리 사용되는 듯 합니다. 오늘 예시는 이 HC-SR501 모듈로 진행하겠습니다.

 

 

아두이노 적외선 PIR 센서 (HC-SR501)

 

동작전압 (Operating voltage) 5~12VDC
출력전압 (Output voltage) 0 V (Low) / 3.3V (High)
감지각도 (View angle) 110~120도
설정 기능 (Setting option) 감도(거리), 지연시간, 신호방식

설정 기능은 아래 사진에서 볼 수 있듯이 돌릴 수 있는 나사 두개와 접선을 해주는 점퍼대로 여러 가지 조절이 가능합니다.

 

 

감도(거리, Distance) 조절 : 시계방향으로 돌리면 감도가 낮아져 적외선을 sensing할 수 있는 거리가 줄어듭니다.

 

지연시간 (Delay Time) 조절 : 적외선 감지후 감지된 신호(High)를 얼마간 유지할지 조절이 가능합니다. 시계방향으로 돌릴수록 신호를 유지하고 있는 시간이 짧아집니다.  

 

신호방식 조절 : 좌측의 점퍼대를 옮겨 연결하면 감지신호를 한번만 보내주는 모드이고, 다른 모드는 감지신호를 계속해서 보내 주는 모드입니다.  

 

▶ 적외선 센서 사러가기  smartstore.naver.com/storeplant/products/5347527847

 

 

2. 아두이노 (Arduino) 적외선 PIR (Passive InfraRed) 센서 배선

 

 

아두이노 적외선 PIR 센서 (HC-SR501) 배선

 


 

 

3. 아두이노 (Arduino) 프로그램 코딩

 

int inputPIN = 3;    
int PIRstatus = 0;    
int Readinput = 0;  
  
void setup() {  
   pinMode(inputPIN, INPUT);   
   Serial.begin(9600);    
}  
  
void loop(){  
  Readinput = digitalRead(inputPIN);    
  if(Readinput == 1 && PIRstatus == 0){
      Serial.println("Action!");    
      PIRstatus = 1;    
     }  
  if(Readinput == 0 && PIRstatus == 1){  
        Serial.println("End!");    
        PIRstatus = 0;  
       }  
    delay(1000);  
   }  
   

pinMode와 if 명령어를 사용하여 프로그램을 코딩합니다. 센서가 적외선을 감지(사람을 인지)하면 연결된 digital 3번 pin으로 High 신호를 보내고 아두이노가 신호를 읽어 시리얼 모니터에 "Action"이라고 메시지를 보냅니다. 사람이 지나가고 적외선 감지가 없으면 센서에 설정해놓은 감지시간이 지나고 아두이노에 Low 신호를 보내 "End" 메시지를 볼 수 있습니다.

 

pinMode와 if 명령어가 처음이신 분은 아래 링크 참조 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙

it-g-house.tistory.com

 


  이번 포스팅에서는 아두이노(Arduino)에서 많이 사용하는 적외선 PIR 센서에 대해 알아보고 사용방법에 대해 살펴보았습니다. 다음 포스팅에서는 적외선을 응용하여 자동센서등이나 자동문 등을 만들 수 있는 방법에 대해 공부해 보겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 조언주실 내용은 댓글로 언제든지 남겨주세요 ^^

 


 

▽ 적외선 FIR 센서를 이용한 홈 IoT 무드등 만들기 응용편!! 

 

아두이노(Arduino) 응용, 적외선 FIR센서를 이용한 무드등 만들기

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 적외선 FIR센서를 이용하여 무드등을 만들어보겠습니다. 최근 집에 머무르는 시간이 길어지면서 인테리어에 많은 관심이 생겼

it-g-house.tistory.com

 

 

 

반응형
반응형

 

 

 

스마트팜(Smart Farm) 구축 중 하나인 자동관수 시스템에 자주 사용되는 솔레노이드 밸브(Solenoid Valve)에 대해 알아보겠습니다.

 

솔레노이드 밸브는 전자밸브 중 하나인데 전기신호를 받아 밸브를 on/off 할 수 있는 밸브를 전자밸브라고 합니다. 다양한 종류의 전자밸브가 있으며 그중에 솔레노이드 밸브는 솔레노이드의 특성을 이용한 밸브장치라고 생각하시면 되며, 솔레노이드 밸브 종류 또한 다양한 종류가 있습니다.

 

오늘 소개해 드릴 솔레노이드 밸브는 자동관수에 일반적으로 가장 많이 사용하는 형태로 아래와 같이 생긴 솔레노이드 밸브입니다.

  

 

위 제품은  관수밸브에서 꽤나 알려진 "버마드(Bermad)"라는 회사의 솔레노이드 밸브로 24VAC에 작동합니다. 솔레노이드 밸브의 구동전압이 다양한 제품들이 시중에서 판매되고 있지만 주로 12VDC 또는 24VAC를 많이 찾아볼 수 있습니다. 따라서 아두이노(Arduino)를 이용하여 솔레노이드 밸브를 작동하려면 12VDC/24VAC 또는 spec.에 맞는 외부전원을 사용해야 합니다. 외부전원을 사용하는 방법은 자동선풍기를 만들었던 방법과 동일하니 아래 링크 참조하시고, 뒤에서 다시 또 설명하도록 하겠습니다.

 

아두이노(Arduino)를 이용한 센서(Sensor) 작동 자동 선풍기 만들기

아두이노(Arduino)를 이용한 홈 IoT (생활응용)에 적용하는 시간으로 무더운 여름 시즌에 맞춰 자동 선풍기를 만들어보겠습니다. 2020년 여름은 예년보다 특히 더 덥다고 하니 똑똑한 자동 선풍기로

it-g-house.tistory.com


1. 솔레노이드 밸브(Solenoid Valve) 원리

 

앞서 설명한데로 솔레노이드 밸브는 솔레노이드 특성을 사용합니다. 다들 아시겠지만 솔레노이드는 긴 원통에 코일을 감아놓은 것입니다. 여기에 전류가 흐르면 자기장이 발생하는 데 그 원리를 이용하여 밸브를 열고 닫고 합니다.

 

동작 방식을 설명하기 앞서 솔레노이드 밸브 구성은 아래와 같이 빨간 점선 부분의 솔레노이드 부분과 파란색 점선 부분의 밸브로 두 부분으로 나눌 수 있습니다.

아래는 위키피디아에 있는 그림인데 동작 방식을 잘 설명해주고 있습니다. 빨간색 부분의 솔레노이드에 해당하는 부분이 E 부분이며 밸브가 나머지라고 생각하시면 됩니다. 위에 그림이 밸브가 닫혀 있을 때, 아래 그림이 밸브가 열렸을 때(솔레노이드에 전기신호를 주었을 때 = 전류가 흐를 때)입니다.

 

A- Input side (물의 주입구)
B- 영어로 Diaphragm라고 되어 있는데 실제로 고무 판막입니다.
C- Pressure chamber
D- Pressure relief passage
E- Electro-Mechanical Solenoid (솔레노이드)
F- Output side (물의 출구)

 

밸브가 닫힌 상태에서 A로 물이 들어오면 B의 고무 판막 중앙에 뚫려있는 작은 구멍을 통해 C에 물이 가득 찹니다. 그래서 F의 출구 쪽 압력과 C의 압력 차이로 인해 밸브가 열리지 않는 상태가 됩니다. 밸브를 열기 위해 E 솔레노이드에 전기신호가 들어가면 E의 검은색으로 막고 있는 부분이 열리고 C의 물이 D쪽 통로로 빠져나가면서 B의 고무 판막이 들리게 되어 밸브가 열리고 A에서 F로 물이 통할 수 있는 길이 열립니다.

 


 

 

 

2. 12VDC 솔레노이드 밸브(Solenoid Valve)

 

위에서 설명을 위해 보여드렸던 "버마드" 제품은 비싸기도 하고 구동전력이 24VAC라서 외부전원으로 어댑터(변압기)도 구하기 쉽지 않습니다. 그래서 가격도 저렴하면서 12VDC에 구동하는 제품을 추천드립니다.

 

12VDC Solenoid Valve

 

3. 솔레노이드 밸브(Solenoid Valve) 아두이노(Arduino) 배선

 

어댑터 및 변압기의 전선작업을 하실 때는 위험하니 꼭 주의하셔서 진행하시기 바랍니다.

 

아두이노(Arduino)를 이용한 솔레노이드 밸브(Solenoid Valve) 사용하는 방법

 

4. Test 프로그램 코딩

 

배선 후 간단하게 테스트할 수 있는 프로그램 코드 아래 첨부하겠습니다. 3초 동안 on 하고 5초 동안 off 되는 동작을 반복하기 때문에 연결해서 정상 동작하는지 확인 가능합니다.

int Relay = 3;
 
void setup(){
  pinMode(Relay,OUTPUT);         // 릴레이를 출력으로 설정
  }
 
void loop(){
    digitalWrite(Relay,HIGH);     // 릴레이 ON
    delay(3000);                  // 3초동안 ON
    
    digitalWrite(Relay,LOW);      // 릴레이 OFF
    delay(5000);                  // 5초동안 OFF
}

 


 

 

 


오늘은 솔레노이드 밸브(Solenoid Valve)에 대해 알아보고, 아두이노(Arduino)를 이용하여 어떻게 사용하는지 보았습니다. 전자밸브는 꼭 관수뿐만 아니라 가스관이나 유체 등의 밸브에도 많이 사용될 수 있기 때문에 알아두시면 프로젝트를 진행할 때 많은 도움이 되실 겁니다.

 

이를 응용하여 스마트팜에 토양수분센서를 이용하여 자동으로 관수하는 시스템을 만들어 보겠습니다. 

 

오늘도 긴 글 읽어 주셔서 감사합니다.

 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)의 센서들을 알아보는 시간으로 앞선 포스팅에서 아두이노를 이용해 온실(식물) 재배 환경을 측정하는 시스템을 만들 때 사용했던 광센서, 조도센서(Light sensor)에 대해 알아보겠습니다.

 

광센서는 보통 일조량을 측정하거나 빛을 감지할 때 사용하곤 해서 일상생활에서는 쉽게 접하기는 사실 어려울 수도 있을 거 같습니다. 그러나 가시광선 영역 외 사람 눈으로 보기 어려운 자외선 및 적외선 파장대를 사용하는 기기의 빛을 감지하거나 빛을 이용한 통신을 할 때도 광센서를 사용하는 등 알게 모르게 생활 속 다양한 곳에서 다양한 종류의 광센서가 사용되고 있습니다. 

 

지난 포스팅에서 광센서는 재배온실의 환경을 측정하거나 식물에게 필요한 광량을 정밀하게 측정하기 위해 사용하는 것으로 소개드렸습니다. 이처럼 이번 포스팅에서는 태양의 빛의 세기인 조도(Lux)를 측정하는 아두이노용 광센서를 소개해드리고 사용방법에 대해 알아보겠습니다.

 

아두이노(Arduino)를 활용한 온실(식물) 재배 환경 측정

아두이노(Arduino)의 기본적인 몇 가지만 습득하면 정말 다양한 분야에서 활용 가능합니다. Micro-controller에 맞게 주로 외부기기나 센서를 제어하는데 탁월한 능력을 가지고 있기 때문에 홈 IoT나 ��

it-g-house.tistory.com

 


 

1. bh1750 조도센서

 

아두이노용 bh1750 조도센서

 

아두이노에서 사용할 광센서를 검색하면 일반적으로 bh1750 조도센서를 많이 찾아볼 수 있습니다. 그중 위의 사진처럼 CY-30 또는 GY-302 모듈이 가장 많이 검색되는데 모두 Cds 타입의 조도 센서입니다.

 

Cds는 황화 카드뮴(Cadmium Sulfide) 약자로 빛에 반응하는 화합물로 빛을 Cds에 비추었을 때 내부의 전기전도도가 높아지는 광도전 효과(果, photoconductive effect)가 나타납니다. 빛이 많이 들어오면 저항이 작아지고 적게 들어오면 저항이 커지는 성질을 이용하여 빛의 유무를 측정할 수 있는 광도전소자에 많이 이용됩니다. CdS 광도전소자는 가시광선 대역에서 특히 높은 감도를 나타내기 때문에 가시광선 영역대의 빛의 세기(조도, Lux)를 측정하는 광센서로 사용됩니다. 

 

황화카드뮴 조도 센서

 

보통 Cds 조도센서라고 하면 위 사진과 같은 제품을 많이 보셨을 거라 생각되고 이런 단품으로 생각이 됩니다. 그러나 아두이노에서 사용하려면 모듈 제품이 필요하고 실질적으로 실외나 사용 환경에 따라서 모듈의 회로까지 보호할 수 있는 형태면 더욱 좋습니다. 그래서 저는 bh1750fvi 모듈을 사용하고 오늘 포스팅에도 이 모듈을 가지고 진행하려고 합니다.

 

 

아두이노(Arduino) bh1750fvi 조도센서
bh1750fvi 조도센서
아두이노(Arduino) bh1750fvi 조도센서

사진에서 볼 수 있듯이 외부환경으로부터 회로를 보호하고 태양의 직사광선을 확산시켜주는 덮개가 있어 실외에서 사용하기에도 적합합니다. 혹시 아두이노용으로 사용할 수 있는 더 괜찮은 조도센서가 있다면 추천 부탁드립니다 ^^

 

 

 


 

2. 아두이노(Arduino)와 bh1750 조도센서 배선

 

2-1. I2C 통신

 

bh1750 조도센서는 I2C 통신을 합니다. I2C (Inter-Integrated Circuit)은 실제로는 I²C (아이 스퀘어 씨)가 올바른 표기이지만 다들 I2C(아이 투 씨)라고 많이들 표기합니다.

 

I²C 는 풀업 저항이 연결된 직렬 데이터(SDA)와 직렬 클럭(SCL)이라는 두 개의 양 방향 오픈 컬렉터 라인을 사용합니다. 즉, 데이터(SDA)와 데이터의 전송 타이밍(SCL)을 위한 두 개의 선으로 통신을 하는 방식입니다. 

 

I²C는 빠른 속도를 요구하지 않는 간단한 저비용 주변 장치들에 적합하며, 특히 아두이노 같은 Micro-controller에서  단지 2개의 입출력 핀 소프트웨어만을 이용하여 여러 장치들을 제어할 수 있다는 장점이 있습니다. 또한 일반적으로 더 적은 전력을 소모하기 때문에 휴대전화나 이동형 장치들에서 사용하기에 편리합니다 (위키백과).

 

 

아두이노(Arduino) I2C 통신

 

인터넷 상에서 'I2C 통신'이라고 검색을 하면 위와 같은 그림을 많이 볼 수 있습니다. 통신을 위해서 하나의 Master와 하나 이상의 Slave가 구성되는데 Master는 MCU, 아두이노가 되며, Slave는 device, 외부기기 및 센서가 됩니다.

 

Slave는 여러개 동시에 연결을 하여 통신할 수 있는데 이때 Slave 간 구별을 위해 각 Slave마다 개별 주소(address)가 필요합니다. 실제 아두이노 프로그램이나 라이브러리에 포함된 내용을 보게 되면 I2C통신을 하는 센서나 외부기기는 address가 부여되어 있습니다.

 

더 자세한 내용은 I2C통신으로 검색하여 찾아보시면 정말 다양한 정보가 있으니 참고 부탁드리며, 여기에서는 오늘 사용하려는 bh1750 광센서가 I2C 통신을 한다. 그래서 두 개의 선 (SDA, SCL)이 필요한데, SCL (직렬 클럭)이 데이터 전송 타이밍을 맞춰주는 방식으로 통신을 한다. 또한 각 Slave에는 address가 부여하여 구분을 하기 때문에 아두이노의 하나의 SDA, SCL 포트에 여러 개의 센서 및 외부기기를 병렬로 연결하여 사용할 수 있다! 정도만 기억하시면 됩니다.

 

2-1. 아두이노와 조도센서 배선

 

bh1750 센서에는 VCC/SCL/DAT/GND/ADD 로 총 5개의 연결 단자가 있습니다. 각각 아두이노의 적합한 pin에 연결하시면 됩니다. VCC는 5V, GND는 GND, ADD는 연결하지 않거나 GND에 연결하고, 앞서 소개해드린 SCL과 DAT (SDA)는 각각 아날로그 핀 (Analog pin) 5번과 4번에 연결하시면 됩니다. 

 

아두이노(Arduino)와 조도센서(Light sensor) 배선

 

 

 


 

2. 프로그램 코딩

 

먼저 라이브러리를 다운받습니다. 다운로드한 라이브러리는 스케치에서 추가해주시고, 혹시 라이브러리를 처음 사용하시는 분은 아래 링크 참조하셔서 스케치에서 라이브러리를 추가하는 방법을 알아두시면 유용합니다.

 

BH1750-master.zip
0.27MB

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명

it-g-house.tistory.com

#include <BH1750.h>

BH1750 lightMeter;

void setup(){

  Serial.begin(9600);
  lightMeter.begin();
  }

void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);
  }

코드는 라이브러리를 사용하기 때문에 생각보다 간단합니다. 라이브러리에 속해있는 명령어 lightMeter.begin(); 명령어가 setup에서 실행되고, 변수 lux에 lightMeter.reaLightLevel(); 명령어로 측정된 조도 값을 저장한 뒤 Serial.print 명령어로 출력하는 순서입니다. 

 

프로그램 코딩 후 컴파일/업로드를 진행하면 시리얼 모니터로 조도센서에 의해 측정된 조도 값이 1초 간격으로 나타나는 것을 확인할 수 있습니다.


여기까지 아두이노(Arduino) 센서 중 조도센서(Light sensor) bh1750 모듈의 사용 방법을 알아보았습니다. 이와 함께 I2C통신 방식에 대해서도 간단하게 설명드렸습니다. 추후 기회가 생기면 통신방식에 대해서 정리해보는 포스팅을 하도록 하겠습니다.

 

앞서 소개해드렸듯이 조도센서는 일상생활에서 알게모르게 많이 사용되기도 하고 특히 식물 재배 환경에서는 햇빛의 광량을 측정할 수 있기 때문에 아주 유용합니다. 식물에게 일일적산광량 (DLI, Day Light Integral) 매우 중요한 개념이고, 개화에 있어서 광량 및 주기 또한 큰 영향을 미치기 때문에 꼭 측정하는 항목이기도 합니다.

 

광이 식물에 영향을 미치는 부분은 아두이노 블로그에서는 다루지는 않도록 하겠습니다. ㅎㅎ 그럼 오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 다양한 의견 댓글로 남겨주시면 감사하겠습니다.

 

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)를 다루다 보면 다양한 모듈을 사용할 기회가 많은데 그 중에 쉴드(shield) 제품을 사용할 경우가 있습니다. 아두이노 쉴드는 아두이노 보드 본체와 탑처럼 쌓을 수 있게 아두이노의 pin과 결합이 가능한 모듈을 말합니다. 각 쉴드마다 특정 기능을 탑재하고 있어서 마치 아두이노 본체를 하드웨어적으로 업그레이드하는 Flex 한 느낌이 드는 모듈입니다. 

 

아두이노 쉴드 종류는 현재 시장에 나와있는 종류만 300가지가 넘고, Wifi, 이더넷, 블루투스, SD카드, USB, 등 정말 다양한 기능을 탑재한 쉴드제품이 있습니다. 쉴드 하나하나 자세히 다루고 싶긴 하지만 직접 사용해봐야 설명도 가능해서 우선 몇 가지 소개하고 있는 블로그를 아래 링크 걸어두게요 ^^ 참고하세요~

 

[아두이노 기초 강좌] 아두이노 쉴드란? 개념과 종류에 대해

[아두이노 기초 강좌. 아두이노 쉴드의 개념 및 종류] 이번 강좌에서는 아두이노 쉴드(Arduino Shield)에...

blog.naver.com

 

아두이노(Arduino) 쉴드(shield) 제품

아두이노 쉴드를 직접 사용해보시면 아실 듯 하지만 다양한 장점이 있습니다. 우선 단일 모듈은 배선을 해야 해서 전선을 복잡하게 사용해야 하는 경우가 있지만 쉴드는 pin 결합을 통해 배선이 하나 없어도 사용 가능합니다. 또한 아래와 같이 다양한 기능을 탑재한 쉴드를 결합해서 하나의 제품처럼 콤팩트 하게 사용할 수 있는 장점이 있습니다. 좀 멋지죠? ㅎㅎ 하지만 역시나 단점이 많다는 것!! 단점은 각 쉴드에 따라 경중이 있어서 쉽게 말하기 어렵지만.. 치명적인 결함도 있는 경우도 다수 있으니 항상 주의해서 구입해야 합니다.

아두이노 쉴드 사용예

쉴드 제품에 대해서 설명은 이렇게 가볍게 넘어가고 오늘 주제인 가장 관심이 많은 Wifi ESP8266 쉴드 제품 사용 방법에 대해 알아보도록 하겠습니다.

 

 


1. ESP8266 Wifi 쉴드(shield) 모듈

 

ESP8266 Wifi 쉴드 제품은 ESP8266 Wifi 모듈과 같이 ESP8266 칩셋을 사용하기 때문에 Wifi 모듈과 동일한 역할을 합니다. 아두이노에는 일반적으로 기본보드에는 와이파이 칩이 없기 때문에 와이파이 기능이 되려면 Wifi 모듈을 사용하거나 Wifi 쉴드를 사용하면 됩니다. 제품 모양은 아래 사진같이 생겼는데 좌측 중앙에 있는 칩이 Wifi 칩셋이고 그 주위로 Chip의 각 GIPO (General Purpose Input/Output)에 연결할 수 있게 pin이 배치되어 있고 보드 뒷면에는 아두이노의 pin과 결합할 수 있게 pin 다리가 있습니다. 그리고 특이하게 프로그램을 업로드할 때 사용하는 스위치가 있는데 뒤에서 사용방법을 얘기할 때 자세하게 설명드리겠습니다. 

아두이노(Arduino) Wifi 쉴드(shield)

 


 

2. ESP8266 Wifi 쉴드(shield) 모듈 라이브러리(Library) 추가

 

잠깐! ESP8266 Wifi 쉴드를 아두이노 본체에 먼저 결합하시지 마시고요 ㅎㅎ 그전에 라이브러리를 설치하고 스케치를 통해 프로그램을 아두이노를 통해서 쉴드에 업로드해야 합니다. 아마 여기저기 사용방법을 찾아보셨을 건데.. 일부 사용방법에서 펌웨어를 업로드해야 해서 추가로 모듈을 사용해야 한다고 포스팅되어 있는데도 많을 겁니다. 하지만! 매번 하는 이야기이지만 쉽게 복잡한 거 싫어하는 저는 아두이노만으로 충분히 동작하였습니다. 그럼 진행해 볼까요?

 

우선 라이브러리를 다운로드하기 전에 스케치 메뉴에서 File(파일) -> preferences(환경설정)에서 Additional Boards Manager URLs(추가적인 모드 매니저 URLs)에 http://arduino.esp8266.com/stable/package_esp8266com_index.json를 추가해줍니다.

 

아두이노(Arduino) 스케치 환경설정
아두이노(Arduino) 스케치 환경설정에 URLs 추가

그리고 라이브러리 포함하기(Include Library) 메뉴의 라이브러리 관리(Manage Libraries)에서 ESP8266 Community의 esp8266 라이브러리를 설치합니다.

 

아두이노(Arduino) 스케치에서 라이브러리(Library) 추가
esp8266 라이브러리(Library) 설치

esp8266 라이브러리가 정상적으로 설치되고 나면 스케치의 툴(Tool) 메뉴의 보드(Board)에서 NodeMCU 1.0 (ESP-12E Module)을 선택합니다. 

 

아두이노(Arduino) 스케치에서 보드(Board) 선택
아두이노(Arduino) NodeMCU 1.0 (ESP-12E Module) 보드 선택

NodeMCU 1.0 (ESP-12E Module) 보드를 선택하면 툴(Tiool) 메뉴에 보드명이 변경되고 그 아래로 Upload Speed, CPU Frequency 등의 정보가 표시되고 변경할 수 있는 메뉴들이 생성됩니다. 저는 따로 변경 없이 초기 설정되어 있는 그대로 사용하고 있지만 필요하신 분은 필요에 따라 설정을 변경하여 사용하시면 됩니다.  

 

 


 

3. ESP8266 Wifi 쉴드(shield) 모듈 프로그램 업로드

 

ESP8266 Wifi 쉴드와 스케치와 연결이 완료되었으면 테스트 프로그램을 업로드해보겠습니다. 테스트 프로그램은 따로 코딩하지 않고 라이브러리를 설치하면 자동으로 생성되는 예제 프로그램을 사용합니다. 스케치 파일(File) 메뉴에서 예제(Examples) -> ESP8266WebServe에서 'HelloServer' 프로그램을 불러옵니다.

 

그럼 꽤 긴 프로그램이 열리는데 프로그램 내용은 와이파이에 접속하고 연결된 와이파이 망내에서 할당받은 IP주소에 "hellow from esp8266!" 문자를 출력하는 내용입니다. 프로그램을 업로드하고 나서 웹상으로 "hellow from esp8266!"가 출력되었는지 확인이 가능합니다. 프로그램을 모르시더라도 한 줄 한 줄 짚어보면 이해하실 수 있을 겁니다. 여기서 수정할 내용은 프로그램 상단에 나와있는 STASSID와 STAPSK를 접속하려는 Wifi의 SSID(아이디)와 비밀번호로 변경해주시면 됩니다.

 

Wifi 아이디, 비밀번호 입력

프로그램을 업로드하기 전에 몇 가지 단계가 있어 까다롭지만 차근차근 진행하면 원활하게 업로드가 되니 반드시 하나도 빠짐없이 순서를 지켜주세요 ^^ 진행 예시로는 아두이노 우노(UNO) 제품으로 진행되지만 나노나 메가나 비슷하기 때문에 구분 없이 보셔도 됩니다.

 

3.1 아두이노 우노 보드 초기화 

보통 아두이노 보드에 기존 사용하던 프로그램이 업로드되어 있는 경우가 많습니다. 그래서 보드를 초기화하는 작업으로 스케치에서 'BareMinimum' 프로그램을 업로드하면 됩니다. 

 

스케치의 파일(File) 메뉴에서 예제(Examples) -> Basic에서 'BareMinimum' 프로그램을 찾을 수 있습니다.

'BareMinimum' 프로그램은 특별한 게 아니고 처음 스케치를 설치하고 실행하였을 때 보셨던 초기 화면입니다.

 

아두이노(Arduino) 스케치 'BareMinimum'

3.2 EPS8266 쉴드 보드 설정

앞서 잠깐 언급했던 ESP8266 쉴드 보드에 달려있는 스위치를 설정해야 합니다. 보드 설정에 따라 FLASH 모드와 통신 모드로 구분합니다.

 

스위치 DIP 업: FLASH모드 (펌웨어 업로드 및 스케치 업로드 시 사용)

스위치 DIP 다운: 통신 모드 (TX, RX 통신 및 아두이노 시리얼 통신 시 사용)

 

FLASH 모드                       통신모드

 

3.3 아두이노 보드와 ESP8266 와이파이 쉴드 보드 연결

ESP8266 와이파이 쉴드를 아두이노 보드 위에 탑재하기 전에 프로그램 업로드할 때는 다음과 같이 연결해야 합니다. 전원 공급을 위해 5V와 GND를 연결하고 아두이노의 Tx-1, Rx-0과 ESP8266 쉴드의 TXD와 RXD를 연결합니다. 여기서 주의하실 부분은 보통 아두이노의 Tx(전송)는 모듈의 Rx(수신)와 아두이노의 Rx(수신)는 모듈의 Tx(전송)하고 연결하는 게 일반적인데 반대로 Tx는 Tx와 Rx는 Rx와 연결해야 정상적으로 동작합니다. 

 

아두이노(Arduino) ESP8266 와이파이 쉴드(Wifi shield)와 연결 배선

 

3.4 스케치를 통해 프로그램 업로드

배선까지 정상적으로 완료되었으면 아래와 같이 램프에 불이 들어옵니다. 그럼 FLASH 모드 (DIP 스위치를 업)로 설정하고 스케치에서 업로드를 실행합니다. 

 

ESP8266 Wifi shield

그럼 아래와 같이 업로드가 진행되는데 아마 "Connecting......." 메시지에서 진행이 더 이상 안될 겁니다. 계속해서 업로드 실패를 보실 겁니다... 다 끝난 줄 알았는데... 완전 짜증.... 

 

재시도 끝에 해결방법을 찾았는데 방법은 DIP 스위치 오른쪽에 있는 ESP RST 버튼을 타이밍에 맞춰서 눌러줘야 하는 겁니다. 버튼을 누르는 타이밍은 "Connecting........." 메시지를 보고 바로 누르면 됩니다. (좀 복잡한가요..;; 이래서 예전에 한 번 언급했지만 저는 쉴드제품은 절대 구입을 안 합니다... ㅋㅋ)

 

아두이노(Arduino) 스케치 ESP8266 와이파이 쉴드(Wifi shield) 프로그램 업로드

프로그램이 정상적으로 업로드되면 로딩 퍼센트가 100%까지 로딩 메시지를 볼 수 있습니다.

 


 

3. ESP8266 Wifi 쉴드(shield) 모듈 작동 확인

 

프로그램 업로드가 완료되면 정상적인 동작 확인을 위해 시리얼 모니터(Serial Monitor)를 실행합니다. 이때 주의하실 점은 ESP8266Wifi 실드는 통신 모드 (DIP 스위치 다운)으로 설정한 후에 진행해야 합니다. 시리얼 모니터를 실행하고 통신속도를 115200 baud로 설정하면 아래와 같이 "Connected to 접속한 wifi아이디"와 함께 할당받은 IP address를 볼 수 있습니다.

 

아두이노(Arduino) 시리얼 모니터를 통해 ESP8266 wifi 쉴드 접속 IP 확인

저는 IP 192.168.0.101로 할당받았으며, 확인된 IP주소로 웹을 통해 접속하면 짠~ "hello from esp8266!" 메시지를 확인할 수 있습니다 ㅎㅎ

ESP8266 와이파이 쉴드(Wifi shield) 웹으로 접속 후 동작 확인

 

4. ESP8266 Wifi 쉴드(shield) 모듈 아두이노 쉴드에 탑재하기

 

ESP8266 와이파이 쉴드를 아두이노 보드에 탑재하기 전에 또 작업해야 할 일이 있습니다. 아마 쉴드 제작자의 실수로 인한 문제인 듯한데 아두이노의 디지털(Digital) 0번-Rx, 1번-Tx와 만나는 쉴드의 0, 1번 핀이 반대로 제작되어서 그대로 아두이노에 탑재하면 ESP8266 쉴드와 통신이 안 되는 문제가 발생합니다. 그렇기 때문에 아래 사진과 같이 두 핀을 구부려서 접촉되지 않게 한 후에 Tx와 Rx는 전선으로 연결해야 하는 번거로운 점이 있습니다. (여러분.. 쉴드제품 구매하기 전에는 반드시 이런 점들을 확인하셔야 합니다 ㅠㅠ)

  

ESP8266 와이파이 쉴드(Wifi shield) pin 설정

 

 


여기까지 아두이노(Arduino)의 EPS8266 와이파이 쉴드(Wifi shield)를 사용하는 방법에 대해 알아보았습니다. 생각보다 까다롭긴 해도 아두이노 보드 위에 탑재된 모습을 보면 또 멋져 보이기도 하죠 ㅎㅎ

 

아두이노를 사용하시면서 쉴드(Shield)의 Flex 한 모습에 반해 많이들 구매하실 거라 생각하며 저 또한 여러 제품을 구매해서 사용하고 있지만 일반적으로 많이 보급되지 않은 제품은 문제점도 많고 스스로 해결하기 힘들면 아까운 돈을 사용하게 되므로 구매 전에는 반드시 확인하시고 구매하시길 권고하는 바입니다. ^^

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 내용 있으면 언제든지 댓글로 남겨주세요 감사합니다~

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)로 프로젝트를 진행하면서 다수의 저전력 센서나 모듈을 사용하다 보면 입력(input) 또는 출력(output) 단자(Pin)가 생각보다 부족하다는 것을 느낄 때가 많습니다. 아두이노 또는 컨트롤러(controller)를 여러 개 사용해서 해결할 수도 있지만 상황에 따라 비효율적일 수 있고 같은 센서를 여러 개 사용할 경우 딱 Pin 수만 더 많았으면... 하는 생각을 하게 됩니다. 이런 경우 사용하는 모듈이 멀티플렉서(Multiplexer, MUX)입니다.

 

'멀티플렉서(Multiplexer) 또는 MUX는 여러 아날로그 또는 디지털 입력 신호 중 하나를 선택하여 선택된 입력을 하나의 라인에 전달하는 장치이다.'라고 위키백과에 정의되어 있는데 이런 기능을 이용하여 controller의 단자를 확장해주는 역할을 할 수 있습니다. 

 

오늘은 아두이노에서 쉽게 사용할 수 있는 멀티플렉서를 소개하고 사용방법에 대해 알아보겠습니다.


1. 멀티플렉서(Multiplexer) CD74HC4067 모듈

 

Arduino Multiplexer CD74HC4067

 아두이노에서 많이 사용하는 멀티플렉서 모듈로 CD74HC4067입니다. C0~C15까지 총 16개까지 확장 가능한 모듈로 시중에서 쉽게 구할 수 있고 사용하기에도 어렵지 않은 것 같습니다.

 

Pin 코드를 설명하면 C0~C15는 입력 또는 출력할 센서 또는 모듈을 연결하는 확장 Pin이며, SIG은 받은 신호를 아두이노에 보내는 연결 Pin입니다. 그리고 S0~S3로 아두이노에서 신호를 보내 CD74HC4067 모듈을 컨트롤합니다.

 

간단한 동작 원리는 앞서 위키백과에 나온 멀티플렉서의 정의대로 여러 아날로그 또는 디지털 입력 신호(C0~C15) 중 하나를 선택하여 선택된 입력을 하나의 라인(SIG->아두이노)에 전달하는데.. 즉 C0~C15에 연결된 센서로 입력되는 데이터들을 하나씩 SIG를 통해 아두이노로 보내는 방식입니다. 이런 전달 방식이기 때문에 동시에 센서 데이터가 입력되는 것이 아니고 아주 짧지만 수 m초(설정 가능) 정도 간격으로 C0부터 C15까지 돌아가면서 데이터를 읽어 들입니다.

 

처음 보시면 이해가 안 가실 수도 있는데 사실 이해 안 하셔도 전혀 문제없습니다 ㅎㅎ 아마 뒤에서 코드를 보시면 이해하기 더 쉬울 거라 생각됩니다. ^^

 

 

 


 

2. 멀티플렉서 CD74HC4067 배선

 

앞서 CD74HC4067 Pin 코드 설명에서 보았듯이 C0~C15는 사용할 센서를 연결하고, S0~S1을 아두이노에서 신호를 보낼 디지털 Pin 8, 9, 10, 11과 차례로 연결합니다(프로그램에서 조정 가능). 저는 아날로그 센서를 사용하여 시험할 예정이라 SIG pin은 아날로그 Pin 0과 연결하는데, 아마 사용하시는 센서에 따라 디지털 신호를 받으시려면 디지털 Pin과 연결하면 됩니다. 마지막으로 VCC와 GND는 각각 아두이노의 5V, GND에 연결합니다. 

 

아두이노(Arduino) 멀티플렉서(multiplexer, MUX) CD74HC4067 모듈 연결

 


 

▼ 같은 제품 구매하시려면 아래 링크!! ▼

 

CD74HC4067 16채널 멀티플렉서 아날로그/디지털 MUX <아두이노 멀티플렉서> : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 

 

3. 멀티플렉서 CD74HC4067 프로그램 코딩

 

스케치로 아래와 같이 프로그램을 코딩하여 아두이노에 업로드합니다.

//Mux control pins
int s0 = 8;
int s1 = 9;
int s2 = 10;
int s3 = 11;

//Mux in “SIG” pin
int SIG_pin = 0;

void setup(){
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);

digitalWrite(s0, LOW);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);

Serial.begin(9600);
}

void loop(){

//Loop through and read all 16 values
//Reports back Value at channel 6 is: 346
for(int i = 0; i < 16; i ++){ 
  Serial.print("Value at channel "); 
  Serial.print(i); Serial.print(": "); 
  Serial.println(readMux(i)); 
  delay(1000); 
  } 
  }
  
  int readMux(int channel)  { 
  int controlPin[] = {s0, s1, s2, s3}; 
  int muxChannel[16][4]={ {0,0,0,0},  
  {1,0,0,0}, //channel 1 
  {0,1,0,0}, //channel 2 
  {1,1,0,0}, //channel 3 
  {0,0,1,0}, //channel 4 
  {1,0,1,0}, //channel 5 
  {0,1,1,0}, //channel 6 
  {1,1,1,0}, //channel 7 
  {0,0,0,1}, //channel 8 
  {1,0,0,1}, //channel 9 
  {0,1,0,1}, //channel 10 
  {1,1,0,1}, //channel 11 
  {0,0,1,1}, //channel 12 
  {1,0,1,1}, //channel 13 
  {0,1,1,1}, //channel 14 
  {1,1,1,1} //channel 15 
  }; 
  //loop through the 4 sig 
  for(int i = 0; i < 4; i ++){ 
    digitalWrite(controlPin[i], muxChannel[channel][i]); 
    } 
    //read the value at the SIG pin 
    int val = analogRead(SIG_pin); //return the value 
    return val; 
    } 

 

 

 

프로그램을 간단하게 설명하면 CD74HC4067를 컨트롤하는 S0~S3과 연결된 Pin 8, 9, 10, 11을 pinMode 명령어로 Output 상태로 만듭니다. 그리고 digitalWrite 명령어로 초기 값을 Low로 설정하는데 이때 Low =0, High = 1을 의미합니다.

 

아두이노에서 S0, S1, S2, S3에 신호를 Low(0)과 High(1)로 주면서 Channel 번호를 2진법에 의해 설정됩니다. 예를 들어 Channel 0 = {0, 0, 0, 0} : 2진법으로 0이 됩니다.

Channel 1 = {1, 0, 0, 0} : 2^0에 해당하는 자리에 High(1)로 신호를 주어 1을 표시합니다.

Channel 2 = {0, 1, 0, 0} : 2^1에 해당하는 자리에 High(1)로 신호를 주어 2를 표시합니다.

Channel 3 = {1, 1, 0, 0} : 2^0과 2^1에 해당하는 자리에 High(1)씩 신호를 주어 총 합 3이 되어 3을 표시합니다.

....

Channel 15 = {1, 1, 1, 1} : 1+2+4+8 = 15 표시

 

이런 식으로 각 채널을 표시하고, 이 채널을 For 반복 구문을 통해 하나씩 읽는 로직입니다. 생각보다 가.. 간단하죠?;;;

 

 pinMode 명령어나, digitalWrite 명령어가 자주 나오는데 아두이노에서는 많이 사용하는 명령어라 혹시 처음 접하시면 아래 링크 참조하시면 도움될 듯합니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

 


 

4. 데이터 확인

 

아두이노와 멀티플렉서 및 사용한 센서들을 연결한 후 스케치를 통해 프로그램을 업로드합니다. 멀티플렉서에 연결된 센서들은 따로 전원이 들어가야 하는 점 확인하세요^^

프로그램 업로드 후 시리얼모니터(Serial Monitor)를 실행하면 아래와 같이 channel 0부터 channel 15까지 연결된 센서의 데이터를 출력합니다. 프로그램에서 delay(1000)로 1초 간격으로 channel 값이 순차적으로 표시되는데 delay를 조절하면 더 짧은 간격으로도 표시 가능합니다.

 

아두이노(Arduino) 멀티플렉서(Multiplexer, MUX) CD74HC4067 모듈 사용하기: 데이터 출력

 

 

 


여기까지 아두이노(Arduino)의 입출력 단자(Input&output pin)를 확장할 수 있는 멀티플렉서(Multiplexer, MUX) CD74HC4067 모듈에 대해 알아보고 사용방법을 알아보았습니다.

 

멀티플렉서를 사용하여 센서의 입력 데이터뿐만 아니라 릴레이(Relay) 같은 스위치나 외부기기를 여러 개 사용할 때도 활용 가능합니다. 기회가 되면 릴레이 16개를 확장해서 활용하는 예시를 포스팅하도록 하겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 내용 있으면 언제든지 댓글로 남겨주세요^^

 

 

 

 

반응형
반응형

 

 

 

2021.01.03 수정 업데이트

 

토양수분센서(soil moisture sensor)도 아두이노(Arduino)에서 많이 다루는 센서 중 하나입니다. 앞서 소개한 온습도 센서(Temperature and humidity sensor)와 초음파 센서(Ultrasounds sensor)처럼 외부환경을 데이터화하여 외부기기를 동작하기 좋습니다. 예를 들어 식물이나 농작물이 자라는 화분이나 토양의 수분함량을 데이터화해서 물을 자동으로 주거나 펌프를 작동하는 등에 적용할 수 있습니다.

 

최근 많은 사람들이 가정에서 취미나 인테리어로 식물을 기르는 일에 관심이 많아지고 있고, 플랜테리어(planterior) 혹은 그린테리어(greenterior)라고 식물(plant)과 인테리어(interior)의 합성어로 신조어가 생길 정도로 점점 트렌드로 자리 잡고 있죠 ^^ 이런 트렌드에 아두이노 IoT(사물인터넷)를 적용해보면 토양수분센서를 사용하여 화분의 토양에 물이 어느 정도 있는지 확인해서 식물관리에 조금 더 도움이 될 수 있을 듯하네요 ㅎㅎ

 

오늘은 토양수분센서에 대해 알아보고 아두이노에서 사용방법을 알아보겠습니다.

 

Arduino 아두이노 온도 습도 센서(Temperature and Humidity sensor) 종류 및 사용법

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는..

it-g-house.tistory.com

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


1. 토양수분센서 (soil moisture sensor)

 

토양수분센서 종류는 다양하게 있는데 싸게는 몇 천원부터 비싸게는 몇 십만 원까지 합니다. 아두이노에서 가볍게 사용할 수 있는 저렴한 제품들을 온라인상에서 쉽게 구할 수 있지만 정밀한 측정에는 어려움이 있습니다. 실험용이나 좀 더 정밀한 측정에 사용되는 센서 또는 토양의 온도나 전기전도도(EC, Electrical Conductance)도 같이 측정할 수 있는 TEROS 시리즈의 센서도 있지만 가격이 상당합니다.

 

아두이노 토양수분센서

 

아두이노 토양수분센서
토양수분센서 TEROS

대표적인 토양수분센서의 원리는 토양의 수분량에 따라 변하는 유전율(dielectric permittivity)을 이용하여 전기신호(voltage)로 출력합니다. 측정 방법에는 FDR (Frequency Domain Reflectometry), TDR (Time Domain Reflectometry) 등이 있는데 최근에 많이 사용되는 방법이 FDR 방법입니다. 자세한 내용은 제가 어설프게 설명하는거 보다 검색해보시면 쉽게 이해하실 수 있을 겁니다 ^^

 

2. 토양수분센서 배선

 

오늘 예시에서 사용할 토양수분센서는 모델명 SEN0114로 온라인에서 쉽게 구입할 수 있습니다. 여러 모델 중에서 SEN0114를 선택한 이유는 다양하게 점검해 본 결과 저렴한 가격에 비해 그나마 사용하기 유용하기 때문입니다. (뒤에서 추가 설명하겠습니다.)

 

아두이노(Arduino) 토양수분센서(soil moisture sensor) SEN0114 배선

 

 

그림과 같이 토양수분센서의 VCC (빨강) 선은 아두이노의 3.3 또는 5V, GND (검정) 선은 GND pin에 맞게 연결하고, Output (파랑) 선은 아날로그(Analog) pin 0번에 (프로그램에서 수정 가능) 연결합니다. 예시로 사용하는 토양수분센서는 아날로그로 출력 값을 송출하기 때문에 아날로그 pin과 연결하지만 센서에 따라 디지털 신호도 있으므로 사용하시는 센서의 사양을 잘 확인하고 사용하면 되겠습니다.

 

3. 토양수분센서 프로그램 코딩

 

void setup(){ 
  Serial.begin(57600); 
  }
 
void loop(){ 
 Serial.print("Moisture Sensor Value: "); 
 Serial.println(analogRead(A0)); 
 delay(1000); 
 }

아날로그로 출력되는 토양수분센서라 스케치 프로그램가 아주 간단합니다. 아날로그 pin A0로 들어오는 신호만 읽어주면 끝입니다. 

 

4. 토양수분센서 값과 Calibration

 

모든 센서는 정확한 측정을 위하여 calibration을 해야합니다. 보정한다는 뜻 정도로 생각할 수 있는데 저울 같은 경우 0점을 잡는 것과 같은 것입니다. 이처럼 calibration은 0점 보정 외에 원하는 값으로 변환하는 작업도 포함합니다. 예를 들어 토양수분센서로 토양의 수분 함량 (%) 값을 알고 싶은데 출력 값은 voltage 값인 경우 변환하는 수식(calibration equation)을 사용하여 수분 함량 (%) 값으로 표시할 수 있습니다.

 

앞서 오늘 소개드린 SEN0114 센서가 그나마 사용할만 했던 것도 이런 calibration 과정에서 판별됩니다. 아래 온라인에서 저렴하게 구입할 수 있는 센서 3가지를 비교 평가한 자료입니다. 

 

아두이노(Arduino) 토양수분센서(soil moisture sensor)의 calibration 비교 실험

x축이 출력 값 voltage (mV)이고, y축이 그에 상응하는 용적수분함량(VWC, Volumetric Water Content) (%)입니다. 오른쪽 두 센서보다 왼쪽의 SEN0114 그래프가 추세선이 제일 깔끔하고 (R squ 값 참조) 실제 측정 값을 모두 포함하고 있기 때문에 센서 선택의 근거가 될 수 있습니다. 용적수분함량은 (물의 양/토양의 부피) * 100 (%)으로 간단하게 이해하셔도 됩니다.

 

5. 아두이노 시리얼 모니터(Serial Monitor)에 토양수분센서 측정값 출력

 

센서를 아두이노와 연결하고 스케치를 통해 프로그램을 업로드한 후 시리얼 모니터를 출력하면 아래와 같이 "Moisture Sensor Value: " 뒤에 mV 단위로 voltage 값이 나올 겁니다.

 

아두이노(Arduino)에서 토양수분센서(soil moisture sensor)의 출력 값 

센서가 아무것도 센싱하지 않을 때는 0으로 값을 읽다가 물에 넣으면 값이 상승합니다. SEN0114 센서 사양에 따르면 

 

Value range: 0 ~ 300: dry soil

                 300 ~ 700: humid soil

                 700 ~ 950: in water

이라고 제시되어 있습니다. 음... 위에 calibration 자료와 비슷한가요? ^^

 

참고로 토양의 성질이나 공극으로 인해 물을 함유할 수 있는 정도가 달라지기 때문에 토양별로 calibration equation이 조금씩 달라진다고 알고 계시면 유용합니다.

 

 


여기까지 아두이노(Arduino)에서 사용하는 토양수분센서(soil moisture sensor)에 대해 알아보고 사용방법을 설명하였습니다. 다음 포스팅에는 토양수분센서를 사용하여 토양의 물이 일정 범위 아래로 떨어지면 (식물에 공급할 물이 부족하면) 물을 자동으로 주는 작은 프로젝트를 진행해 보도록 하겠습니다.

 

오늘도 긴글 읽어주셔서 감사합니다. 궁금한 점은 댓글로 언제든지 남겨주세요~ 감사합니다 ^^

 

▼ 토양수분센서 구매하시려면 아래 링크!! ▼

 

아두이노 토양수분센서/Arduino Soil moisture sensor/지습센서/아날로그 센서 : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 

 

반응형
반응형

 

 

 

아두이노(Arduino)는 컨트롤러(controller)인 만큼 외부기기나 센서의 전원을 on/off 하는 경우가 많이 있습니다. 보통 이런 기능은 스위치(switch)가 하죠 ^^ 전자기기에서 전기신호를 받아서 스위치 역할을 하는 부품을 릴레이(Relay: 전자계전기)라고 합니다. 지난 포스팅에서 초음파 센서를 사용하여 사람이 접근하면 외부기기에 전원을 공급하는 방법에서도 릴레이 모듈을 사용할 수 있습니다. 오늘은 아두이노에서 주로 사용되는 릴레이 모듈을 알아보고 사용하는 방법을 알아보겠습니다. 

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 활용: 사람 인식하는 전자기기 작동 시스템

아두이노(Arduino)의 센서들을 알아보는 시간으로 지난 포스팅에서 초음파 센서 사용법과 이를 이용하여 거리를 측정하는 방법을 알아보았습니다. 오늘은 이를 활용하여 사람이 다가가면 전자기기가 자동으로 작동..

it-g-house.tistory.com


 

1. 릴레이(Relay: 전자계전기) 

 

우선 릴레이는 스위치입니다. 아두이노에서 제공하는 전력만으로 구동할 수 없는 외부기기를 컨트롤하고 싶을 때 외부 전원을 릴레이와 연결하여 (설정)조건이 만족할 때 아두이노에서 신호를 보내 컨트롤하기 위해 주로 사용합니다.

 

저희가 알고 있는 일반적인 스위치는 버튼(button)형이나 텀블러(tumbler)형 같이 손으로 수동으로 on/off 해야 하지만 릴레이는 전기신호로 자동으로 on/off 할 수 있습니다. 보통 릴레이는 '전자석(철심에 코일을 감은 것)'의 원리로 움직이는데 전자석은 전류가 흐르면 자기장이 형성되는 자석입니다. 그래서 릴레이 모듈에 전기신호가 들어오면, 즉 전류가 흐르면 자기가 형성되어 그림과 같이 자석이 열려있는 스위치를 끌어당겨 on 시켜줍니다.  

 

전자석을 이용한 릴레이(Relay: 전자계전기) 간단한 원리

릴레이 종류는 동작 방식이나 허용 전력 용량에 따라 여러 종류가 있습니다. 더 자세한 내용이 궁금하면 아래 '메카솔루션' 링크 참조 부탁드립니다.

 

릴레이란? (릴레이 구조, 릴레이 원리, 릴레이 종류, 릴레이 작동원리, 릴레이 스위치, 아두이노 릴레이, 무접점 릴레이, 릴레이 접점)

    [ 전자부품 릴레이(Relay) 에 대해 알아보기 ] 출처 [메카솔루션]     [ 릴레이란? 릴레이의 작동 원리 ] 릴레이는 쉽게 말해 ON OFF가 있는 일종의 스위치 입니다.   하지만 우리가 일반적으로 알고있는 불을 켜고 끌때 누르는 스위치와는 동작원리가 다릅니다. 우리가 일반적으로 접하는 스위치는 수동으로 ON OFF 해주지만 릴레이는 자동…

makeshare.org

 


 

2. 릴레이 모듈

 

1채널 릴레이(Relay) 모듈
4채널 릴레이(Relay) 모듈

 

위 사진은 1채널 릴레이 모듈이며, 채널 수에 따라 아래 4 채널 모듈과 같이 릴레이 수가 늘어납니다. 모듈에서 파란색 네모 박스가 실제적인 릴레이인데 상단에 JQC3F-5VDC-C (5VDC: 5V 직류 구동)라고 모델명이 있고 아래에 10A 250VAC (교류전압), 10A 30VDC (직류전압) 표시는 최대 입력전압(input voltage)을 나타내고, 하단에 10A 125VAC, 10A, 28VDC는 기본 입력 전압을 나타냅니다. 이에 맞게 허용 전력을 사용하면 됩니다.

 

제가 구입한건 중국산이라 한자 (常开, 公共端 ,闭)로 적혀있는데 보통 NC (Normally Close), COM, NO (Normally Open) 이렇게 표시되어 있습니다.

 

NC (Normally Close, ): 평상시에 닫혀있다는 뜻으로, 릴레이에 전류가 흐르면 Open 되므로 평상시에 전원을 on 상태로 유지하다가 신호를 주어 off 할 때 사용합니다.

NO (Normally Open, 常开): 반대로 평상시에 열려있다는 뜻으로, 릴레이에 전류가 흐르면 Close 되므로 평상시에 전원을 off 상태로 유지하다가 신호를 주어 on 할 때 사용합니다.

COM (Common port, 公共)는 공통 단자로 전력 또는 외부기기의 한쪽 선을 항상 연결해야 하는 단자입니다.

 

VCC, GND, IN는 릴레이(전자석)을 구동하기 위한 전력 단자 (VCC, GND)와 신호를 주기 위한 IN (input) 단자입니다.

 

 

 

 


 

3. 릴레이 배선

 

아두이노(Arduino) 릴레이(Relay) 모듈 배선 방법

그림과 같이 아두이노의 5V 단자와 릴레이 모듈의 VCC와 연결하고, GND는 GND pin에 연결합니다. 그리고 아두이노 프로그램에서 설정한 디지털 PIN 번호(저는 3번과 연결하겠습니다.)와 IN 단자와 연결합니다. 다음으로 전원을 컨트롤하고 싶은 전자기기와 외부 전력을 연결하고 한쪽 단자 중간에 릴레이(스위치)를 장착한다고 생각하시면 됩니다. 

* 주의: 만약 전선작업을 직접 하시면 전원 반드시 뽑아서 안전 주의하세요!!!

 

4. 아두이노 프로그램

int Relay = 3;
 
void setup(){
  pinMode(Relay,OUTPUT);         // 릴레이를 출력으로 설정
  }
 
void loop(){
    if(조건)
    {
    digitalWrite(Relay,HIGH);     // 조건 만족하면 1채널 릴레이 ON
    delay(500);
    }
    else                               
    {
    digitalWrite(Relay,LOW);      // 아니면 1채널 릴레이 OFF
    delay(500);
    }
}

 

 

릴레이를 동작하기 위한 아두이노 스케치 프로그램 코드입니다. 저는 아두이노의 디지털 pin 3번에 릴레이 IN 단자와 연결하였기 때문에 int Relay = 3; 으로 설정하고 pinMode를 OUTPUT으로 설정하였습니다. void loop()에서 if 조건문을 사용해서 조건에 맞으면 릴레이에 HIGH 신호를 줘서 릴레이 스위치를 on 하고, 조건이 맞지 않으면 off 되는 간단한 프로그램 코드입니다. 다양한 센서를 사용해서 if()에 원하는 설정 조건을 직접 작성하시면 됩니다. 

 

아두이노 명령어가 익숙하지 않으신 분은 pinMode 및 if문에 대한 명령어는 아래 링크 참조하시면 됩니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com


 여기까지 아두이노(Arduino)에서 자주 사용하는 릴레이(Relay: 전자계전기)에 대해 알아보았습니다. 릴레이는 앞으로 추진하는 IoT 프로젝트에 반드시 필요한 모듈 중 하나라 사용방법을 알아두면 좋습니다. 다음 포스팅에는 릴레이에 외부기기와 전원을 연결하여 동작하는 작은 프로젝트를 하나 진행해 보겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 궁금한 부분은 댓글로 언제든지 남겨주세요 ^^

 

 

 

반응형
반응형

 

 

 

아두이노(Arduino)의 센서들을 알아보는 시간으로 지난 포스팅에서 초음파 센서 사용법과 이를 이용하여 거리를 측정하는 방법을 알아보았습니다. 오늘은 이를 활용하여 사람이 다가가면 전자기기가 자동으로 작동하는 시스템을 만들어 보겠습니다. 원리는 간단한데 앞서 알아본 초음파 센서를 이용하여 설정 거리보다 가까이 사람이 있으면 전자기기에 전력을 공급하는 방식입니다. 초음파 센서로 거리를 측정하는 프로그램은 아래 링크 참조 부탁드리며, 그 이후부터 진행하도록 하겠습니다.

 

Arduino 아두이노 초음파(거리) 센서(ultrasounds sensor) 사용방법

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Interne..

it-g-house.tistory.com


준비물은 아래와 같습니다.

 - 아두이노 UNO R3 보드

 - 초음파 센서(HC-SR04)

 - DC-DC 승압형 5V 600mA USB 모듈

 - 5V USB 구동 전자기기

 

새롭게 소개드릴 제품은 DC-DC 승압형 5V 600mA USB 모듈입니다. 저도 처음 사용해보는 건데요.. 아두이노의 출력 전압을 이용하여 5V USB 충전이나 기타 USB 구동 전자기기들을 사용할 수 있게 연결해주는 모듈입니다. 아마 온라인상에서 쉽게 구할 수 있을 거예요 ㅎㅎ

DC-DC 습압형 5V 600mA USB 모듈

 

 

아두이노의 디지털 pin을 통한 출력 전압은 5V이니까 이번 프로젝트뿐만 아니라도 5V USB 구동 전자기기들을 이용할 때 유용하게 사용할 수 있을 듯합니다. ㅎㅎ 그리고 이번 프로젝트를 위해 USB 5V 전력으로 구동되는 전자기기를 사용해야 하는데 특별히 소유하신 전자기기가 없으면 휴대폰 USB 충전기로도 충분히 테스트해 볼 수 있습니다. 

 


 

1. 아두이노와 초음파 센서, USB 모듈 연결하기

 

먼저 아두이노와 초음파 센서를 연결하고 전자기기의 USB 전원이 연결될 DC-DC 승압형 5V 600mA USB 모듈을 아두이노와 연결합니다. USB 모듈의 '+' 단자와 아두이노의 디지털핀(Digital Pin) 13번과 연결하고(프로그램에서 수정가능하니 꼭 13번이 아니어도 됩니다), '-' 단자는 그 옆의 GND에 연결합니다. 연결된 USB 모듈에 앞서 준비한 5V USB 구동 전자기기를 이용해서 사람이 다가가면 자동으로 켜지는 시스템을 만들 수 있습니다.

 

아두이노(Arduino), 초음파 센서(HC-SR04) 센서를 활용한 자동 선풍기 만들기 배선

 

 

 

 

2. 프로그램 코딩 

 

스케치에서 pinMode, digitalWrite, if 명령어를 사용해 앞서 링크드린 초음파 센서로 거리를 측정하는 프로그램과 조합하여 프로그램 코딩을 합니다. pinMode와 digitalWrite, if 명령어에 대해서는 아두이노 프로그램 코딩 초급 부분에서 정리하였으니 참고 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

int echo = 8;
int trig = 12;
int power = 13;

void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  pinMode(power, OUTPUT);
}

void loop() {
  float cycletime;
  float distance;
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  
  cycletime = pulseIn(echo, HIGH); 
  
  distance = ((340 * cycletime) / 10000) / 2;  

  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println("cm");
  
  if(distance < 50){ 
    digitalWrite (power, HIGH); 
    } 
    else{ 
    digitalWrite (power, LOW); 
    }
  delay(500);
}

 

초음파 센서의 'echo'와 'trig' pin 설정을 각각 8, 12번으로 설정하고, 5V Output power pin을 13번으로 설정하였습니다. 그리고 초음파 센서로 거리를 측정한 후 거리가 50cm 이하가 되면 13번 pin에 연결되어 있는 USB 모듈을 통해 5V가 출력됩니다. 그러면 전자기기가 켜지겠죠? 아닐 경우는 출력 power가 없으니 자동으로 전원이 꺼지도록 'if 명령문'을 사용하였습니다.

 

3. 자동 동작 시스템 확인

 

저는 USB 5V 구동 소형 LED 전등으로 동작 테스트를 해보았습니다. 시리얼 모니터(Serial Monitor)에서 거리를 확인하면 아래와 같이 출력되고, 초음파 센서에 가까이 다가가면(사람과 센서 사이 거리가 50cm 이하 일 때) LED 전등이 자동으로 동작합니다. 와우~ ㅎㅎ

 

아두이노 초음파 센서를 이용한 자동으로 작동하는 전자기기 시스템 만들기

 

초음파 센서의 위치에 따라 거리는 적절히 조절하여 편하게 적용하시면 됩니다. ^^ 앞서 언급하였지만 USB 휴대폰 충전기로도 충분히 테스트 진행 가능합니다. 주의하실 부분은 아두이노의 디지털 Pin의 Output 최대 출력 전류가 40mA이기 때문에 소비전력이 높은 전자기기들은 따로 외부 전력이 필요합니다.


여기까지 아두이노(Arduino)의 초음파 센서(HC-SR04)를 활용해서 사람을 인식하여 자동으로 전자기기를 작동하는 시스템을 구성해 보았습니다. 너무 간단하게 구성해서 허접해 보일 수도 있지만 대부분 이런 방법의 응용으로 수가 많아지고 조금 더 디테일하게 복잡해질 뿐입니다. 쉽게 생각하셔도 괜찮습니다 ^^

 

오늘도 긴 글 읽어주셔서 감사합니다.

 

 

 

반응형
반응형

 

 

 

앞서 포스팅에서 온습도 센서(Temperature and Humidity sensor)만 가지고 아두이노의 기본적인 동작법이나 파일 저장법, 그래프 그리기, 엑셀(Excel)과 연동하는 방법들을 알아보았습니다. 그리고 인터넷(Internet) 사용법과 웹서버(Web server) 만드느라 많은 시간을 보냈는데요 ^^ 오늘은 재미있는 센서를 하나 소개드리려고 합니다. 

 

바로 초음파(ultrasound(s), ultrasonic wave) 센서입니다. 인터넷에 찾아보면 거리 센서라고 많이 검색되는데 초음파를 쏴서 돌아오는 시간을 계산해서 거리를 측정할 수 있는 예제가 많이 알려져서 그런 것 같습니다 ^^ 이번 포스팅에서는 초음파 센서 사용방법과 프로그램 코딩에 대해 알아보겠습니다.


  • HC-SR04 초음파 센서

온라인에서 '초음파 센서'를 검색하면 아두이노용으로 많이 사용하는 모델은 'HC-SR04' 모듈입니다. 생긴건 마치 스피커처럼 생겼는데요 ㅎㅎ 아두이노 작품들 중에 로봇류는 대부분 이 HC-SR04 센서로 눈처럼 꾸며서 사용하는걸 많이 보았습니다. 

 

아두이노 HC-SR04 초음파 센서

"초음파(超音波, 영어: ultrasound(s), ultrasonic wave)는 인간이 들을 수 있는 가청 최대 한계 범위를 넘어서는 주파수를 갖는 주기적인 '음압'(音壓, sound pressure)을 의미한다." (출처: 위키피디아) 즉, 사람이 들을 수 없는 고주파수 영역대의 음파를 말합니다. 건강하고 젊은 사람이 대략 20KHz의 영역을 들을 수 있고 사람이 들을 수 있는 이상의 영역이 초음파 영역이라고 생각하시면 됩니다.

 

아두이노에서 사용할 HC-SR04 초음파 센서는 대락 40KHz 영역대의 초음파를 방출합니다. 송신기와 수신기인 두개의 초음파 트랜스 듀서(Ultrasonic transducer)가 있고, 수신기(Chirp: 주파수 변조 방식을 사용하는 펄스 압축의 하나)에서 방출된 초음파가 물체에 반사되어 수신기(Echo)에 돌아온 시간을 통해서 거리를 계산하는 방법을 사용합니다.

 

초음파 센서(ultrasounds sensor) 작동원리

동작 전압 5V DC
동작 전류 15mA
발생 초음파 약 40kHz
effectual angle <15도
측정 범위 2 ~ 400 cm
오차 0.3 cm
초음파 속도 340 m/s

 


 

  • HC-SR04 초음파 센서 연결방법

HC-SR04 초음파 센서는 5V 구동입니다. 모듈의 VCC 핀을 아두이노의 5V에 연결하고 GND는 GND에 연결합니다. 위에서 설명한 송신부인 Chirp는 모듈에서 Trig 핀이며 아두이노 12번 Pin에 연결하고, 수신부 Echo 핀을 8번 Pin에 연결합니다. Trig와 Echo 핀이 연결된 아두이노의 디지털 핀(DIGITAL Pin)은 프로그램상으로 변경 가능하니 원하시는 데로 임의로 연결하셔도 됩니다. 

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 연결 배선

 

 

  • HC-SR04 초음파 센서 프로그램 코딩 방법

HC-SR04 초음파 센서는 따로 '라이브러리(Library)'가 없어도 됩니다. 앞서 아두이노 프로그램 코딩 초급편에서 다루었던 'pinMode''digitalWrite' 명령어를 주로 사용하고 추가로 'pulseIn' 명령어를 사용하여 거리를 측정하는 프로그램을 코딩하도록 하겠습니다. 'pinMode'와 'digitalWrite' 명령어에 대한 내용과 간단한 예제는 아래 링크 참조 부탁드립니다.

 

아두이노(Arduino) 프로그램 코딩 초급 (pinMode, digitalWrite, if 명령어)

지난 시간 스케치로 프로그램을 코딩할 때 자주 사용되는 꼭 필요한 명령어 몇 가지를 알아보았습니다. IT 비전공자가 프로그램 언어를 기본부터 완전히 이해하면서 배우는 것은 쉬운 일은 아닙니다. 그렇기 때문..

it-g-house.tistory.com

 

명령어 기능 사용법
pinMode I/O 핀의 입출력 설정 pinMode(pin#, mode);
digitalWrite 디지털 핀에 High, Low 값 출력  digitalWrite(pin#, HIGH); or digitalWrite(pin#, LOW);
pulseIn 아두이노 핀으로 입력되는 펄스의 시간을 측정하는 함수 pulseIn(pin#, High); or pulseIn(pin#, Low);
int echo = 8;
int trig = 12;

void setup() {
  Serial.begin(9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  float cycletime;
  float distance;
  
  digitalWrite(trig, HIGH);
  delay(10);
  digitalWrite(trig, LOW);
  
  cycletime = pulseIn(echo, HIGH); 
  
  distance = ((340 * cycletime) / 10000) / 2;  

  Serial.print("Distance:");
  Serial.print(distance);
  Serial.println("cm");
  delay(500);
}

 

 

HC-SR04 모듈을 아두이노에 연결한대로 trig = 12, echo = 8로 지정해주고 pinMode를 통해 trig는 Output(송신), echo는 Input(수신)으로 설정하였습니다. 그리고 cycletime(시간), distance(거리)를 실수(float)로 변수 지정을 하고, digitalWrite를 통해 trig에서 초음파가 송신하도록 'High' 명령을 주고 10 msec delay 후 'Low'로 신호를 끕니다. 그럼 송신된 초음파가 물체에 반사되어 echo에 수신 (신호가 High로 전환)될 때까지의 시간을 pulseIn 명령어를 통해 distance 변수에 저장합니다. 마지막으로 초음파가 물체를 맞고 돌아온 시간과 초음파의 속도 340 m/s를 이용하여 cm 단위로 거리를 계산합니다. 왕복거리라 마지막에 나누기 2가 들어갑니다. ^^

 

프로그램 코딩 완료 후 스케치(Sketch)를 통해 아두이노에 업로드 후 시리얼 모니터(Serial Monitor)를 실행하면 아래와 같이 거리를 계속 센싱하여 출력해서 보여줍니다. 통신속도(Baudrate) 맞추는 건 이제 기본으로 하시죠? ㅎㅎ

 

아두이노(Arduino) HC-SR04 초음파 센서 사용방법: 거리 측정 값 시리얼 모니터 출력


여기까지 아두이노(Arduino)로 HC-SR04 초음파 센서(ultrasounds sensor) 사용방법 과 거리를 측정하는 간단한 프로그램을 코딩해보았습니다. 정말 재미있는 센서인 거 같습니다. ^^ 조만간 초음파 센서를 이용하여 거리를 측정하는 것뿐만 아니라 적외선 센서처럼 물건이나 사람을 감지할 수도 있으니 사람을 감지하여 외부기기를 동작하거나 멈추는 간단한 프로젝트를 진행해 보도록 하겠습니다.

 

오늘도 긴 글 읽어주셔서 감사합니다. 질문이나 추가적으로 필요하신 내용 있으면 언제든지 댓글로 남겨주세요~ ^^

 

 

 

반응형
반응형

 

 

 

온습도 센서(Temperature and Humidity sensor)는 환경 측정에서 중요하면서도 기본적인 센서로 많이 사용됩니다. 중요하지만 비교적 흔하게 구할 수 있는 센서라 시중에 다양한 종류의 제품이 있고 기능적으로는 큰 차이가 나지 않습니다. 하지만 사용 장소나 측정 목적에 따라서 차별점은 분명하기 때문에 적합한 제품으로 선택할 필요가 있습니다. (단순 온습도 경향만 측정하는데 너무 비싼 센서를 사용할 필요는 없죠 ㅎㅎ) 오늘은 아두이노(Arduino)에서 많이 사용되고 있는 온습도 센서의 종류 및 사용법를 알아보고 각각의 특징을 살펴보도록 하겠습니다. 

 


 

아두이노(Arduino) 온습도 센서(Temperature and Humidity sensor) 종류

 

1. DHT11

 

온라인상에서 가장 흔하게 찾아볼 수 있는 센서입니다. 가격이 저렴한 만큼 온도와 습도의 측정 가능한 범위가 온도는 0 ~ 50 ℃, 습도는 20 ~ 80 %로 비교적 제한적이고 측정주기 또한 2초 간격으로 측정 가능합니다. 온도가 급격히 변하지 않는 실내의 온습도를 측정하는데 적합할 듯합니다. 또한 가격이 저렴하기 때문에 다량으로 필요할 때도 좋을 듯합니다. DHT11 온습도 센서의 사용법과 프로그램 코딩 방법 링크 및 라이브러리 파일 첨부하께요~ 참고 부탁드립니다.

 

DHT11 온습도 센서 모듈(DHT11 module)

동작 전압 (Power) 3~5 V DC
온도 측정 범위 (Temperature range) 0 ~ 50 ℃ (±2 ℃)
습도 측정 범위 (Humidity range) 20 ~ 80 % (±5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 0.5 Hz (2초당)

 

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명령들을 수행하..

it-g-house.tistory.com

DHT_Library.zip
0.01MB

 


 

2. DHT22 (AM2302)

 

DHT11 온습도 센서 업그레이드 버전으로 역시 온라인상에서 흔하게 찾아볼 수 있는 센서입니다. DHT11에 비해 조금 더 비싸지만 충분히 저렴합니다. 측정 가능한 범위는 온도가 -40 ~ 80 ℃, 습도는 0 ~ 100 % 범위로 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯 하고 가격이 저렴하기 때문에 다량으로 필요할 때도 좋을 듯합니다. 사용법과 라이브러리는 DHT11과 거의 동일합니다. 프로그램 코딩에서 DHT11을 DHT22로 바꿔주기만 하면 됩니다. 아래 코드블럭 참고 부탁드려요~

 

DHT22 온습도 센서 모듈(DHT22 module)

 

동작 전압 (Power) 3.3~5.5 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.5 ℃)
습도 측정 범위 (Humidity range) 0 ~ 100 % (±2~5 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)
#include<dht.h>
dht DHT;
#define DHT22_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
}

void loop() {
DHT.read22(DHT22_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(1000); //Delay 1 sec.
}

 

 

 

3. AM2301 (DHT21)

 

DHT 온습도 센서 시리즈의 다른 형태 버전으로 AM2301 센서입니다. DHT11와 DHT22에 비해 더 비싸지만 회로를 감싸는 외부 케이스가 있어서 실외에서 사용하기 괜찮습니다. 측정 가능한 범위는 온도는 -40 ~ 80 ℃, 습도는 0 ~ 99.9 % 범위로 측정 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯하고 내부 회로가 보호되기 때문에 실외 환경에서도 사용하기도 좋습니다. 역시 사용법과 라이브러리는 DHT11, DHT22와 거의 동일합니다. 프로그램 코딩에서 DHT11을 DHT21로 바꿔주기만 하면 됩니다. 아래 코드블럭 참고 부탁드려요~

AM2301 온습도 센서 모듈(AM2301 module)

 

동작 전압 (Power) 3.3~5.2 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.5 ℃)
습도 측정 범위 (Humidity range) 0 ~ 99.9 % (±3 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)
#include<dht.h>
dht DHT;
#define DHT21_PIN 2
float hum; //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600);
}

void loop() {
DHT.read21(DHT21_PIN);
hum = DHT.humidity;
temp = DHT.temperature;

Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
delay(1000); //Delay 1 sec.
}

 

▼ 같은 제품 구매하시려면 아래 링크!! ▼

 

DHT21 아두이노 온도 습도 디지털 센서 / AM2301 sensor : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 

4. AM2305

 

AM23XX 시리즈 센서입니다. DHT11와 DHT22에 비해 더 비싸지만 측정오차가 가장 작고 회로를 감싸는 외부 케이스가 있어서 실외에서 사용하기 좋습니다. 측정 가능한 범위는 온도는 -40 ~ 80 ℃, 습도는 0 ~ 99.9 % 범위로 측정 가능하고 측정주기는 1초 간격으로 측정됩니다. 왠만한 실내외의 온습도는 측정 가능할 듯하고 내부 회로가 보호되기 때문에 실외 환경에서도 사용하기도 좋습니다. 

 

AM2305 온습도 센서 모듈(AM2305 module)

 

동작 전압 (Power) 3.3~5 V DC
온도 측정 범위 (Temperature range) -40 ~ 80 ℃ (±0.3 ℃)
습도 측정 범위 (Humidity range) 0 ~ 99.9 % (±2 %) 
최대소비전력 (Max. current) 2.5 mA
데이터 주기 (sampling rate) 1 Hz (1초당)

 

▼ 같은 제품 구매하시려면 아래 링크!! ▼

 

AM2305 온도 습도 디지털 센서 : 스토어플랜트

[스토어플랜트] 안녕하세요 스토어플랜트입니다.

smartstore.naver.com

 


 

 

 

실외에서 온도를 측정할 때는 태양의 복사열(Radiation)으로 인해 실제 온도보다 더 높게 측정됩니다. 그렇기 때문에 실외 환경 측정기들은 보통 백엽상(radiation shield)으로 보호됩니다. 예전에는 사진같은 백엽상을 많이 보셨을 건데요 기상청에서도 측정방식이 바뀌면서 최근에는 아마 볼 수 있는 곳이 드물겁니다. 

 

백엽상  https://www.hankookilbo.com/News/Read/201808020958716535

 

그래서 백엽상 역할을 하는 Radiation shield(미니백엽상) 제품이 판매되고 있습니다. 실외에서 온습도 센서를 사용할 때는 정확한 측정을 위해 미니백엽상에 넣어 사용하는게 좋습니다. AM2305 제품이 길게 생긴 이유도 Radiation shield안에 설치하기 좋은 형태로 보입니다. 아마 온라인상에서 AM2305 전용 Radiation shield 제품도 판매하지 않을까요? ㅎㅎ

 

Radiation shield

 

 

* 접촉식 온도센서

 

접촉식 온도센서로 아두이노로 자주 사용되는 센서입니다. 직접 사용해보지는 않았지만 방수가 되기 때문에 어항 물의 온도나 뜨거운 액체의 온도를 측정할 때 유용할 듯 합니다. 그러나 접촉식으로 대류와 접촉에 따른 온도 전달은 다를 수 있기 때문에 공기 중의 온도도 잘 반영되는지는 실험해 보는게 좋을 듯 합니다. 

아두이노 접촉식 온도 센서

 

동작 전압 (Power) 3.0~5.5 V DC
온도 측정 범위 (Temperature range) -10 ~ 85 ℃ (±0.5 ℃)
데이터 주기 (Query time) 750ms
특징 방수가능

 

 

 

반응형

+ Recent posts