![]() |
Comunicação entre 4 ESPs com central ESP sem Roteador |
Aprenda a configurar uma rede Mesh com múltiplos ESP8266 sem necessidade de roteador. Tutorial passo a passo com código fonte e dicas práticas
Você já imaginou criar uma rede de dispositivos IoT que se comunicam entre si sem depender de um roteador central? Neste guia completo, vou mostrar como implementar uma rede Mesh utilizando quatro módulos ESP8266, permitindo uma comunicação descentralizada e robusta entre os dispositivos.
Ideal para automação residencial, sistemas de segurança ou protótipos de IoT, este projeto combina simplicidade e eficiência.
Por que usar uma Rede Mesh?
- Baixo custo: Sem infraestrutura adicional.
- Escalável: Adicione mais dispositivos conforme necessário.
- Prático: Controle centralizado via servidor ESP8266.
- Maior alcance: Ideal para projetos IoT em áreas remotas.
- Redundância e confiabilidade: Independência de infraestrutura externa.
Material Necessário
- 4x módulos ESP8266 (NodeMCU recomendado)
- 1x cabos USB para programação
- 4x Micro switches
- 4x LEDs
- 4x Resistores: 220Ω (LEDs) e 10kΩ (pull-down para chaves) [[Nota Técnica]]
- Fonte 5V (recomendado: carregador USB estável), Pode ser alimentado pelo USB do Computador
- Protoboards e jumpers
- Computador com Arduino IDE instalado
Preparação do Ambiente
Configuração da Arduino IDE
- Instale a Arduino IDE mais recente:
- Adicione o suporte ao ESP8266:
- Configure a porta serial correta na IDE Arduino:
Clique no menu "Ferramentas | Tools" logo abaixo, vá até o menu "Porta | Port", e escolha a porta em que está o seu ESP8266.
🔌Passo a Passo para a Montagem dos Hardwares na Protoboard
⚙️ Montagem dos ESPs na Protoboard!
Caso você tenha apenas uma única protoboard, montar os módulos pode ser um desafio. O motivo é simples: o NodeMCU não foi projetado para encaixar facilmente em uma protoboard tradicional, o que dificulta o acesso aos pinos.
✅ Nossa Dica Prática: Você pode conectar três protoboards em série, conforme ilustrado na Figura 2 abaixo. Isso facilita a montagem dos quatro ESPs e garante espaço suficiente para todos os componentes.
Importante: Se você não possui três protoboards, não se preocupe! O número de pinos utilizados é baixo, então é possível adaptar a montagem com apenas uma ou duas.
🔧 Montagem dos Módulos Clientes na Protoboard
A montagem do módulo "Cliente" é bastante simples. O ESP cliente tem 1 LED e uma microchave tátil, tipo botão, ou Micro Switch:
- LED 1 → Conectado à porta D2 (GPIO 4)
- Micro Switch → Conectado à porta D5 (GPIO 14)
Acompanhe o esquema de montagem na Figura 3 abaixo, para entender como cada conexão deve ser feita e evitar erros.
![]() |
Fig. 3 - Rede Mesh com ESP8266 | Montagem do Módulo "Cliente" |
🔧 Montagem do Módulo Central na Protoboard
A montagem da "Central" é simples. O ESP central tem 3 LEDs:
- LED 1 → Conectado à porta D2 (GPIO 4)
- LED 2 → Conectado à porta D3 (GPIO 0)
- LED 3 → Conectado à porta D5 (GPIO 14)
Acompanhe o esquema de montagem na Figura 4 abaixo, para entender como cada conexão deve ser feita e evitar erros.
![]() |
Fig. 4 - Rede Mesh com ESP8266 | Montagem do Módulo "Central" |
⚠️Atenção com a Polaridade dos LEDs⚠️
A polaridade invertida é um erro comum e impedirá que o LED funcione corretamente.
- O terminal positivo (ânodo) do LED deve estar conectado ao pino GPIO especificado.
- O terminal negativo (cátodo) deve estar conectado ao GND (terra) do ESP ou da protoboard.
✨ Resistores? Nem sempre são necessários!
- Para os botões (Micro Switch): Usamos o recurso de Pull-Up interno do ESP, que setamos na função Void setup(): pinMode(BUTTON, INPUT_PULLUP);
- Para os LEDs: As portas GPIO operam com 3,3V, o que é compatível com a maioria dos LEDs comuns de 5mm, que funcionam entre 2,8V a 3,8V, dependendo da cor.
Dica: Se for utilizar em projetos prontos, que os LEDs serão utilizados por longo período de tempo, não para testes, como o nosso, sempre utilize resistores adequado para isso.! Alguns LEDs podem exigir resistores dependendo do modelo. Você pode está escolhendo o LED ideal, e calculando seguindo nosso artigo completo:
✅ Checklist Final Antes do Upload
- Conexões dos pinos (GPIO) com os LEDs e botões.
- Polarização correta dos LEDs.
- Se a chave está conectada à porta D5 (GPIO 14)
- Esquema de ligação igual ao código-fonte.
📥 Download dos Códigos
🧠 Atenção: Depois de baixado os códigos, lembre-se, cada ESP cliente deve ter um identificador único, altere no seu código do Cliente essa parte:
- ESP 01: Const String ClientType = "Cliente 01";
- ESP 02: Const String ClientType = "Cliente 02";
- E assim por diante...
💻 Realizando o Upload
Faça o upload do código em cada ESP individualmente, incluindo o da Central (servidor). Aguarde o carregamento completo antes de prosseguir para o próximo ESP, como exemplificado na Figura 5 abaixo.
![]() |
Fig. 5 - Rede Mesh com ESP8266 | Fazendo Upload dos Clients and Server |
🔍 Testes com o Serial Monitor
Após o upload:
- Abra o Serial Monitor para acompanhar o funcionamento.
- Pressione o botão do ESP01 → O LED do ESP01 e o da Central devem acender.
- Repita o teste com os demais clientes.
Você verá no monitor serial da IDE Arduino as mensagens com o estado:
- 0 = Desligado
- 1 = Ligado
![]() |
Fig. 6 - Rede Mesh com ESP8266 | Teste de funcionamento no Monitor Serial |
Você pode personalizar esses nomes no código, desde que altere em ambas as partes: cliente e servidor.
🚀 Finalizando
- Energize todos os ESPs com suas fontes 5V.
- Conecte-os um a um.
- Faça os testes dos botões.
- Monitore os estados via Serial Monitor.
Se tudo estiver funcionando corretamente, você terá a imagem parecida com a da Figura 7 abaixo. Parabéns, o seu sistema está funcionando e pronto para uso em seus projetos!
🎥 Acompanhe o Tutorial em Vídeo
E por hoje é só, espero que tenhamos alcançado suas expectativas!
Agradecemos por visitar o nosso blog e esperamos tê-lo(a) novamente por aqui em breve. Não deixe de conferir nossos outros conteúdos sobre tecnologia e assuntos variados.
Se inscreva no nosso Blog! Clique Aqui — FVM Learning!
Nos ajude a divulgar nosso trabalho, compartilha nas redes sociais, Facebook, Instagram, nos grupos de WhatsApp, uma simples atitude sua, faz com que cresçamos juntos e melhoremos o nosso trabalho!
Forte abraço!
Deus vos Abençoe!
Shalom.
Boa tarde!
ResponderExcluirTem como fazer esse mesmo projeto com o modem, seguindo esse mesmo conceito?
Quero ligar do mesmo jeito, só que com o modem, porque preciso colocar mais de 10 clientes.
Vou ficar aguardando.
Obrigado, e parabéns pelo Post, está ótimo.
Olá!
ResponderExcluirTem sim, e já estamos preparando o nosso tutorial sobre esse tipo de topologia com a comunicação entre ESPs com Modem Roteador.
Fica ligado, no nosso Blog e também no nosso canal no YouTube.
Abraços.
ja tem o video com esp e roteador
ResponderExcluirOlá
ExcluirEstamos finalizando o vídeo da comunicação entre ESPs com Roteador.
Fica ligado, em nossos canais.
Forte abraço.
Ola nao consigo baixar os codigos me redireciona pra outros sites
ResponderExcluirOlá JUSSARA
ExcluirOs sites são patrocínios, você entra neles e aguarda os 5 segundos que eles requerem depois click em SKIP e será redirecionado para o site para baixar, se tiver dúvidas veja essa rápido tutorial.
https://www.fvml.com.br/2019/04/como-baixar-arquivos-adfly-encurtanet.html
Forte abraço.
Não consigo fazer download dos códigos poderia enviar por email?
ResponderExcluirOlá!!!
ExcluirOs links estão funcionando perfeitamente.
Você precisa aguardar o tempo de 5 segundos do comercial do site, depois click em SKIP na parte superior direito e será redirecionado para baixar os arquivos. Qualquer dúvida, veja essa rápido tutorial.
https://www.fvml.com.br/2019/04/como-baixar-arquivos-adfly-encurtanet.html
Forte abraço.
Olá, já tem o código com 10 clientes com roteador ?
ResponderExcluirOlá!!!
ResponderExcluirEstamos finalizando o nosso material de, comunicação entre ESPs com Roteador.
E nele você pode colocar quantos clientes quiser.
Se inscreve em nossos canais, e não perca quando postarmos.
Forte abraço.
o link disponível direciona para um dropbox não acessível.
ResponderExcluirOlá!!!
ExcluirAcabamos de testar o Link, e está funcionando perfeitamente.
Mas, mesmo assim colocamos outra opção de link para baixar.
Abraços.
Boa sorte.
Olá boa tarde, gostaria de usar um sensor ultra-sônico para ligar e desligar ao invés de um botão, poderia me ajudar ?
ResponderExcluirOlá Ϟ PATRIK
ExcluirTecnicamente, não tem muito mistério.
//Primeiro você carrega a biblioteca do sensor ultra-sônico
#include
//Depois você define os pinos para o trigger e echo, escolha uma porta vazia que tenha no //seu ESP
#define Trigger D5
#define Echo D6
//Depois você inicializa o sensor nos pinos que já foram definidos
Ultrasonic ultrasonic(Trigger, Echo);
void setup()
{
Serial.begin(9600);
}
void loop()
{
float MicroCent; //Aqui criamos ums float para pegar os dados do sensor, que será convertido para centímetro
long microsec = ultrasonic.timing(); // Recebe os dados do sensor
MicroCent = ultrasonic.convert(microsec, Ultrasonic::CM); // converte para centímetro
E depois de tudo convertido, você pode usar o parâmetro de distância para poder acionar a carga com um if, por exemplo:
if (MicroCent < 20){
"Coloque o acionamento aqui"
}
}
É isso!!!
Espero ter ajudado, forte abraço, e boa sorte.
Se inscreva em nosso site:
https://draft.blogger.com/follow.g?view=FOLLOW&blogID=5745325357530072225
Abraços.
AMIGO QUERO COLOCAR DOIS ESP01 PARA RECEBER COMANDO UM DO OUTRO E ACIONAREM OS RELES. ME AJUDA NESSE PROJETO ???
ResponderExcluirOlá!!!
ExcluirTemos esse projeto já feito, veja nesse endereço do nosso canal no youtube.
https://www.youtube.com/watch?v=9oHvm6WGhjY
Aproveita e se inscreve lá também.
Forte abraço.
Boa noite!
ResponderExcluirEsse código funciona com o ESP32?
Olá @EDMILSON
ExcluirAcredito que sim, não testei, pois não disponho de um em nossa bancada, mas o princípio é válido para os dois, o que pode diferenciar, seria a biblioteca, mas o demais são iguais.
Se possível nos dê o feedback, para que outros possam também tirar suas dúvidas.
Forte abraço.
Olá, boa noite, sem roteador ficamos presos com apenas 4 ESP ? ou podemos adiconar mais ? Quero trabalhar com 8 ESP.
ResponderExcluirOlá @Ϟ PATRIK
ExcluirDê um alhada no nosso outro Post que trata da mesma comunicação, só que com o roteador, ficando assim com bastante ESP para se conectar.
https://www.fvml.com.br/2019/08/comunicacao-entre-4-esp8266-com-central.html
Aproveita e se inscreve em nosso Blog.
Abraços
Olá, boa tarde.
ExcluirEu olhei sim mas não consegui usar o mesmo.
Como faço para alterar o nome da rede neste sem roteador, pois não estou conseguindo alterar, quando altero o mesmo apresenta erro, pode me ajudar alterar o programa abaixo?
Nome da rede para SAIVW
e senha pode ser a mesma.
char* ESPssid; // NOME DA REDE WIFI
char* ESPpassword; // SENHA DA REDE WIFI
String Message; // MENSAGEM A RECEBER DOS CLIENTES "VAGAS"
#define MAXSC 15 // NÚMERO MÁXIMO DE CLIENTES "VAGAS"
WiFiServer ESPServer(9001); // SERVIDOR E O NÚMERO DO PORTA
WiFiClient ESPClient[MAXSC]; // OS CLIENTES "VAGAS" E SERVIDOR
//------------------------------------------------------------------------------------
// DEFINIÇÃO DOS PINOS DO ESP8266 NODE MCU
void setup(){
lcd.begin (20,4); // CONFIGURAÇÃO DO DISPLAY
pinMode(CHAVE, INPUT);
pinMode(LED0, OUTPUT); // WIFI - LUZ DO LED DA PLACA
//------------------------------------------------------------------------------------
// HABILITANDO MONITOR SERIAL
Serial.begin(115200); // CCOMUNICAÇÃO COM COMPUTADOR
//------------------------------------------------------------------------------------
// HABILITANDO ACESSO WIFI
SetWifi("FVMLearning", ""); // CONFIGURA O PONTO DE ACESSO WIFI / WIFI HABILITADO
}
//------------------------------------------------------------------------------------
// ÍNICIO CICLO LOOP SERVIDOR
void loop()
{
AtualizaLCD(); // ATUALIZA INFORMAÇÕES DO LCD
AvailableClients(); // VERIFICA CLIENTES "VAGAS" DISPONÍVEIS
AvailableMessage(); // VERIFICA MENSAGENS DOS CLIENTES "VAGAS" DISPONÍVEIS
}
//------------------------------------------------------------------------------------
// CONFIGURANDO ACESSO WIFI
void SetWifi(char* Name, char* Password)
{
WiFi.disconnect(); // PARA QUALQUER WIFI CONFIGURADO ANTERIORMENTE
WiFi.mode(WIFI_AP_STA); // CONFIGURA MODO WIFI
//------------------------------------------------------------------------------------
// DEFININDO O NOME E SENHA DO PONTO DE ACESSO
ESPssid = Name;
ESPpassword = Password;
//------------------------------------------------------------------------------------
// INICIANDO PONTO DE ACESSO
WiFi.softAP(ESPssid, ESPpassword);
delay(500); // AGUARDA 0,5 SEGUNDOS
IPAddress IP = WiFi.softAPIP(); // OBTENDO O IP DO SERVIDOR
//------------------------------------------------------------------------------------
// INICIANDO SERVIDOR
ESPServer.begin();
ESPServer.setNoDelay(true);
}
Nenhum link está funcionando !!!
ResponderExcluirOlá
ExcluirNão entendo o que se passa, testei os links novamente "nesse momento" e estão funcionando, um é do Dropbox e o outro é do MEGA, são links diretos.
Veja eles aqui:
Dropbox: https://www.dropbox.com/home/FVM's%20Channel/Comunica%C3%A7%C3%A3o%20entre%204%20ESPs8266%20sem%20roteador
Mega:
https://mega.nz/#F!n6ZmHCZQ!Xa-IJpHJWA97CYu_i2ylwA
Veja se seu firewall não está bloqueando, se for a internet de empresa, geralmente você tem que pedir acesso a gerenciador da rede.
Abraços e boa sorte.
HOW To programming the server for coummunication two clients ضt the same time, each client does a different job.
ResponderExcluirHi @EE
ExcluirFor this application, you will have to use another type of topology, such as using ESP-NOW communication, will be a good application option for your project.
We are preparing an ESP-NOW article, and this can be very helpful to you, so subscribe to our site and our youtube channel, as we will post on one of the first two.
See you later.
We hope that this article"ESP-NOW" is simplified and comprehensive and be at least examples between 3 ESPs .
ResponderExcluirI suggest you use some sensors.
all the best.
I subscribed to the youtube channel
Hi @KEE
ExcluirCertainly we will bring a simplified form, because our intention is to direct hobbyists, to make their own projects, we give a direction to all of you, and you change to your own projects.
My best regards
Olá tudo bem?
ResponderExcluirA respeito desse projeto, há a possibilidade de repassar as informações desse servidor/AP (liga e desliga de sua respectiva rede de ESPs) para outro ESP isolado? Se sim voce poderia me ajudar no como fazer essa transmissão "ESP central >> ESP separado"?
Olá
ExcluirCertamente pode sim, porém é necessário direcionar porta, ou fazer através de servidor externo, estamos trabalhando, para montar outro projeto com uma central ESP recebendo comandando de ESPs outros ESPs externamente.
Se inscreve no nosso blog e no nosso canal do youtube, pois estaremos postando "não agora" brevemente esse tipo de comunicação.
Forte abraço.
certo, obrigado!
ExcluirE quanto a deixar o ip fixo tanto para o servidor/AP como os clients/STA, é só fazer um Wifi.config(ip,gateway,subnet) em todos os codigos? a parte de Wifi.softAP não seria um problema, certo?
Olá @RODRIGO1120
ExcluirCertamente sim, se colocado devidamente.
Mas... o IP do server é fixo, 192,168,4,1, é o IP Padrão do ESP, por isso não precisamos utilizar o argumento wifi.config(ip,gatway,subnet),
A função: IPAddress IP = WiFi.softAPIP(); captura/habilita o ip do server com o ip padrão e fixo.
Todos os clients utilizam comunicação direta; IPAddress ESPServer(192,168,4,1); para se conectar com o servidor.
Obrigado por estar conosco.
Aproveita e se inscreve também em nosso canal do Youtube.
Forte abraço.
Bom dia @FVML tudo bem?
ExcluirCerto, eu nao irei mexer no ip/gateway/subnet da AP. No caso dos clients, eles estao conectando por DHCP, certo? é isso a comunicação direta?
Me inscrevi no canal do YouTube, obrigado!!
Olá @RODRIGO1120
ExcluirO DHCP é um protocolo de comunicação do Host dinâmico, ele só escolhe um IP baseado no IP do AP mudando o 4° octeto, para adequação das conexões, ele continua sendo uma comunicação direta, agora se você está querendo uma comunicação direta sem o ROTEADOR, nós temos aqui no nosso blog, comunicação entre ESPs sem roteador, aí ele vai utilzar o IP/gatway/subnet do AP.
Qualquer dúvida, que estiver em nossa competência, nós responderemos.
Forte abraço.
Meu nobre, parabéns. Já me inscrevi lá no seu canal. Muito legal. Meu amigo, eu consigo enviar comandos pela serial de um NODE MCU ESP 8266 para outro NODE MCU ESP 8266? A idéia é ligar uma carga à distância, porém por comando serial. Tem como fazer? Grande abraço meu amigo.
ResponderExcluirOlá Amigo
ExcluirNão deu para entender exatamente o que você quer, mas vamos fazer um exemplo:
Se você tem um ESP com o PC e o Serial Monitor aberto e quer enviar uma String com ex. Ligar Motor
Você pode utilizar esse exemplo para ler a serial monitor
String DataInput;
char Characters;
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.avaliable()) {
Characters = Serial.read();
if (Characters == '*') {
Serial.println(DataInput);
DataInput = "";
}
else DataInput.concat(Characters);
}
}
E node é o acionamento da chave, você pode colocar e fazer um "if" colocando o "char Characters" em comparação se a palavra é "Ligar Motor", Lembrando que para finalizar a frase você deve colocar o " *".
É bem simples, não estou com tempo hábil para te fazer o código completo, mas... creio que com essa explicação da para realizar.
Qualquer outra dúvida, se você não consegui, no final de semana tentarei fazer um para você.
Forte abraço.
Boa noite, cara tem com dar umas dicas, tipo estou fazendo um projeto para a faculdade só que no local onde vai ficar o projeto não tem acesso a internet, então vou deixar um esp8266 em uma estufa fazendo todas as leituras necessárias e guardando as informações em um SD (esse sempre fica ligado e imovel na estufa), tenho outro esp8266 que é conectado ao meu computador pela usb e fiz um software de controle em C#, em resumo... coloco as parametros no computador ele envia via usb para o esp(host) conectado ao meu computador, depois o esp envia os parametros via wifi para o esp da estufa (server), até aqui ta tudo certo, funcionando perfeitamente, o meu problema é a volta, se eu mandar um comando para estufa que peça os dados do cartão SD, queria que esses dados sejam mandados de volta ate que cheguem a tela do computador.
ResponderExcluir-----> Meu problema é apenas um como eu posso enviar uma sequencia de string do esp (servidor) para o esp(host) <------- se ficar dificil de entender o que pedi, me avisa que explico de outro jeito, ou caso queria ver os arquivos que estão nos esp para ter uma ideia de como fazer para retornar, posso lhe mandar por e-mail Obrigado pela atenção
Boa noite, alguém conseguiu fazer esse projeto com o Esp32? To tendo alguns problemas, o servidor inicializa, mas os clientes não conectam.
ResponderExcluirBom dia Jemerson, tudo bem? Acompanho seus videos e tem me ajudado muito nos projetos. Gostaria de sugerir um projeto em que tenho dúvida e que acho que outra pessoas também. Queria usar um ESP32 como server para acionar 16 reles sem uso de roteador... e diversos ESP8266 como client ... Cada ESP8266 teriam 3 ou mais interruptores (NAO push button). Cada interruptor acionaria um relé e cada esp8266 poderia ser configurado como clone do outro também. Assim poderiam ter vários interruptores que acionam o mesmo rele. Grande abraço e parabéns pelo canal!
ResponderExcluirola eu tou com esp01 não tou conseguindo roda o programa no esp dar erro no D1 ou D0 algo assim se poder ajudar ficarei grato.
ResponderExcluir