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

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

부품 및 소모품

부품수량비고
아두이노 우노1
수-암 점퍼 와이어1
HC-05 블루투스 모듈1
RGB 확산 공통 캐소드 LED1
저항 330Ω3
로터리 포텐셔미터 (일반)1
RGB LCD 쉴드 키트, 16x2 문자 디스플레이1
저항 1kΩ1

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

물은 우리 일상생활에서 필수적인 자원입니다. 따라서 사용하기에 적합한 수질인지 확인해야 합니다.

TDS란 무엇인가?

TDS는 총 용존 고형물(Total Dissolved Solids)을 의미합니다. 이름에서 알 수 있듯이, 일정량의 물에 용해된 고형물의 수를 ppm(parts per million) 단위로 나타냅니다. TDS는 전기 전도도[S/m]를 기반으로 계산됩니다. 전기 전도도가 높을수록 TDS 값도 높습니다. 다양한 물의 TDS 값은 다음과 같습니다:

WHO(세계보건기구) 권장 사항에 따르면, 음용수에 적합한 TDS는 300 미만입니다. 그러나 100 미만의 TDS를 가진 물은 필수 미네랄이 부족하여 섭취할 수 없습니다. 300 이상의 물은 필요한 것보다 더 많은 미네랄을 포함하여 너무 "경수"로 간주됩니다.

일반적으로 TDS 펜을 사용하여 물의 TDS를 측정합니다. 하지만 펜을 아두이노와 통합할 수 없습니다. 아두이노와 통합할 수 있는 특수 TDS 미터가 있지만, 저는 TDS 펜 없이 이 프로젝트를 진행하기로 했습니다.

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

회로 구성

아두이노

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

LCD 디스플레이

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

HC-05 블루투스 모듈

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

RGB LED

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

자유 와이어 간 저항 계산 유도

옴의 법칙을 사용합니다: 전압[V] = 전류[I] × 저항[R], 즉 V = IR

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

아날로그 핀 A0에 연결된 두 저항[R₁ - 1000Ω, R₂ - 자유 와이어 사이] 사이의 와이어 저항은 무시할 수 있으며, 이 와이어를 통한 전류는 최소입니다. 따라서 R₁과 R₂는 직렬로 연결된 것으로 볼 수 있습니다.

V₁ = IR₁이고 V₂ = IR₂이므로, V₂/V₁ = IR₂/IR₁ = R₂/R₁입니다. 하지만 V₂를 알 수 없습니다.

직렬 저항에서 V₁ + V₂ = V이고 V = 5볼트이므로, V₂ = 5 - V₁입니다.

이를 V₂/V₁ = R₂/R₁에 대입하면, buffer = (5 - V₁)/V₁로 정의할 수 있습니다.

최종적으로 R₂ = buffer × R₁입니다.

작동 원리

테스트 중인 물의 저항을 계산하고, 이를 통해 비저항을 구합니다. 이때 용기의 길이와 단면적을 고려해야 합니다.

R = r L/A  →  r = R A/L

비저항에서 전도도를 구합니다:

c = 1/r

최종적으로 전도도에서 TDS를 구합니다:

TDS = c × 7000

라이브러리

이 라이브러리를 다운로드하여 아두이노 IDE에 추가하거나, 도구 → 라이브러리 관리 → 검색하여 설치하세요.

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

코드

수질 모니터링 코드
// 라이브러리 포함
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

// 블루투스 - RX 핀 3, TX 핀 2로 BTserial 객체 생성
SoftwareSerial BTserial(3, 2); // RX | TX

// 변수 선언
float reads;
int pin = A0;
float vOut = 0; // 두 점 사이의 전압 강하
float vIn = 5;
float R1 = 1000;
float R2 = 0;
float buffer = 0;
float TDS;
float R = 0; // 두 와이어 사이의 저항
float r = 0; // 비저항
float L = 0.06; // 와이어 간 거리 (m)
double A = 0.000154; // 와이어 단면적 (m²)
float C = 0; // 전도도 (S/m)
float Cm = 0; // 전도도 (mS/cm)
int rPin = 9;
int bPin = 5;
int gPin = 6;
int rVal = 255;
int bVal = 255;
int gVal = 255;

// LiquidCrystal 라이브러리에서 lcd 객체 생성
LiquidCrystal lcd(7, 8, 10, 11, 12, 13);

void setup() {
  // 블루투스 시리얼 및 시리얼 모니터 초기화
  Serial.begin(9600);
  BTserial.begin(9600);
  
  // LCD 초기화
  lcd.begin(16, 2);
  
  // RGB LED 핀 (모두 아두이노 PWM 핀)을 출력으로 설정
  pinMode(rPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(pin, INPUT);
  
  // LCD에 고정 메시지 출력
  lcd.print("Conductivity: ");
}

void loop() {
  reads = analogRead(A0);
  vOut = reads * 5 / 1023;
  Serial.println(reads);
  
  buffer = (vIn / vOut) - 1;
  R2 = R1 * buffer;
  Serial.println(R2);
  delay(500);
  
  // 전압을 저항으로 변환
  // 위 공식 적용
  r = R2 * A / L; // R = rL/A
  
  // 비저항을 전도도로 변환
  C = 1 / r;
  Cm = C * 10;
  
  // mS/cm 단위 전도도를 TDS로 변환
  TDS = Cm * 700;
  
  // LCD 커서를 다음 행으로 이동
  lcd.setCursor(0, 1);
  lcd.println(C);
  
  // 아날로그 판독값에 따라 RGB LED에 해당 색상 표시
  if (reads < 600) {
    if (reads <= 300) {
      setColor(255, 0, 255);
    }
    if (reads > 200) {
      setColor(200, 0, 255);
    }
  } else {
    if (reads <= 900) {
      setColor(0, 0, 255);
    }
    if (reads > 700) {
      setColor(0, 255, 255);
    }
  }
  
  // 블루투스를 통해 Ardutooth 앱으로 데이터 전송
  BTserial.print(C);
  BTserial.print(",");
  BTserial.print(TDS);
  BTserial.print(";");
  delay(500);
}

void setColor(int red, int green, int blue) {
  analogWrite(rPin, 255 - red);
  analogWrite(gPin, 255 - green);
  analogWrite(bPin, 255 - blue);
}

커스텀 파트 및 인클로저

가지고 있던 오래된 시험관을 사용했습니다. 시험관 양 끝에 구멍을 뚫고 양쪽에서 와이어를 삽입했습니다. 마지막으로 와이어를 고정하기 위해 퍼티를 부착했습니다.

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

회로도

IoT 수질 센서 시스템 - 아두이노 기반 실시간 모니터링

제조공정

  1. 라즈베리 파이 & HDC2010: I2C 온습도 센서 완전 설정 가이드
  2. 라즈베리 파이 3에 DHT11 센서 연결해 ThingsIo.ai 클라우드에 데이터 업로드하기
  3. 스마트 쓰레기통: 자동화된 폐기물 관리를 위한 셀룰러 IoT 솔루션
  4. 헬륨 기반 태양광 전원 공기질 센서: 설계 및 배포 가이드
  5. 팬텀 요요 고감도 수위 센서를 MCP3008 ADC와 라즈베리파이에 연동하기
  6. Windows 10 IoT Core에서 SHT15로 정확한 온도 & 습도 모니터링
  7. 스마트 홈 연동을 위한 다중 위치 온도 센서 시스템
  8. 스마트 아두이노 물병: 실시간 음수량 모니터링 및 알림
  9. 아두이노 나노로 만든 스마트 모션 감지 물총
  10. 고급 탄소 기반 NO₂ 센서로 실내 공기 질 모니터링 향상