Ir ao conteúdo
  • Cadastre-se

Alexandre Mariz Paiva

Membro Júnior
  • Posts

    18
  • Cadastrado em

  • Última visita

Reputação

6
  1. Olá pessoal. Preciso de ajuda para leitura de sensores com o novo Blynk. Estou montando um projeto simples para automação de uma sauna residencial com arduino Uno e ESP8266. Consiste em um botão liga/desliga, um gaulet para leitura da temperatura através de um sensor DS18B20 e um slider para alterar a temperatura. Ocorre que ainda não tinha usado a nova versão do Blynk. Já montei o sketch, que comunica com o Blynk para ligar e desligar mas não faz a leitura do sensor. No monitor serial vejo as leituras normalmente. Alguém sabe como posso resolver isso? #define BLYNK_TEMPLATE_ID "TMPLmd3PWTdm" #define BLYNK_DEVICE_NAME "Sauna ATOM Turm" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxx" #define BLYNK_PRINT Serial //INCLUSÃO DE BIBLIOTECAS #include "WiFi.h" #include "WiFiClient.h" #include "ESP8266_Lib.h" #include "BlynkSimpleShieldEsp8266.h" #include "SoftwareSerial.h" #include "OneWire.h" #include "DallasTemperature.h" //DEFINIÇÕES OneWire pino (3); //instancia do OneWire para comunicação com o sensor const int AcionaSauna = 9; //pino de acionamento do relé que ligará a sauna DallasTemperature barramento(&pino); DeviceAddress sensor; //INCLUSÃO DAS CREDENCIAIS PARA CONEXÃO EM REDE E SERVIDOR BLYNK char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxx"; char ssid[] = "xxxxxxxxx"; char pass[] = "xxxxxxxxxxxxxxxxxx"; //SOFTWARE SERIAL PARA UNO, NANO, ... SoftwareSerial EspSerial(10,11); // RX, TX //BAUD RATE DO ESP8266 #define ESP8266_BAUD 9600 ESP8266 wifi(&EspSerial); void setup() { Serial.begin(9600); barramento.begin(); barramento.getAddress(sensor, 0); pinMode(AcionaSauna, OUTPUT); delay(10); EspSerial.begin(ESP8266_BAUD); delay(10); Blynk.begin(auth, wifi, ssid, pass); } void loop(){ Blynk.run(); } Anexo sketch (sem a função do slider, que ainda não escrevi).
  2. Bom dia pessoal. @rmlazzari58, @.if, @MOR, @Thiago Miotto, @aphawk e a todos os que ajudaram nesse meu problema. Em primeiro lugar demorei para voltar aqui no post porque após a instalação dos snubbers em cada uma das solenóides e na contatora, deixei o sistema rodando por 10 dias (hoje já está em 12 dias) direto e...AS INTERFERÊNCIAS FORAM SUPRIMIDAS E O SISTEMA ESTÁ FUNCIONANDO!!!! O módulo relé que estou usando realmente precisa compartilhar o GND com a placa senão não funciona com fonte separada (desde quando isso é fonte separada - ), e como não tinha outro de oito vias aqui comprei e estou esperando chegar pra trocar também. Além disso, relendo os posts vi que me orientaram a colocar um snubber também na entrada de energia, o que vou providenciar, mas o sistema já está funcionando muito bem. @aphawk, com relação ao Blynk concordo com o que disse, e eles acabaram de lançar outra versão do aplicativo, com muito mais recursos e até compatibilidade com comandos de voz, mas não sei se resolveram o problema de ser bem pesado. De qualquer forma, agora cobram por mês para utiliza-lo (antes a cobrança era pelos widgets utilizados no projeto), o que me parece ficou um pouco menos interessante em usar. Vou começar a procurar outra plataforma que faça isso. De qualquer maneira já quero aqui agradecer imensamente a todos que me ajudaram. Muito obrigado mesmo.
  3. Bom dia pessoal. @Thiago Miotto não sei se entendi bem. O que você chama de portas livres? Pelo que vi aqui, os pinos próximos aos conectores são saídas de 5v e GND, e (não sei) não servem como entrada. Já os conectores são para encaixe de outros módulos de 4 canais. Eu também perguntei ao fabricante, mas para ligar a fonte diretamente ao módulo preciso compartilhar o GND com a placa, o que, pelo que tenho aprendido com vocês aqui, não é ligar diretamente - rs. @aphawk obrigado pela super aula que está me dando. Não sabia nada disso que você está me falando. Estou vendo aqui para: 1: separar a parte do projeto da parte elétrica, em dois quadros distintos; 2: inserir o resistor que você indicou nos fios de comunicação entre os arduinos (até eu encontrar uma forma melhor de deixar apenas um Arduino funcionando - e a propósito, o UNO não dá conta de processar o app Blynk; só o Mega); 3: pesquisei na internet e vi muitas dicas sobre a confecção de um filtro RC (resistivo capacitivo), usando um capacitor 334k 440v e um resistor 100 ohms ligados em série, para filtrar o ruído de contatoras e bobinas. Você acha que isso já resolveria o problema das interferências?
  4. Boa tarde pessoal. @rmlazzari58, @.if, @vtrx, @Thiago Miotto, @aphawk Agradeço as informações e vou tentar responder a todos, explicando a montagem do sistema. A utilização de dois arduinos Mega está atrelada a utilização do aplicativo Blynk para monitoramento do sistema. Ele possui limitações de dados para processamento e não funcionou em nenhum dos testes em conjunto com o programa principal, ainda mais quando tem que ler dados de sensores para exibir na tela. Então o do aplicativo Blynk é o que está conectado a rede, lendo sensores e se comunicando via UART com o Mega Master. Cada Arduino está sendo alimentado por uma fonte individual de 9v, e o módulo relé tem uma fonte específica de 12v ligada "diretamente"a ele (entre aspas porque estou usando um módulo relé do fabricante Robocore, porém ainda que a fonte esteja ligada diretamente nele, preciso compartilhar o and com o Arduino, não ele não executa a programação. Sobre o erro: o acionamento dos relés é sim sequencial, de acordo com variáveis contidas para a irrigação; ele acontece em 100% das vezes quando o relé que aciona a contadora da bomba entra em funcionamento, travando assim o programa sem desligar o relé/bomba; e nos demais ocorre variado, a cada vez em algum dos outros relés. Sendo assim, vou trocar o módulo relé por um que é alimentado diretamente, porém já fiz esse teste antes e as interferências continuavam. Quanto a protoboard, os sensores estão sendo divididos entre os dois microcontroladores, e também precisam usar o GND, que para a quantidade de Shields que estou usando, sem a Protoboard seriam insuficientes. Falo assim dentro do conhecimento limitado que tenho, então, qual seria a alternativa para que pudesse eliminar a proto? Quanto a distanciamento dos relés, seria deixá-los longe dos módulos Arduino? E quais filtros (já que não conheço) seriam os ideais para eu utilizar? Precisaria ser um para cada solenóide? Outra dúvida: as solenóides são todas em corrente alternada (110v). Substitui-las por corrente continua (12v) poderia resolver/filtrar os ruídos?
  5. Boa tarde pessoal. @MOR, @rmlazzari58, @Thiago Miotto, como prometido terminei de "redesenhar" o sistema, acrescentando melhorias para operação. Deixei-o por uma semana rodando sem carga e o mesmo funcionou perfeitamente, sem falhas. Acabei de coloca-lo no ar e... os problemas de interferência continuam. O display parou de exibir caracteres estranhos, mas o sistema está travando a cada execução. Estou anexando as fotos do sistema, e já pergunto: existe algum tipo de filtro contra essas interferências, que possa ficar entre as válvulas e os relés? Descrevo abaixo a parte física que estou usando no sistema: - Arduino mega 2560 com Shield ethernet w5100 (trabalhando como Slave) - este módulo é o que conecta o sistema a rede, para monitoramento e acionamento (se comunica com o Master através de UART e com a rede através do aplicativo Blynk); - Arduino mega 2560 (trabalhando como Master) - possui toda a programação de acionamento, tanto automático (usando RTC DS1307), quanto através da botoeira; - Botoeira com 6 push buttons - para acionamento manual; - Sensor de temperatura e umidade DHT22; - Sensor capacitivo de umidade do solo; - Sensor Sharp de nível de água (3 unidades); - Display LCD 20 x 4 i2C; - Válvulas solenóides 110v para acionamento das linhas de irrigação (14 unidades); - Contatora Weg para acionamento da bomba de irrigação (o relé do Arduino apenas a aciona a contatora);
  6. Boa tarde pessoal. Bom, retornando a saga - rs, do sistema de irrigação, como mencionado anteriormente estou resenhando o sistema de uma maneira a resolver os problemas originais e trazer melhores para o projeto. Alterei o mesmo para que, além da programação automática ou acionamento por push buttons, eu também possa monitorar e acionar através de app (internet). Uma das mudanças que precisei fazer foi acrescentar outro Arduino mega, e coloca-los se comunicando via UART, pois selecionei o app Blynk para esta tarefa, já que no meu conhecimento limitado é o que senti maior facilidade em operar. O auxilio que preciso agora é o seguinte: - todo o hardware está montado e funcionando; o "Master" fica responsável pela leitura dos sensores e rtc e executar todas as tarefas, além de informar ao "Slave" o que está ocorrendo no momento (qual processo está ligado ou desligado); essas informações são exibidas no app. - o "Slave" faz também a leitura dos sensores diretamente em suas portas e exibe no app e, caso um botão no app seja apertado este deve comunicar ao "Master" para ligar ou desligar o processo selecionado. O problema é que o processamento do "Master" está OK e o envio de informações dele ao "Slave" também, porém não consigo enviar o comando dos botões do "Slave" para o "Master". Alguém familiarizado com o Blynk ou que saiba o que ocorre pode ajudar?
  7. Bom dia pessoal. Só pra justificar porque ainda não enviei as fotos do projeto: - mesmo com o que estão me ajudando, o sistema continuou a dar problema e acabou por gerar mais travamentos em menos tempo. Nesse caso, fiz uma substituição provisória colocando um sistema para acionamento manual (pela internet) e estou refazendo todo o modelo, tanto hardware quanto a programação, com base em todas as dicas que tenho recebido aqui. Descobri também nesse movimento que a placa Arduino Mega que estava usando (e que comprei a muito, muito tempo atrás..... - rs) me parece não ser apropriada, já que comprei uma não original chinesa. Um exemplo é que se alimento ela com uma fonte com corrente maior que 1a (1,5a que é a estava usando), ela aquece demais, o que imagino poderia ser uma das causas do problema (vocês que entendem mais que eu, confirmam isso?). Cheguei a essa conclusão porque tentei usar a mesma placa e fonte no sistema provisório e ele só acionava o relé uma vez, dai travava e precisava ser reiniciado. Troquei por uma placa original e o travamento parou. Assim que tiver com essa parte pronta vou postar as informações aqui.
  8. Bom dia pessoal. @Thiago Miotto, @.if, @rmlazzari58, vou fazer fotos do sistema físico para postar aqui, conforme vossa sugestão. Do quadro de controle até a distribuição para as solenóides. Algumas respostas que posso antecipar aqui: - o sistema todo está montado dentro de um quadro de distribuição com proteção contra intempéries; - os relés estão ao lado do Arduino, já as solenóides estão separadas pelos locais de irrigação, em uma linha reta, e vão em distância do Arduino de 3 metros a mais próxima à 45 metros a mais distante; - os sensores de nível de água do reservatório estão à 53 metros do Arduino; - a parte elétrica toda foi feita em conjunto com eletricista e, segundo os profissionais, os cabos estão dentro dos padrões para essa carga/distância. - o display funciona normalmente, exibindo todas as informações. quando o programa está executando a irrigação então aparecem caracteres inelegíveis no display e só reiniciando para voltar ao normal; - o display foi testado em outros projetos e não apresentou falha; - a interferência que acontece no display, imagino eu, é o sinal de que o problema está em todo sistema. Diferente do que postei ontem, na execução da manhã de hoje, o mesmo travou novamente deixando uma solenoide acionada e esvaziando o reservatório. @.if essa comparação tem alguma limitação? pode ser usada em toda a estrutura do projeto que desenvolvi? @Thiago Miotto antes de vir ao post eu havia pesquisado e encontrei a Millis(), mas me parece que ela tem uma limitação que , em 49 dias e sei lá quanto (esqueci o resto do tempo - rs) ela reinicia voltando ao zero. Não sei se isso pode impactar no processamento. E mais uma pergunta: como tenho o rtc executando as horas, não existe uma função que ao iniciar o processamento na hora programada, apenas verifique o tempo decorrido desde a execução, pelo rtc, lendo a hora e os minutos, e após todos executados encerre? Se existe, quais seriam as implicações para um projeto com muitas variáveis, como este?
  9. Boa tarde pessoal. @Thiago Miotto, entendi como funciona e a lógica da função (for) agora, mas fiquei com uma dúvida: a repetição se dará a cada 2 segundos, considerando o delay(2000)? e cada uma dessas repetições é que somará um número a variável "i" ? E a todos - @MOR, @rmlazzari58, @Thiago Miotto, e todos os demais que estão me ajudando, demorei a responder pois quis deixar os testes acontecendo por alguns períodos, já que estou fazendo os mesmos em produção. Bom, as interferências ainda persistem, mesmo após a separação das fontes. É certo que, por enquanto, o travamento em um dos relés, ocasionando o esvaziamento do reservatório, não ocorreu, mas o display lcd continua com muitas interferências. Alguma outra coisa que eu possa fazer?
  10. Bom dia pessoal. @Thiago Miotto nunca usei a função (for), então realmente não sei o que significam. Você pode me explicar?
  11. Boa tarde pessoal. @Thiago Miotto ok, isso realmente vai fazer a diferença, porque é importante que não só para iniciar mas também após acionamento a bomba pare de funcionar se o reservatório esvaziar. Minha dúvida agora é: a função (for) vai continuar executando mesmo quando os delays estiverem ativos? Como mencionei, atualmente logo após o programa acatar como verdadeiras as validações, o sistema trava nos delays até terminar.
  12. Bom dia pessoal. Vamos lá: @Thiago Miotto o sistema todo está sendo alimentado por uma única fonte, já que estou usando um módulo relé 12v e um de 5v. Mas o principal motivo mesmo é que não sabia que isso poderia ser um problema e ajudar a causar interferência eletromagnética. Vou fazer a separação para testar se irá resolver ou começar a resolver. Aviso aqui depois dos testes, mas já te agradeço antecipadamente. @MOR obrigado pelas respostas, e como respondi acima para o @Thiago Miotto, vou fazer a separação da alimentação com fontes individuais e testar. @rmlazzari58 Com certeza permito, pois vocês aqui estão me ajudando muito e nenhuma ajuda é demais. Realmente deixar o código mais claro torna mais fácil a leitura e eventuais manutenções. Vou fazer ajustes com base nos seus exemplos para melhorar esse código, logo que tiver com o problema da interferência solucionado. Nesse caso, tenho duas hortas sendo irrigadas pela bomba: uma que está ligada diretamente com a abertura da bomba, e outra que é liberada por solenóide. Quando desligo a solenoide da horta de baixo, a bomba fica ligada irrigando a horta principal. Aí quando desligo a bomba ela encerra toda a irrigação. Nesse caso não há problema da bomba estar girando com os "registros fechados". Eu deixei escrito na observação (digitalWrite(bomba, LOW); //desliga bomba e horta externa), mas como você falou, talvez a escrita não esteja favorecendo o entendimento. Eu programei para que fossem acionados com intervalos de 5s, ou seja, aciona um relé e cinco segundos depois aciona o outro. A mesma lógica para o desligamento, ou seja, após um ser desligado aguarda 5 segundos para desligar o outro. Mas por conta das observações que você tem feito estou verificando que meu código tem comandos desnecessários para o funcionamento do processo. Estou revisando isso também.
  13. @MOR e @rmlazzari58, só tenho a agradecer vocês pelo empenho em me ajudar. Sobre as regras, acho que o que você está me passando @rmlazzari58 irá resolver, mas procurei validar primeiro se o problema é físico, como sugerido pelo @MOR. Eu não instalei os LEDs, mas desliguei todos os cabos de acionamento das solenóides (110v) dos relés, e o que verifiquei é que sem as cargas não há interferências no display lcd, nem mesmo os problemas de travamento (que como reparei sempre aconteciam - quando aconteciam - no mesmo relé) que faziam com que um relé não desligasse e assim esvaziasse o reservatório. Minha pergunta agora é: o teste é válido somente com o acionamento dos relés sem carga, ou é necessário instalar os LEDs para testar? E, se for válido da maneira como fiz, isso comprovaria a interferência eletromagnética? E ainda, se realmente essa interferência existe, tem alguma maneira de bloquea-la/filtra-la?
  14. Pessoal, boa tarde. Ainda não consegui solucionar o problema (e acredito ser também porque não sou tão experiente nessa área). Na prática, não consegui implementar as soluções, considerando que o horário para iniciar a irrigação de todos os itens é o mesmo (ou 6 da manhã ou 18hs), o que muda são os momentos em que cada um inicia. Percebi, então, que da forma que a programação está hoje, o que está acontecendo é que como o sistema congela quando inicia, ele não volta a ler o horário, por isso não desliga quando o minuto muda e fica até o final (o que preciso que aconteça), porém isso tem me gerado outros problemas. MOR, confesso que não consegui entender como montar da maneira como me sugeriu (porque sou iniciante). rmlazzari58, tentei sua solução mas como preciso que cada relé inicie após o término do outro, não consegui implementar pois ainda que peça para que o segundo processo leia o valor da variável do primeiro, o loop retorna ele ao valor original e a partir dai somente quando por acaso ele lê e o estado está mudado é que o segundo processo inicia.
  15. Boa tarde pessoal. Primeiro obrigado a todos pelo apoio. Pelo que entendi tanto, tanto a dica do rmlazzari58 quanto a do MOR segue um mesmo racional: criar uma variável específica para armazenar o valor de contagem de cada processo, e montar uma rotina de leitura dessa variável. De acordo com o valor que a variável apresentar, executa uma função específica. Seria isso? Se sim, pergunto (isso porque também não sou tão especialista em Arduino): a função (Millis) não executa esse procedimento? Se for isso, não a usei porque em pesquisas que fiz me parece que essa função tem um limitador e gera problema após alguns dias.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!