Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

IoT-система мониторинга качества воды на Arduino с Bluetooth

Компоненты и материалы

Arduino UNO×1
Провода-перемычки (Male/Female)×1
Bluetooth-модуль HC-05×1
RGB-светодиод (общий катод)×1
Резистор 330 Ом×3
Потенциометр (для контраста LCD)×1
RGB LCD Shield 16x2×1
Резистор 1 кОм×1

Инструменты

Программное обеспечение и сервисы

О проекте

Вода — жизненно важный ресурс. Мы должны быть уверены в её качестве.

Что такое TDS?

TDS (Total Dissolved Solids) — общее количество растворенных твердых веществ в воде, в ppm (частей на миллион). Рассчитывается по электрической проводимости: чем выше проводимость, тем выше TDS.

Ориентировочные значения:

ВОЗ рекомендует TDS питьевой воды ниже 300 ppm. Ниже 100 ppm — вода лишена минералов. Выше 300 — слишком «жесткая».

Обычно используют TDS-перо, но его нельзя интегрировать с Arduino. Есть специальные TDS-метры с интерфейсом, но я решил обойтись без них.

IoT-система мониторинга качества воды на Arduino с Bluetooth

Схема подключения

Arduino

IoT-система мониторинга качества воды на Arduino с Bluetooth

LCD-дисплей

IoT-система мониторинга качества воды на Arduino с Bluetooth

Bluetooth HC-05

IoT-система мониторинга качества воды на Arduino с Bluetooth

RGB-светодиод

IoT-система мониторинга качества воды на Arduino с Bluetooth

Вывод формулы расчета сопротивления

Используем закон Ома: V = I·R. Два резистора последовательно: R₁ = 1000 Ом (на плате), R₂ — сопротивление воды между электродами. Ток через АЦП пренебрежимо мал, значит ток одинаков. Напряжение на R₁ измеряется АЦП (V₁). Общее напряжение 5В = V₁ + V₂. Отсюда:

V₂ = 5 - V₁
V₂ / V₁ = R₂ / R₁
R₂ = R₁ * (5 - V₁) / V₁

Переменная buffer = (5 - V₁) / V₁, тогда R₂ = buffer * R₁.

Принцип работы

  1. Измеряем сопротивление воды R₂.
  2. Вычисляем удельное сопротивление: ρ = R₂ * A / L (A — площадь сечения электродов, L — расстояние между ними).
  3. Проводимость: σ = 1/ρ (См/м).
  4. TDS = σ * 7000 (эмпирический коэффициент перевода в ppm).
R = ρ * L / A  →  ρ = R * A / L
c = 1 / ρ
TDS = c * 7000

Библиотеки

Установка: Sketch → Include Library → Manage Libraries → поиск по названию.

IoT-система мониторинга качества воды на Arduino с Bluetooth

Код

Код мониторинга качества воды
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

SoftwareSerial BTserial(3, 2); // RX, TX для HC-05

float reads; int pin = A0;
float vOut = 0, vIn = 5, R1 = 1000, R2 = 0, buffer = 0;
float TDS, R = 0, r = 0, L = 0.06, A = 0.000154;
float C = 0, Cm = 0;
int rPin = 9, bPin = 5, gPin = 6;
int rVal = 255, bVal = 255, gVal = 255;

LiquidCrystal lcd(7, 8, 10, 11, 12, 13);

void setup() {
  Serial.begin(9600);
  BTserial.begin(9600);
  lcd.begin(16, 2);
  pinMode(rPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(pin, INPUT);
  lcd.print("Conductivity: ");
}

void loop() {
  reads = analogRead(A0);
  vOut = reads * 5.0 / 1023.0;
  Serial.println(reads);
  buffer = (vIn / vOut) - 1;
  R2 = R1 * buffer;
  Serial.println(R2);
  delay(500);

  r = R2 * A / L;       // удельное сопротивление
  C = 1 / r;            // проводимость См/м
  Cm = C * 10;          // мСм/см
  TDS = Cm * 700;       // ppm

  lcd.setCursor(0, 1);
  lcd.print(C);

  // RGB-индикация по уровню сигнала
  if (reads < 600) {
    if (reads <= 300) setColor(255, 0, 255);
    else if (reads > 200) setColor(200, 0, 255);
  } else {
    if (reads <= 900) setColor(0, 0, 255);
    else if (reads > 700) setColor(0, 255, 255);
  }

  // Отправка в Ardutooth: проводимость, TDS
  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-система мониторинга качества воды на Arduino с Bluetooth

Схемы

IoT-система мониторинга качества воды на Arduino с Bluetooth

Производственный процесс

  1. Raspberry Pi и HDC2010: полное руководство по настройке I2C датчика температуры и влажности
  2. Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
  3. Умное мусорное ведро: клеточное IoT-решение для автоматизированного управления отходами
  4. Солнечный датчик качества воздуха на Helium: руководство по проектированию и развёртыванию
  5. Интеграция высокочувствительного датчика воды Phantom YoYo с ADC MCP3008 на Raspberry Pi
  6. Точный мониторинг температуры и влажности с SHT15 на Windows 10 IoT Core
  7. Многопозиционная система датчиков температуры для интеграции в умный дом
  8. Умная бутылка для воды на Arduino: мониторинг и напоминания в реальном времени
  9. Умный водяной пистолет с датчиком движения на Arduino Nano
  10. Продвинутый углеродный датчик NO₂ улучшает мониторинг качества воздуха в помещениях