본문 바로가기

프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노] 토양수분감지센서로 OLED에 표시[Soil Moisture Sensor]



안녕하세요 오늘은 토양수분감지센서 [토양습도감지센서-soil Moisture Sensor]에 대해서 알아보도록 하겠습니다.

 

 

간단소개

 

 

 

 1. 토양수분감지센서를 이용해서 흙의 수분을 측정

 2. 측정된 값을 OLED를 이용하여 값을 표시

 

 

 

 

 

 

 

 

핵심부품

- 아두이노 토양습도감지 센서 모듈 - 토양 수분감지 센서 모듈 [HS-Soil Moisture Sensor ]

 

 

 

 

VCC : 아두이노의 5V에 연결

GND : 아두이노의 GND에 연결

AO : 아두이노의 analog 핀에 연결하여 DO 핀 보다 상세하게 값을 알 수 있습니다.

DO: 아두이노의 Digital 핀에 연결로 0, 1 값을 통해서 토양수분의 유무만 체크합니다.

 

 

 

 

 

 

- OLED

 

OLED는 이전글을 참고하시면 됩니다.

 

[아두이노] OLED 사용해보기 [OLED에 텍스트 표시, 예제 실습]

안녕하세요 이번에는 간단하게 OELD에 텍스트를 표시하는것과 기본적으로 제공하는 GraphicsTest 예제를 사용하는 방법에 대해 작성해 보았습니다. 핵심부품 부품목록 브레드보드 회로도 예제사용 스케치 ->..

baessi.tistory.com



부품목록

 

 

브레드보드

 

 

 

회로도

 

 

소스코드

/*
 제목   : 토양 수분센서로 수분량을 측정하고 OELD로 표시하기
 내용   : 토양 수분센서로 토양에 있는 수분량을 측정하고, 측정 값을 OELD에 표시하기
 */
 
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
 
 
// 토양 수분센서를 A0번 핀으로 설정
int soil = A0;
//OLED는 별도로 핀을 지정할 필요 없이 A4, A5로 사용
 
void setup() {
  // 토양 수분센서의 동작 상태를 확인하기 위하여 시리얼 통신을 설정합니다. 
  // (전송속도 9600bps)
  // 메뉴 Tool -> Serial Monitor 클릭
  Serial.begin(9600);
 
}
 
void loop() {
  // 측정된 값은 실제 수분량을 나타내는 것이 아니라, 0~1023 범위로 환산된 저항값을 의미
  int value = analogRead(soil);
  
  // 토양 수분센서로부터 측정된 값를 시리얼 모니터에 출력
  Serial.print("sensor value : ");
  Serial.println(value);
 
  // 수분센서로부터 측정된 값을 OLED에 표시
  OLEDShow(value);
 
  // 1초 동안 대기합니다.
  delay(1000);
}
void OLEDShow(int sensor){
    //기존 센서 값은 int형(숫자)이므로 OLED에 표시하기 위해서 String으로 변환
    String strVal = String(sensor); 
 
    u8g.firstPage();
    do{
        u8g.setFont(u8g_font_unifont);
        u8g.setPrintPos(0,30);   //초기 위치 설정
        u8g.print("Baessi Blog"); //초기 위치 설정에 따른 text 출력
        u8g.setPrintPos(0,50);
        u8g.print("value: "); 
        u8g.setPrintPos(50,50);
        u8g.print(strVal); 
    }while(u8g.nextPage()); 
}

 

 

구현영상

 

[아두이노] 토양수분감지센서를 이용하여 OLED에 표시하기[토양습도감지센서]

 

이상입니다 감사합니다.