1. 농작물 automation
향후 나이를 먹으면, 농사를 지을 생각입니다.
다만, 전자 기기 경험과 IT 경력을 이용하여 가능한 전자동으로 하고싶습니다.
일조량, 물주기, 항온 항습, 통풍, 영양소 확인 등등...
그 목적을 위해 오늘도 Arduino 를 이용하여 열씸히 놀고 있습니다.
이 농사 automation 에서 토양의 수분 확인은 필수겠죠?
그래서 관련 센서들을 평소 찾아 다녔습니다.
2. Soil Moisture Sensor
네, 맞습니다. 한글로 번역하면 "토양 수분 감지기" 정도가 되겠습니다.
토양에 자동으로 물을 주려면 수분의 level 을 잘 감지해 내야겠죠?
AliExpress 에서 찾아 봅니다.
센서부에 금박이 칠해져 있고, 품질 좋은 것으로 호평받는 RobotDyn 사의 제품이 있습니다.
1.28 USD !!! 배송비 무료. 감사합니닷.
3. 도착
잊고 있었더니만 어느샌가 도착했습니다.
비닐 포장도 깔끔하게 되어 있고, 프린팅도 괜찮습니다.
간만에 괜찮은 품질의 제품을 만난것 같습니다.
개봉한 샷 입니다.
금빛 찬란하군요.
4. Layout
Pin 접속은 다음과 같습니다.
Soil Moisture Sensor | Arduino Nano ------------------------------------- OUT | 5V GND | GND VCC | D2 ------------------------------------- 128X64 OLED | Arduino Nano ---------------------------- GND | GND VCC | 3.3V SDA | A4 SDL | A5 ----------------------------
RobotDyn 제품의 원래 오리지날은 SparkFun 사의 "Soil Moisture Sensor" 일지도 모르겠습니다.
- https://learn.sparkfun.com/tutorials/soil-moisture-sensor-hookup-guide
외관이 너무 비슷합니다.
그래서 고맙게도 IDE sketch 를 그대로 가져다 써도 잘 동작합니다.
5. Source
Sketch 는 다음과 같습니다.
OLED 를 붙여서 동작시키게 조금 수정하였습니다.
/* Soil Mositure Basic Example This sketch was written by SparkFun Electronics Joel Bartlett August 31, 2015 Basic skecth to print out soil moisture values to the Serial Monitor Released under the MIT License(http://opensource.org/licenses/MIT) */ #include "SPI.h" #include "Wire.h" #include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h" #include "stdint.h" #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); int val = 0; // value for storing moisture value int soilPin = A0; // declare a variable for the soil moisture sensor int soilPower = 7; // variable for Soil moisture Power // rather than powering the sensor through the 3.3V or 5V pins, // we'll use a digital pin to power the sensor. This will // prevent corrosion of the sensor as it sits in the soil. void setup() { Serial.begin(57600); // open serial over USB pinMode(soilPower, OUTPUT); // set D7 as an OUTPUT digitalWrite(soilPower, LOW); // set to LOW so no power is flowing through the sensor display.begin(SSD1306_SWITCHCAPVCC, 0x3C); } void loop() { // get soil moisture value from the function below and print it int result = readSoil(); Serial.print("Soil Moisture = "); Serial.println(result); // clear the buffer display.clearDisplay(); // text display tests display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,0); display.print("Soil\n"); display.print("Moisture\n"); isplay.print("\n == "); display.print(result); display.display(); // this 1 second timefrme is used so you can test the sensor and see it change in real-time. // for in-plant applications, you will want to take readings much less frequently. delay(1000); // take a reading every second } // this is a function used to get the soil moisture content int readSoil() { digitalWrite(soilPower, HIGH); // turn D7 "On" delay(10); // wait 10 milliseconds val = analogRead(soilPin); // read the SIG value form sensor digitalWrite(soilPower, LOW); // turn D7 "Off" return val; // send current moisture value }
출처는 SparkFun 사의 위의 사이트 입니다.
6. 동작 확인
Pin 을 연결하고 sketch 를 업로드 한다음 제대로 동작하는지 확인해 봅니다.
화분에 물주고 확인해야 하는데, 일이 커지므로 손기운으로 측정으로 해봅니다.
잘 되네요!!!
실측값을 토대로 실제로 흙속에 넣고 해봐야겟지만, 동작확인이 되었으니 충분합니다.
아마 흙속에 계속 넣고 있으면, 금박 등이 다 삵아서 제대로 동작되지 않겠죠?
지속적인 사용은 못할 듯 합니다.
실제 농작물 automation 에 사용하려면 수분이 직접 닫지 않고도 측정되는 센서가 필요할 듯 합니다.
동영상도 한번 찍어봤습니다.
간단하게 잘 동작하네요.
FIN
아~ 나의 농작 automation~!!!
'Hardware' 카테고리의 다른 글
Hardware | Resistor Network 을 사용해보자 (0) | 2017.08.17 |
---|---|
Hardware | LED bar graph 를 이용해 보자 (0) | 2017.08.13 |
Hardware | MB102 Breadboard Power Supply Module 를 사용해 보자 (0) | 2017.07.31 |
Hardware | Raindrops 모듈 구동해 보기 (0) | 2017.07.30 |
Hardware | 저항을 구매해 보자 (0) | 2017.07.29 |