[파이썬] IoT 활용한 스마트 팜과 농업 자동화

smart farm

스마트 팜은 농업 분야에서 IoT 기술을 활용하여 농작물을 효율적으로 관리하고 생산성을 향상시키는 방법입니다. 이 글에서는 파이썬과 함께 IoT를 활용하여 농업 자동화를 구현하는 방법을 알아보겠습니다.

센서 데이터 수집

스마트 팜은 다양한 센서를 사용하여 농작물의 생장 상태를 모니터링합니다. 예를 들어, 온도, 습도, 조도, 토양 수분 등의 데이터를 실시간으로 수집하며 이를 기반으로 농작물에 적합한 환경을 유지합니다.

import Adafruit_DHT

DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4

while True:
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    if humidity is not None and temperature is not None:
        print(f"Temperature: {temperature}°C\tHumidity: {humidity}%")
    else:
        print("Failed to retrieve sensor data.")

위의 예제 코드에서는 Adafruit_DHT 라이브러리를 사용하여 DHT11 온습도 센서에서 데이터를 읽어옵니다. 센서에서 데이터를 읽은 후 온도와 습도를 출력합니다.

자동 제어 시스템

센서 데이터를 수집한 후, 농작물의 요구사항에 맞게 환경을 제어하는 자동 제어 시스템을 구현할 수 있습니다. 예를 들어, 온도가 설정한 범위를 벗어나면 온도를 조절하는 제어 시스템입니다.

import RPi.GPIO as GPIO
import time

FAN_PIN = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN_PIN, GPIO.OUT)

def control_fan(temperature):
    if temperature > 30:
        GPIO.output(FAN_PIN, GPIO.HIGH)
    else:
        GPIO.output(FAN_PIN, GPIO.LOW)

while True:
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    if humidity is not None and temperature is not None:
        control_fan(temperature)
    else:
        print("Failed to retrieve sensor data.")
    time.sleep(1)

위의 예제 코드에서는 RPi.GPIO 라이브러리를 사용하여 Raspberry Pi의 GPIO 핀을 제어합니다. 온도가 30°C 이상인 경우에는 팬을 켜고, 그렇지 않은 경우에는 팬을 끄는 제어 시스템입니다.

데이터 모니터링 및 제어

생성된 센서 데이터와 제어 시스템의 상태는 웹 또는 모바일 애플리케이션을 통해 실시간으로 모니터링하고 제어할 수 있습니다. 이를 통해 농장 주인은 언제 어디서든 농작물의 상태를 확인하고 필요에 따라 환경을 제어할 수 있습니다.

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/")
def index():
    temperature, humidity = get_sensor_data()
    fan_status = get_fan_status()
    return render_template("index.html", temperature=temperature, humidity=humidity, fan_status=fan_status)

@app.route("/toggle_fan", methods=["POST"])
def toggle_fan():
    fan_status = request.form.get("fan_status")
    if fan_status == "on":
        turn_on_fan()
    else:
        turn_off_fan()
    return redirect(url_for("index"))

if __name__ == "__main__":
    app.run()

위의 예제 코드에서는 Flask 라이브러리를 사용하여 웹 서버를 구현하였습니다. “/” 경로로 접속하면 센서 데이터와 제어 시스템의 상태를 템플릿으로 렌더링하여 보여줍니다. “/toggle_fan” 경로로 POST 요청을 보내면 팬의 상태를 변경합니다.

결론

이렇게 파이썬과 IoT 기술을 활용하여 스마트 팜과 농업 자동화를 구현할 수 있습니다. 센서 데이터의 실시간 수집 및 분석, 환경 제어 시스템 구현, 원격 모니터링 및 제어 등의 기능을 통해 농업 생산성을 향상시킬 수 있으며, 더욱 스마트하고 지능적인 농업 시스템을 구축할 수 있습니다.

References: