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

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어

부품 및 소모품

헬륨 아톰 XBee 모듈 (Helium Atom Xbee Module) 1개
헬륨 엘리먼트 액세스 포인트 (Helium Element Access Point) 1개
DF로봇 Gravity: 아날로그 정전용량식 토양 수분 센서 1개
헬륜 아두이노/mbed 어댑터 (Helium Arduino/mbed Adapter) 1개
아두이노 우노 (Arduino UNO) 1개

앱 및 온라인 서비스

프로젝트 소개

무선 토양 수분 센서로 식물에게 '목소리'를 주세요

식물은 물 부족으로 자주 죽습니다. 바쁘신 분들을 위해 이 프로토타입 토양 수분 프로브로 고사리와 고무나무를 건강하게 지켜주세요.

다룰 내용 (약 60분 소요)

토양 수분 프로브 제작

완성된 프로브 모습:

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어
  1. 헬륨 아톰 모듈을 헬륨 아두이노 어댑터에 꽂고, 이를 아두이노 보드에 결합. RX/TX 점퍼 설정을 보드에 맞게 구성하세요 (상세 가이드 여기 참조).
  2. DF로봇 토양 수분 프로브의 3선 점퍼 케이블(검정/빨강/파랑)을 헬륨 아두이노 어댑터에 연결:
    • 검정 → GND
    • 빨강 → 5V
    • 파랑 → AD0 헤더
    DF로봇 배선도 여기 참조. 올바른 배선 모습:
헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어
  1. 점퍼 케이블의 흰색 헤더를 DF로봇 토양 수분 프로브에 연결 (딸깍 소리 나면 완료).

헬륨 엘리먼트 배포

자체 헬륨 네트워크 구축, 약 30초 소요. (엔드투엔드 애플리케이션 구조와 무선 네트워킹 처리 방식은 아키텍처 개요 참조)

엘리먼트를 전원과 라이브 이더넷 포트에 연결 (제공된 케이블 사용). 셀룰러 백업 엘리먼트라면 이더넷은 선택 사항이나 권장. 전면 LED가 녹색(이더넷) 또는 청록색(셀룰러)이면 연결 완료. 연결 방법 영상 여기.

헬륨 대시보드에서 엘리먼트와 아톰 등록

대시보드는 헬륨의 호스팅 UI로 하드웨어 배포 모니터링/관리용. 출하 시 시스템에 등록되어 있으나 배포자 정보 필요.

  1. 헬륨 대시보드 계정 생성 (없다면)
  2. New Atom 클릭 → 이름 입력(예: 'Fern Saver') → MAC 주소 끝 4자리와 4자리 HVV 코드 입력 → 저장
  3. New Element도 동일하게 등록. 위치 정보 입력하면 지도에 표시됨.

대시보드 'Status & Signal'에서 엘리먼트 온라인 여부 확인 가능.

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어

헬륨 HTTP 채널 배포

채널은 웹 서비스(AWS IoT, Google Cloud IoT, Azure IoT)나 프로토콜(MQTT, HTTP)로의 사전 구축 커넥터. 헬륨이 통합 작업을 모두 처리해줍니다. 예를 들어 HTTP 채널로 IFTTT에 데이터 보내 문자 알림 받기 가능.

여기서는 테스트용 무료 서비스 requestb.in으로 HTTP 채널 설정 예시. 스케치에서 채널 이름 HTTP 참조.

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어

아두이노 IDE 설정 및 스케치 업로드

  1. 최신 아두이노 IDE 설치
  2. 라이브러리 매니저에서 Helium과 ArduinoJson 검색 후 설치 (JSON 포맷 전송용)
  3. GitHub(여기)의 전체 소스 복사해 새 스케치에 붙여넣기 후 업로드

완전 스케치: Soil_Humidity.ino

/* Copyright 2017, Helium Systems, Inc. All Rights Reserved.
 * SEN0192 정전용량식 습도 센서로 습도 측정.
 * 배선: https://www.dfrobot.com/wiki/index.php/Capacitive_Soil_Moisture_Sensor_SKU:SEN0193
 * 라이브러리: ArduinoJson, Helium (스케치→라이브러리 포함→라이브러리 관리에서 설치)
 */
#include "Board.h"
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Helium.h>
#include <Wire.h>

#define CHANNEL_NAME "HTTP"        // 대시보드에 배포한 채널 이름과 일치해야 함
#define CHANNEL_DELAY 5000         // 1초 지연 (실제는 5초)
#define CHANNEL_SEND_CYCLE 12      // 60사이클(초)마다 전송

Helium helium(&atom_serial);
Channel channel(&helium);
int channel_counter;

void report_status(int status, int result = 0) {
  if (helium_status_OK == status) {
    if (result == 0) Serial.println(F("Succeeded"));
    else { Serial.print(F("Failed - ")); Serial.println(result); }
  } else Serial.println(F("Failed"));
}

void connect() {
  while (!helium.connected()) {
    Serial.print(F("Connecting - "));
    int status = helium.connect();
    report_status(status);
    if (helium_status_OK != status) delay(1000);
  }
}

void channel_create(const char * channel_name) {
  int8_t result; int status;
  do {
    connect();
    Serial.print(F("Creating Channel - "));
    status = channel.begin(channel_name, &result);
    report_status(status, result);
    if (helium_status_OK != status) delay(1000);
  } while (helium_status_OK != status || result != 0);
}

void channel_send(const char * channel_name, void const * data, size_t len) {
  int status; int8_t result;
  do {
    Serial.print(F("Sending - "));
    status = channel.send(data, len, &result);
    report_status(status, result);
    if (status == helium_status_OK && result != 0) channel_create(channel_name);
    else if (status != helium_status_OK) delay(1000);
  } while (helium_status_OK != status || result != 0);
}

void setup() {
  Serial.begin(9600);
  Serial.println(F("Starting"));
  helium.begin(HELIUM_BAUD_RATE);
  channel_create(CHANNEL_NAME);
  channel_counter = 0;
}

#define DRY_VALUE 536   // 공기 중 측정값
#define WET_VALUE 303   // 물속 측정값
#define HUM_RANGE (DRY_VALUE - WET_VALUE)

void loop() {
  Serial.print(F("Reading - "));
  float reading = analogRead(A0);
  float percent = 100 * (1 - (reading - WET_VALUE) / HUM_RANGE);
  Serial.print(reading); Serial.print(" - "); Serial.println(percent);
  
  if (--channel_counter <= 0) {
    StaticJsonBuffer<JSON_OBJECT_SIZE(2) + 100> jsonBuffer;
    JsonObject & root = jsonBuffer.createObject();
    root[F("value")] = reading;
    root[F("percent")] = percent;
    char buffer[HELIUM_MAX_DATA_SIZE];
    size_t used = root.printTo(buffer, HELIUM_MAX_DATA_SIZE);
    channel_send(CHANNEL_NAME, buffer, used);
    channel_counter = CHANNEL_SEND_CYCLE;
  }
  delay(CHANNEL_DELAY);
}

업로드 후 아톰 모듈 LED가 깜빡이면 헬륨 네트워크 연결 중. 에러 없으면 성공.

토양 수분 데이터 참고

데이터는 JSON으로 인코딩되어 전송. 예시:

{ "value": 433, "percent": 55.5 }

DF로봇 센서는 건조/습윤 기준값 사이 아날로그 판독값을 백분율로 변환. 상세 캘리브레이션 여기. 환경에 맞게 조정 필요할 수 있음.

헬륨 대시보드에서 센서 연결 및 데이터 확인

대시보드 아톰 UI에서 확인 가능:

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어
헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어
헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어

다음 단계 및 도움말

축하합니다! 이제 무선 토양 수분 프로브로 고사리를 미래에도 안전하게 지킬 수 있습니다. 고사리들이 감사할 거예요. 🌿

헬륨(Helium) & DF로봇 무선 토양 수분 센서 시스템 – 실시간 식물 케어

더 알아보기:

제조공정

  1. 토양 수분 센서: 작동 원리와 실용적 응용
  2. 통합 QR, RFID, 온도 검증 출입 통제 시스템
  3. 스마트 관수용 저가 라즈베리 파이 토양 수분 센서 만들기
  4. 라즈베리 파이와 습도 센서로 자동 에어로포닉스 시스템 만들기
  5. 라즈베리 파이와 파이썬으로 로봇 만들기: 완전 가이드
  6. 끈기의 교훈: 에이브러햄 링컨과 유지보수 리더십의 지속적 성공
  7. MAX6675 IC로 아두이노 포텐타 H7에 열전대 센서 연동하기
  8. 아두이노 & MPU6050: SG90 & MG996R 서보 모터 정밀 제어
  9. u-blox LEA-6H GPS 모듈: 아두이노 & 파이썬 연동 가이드
  10. AI 강화 디지털 카메라로 토양 수분 모니터링 혁신