산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노와 애저(Azure)로 스마트 식물 IoT 온실 구축하기

부품 및 소모품

Seeed Base Shield V2 1개
Seeed Grove - 릴레이 (펌프 제어용) 1개
Seeed Grove - 온도/습도 센서 (TH02) 1개
아두이노 우노 1개
Helium 스타터 킷 (Atom + Element + 아두이노 브레이크아웃) 1세트

추가 센서: 토양 수분, UV 라이트, Grove OLED 디스플레이 (Base Shield에 연결)

앱 및 온라인 서비스

프로젝트 소개

2019 한-중 청년 메이커 대회 출품작. 식물 센서 데이터를 Helium 네트워크를 통해 Azure IoT Hub로 전송, Azure Functions로 SQL Database에 저장, HTTP API로 조회하는 엔드투엔드 서버리스 IoT 시스템입니다. 자동/원격 급수 제어 포함.

1단계: 부품 준비 및 센서 연결

Base Shield에 그로브 센서들(온습도, 수분, UV, 릴레이, OLED) 연결. Helium Atom을 브레이크아웃 보드로 아두이노와 직렬 통신.

2단계: Helium 네트워크 설정

  1. Helium Dashboard에서 Atom 등록 (디바이스 인증)
  2. Element(액세스 포인트) 등록 및 활성화 확인
  3. 채널 생성: "Azure IoT App"

3단계: 아두이노 펌웨어

센서 읽기 → 문자열 포맷("Moisture=...&UVLight=...&Temperature=...&Humidity=...") → Helium 채널로 전송 → OLED 표시 → 수분 낮으면 릴레이로 펌프 5초 작동 → 60초 대기 반복.

4단계: Azure IoT Hub 설정

  1. IoT Hub 생성 (표준/무료 티어)
  2. 공유 액세스 정책 → RegistryReadWrite 연결 문자열 복사
  3. 테스트 디바이스 생성

5단계: Helium → Azure IoT Hub 연동

  1. Helium Dashboard에서 'Connection' 생성 → Azure 연결 문자열 붙여넣기 (자동 매핑)
  2. 채널에서 MQTT 토픽 자동 생성 확인
  3. CLI 테스트: helium channel send 1 "Hello Azure" → 양측 대시보드에서 수신 확인

6단계: Azure SQL Database

  1. SQL Database 생성 (Basic 티어 권장, 프로토타입용 최저가)
  2. 테이블 생성: SmartPlant (id, Temperature, Humidity, Moisture, UVLight, DateCreated)
  3. 연결 문자열 복사

7단계: Azure Function App (서버리스 백엔드)

Function 1: IoT Hub 트리거 → SQL INSERT (C#)

public static async Task Run(string myIoTHubMessage, TraceWriter log) {
  var map = myIoTHubMessage.Split('&').Select(x => x.Split('=')).ToDictionary(x => x[0], x => x[1]);
  var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString;
  using (var conn = new SqlConnection(str)) {
    conn.Open();
    var text = "INSERT INTO dbo.SmartPlant (Temperature, Humidity, Moisture, UVLight) VALUES (" +
               map["Temperature"] + ", " + map["Humidity"] + ", " + map["Moisture"] + ", " + map["UVLight"] + ")";
    using (var cmd = new SqlCommand(text, conn)) {
      var rows = await cmd.ExecuteNonQueryAsync();
      log.Info($"{rows} rows updated");
    }
  }
}

Function 2: HTTP GET 트리거 → 최신 데이터 JSON 반환 (모바일 앱용)

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) {
  var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString;
  using (var conn = new SqlConnection(str)) {
    conn.Open();
    var text = "SELECT TOP 1 Temperature, Humidity, Moisture, UVLight FROM dbo.SmartPlant ORDER BY DateCreated DESC";
    using (var cmd = new SqlCommand(text, conn)) {
      var reader = await cmd.ExecuteReaderAsync();
      // ... 읽어서 JSON 직렬화 반환
    }
  }
}

Function 3: HTTP GET 바로 SQL INSERT (테스트/디버깅용)

8단계: 모바일 앱 (안드로이드)

4개 센서 값 실시간 표시, 원격 펌프 트리거 버튼. 60초 주기 폴링.

추가: 알렉사 연동

음성으로 식물 상태 조회 및 급수 명령 가능하도록 확장 가능.

코드 저장소

GitHub: smart-plant-iot

아키텍처 다이어그램

아두이노와 애저(Azure)로 스마트 식물 IoT 온실 구축하기

Helium Atom → Helium Hub → Azure IoT Hub → Event Hub → Azure Function → Azure SQL → HTTP API → Mobile App

제조공정

  1. 스마트 데이터: IoT와 빅데이터의 차세대 프론티어 탐색
  2. 스마트 쓰레기통: 자동화된 폐기물 관리를 위한 셀룰러 IoT 솔루션
  3. 스마트 바텐더: 라즈베리파이 기반 나만의 칵테일 스테이션 만들기
  4. GE Appliances, 앨라배마 디케이터에 스마트 인더스트리 4.0 냉장고 플랜트 준공
  5. 재택 근무자 보안: IoT 위협 환경 대응하기
  6. 스마트 시티가 IoT, 마이크로서비스, 대시보드로 효율적 자산 관리하는 법
  7. IoT 투자 ROI 극대화: 실용 가이드
  8. 강력한 IoT 생태계로 최적화된 스마트 창고 구축하기
  9. 스마트 디바이스 보안: IoT 안전을 위한 모범 사례
  10. 최첨단 IoT 혁신과 실제 적용 사례 탐구