Olá Galera, estou prestes a começar a construção da minha casa e gostaria de contar com a ajuda de todos vcs para deixá-la 100% automatizada.
Tudo ainda está no papel, porém gostaria que vcs me ajudassem dando dicas de como fazer tudo da melhor forma. Pretendo automatizar as lâmpadas, as portas, portões de garagem, regador de jardim, cortinas, bomba da piscina (ainda é um sonho rsrsrsrs ), telão para projetor, som, câmeras, tudo o que for possível. Lembrando q não construí a casa ainda, vou começar do zero e não queria ficar quebrando parede ou coisas do tipo depois q a casa estivesse pronta.
Hj moro com minha mãe, mas, Já fiz a automação das lâmpadas e tomadas do meu quarto utilizando placas q são vendidas no mercado livre e já vêm com programação pronta (sonoff) + Blynk + Homebridge (Siri), porém, como irei precisar automatizar vários dispositivos optei pelo esp32 pelo fato de possuir mais Gpio's reduzindo assim o gasto com outros dispositivos.
Nas tomadas pretendo utilizar interruptores pulsadores para não perder o status e saber quando ela está ligada ou desligada independente de ter sido acionada pelo app ou pelo interruptor.
Se tiver alguém que já utiliza o ESP32 ou que utiliza outra forme de automação e possa me ajudar, eu fico muito grato. Moro no interior de Alagoas e aqui ninguém sabe de nada, muito menos tem material para isso. Por isso necessito da ajuda de todos vcs, qualquer ajuda será bem vinda.
Enquanto isso eu vou pesquisando na internet e o que for descobrindo vou colocando aqui neste tópico pra gente debater.
Vi que aqui tem muitos garagistas com conhecimento no assunto e espero q algumas dessas almas caridosas possam me ajudar.
Desde já o meu muito obrigado.
Tags:
Bom dia amigo, exelente iniciativa.
Entre em contato comigo para trocarmos whatsapp... nao sei muito mas posso contribuir com algo ok
rhaicmer.costa@etec.sp.gov.br
vlw, aguardo seu contato.
E aí Galera!!! vou postar aqui onde eu comprei o Esp 32 e os módulos relés pra galera q estiver procurando um bom vendedor e com preço legal.
Estou começando a adicionar a biblioteca do Blynk para depois testar.
Utilizei este passo a passo como guia. Programando Blynk com a IDE Arduíno.
Assim q conseguir mais novidades postarei aqui.
Ps: criei este tópico para ajudar iniciantes como eu a colocar em prática seus próprios projetos de Automação Residencial, se não tem nada a acrescentar, não faça comentários desnecessários.
Obrigado.
Então, uma dica talvez, fique um pouco caro de inicio, mas que pode ser mais viável, imagino já que pretende usar o esp32 e comentou que comprou por ter mais GPIOs, que vai fazer uma automação que precisa de passagem de fios... Se usar um exemplo um esp-01 ou esp12, e fazer a sua automação de forma modular, assim criando módulos, para cada lâmpada, tomadas, etc...
Pelo menos estou desenvolvendo minha automação assim, uma automação modular, já desenhei placas, desenvolvi interface de controle no esp, e no momento estou testando os cálculos de consumo de dispositivos baseado em tempo de utilização, não vai ser exatamente preciso, mas vou ter uma aproximação, e estimar o valor da fatura.
Falta Server, APP, protocolos de segurança.
Pego meu AP provavelmente no final do ano, ae vou ter mais liberdade para testes.
Boa tarde galerinha, consegui criar o código através de um exemplo extraído dos exemplos do Blynk.
Consegui carregá-lo para o esp32 uma vez só q eu tinha esquecido de configurar o código dos outros dois botões físicos e por isso apenas um botão do interruptor estava funcionando. Após achar o erro no código eu tentei carregá-lo novamente para o ESp32, porém, sempre dá erro .
Eu compilo normalmente o Sketch, mas,na hora de carregar pro ESP fica dando erro.
Vou postar aqui o código q utilizei e a mensagem de erro.
___________________________________________________________________________________________________
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Você deve obter o Auth Token na aplicação Blynk.
// Vá para Configurações do Projeto (ícone da porca).
char auth[] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Token Gerado pelo Blynk.
// Your WiFi credentials.
// Defina a senha para "" para redes abertas.
char ssid[] = "Guga_Tampa";
char pass[] = "XXXXXXXXXX";
// Defina seu LED e pinos de botão físico aqui
const int ledPin = 12;
const int ledPin2 = 14;
const int ledPin3 = 27;
const int btnPin = 2;
const int btnPin2 = 4;
const int btnPin3 = 16;
BlynkTimer timer;
void checkPhysicalButton();
int ledState = LOW;
int btnState = HIGH;
int ledState2 = LOW;
int btnState2 = HIGH;
int ledState3 = LOW;
int btnState3 = HIGH;
// Toda vez que nos conectamos à nuvem ...
BLYNK_CONNECTED() {
// Solicite o estado mais recente do servidor
Blynk.syncVirtual(V2);
Blynk.syncVirtual(V3);
Blynk.syncVirtual(V4);
// Alternativamente, você pode substituir o estado do servidor usando:
//Blynk.virtualWrite(V2, ledState);
}
// Quando o botão do App for pressionado - irá mudar o estado
BLYNK_WRITE(V2) {
ledState = param.asInt();
digitalWrite(ledPin, ledState);
}
BLYNK_WRITE(V3) {
ledState2 = param.asInt();
digitalWrite(ledPin2, ledState2);
}
BLYNK_WRITE(V4) {
ledState3 = param.asInt();
digitalWrite(ledPin3, ledState3);
}
void checkPhysicalButton()
{
if (digitalRead(btnPin) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState != LOW) {
// Alternar estado do LED
ledState = !ledState;
digitalWrite(ledPin, ledState);
// Widget botão de atualização
Blynk.virtualWrite(V2, ledState);
}
btnState = LOW;
} else {
btnState = HIGH;
}
if (digitalRead(btnPin2) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState2 != LOW) {
// Alternar estado do LED
ledState2 = !ledState2;
digitalWrite(ledPin2, ledState2);
// Widget botão de atualização
Blynk.virtualWrite(V3, ledState2);
}
btnState2 = LOW;
} else {
btnState2 = HIGH;
}
if (digitalRead(btnPin3) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState3 != LOW) {
// Alternar estado do LED
ledState3 = !ledState3;
digitalWrite(ledPin3, ledState3);
// Widget botão de atualização
Blynk.virtualWrite(V4, ledState3);
}
btnState3 = LOW;
} else {
btnState3 = HIGH;
}
}
void setup()
{
// Console de depuração
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// Você também pode especificar o servidor:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
pinMode(ledPin, OUTPUT);
pinMode(btnPin, INPUT_PULLUP);
pinMode(ledPin2, OUTPUT);
pinMode(btnPin2, INPUT_PULLUP);
pinMode(ledPin3, OUTPUT);
pinMode(btnPin3, INPUT_PULLUP);
digitalWrite(ledPin, ledState);
digitalWrite(ledPin2, ledState2);
digitalWrite(ledPin3, ledState3);
// Configure uma função a ser chamada a cada 100 ms
timer.setInterval(100L, checkPhysicalButton);
}
void loop()
{
Blynk.run();
timer.run();
}
___________________________________________________________________________________________________
Mensagem do erro:
Arduino: 1.8.4 (Windows 10), Placa:"ESP32 Dev Module, QIO, 80MHz, 4MB (32Mb), 921600, None"
Opções de compilação alteradas, recompilando tudo
O sketch usa 455819 bytes (34%) de espaço de armazenamento para programas. O máximo são 1310720 bytes.
Variáveis globais usam 35304 bytes (11%) de memória dinâmica, deixando 259608 bytes para variáveis locais. O máximo são 294912 bytes.
esptool.py v2.1-beta1
Connecting........___
Chip is ESP32D0WDQ6 (revision 0)
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB
Compressed 8192 bytes to 47...
A fatal error occurred: Timed out waiting for packet content
A fatal error occurred: Timed out waiting for packet content
Este relatório teria mais informações com
"Mostrar a saida detalhada durante a compilação"
opção pode ser ativada em "Arquivo -> Preferências"
________________________________________________________________________________________________
Alguém sabe como posso resolver isto ?
Desde já obrigado.
Verifiquem o
openremote
openremote.org
Tenho em casa e funciona, utiliza varios protocolos eu utilizei UDP
no arduino utilizei a biblioteca ardosc que tambem utiliza UDP
Controlo luz
Aparelhos de audio e video
leitura de temperatura
Executa cenas
No monemto ele roda em um PC mas existe plataforma para rodar em Raspberry
Tem uma interface totalmente customizavel
Graças a Deus consegui resolver o problema.
Quebrei um pouquinho a cabeça, mas, consegui solucionar e irei postar aqui pra que alguém que aparecer com o mesmo problema não fique sem ajuda, assim como eu fiquei(estou). rsrsrsrsrsrsrsrsrsrsrsrsrs
Sem esquecer de agradecer aos parceiros Manoel Pereira e José Luiz pelas dicas e ao meu brother Rhaicmer Bráulio pelo contato via whatsapp e pela ajuda com o código.
No caso do problema em carregar o Sketch para o Esp, eu apenas desconectei todos os jumpers e o ESP voltou ao normal. Não sei se algum Gpio q eu usei era dedicado ou algo do tipo, só sei q consegui resolver assim.
Com relação ao código, eu mudei alguns Gpios e finalmente ele rodou lisinho. Não sei se já existem Gpios exclusivas para saídas ou entradas, só sei q apenas troquei o número das Gpios no Sketch e ele funcionou.
Segue o código funcionando:
__________________________________________________________________________________________________
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Você deve obter o Auth Token na aplicação Blynk.
// Vá para Configurações do Projeto (ícone da porca).
char auth[] = "coloque aqui o token "; // Token Gerado pelo Blynk.
// Your WiFi credentials.
// Defina a senha para "" para redes abertas.
char ssid[] = "coloque aqui o nome da sua rede wifi";
char pass[] = "senha da rede wifi";
// Defina seu LED e pinos de botão físico aqui
const int ledPin = 12;
const int ledPin2 = 25;
const int ledPin3 = 27;
const int btnPin = 15;
const int btnPin2 = 16;
const int btnPin3 = 0;
BlynkTimer timer;
void checkPhysicalButton();
int ledState = LOW;
int btnState = HIGH;
int ledState2 = LOW;
int btnState2 = HIGH;
int ledState3 = LOW;
int btnState3 = HIGH;
// Toda vez que nos conectamos à nuvem ...
BLYNK_CONNECTED() {
// Solicite o estado mais recente do servidor
// Blynk.syncVirtual(V2);
// Alternativamente, você pode substituir o estado do servidor usando:
Blynk.virtualWrite(V2, ledState);
Blynk.virtualWrite(V3, ledState2);
Blynk.virtualWrite(V4, ledState3);
}
// Quando o botão do App for pressionado - irá mudar o estado
BLYNK_WRITE(V2) {
ledState = param.asInt();
digitalWrite(ledPin, ledState);
}
BLYNK_WRITE(V3) {
ledState2 = param.asInt();
digitalWrite(ledPin2, ledState2);
}
BLYNK_WRITE(V4) {
ledState3 = param.asInt();
digitalWrite(ledPin3, ledState3);
}
void checkPhysicalButton()
{
if (digitalRead(btnPin) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState != LOW) {
// Alternar estado do LED
ledState = !ledState;
digitalWrite(ledPin, ledState);
// Widget botão de atualização
Blynk.virtualWrite(V2, ledState);
}
btnState = LOW;
} else {
btnState = HIGH;
}
if (digitalRead(btnPin2) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState2 != LOW) {
// Alternar estado do LED
ledState2 = !ledState2;
digitalWrite(ledPin2, ledState2);
// Widget botão de atualização
Blynk.virtualWrite(V3, ledState2);
}
btnState2 = LOW;
} else {
btnState2 = HIGH;
}
if (digitalRead(btnPin3) == LOW) {
// btnState é usado para evitar alternar sequencialmente
if (btnState3 != LOW) {
// Alternar estado do LED
ledState3 = !ledState3;
digitalWrite(ledPin3, ledState3);
// Widget botão de atualização
Blynk.virtualWrite(V4, ledState3);
}
btnState3 = LOW;
} else {
btnState3 = HIGH;
}
}
void setup()
{
// Console de depuração
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// Você também pode especificar o servidor:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8442);
pinMode(ledPin, OUTPUT);
pinMode(btnPin, INPUT_PULLUP);
pinMode(ledPin2, OUTPUT);
pinMode(btnPin2, INPUT_PULLUP);
pinMode(ledPin3, OUTPUT);
pinMode(btnPin3, INPUT_PULLUP);
digitalWrite(ledPin, ledState);
digitalWrite(ledPin2, ledState2);
digitalWrite(ledPin3, ledState3);
// Configure uma função a ser chamada a cada 100 ms
timer.setInterval(100L, checkPhysicalButton);
}
void loop()
{
Blynk.run();
timer.run();
}
____________________________________________________________________________________________________
Agora preciso criar canais q no caso de queda de energia reiniciem ligados.
Se puderem me ajudar,eu agradeço. (sou brasileiro, não desisto nunca) rsrsrsrsrsrsrsrsrsrsrsrs
let's fight
Gustavo Brunno Ferreira Valença , gostaria de saber como que instalo o blynk para controlar essa automação em mais de 1 celular?? seu programa funciona muito bem e ficou show saber o status da lâmpada.
simplesmente baixe o blynk em outro celular e conecte o blynk com sua propria senha e loguin, facil
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por