Sensor de qualidade da água baseado em IoT
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
|
Aplicativos e serviços online
| ||||
|
Sobre este projeto
A água é um recurso essencial em nossa vida cotidiana. Portanto, devemos ter certeza de que é de boa qualidade para uso.
O que é TDS?
TDS significa Total de Sólidos Dissolvidos. Como o nome sugere, ele nos dá o número de sólidos dissolvidos em uma certa quantidade de água, em ppm (partes por milhão). O TDS é calculado com base na condutividade elétrica [S / m]. Quanto maior for a condutividade elétrica, maior será o valor de TDS. Aqui está uma lista dos valores TDS de diferentes tipos de água:
- Água pura:80-150
- Água da torneira:250-350
- Água subterrânea:500-1000
- Água do mar:cerca de 30000
Conforme recomendado pela OMS (Organização Mundial da Saúde), o TDS adequado para água potável é inferior a 300. No entanto, a água com TDS inferior a 100 não pode ser consumida, pois faltaria os minerais essenciais. Água acima de 300 é considerada muito "dura", pois contém mais minerais do que o necessário.
Normalmente, usamos uma caneta TDS para medir o TDS da água. No entanto, não podemos integrar a caneta com o Arduino. Portanto, existem medidores TDS especiais disponíveis que podem ser integrados ao Arduino. No entanto, decidi fazer este projeto sem o uso da caneta TDS.
O circuito
Arduino
- Conecte 5V do Arduino a um barramento de alimentação da placa de ensaio
- Conecte o aterramento do Arduino ao outro barramento de alimentação da placa de ensaio
- Conecte uma extremidade de um resistor de 1k ohm ao aterramento e a outra extremidade à placa de ensaio. Conecte o pino analógico A0 no Arduino ao resistor. Finalmente, conecte um fio ao resistor e outro fio a 5V. Conecte as pontas livres desses fios aos clipes de crocodilo.
LCD Exibir
- Conecte o pino VSS ao trilho de aterramento
- Conecte o pino VDD ao trilho 5V
- Conecte V0 ao pino central do potenciômetro
- Conecte as extremidades do potenciômetro a 5V e aterramento
- Conecte o pino RS ao pino 7 do Arduino
- Conecte o pino R / W ao trilho de aterramento
- Conecte o pino E ao pino 8 do Arduino
- Conecte o D4 ao pino 10 do Arduino
- Conecte o D5 ao pino 11 do Arduino
- Conecte o D6 ao pino 12 do Arduino
- Conecte o D7 ao pino 13 do Arduino
Módulo Bluetooth HC-05
- Conecte o pino VCC ao trilho 5V
- Conecte o pino GND ao aterramento
- Conecte o pino TX ao pino 3 do Arduino (serve como RX)
- Conecte o pino RX ao pino 2 do Arduino (serve como TX)
LED RGB
- Conecte o cátodo comum (pino mais longo) ao aterramento
- Conecte o pino vermelho (à direita do pino catódico) ao pino 9 do PWM no Arduino por meio de um resistor de 330 ohms
- Conecte o pino verde (à esquerda do pino catódico) ao pino 6 do PWM no Arduino por meio de um resistor de 330 ohms
- Conecte o pino azul (extrema esquerda) ao pino 5 do PWM no Arduino por meio de um resistor de 330 ohms
Derivação para calcular a resistência entre fios livres
Estaremos usando a lei de Ohm, que afirma que a tensão [V] através de um resistor de resistência R é diretamente proporcional à corrente [I] que flui através do resistor. Em outras palavras,
V =IR
Embora haja um fio conectado entre os 2 resistores [R₁ - 1000 ohm e R₂ - entre os fios livres] ao pino analógico A0 no Arduino, a resistência desse fio pode ser desprezada e, portanto, podemos dizer que corrente mínima flui através do fio. Portanto, R₁ e R₂ estão conectados em série.
Então, podemos dizer que
V₁ =IR₁
e V₂ =IR₂
. Portanto, podemos dizer
V₂ / V₁ =IR₂ / IR₁ =R₂ / R₁
. No entanto, não conhecemos V₂.
Sabemos que em uma combinação em série de resistores,
V₁ + V₂ =V
, onde V =5 Volts. A partir disso, podemos obter V₂ =5-V₁
Finalmente, substituindo o valor que obtivemos por
V₂
em V₂ / V₁ =R₂ / R₁
, podemos definir um buffer variável como 5-V₁ / V₁
, em vez de V₂ / V₁
. Finalmente, podemos dizer que
R₂ =buffer * R₁
.
O trabalho
Calcularemos a resistência da água em teste e, a partir disso, obteremos a resistividade. Temos que considerar o comprimento e a área da seção transversal do nosso contêiner para isso.
R =r L / A => r =R A / L
A partir da resistividade, podemos obter a condutividade
c =1 / r
Finalmente, obtemos o TDS da condutividade
TDS =c * 7000
Bibliotecas
- Biblioteca de cristal líquido:https://www.arduinolibraries.info/libraries/liquid-crystal
- Biblioteca serial de software:https://pdfpunk.weebly.com/softwareserial-library-download.html
Você pode baixar essas bibliotecas e adicioná-las ao seu Arduino IDE ou pode ir para Ferramentas -> gerenciar bibliotecas -> procurar a biblioteca que deseja baixar
Código
- Código de monitoramento da qualidade da água
Código de monitoramento da qualidade da água Arduino
// inclui bibliotecas # include#include // para bluetooth - cria um objeto chamado BTserial, com pino RX em 3 e pino TX em 2SoftwareSerial BTserial (3,2); // RX | TX // decraração de todas as nossas variáveis leituras flutuantes; int pin =A0; float vOut =0; // queda de tensão em 2 pontosfloat vIn =5; float R1 =1000; float R2 =0; float buffer =0; float TDS; float R =0; // resistência entre os 2 fios flutuantes r =0; // resistividade flutuante L =0,06; // distância entre os fios em mdoble A =0,000154; // área da seção transversal do fio em m ^ 2float C =0; // condutividade em S / mfloat Cm =0; // condutividade em mS / cmint rPin =9; int bPin =5; int gPin =6; int rVal =255; int bVal =255; int gVal =255; // usaremos esta fórmula para obter a resistividade após usar a lei de ohm -> R =r L / A => r =RA / L // criando o objeto lcd da biblioteca Liquid CrystalLiquidCrystal lcd (7,8,10,11,12,13 ); void setup () {// inicializar o monitor serial e serial BT Serial.begin (9600); BTserial.begin (9600); // inicializar lcd lcd.begin (16, 2); // define pinos led rgb (todos como pinos pwm no Arduino) como saída pinMode (rPin, OUTPUT); pinMode (bPin, OUTPUT); pinMode (gPin, OUTPUT); pinMode (pin, INPUT); // Imprime mensagem estagnada no LCD lcd.print ("Condutividade:");} void loop () {lê =analogRead (A0); vOut =lê * 5/1023; Serial.println (lê); // Serial.println (vOut); buffer =(vIn / vOut) -1; R2 =R1 * tampão; Serial.println (R2); atraso (500); // converter tensão em resistência // Aplicar a fórmula mencionada acima r =R2 * A / L; // R =rL / A // converter resistividade em condicividade C =1 / r; Cm =C * 10; // converte a condutividade em mS / cm para TDS TDS =Cm * 700; // Define o cursor do LCD para a próxima linha lcd.setCursor (0,1); lcd.println (C); // exibe as cores correspondentes no led rgb de acordo com a leitura analógica if (lê <600) {if (lê <=300) {setColor (255, 0, 255); } if (lê> 200) {setColor (200, 0, 255); }} else {if (lê <=900) {setColor (0, 0, 255); } if (lê> 700) {setColor (0, 255, 255); }} // enviar dados para o aplicativo Ardutooth no telefone móvel através de bluetoothBTserial.print (C); BTserial.print (","); BTserial.print (TDS); BTserial.print (";"); delay (500); } void setColor (int vermelho, int verde, int azul) {analogWrite (rPin, 255 - vermelho); analogWrite (gPin, 255 - verde); analogWrite (bPin, 255 - azul); }
Peças personalizadas e gabinetes
Usei um tubo de ensaio antigo que tive para fazer isso. Eu fiz furos em cada extremidade do tubo e inseri os fios de cada uma das extremidades. Finalmente, para segurar os fios no lugar, coloquei um pouco de massa.Esquemas
Processo de manufatura
- IoT básica - RaspberryPI HDC2010 como
- Projeto Raspberry PI IoT Conectando o Sensor DHT11
- IoT celular:Lixeira inteligente
- Sensor de qualidade do ar de hélio
- Sensor de água de alta sensibilidade em MCP3008
- Windows 10 IoT Core e SHT15
- Sensor de temperatura múltipla
- Garrafa de água alimentada por Arduino
- Pistola de água com sensor de movimento
- Sensor de qualidade do ar à base de carbono