프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]
[아두이노] 토양수분감지센서로 OLED에 표시[Soil Moisture Sensor]
yohoi
2019. 5. 3. 16:46
안녕하세요 오늘은 토양수분감지센서 [토양습도감지센서-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());
}
구현영상
이상입니다 감사합니다.