gura os pinos do Arduino que farão comunicação com o display.int sensor1 = 7; // Sensor de nível mínimo da caixa d'água.int sensor2 = 8; // Sensor de nível intermediário da caixa d'água.int sensor3 = 9; //Sensor de nível cheio da caixa d'água.int sensor4 = 10; // Sensor da cisterna. Evita que a bomba funcione a seco.int bomba = 6;
void setup() { lcd.begin (16,2); // Define que o display é 16x2 (2 linhas com 16 caracteres cada). lcd.setCursor (0,0); // Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD. lcd.print ("Nivel Agua"); // Escreve no LCD "Nivel de agua". delay(1000); pinMode (sensor1, INPUT); // Configura o Sensor como entrada. pinMode (sensor2, INPUT); pinMode (sensor3, INPUT); pinMode (sensor4, INPUT); pinMode (bomba, OUTPUT); // Configura a bomba como saída.}
void loop() { int estado2 = digitalRead (sensor1); // Lê o estado lógico do sensor1. if (estado2 == LOW) { digitalWrite (bomba, HIGH);} // Se o nível lógico for zero (desligado), a bomba deverá ser acionada. else { lcd.setCursor (4,1); lcd.print ("MINIMO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível no mínimo.
int estado3 = digitalRead (sensor2); // Lê o estado lógico do sensor2. if (estado3 == LOW){ digitalWrite (bomba, HIGH);} // Se o nível lógico for zero (desligado), a bomba deverá ser acionada. else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("Nivel agua"); lcd.setCursor (4,1); lcd.print ("MEDIO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível intermediário.
int estado4 = digitalRead (sensor3); // Lê o estado lógico do sensor3. if (estado4 == HIGH) { digitalWrite (bomba, LOW); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Nivel agua"); lcd.setCursor (5,1); lcd.print ("CHEIO");} // Se o nível for 1 (ligado), imprimir no LCD que a caixa d'água está com o nível cheio.
int estado1 = digitalRead (sensor4); // Lê o estado lógico do sensor4 (sensor da bomba). if (estado1 == LOW) { // Se o nível lógico for zero, a bomba deverá ser desligada lcd.clear (); lcd.setCursor (0,0); lcd.print ("Nivel agua"); lcd.setCursor (2,1); lcd.print ("CAIXA VAZIA"); // Imprimir na tela que a cisterna está vazia digitalWrite (bomba,LOW);}
delay(1000);
}…
Adicionado por Dayanne A.F. ao 14:44 em 10 novembro 2015
I AQUI AQUI esquema elétrico. AQUI Vários sensores
As simulações são realizadas com software Proteus e modulo VSM Arduino.
Você pode por outra parte colocar a aplicação na nuvem, de forma tal que quando suceda X evento você receba um Twitter por exemplo, é o que faço com minha aplicação para receber estado de ambiente da minha casa, veja AQUI se a temperatura passar de X limite recebo um Twitter de alerta.
Mas será que precisa de tudo isso? Ou é um TCC?
Boa sorte!
Abs.
…
Adicionado por Carlos kwiek ao 16:05 em 22 setembro 2016
avisos que enviamos estaria até hoje, assim como as demais coisas aqui parece que não tem ninguém que cuida de nada além das vendas, o forum de certa forma funciona pela colaboração de muitos voluntários aqui, não porque existam moderadores, quanto a compra de produtos, enviei um e-mail por reclamar sobre um modulo RFDI em mal estado e até hoje estou sem resposta, mais de 2 semanas.
Me sinto órfão com o LDG.
Simulação Proteus sistema de cisterna e caixa elevada de agua duas bombas
Sistema de armazenamento e elevação de agua com Arduino, interface display LCD 20X4
Duas bombas independentes.
https://www.youtube.com/watch?v=YQLoB2EylCQ&feature=youtu.be
Abs.
Programa desenho e simulação de sistemas elétricos
****************************************
Neste video mostro uma simulação e desenho de um sistema simples de armazenamento de agua em cisterna e elevação para uma caixa alta.
https://www.youtube.com/watch?v=Vj4kctueuNs&feature=youtu.be
Abs.
Desde aproximadamente um mês recebi a notificação de que meu laptop onde tenho instalado o windows 8.1 receberia em breve uma atualização para o windows 10.
Ontem a noite a atualização foi realizada. 05-08-2015
A primeira impressão é uma melhora significativa em todos os sentidos, acho que corrigiram todos os erros e problemas derivados a partir do 8, e decretaram o fim do IE e o lançamento do Edge, muito rápido e eficiente.
Muitas coisas boas e bem vindas tal como um botão iniciar adequado e outras coisas que todos usuários reclamavam, acho que acertaram esta vez.
Abs.
******************************
RTC_Alarmes_Programaveis
https://www.youtube.com/watch?v=rhIynVlnapk&feature=youtu.be
O Vídeo do link acima mostra um RTC com alarmes programáveis, podem ser programados múltiplos alarmes para determinada hora, pode ser usado como simulador de presença, lembrete de atividades durante o dia, ou repetitivos, a imaginação de cada um é que vai determinar seu uso.
Abs.
********************************************
Fica a Dica
Baixe este excelente bloco de notas, grátis e muito pratico e eficiente.
https://notepad-plus-plus.org/download/v6.8.html
Você conhece este projeto?
https://www.ardusat.com/?gclid=COnSss67h8cCFVAJkQod4u8L_A#
************************************************
Abs.…
Adicionado por Carlos kwiek ao 1:41 em 7 agosto 2015
( Cisterna) é posteriormente bombeada para um reservatório mais alto. Como estou fazendo um protótipo, estou usando uma bomba de 12V de parabrisa de carro e um relé de 5V para acioná-la com o arduíno. Assim como estou usando dois sensores de nível de água; um de nível máximo para o reservatório mais alto (para a bomba não encher infinitamente e transbordar), e um sensor de nível mínimo também no reservatório alto, para quando a água estivesse em nível baixo, a bomba então encheria automaticamente o reservatório, e seria desligada somente quando o sensor de nível máximo detecta-se água novamente, estou usando o seguinte código:
int pinAguaBaixa = 10; // Sensor de Água Baixo int pinAguaAlta = 11; // Sensor de Água Alto int pinBOMBA = 12; // Relay da Bomba void setup(){ pinMode(pinAguaBaixa,INPUT); pinMode(pinAguaAlta,INPUT); pinMode(pinBOMBA,OUTPUT); } void loop(){ if(digitalRead(pinAguaBaixa)==HIGH) { if(digitalRead(pinAguaAlta)==HIGH){ digitalWrite(pinBOMBA,LOW); } } if(digitalRead(pinAguaAlta)==LOW) { if(digitalRead(pinAguaBaixa)==LOW){ digitalWrite(pinBOMBA,HIGH); } } }
No entanto, não sei como fazer o esquema elétrico desse sistema. Por Favor, me ajudem.
PS: O sensor de nível de água que estou utilizando é um que achei no youtube, onde se estiver detectando água o LED acende, caso não detecte, o LED não fica aceso. E esse sensor precisa de 5V ( Positivo e Negativo) para funcionar.
PS: O relé que estou utilizando é um Sanyou SRD-S-105D…
Adicionado por José Farias ao 15:13 em 17 março 2016
cionar um relê. Para que possa entender melhor o que eu quero fazer vou deixar link com um esquema que mostra tudo.link do esquema do projeto: http://prntscr.com/czrxbnlink do sensor utilizado: http://prntscr.com/czs77gutilizei um codigo do Pedro como base, o exemplo de uso do nodemcu com o dht22 enviando para o thingspeak.só que tem erro nessa alteração que fiz no codigo pois nao envia nenhum dado ao servidor.se alguem puder me ajudar nessa parte da programação segue codigo abaixo:
/** Este programa envia os dados coletados do DHT11 para a plataforma de IoT* thingspeak.com* Data: 16 de Setembro de 2015* Author: Pedro Minatel* Website: http://pedrominatel.com.br*/ //Include da lib de Wifi do ESP8266//#include //Include da lib do sensor DHT11 e DHT22#include "ESP8266WiFi.h"; //Define do pino a ser utilizado no ESP para o sensor = GPIO4#define CX_N1_PIN 3 //GPIO 0#define CX_N2_PIN 10 //GPIO 1#define CX_N3_PIN 4 //GPIO 2#define CX_N4_PIN 9 //GPIO 3#define CX_N5_PIN 2 //GPIO 4#define RES_N1_PIN 1 //GPIO 5 NIVEL RESERVATORIO#define MOTOR_PIN 6 //GPIO 12 BOMBA DE AGUA//#define DHTTYPE DHT11 //Definir o SSID da rede WiFiconst char* ssid = "lg-g2";//Definir a senha da rede WiFiconst char* password = "12345678"; //Colocar a API Key para escrita neste campo//Ela é fornecida no canal que foi criado na aba API KeysString apiKey = "6V4P4XKVXP1L16CI";const char* server = "api.thingspeak.com"; //DHT dht(DHT_DATA_PIN, DHTTYPE);WiFiClient client; byte aciona = 0;//void setup() { //Configuração da UART Serial.begin(115200); //Inicia o WiFi WiFi.begin(ssid, password); //Espera a conexão no router while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } pinMode(D3, INPUT); pinMode(D10,INPUT); pinMode(D4, INPUT); pinMode(D9, INPUT); pinMode(D2, INPUT); pinMode(D1, INPUT); pinMode(D6, OUTPUT); // dht.begin(); //Logs na porta serial Serial.println(""); Serial.print("Conectado na rede "); Serial.println(ssid); Serial.print("IP: "); Serial.println(WiFi.localIP());} void loop() { //Espera 20 segundos para fazer a leitura delay(20000); //Leitura de umidade //float umidade = dht.readHumidity(); //Leitura de temperatura // float temperatura = dht.readTemperature(); //Se não for um numero retorna erro de leitura // if (isnan(umidade) || isnan(temperatura)) { // Serial.println("Erro ao ler o sensor!"); // return; // } int SENSOR1 = digitalRead(D3); //caixa superior NIVEL 1 int SENSOR2 = digitalRead(D10); //caixa superior nivel 2 int SENSOR3 = digitalRead(D4); //caixa superior nivel 3 int SENSOR4 = digitalRead(D9); //caixa superior nivel 4 int SENSOR5 = digitalRead(D2); //caixa superior nivel 5 int SENSOR6 = digitalRead(D1); //reservatorio if (SENSOR5 == LOW && SENSOR6 == HIGH) // Caixa VAZIO, Cisterna cheia, Bomba Ligada { aciona = 0; } else if (SENSOR5 == HIGH && SENSOR6 == HIGH) // Caixa CHEIA, Cisterna CHEIA, Bomba DESLIGADA { aciona = 1; } else if (SENSOR5 == HIGH && SENSOR6 == LOW) // Caixa CHEIA, Cisterna sem agua, Bomba DESLIGADA { aciona = 2; } else if (SENSOR5 == LOW && SENSOR6 == LOW) // Caixa VAZIA, Cisterna VAZIA, Bomba DESLIGADA { aciona = 3; } switch (aciona) { case 0: aciona = 0;// aciona 0 delay(1000); digitalWrite(D6, HIGH); Serial.println("Bomba Ligada"); break; case 1: aciona = 1;// aciona 1 delay(1000); digitalWrite(D6, LOW); Serial.println("Bomba DESLIGADA"); break; case 2: aciona = 2;//aciona2 delay(1000); digitalWrite(D6, LOW); Serial.println("Bomba desligada"); break; case 3: aciona = 3;//aciona3 delay(1000); digitalWrite(D6, LOW); Serial.println("Bomba desligada"); break; if (SENSOR1 == HIGH) { SENSOR1=1; }else{ SENSOR1=0;};if (SENSOR2 == HIGH){ SENSOR2=1;}else { SENSOR2=0;};if (SENSOR3 == HIGH){ SENSOR3=1;}else { SENSOR3=0;};if (SENSOR4 == HIGH){ SENSOR4=1;}else { SENSOR4=0;};if (SENSOR5 == HIGH){ SENSOR5=1;}else { SENSOR5=0;}; //Inicia um client TCP para o envio dos dados if (client.connect(server,80)) { } String postStr = apiKey; postStr +="&field1="; postStr += String(SENSOR1); postStr +="&field2="; postStr += String(SENSOR2); postStr +="&field3="; postStr += String(SENSOR3); postStr +="&field4="; postStr += String(SENSOR4); postStr +="&field5="; postStr += String(SENSOR5); postStr +="&field6="; postStr += String(SENSOR6); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); //Logs na porta serial Serial.print("NIVEL 01: "); Serial.print(SENSOR1); Serial.print(" NIVEL 02: "); Serial.print(SENSOR2); Serial.print(" NIVEL 03: "); Serial.print(SENSOR3); Serial.print(" NIVEL 04: "); Serial.print(SENSOR4); Serial.print(" NIVEL 05: "); Serial.print(SENSOR5); Serial.print(" NIVEL 06: "); Serial.print(SENSOR6); } client.stop();}…
matizar coisas na minha casa usando ele na pratica
bem um ja foi agora a bomba que puxa agua da cisterna para caixa dagua esta no automatico e ainda tem a possibilidade de ligar ela no manual com o botao que adicionei kkkk
segue o codigo
int pinAguaBaixa = 10; // Sensor de Agua Baixoint pinAguaAlta = 11; // Sensor de Agua Altoint pinBOMBA = 12; // Relay da Bombaint botao=8; // botão no pino 12int estadobotao = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do botaoint estadodabomba = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do bombaint alta = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua altoint baixa = 0; // guarda o valor 0 ou 1 (HIGH ou LOW) do sensor de agua baixo
void setup(){ Serial.begin(9600); pinMode(pinAguaBaixa,INPUT); pinMode(pinAguaAlta,INPUT); pinMode(pinBOMBA,OUTPUT); pinMode(botao, OUTPUT);}
void loop(){
estadobotao = digitalRead(botao); alta = digitalRead(pinAguaAlta); baixa = digitalRead(pinAguaBaixa); // Lendo os sensores e escrevendo na variavel estado da bomba if(digitalRead(pinAguaBaixa)==HIGH) { if(digitalRead(pinAguaAlta)==HIGH){ // digitalWrite(pinBOMBA,LOW); estadodabomba = LOW; delay(100); } } if(digitalRead(pinAguaAlta)==LOW) { if(digitalRead(pinAguaBaixa)==LOW){ // digitalWrite(pinBOMBA,HIGH); estadodabomba = HIGH;delay(100); }}
// Mudando o estado da Bomba caso o botao seja pressionado if (estadobotao == HIGH ){(alta == LOW );{estadodabomba = !estadodabomba;delay(1000); // esse delay de 1 segundo e importante pois sem ele o botao fica louco }}
// Ligando ou desligando a bomba de acordo com o estado da variavel estado da Bomba
if (estadodabomba == LOW) { digitalWrite(pinBOMBA,LOW); //Desliga a bomba caso a variavel estadodabomba seja 0. } //if (estadodabomba == HIGH){digitalWrite(pinBOMBA,HIGH); //liga a bomba caso a variavel estadodabomba seja 1}
// Lendo o estado da Bomba e apresentado no monitor serial Serial.println(estadodabomba); }…
caixa alta na parte mais alta do prédio e desta para alimentar as moradias e lugares comuns do prédio, um dos problemas que existia era a queima das bombas de forma constante, por um lado ocorria o fato de as bombas não possuírem um cano de elevação comum para ambos, e sim chaves que deveriam serem aberta uma e fechadas outra cada vez que se selecionava uma ou outra bomba, isso provocava que os porteiros eram os encarregados de fazerem esta manobra para funcionar um dia uma outro dia outra, e muitas vezes por esquecimento ou desconhecimento não faziam a abertura correta, fazendo com que a bomba trabalha-se em vazio como se diz comumente ocasionando sua queima, alem de outros fatores que terminavam ocasionando a queima também.
Tratarei de ser breve mas entenda que é necessário uma introdução, era evidente para mim, que a solução passava por automatizar o processo, para permitir um revezamento das bombas para que opere uma ou outra, note que havia contatoras e proteção térmica no quadro elétrico das bombas, alem de disjuntores adequados, fiz da seguinte forma essa automação, utilizei um mini plc para pequenas automações da WEG, e usando linguagem LADER programei o mesmo, de tal forma que a cada chamado de boia desde a caixa alta por falta de água uma bomba ligava uma contatora, e na próxima chamada posterior a esta ligava a outra contatora, desta forma ocorria o revezamento necessário das bombas, ora trabalhava uma ora outra de forma automática, usei também duas chaves de um polo de entrada e varias saidas para permitir a comutação manual em caso de falha de uma bomba, e providenciei a colocação de uma válvula antiretorno, desta forma as duas bombas elevam a água pelo mesmo cano mas se uma delas esta enviando a válvula fecha por pressão a saída da outra para evitar que exista vazamento. Posso estar omitindo algo por não querer ser muito extenso e tedioso, mas compartilho todo o material com você e todos os colegas, note que usei um mini plc por segurança, porque temia que um esp ou arduino pudessem sofrer problemas por EMI dado o ambiente, mas mesmo assim eu gravei programas equivalentes para cumprir a mesma função tanto no esp como no arduino.
Subi para você todo o conteudo que tenho aqui, no meu repositorio do Github, não estou achando fotos do quadro eletrico que fiz, mas se for o caso tiro outras um dia destes e subo também, se precisar alguma outra informação fico a disposição.
No meu canal tenho algumas brincadeiras com caixas d'agua simuladas no proteus.
LINK GITHUB AQUI
Videos no meu canal AQUI
Grande abraço amigo!!!
CK
…
Adicionado por Carlos kwiek ao 2:23 em 31 março 2020