FVM Learning

Nosso maior compromisso é compartilhar conhecimentos, somos simples, mas não simplórios, astuto, mas não pacóvio, nos posicionamos empenhados em mostrar o caminho para desmistificação do opróbrio em legítima defesa do conhecimento compartilhado. Eng. Jemerson Marques!

terça-feira, 18 de dezembro de 2018

Comunicação entre 4 ESPs com central ESP sem Roteador

Comunicação entre 4 ESPs com central ESP sem Roteador

Hoje nós iremos fazer a comunicação entre 4 ESPs NodeMCU ESP8266, sem a necessidade de um Modem Roteador, essa comunicação será direta com uma Central ESP.

Para a realização deste procedimento, é necessário você já ter as bibliotecas do ESP instalada na IDE Arduíno.

Se você ainda não instalou.
Veja o nosso Post "Instalando Biblioteca do Módulo ESP8266 na IDE Arduíno"

Click no descrição abaixo para acessar o POSTAGEM.

Depois de tudo instalado, vamos seguir o passo a passo.

Montar os ESPs em uma Protoboard, se você tiver só uma Protoboard, ficará difícil montar o módulo, pois como podemos ver, não temos como utilizar os pinos na Protoboard, o NodeMCU não foi desenhado para este tipo de aplicação.

No entanto, podemos conectar três Protoboards uma na outra, como sugerido na imagem, juntas para podermos montar os 4 ESPs nas Protoboards e seguirmos o nosso esquema.

Se você não tem as Protoboards, não há do que se preocupar, devido aos números de pinos que serão utilizado, não ha tanta necessidade de termos as 3 Protoboard para isso.
Como serão colocados só uma chave tipo micro contact  e um LED na Protoboard, podemos fazer com rabichos macho-fêmea facilmente, o mais trabalhoso será o servidor que terá a quantidade de LEDs maior seguindo a quantidade de CLIENTES que você irá colocar.

Então faça a montagem de acordo com o esquemático na imagem ilustrativa, tanto o esquemático do CLIENTE como o esquemático do SERVIDOR.
Se você é acostumado a fazer projetos com o ESP8266, já deve ter notado que não estou utilizando resistores, porque não é necessita usar resistores para ligar as chaves Micro Switch, pois podemos setar as portas de entrada dos ESPs com o comando Pull_Up, e assim evitar a utilização de resistores, e nos leds também não é necessário, pois as portas dos ESPs vão de 0 à 3,3v, e a alimentação da maioria dos leds é muito próximo a isso.

Depois de montado, verifique todas as conexões, as "portas" GPIO de saída para o led LED, verifique a polarização do LED, para não estar invertida, pois se tiver invertida o mesmo não irá acender, as GPIOs de entrada da Micro Switch, que deve seguir como no esquemático, um lado da chave vai para a porta que você programou, no nosso caso a porta é a D0 do ESP, depois de tudo verificado, faça o Upload do programa para os ESPs...

Para quem não baixou os códigos, abaixo o link para Download.

Link Direto:
Opção 1: FVMLearning
Opção 2: FVMLearning

Depois de baixado os códigos, note que nos ESPs clientes, o que muda entre eles, são os números que demos a cada um deles: Cliente 01, Cliente 02 e etc... para cada ESP que você colocar como cliente, mude o número para Cliente 01, o próximo Cliente 02.... e assim sucessivamente.
Verifique também a porta que você colocou a Chave, e o LED, e veja a que está no código se são iguais, senão mudo ou no código ou na porta do ESP.
Faça o Upload
Aguarde até carregar...
Faça isso para todos os ESPs.

Depois de ter concluído os Upload de todos os ESPs, incluindo o da Central.

Ligue o Serial Monitor.
Lembrando que estou usando a Central na porta USB somente para visualizar o comportamento dos ESPs, mas não é necessário, podendo ligar direto em uma fonte 5v, como os carregadores de celular, que seja USB 5V. Não recomendo utilizar os carregadores Fast Charger, devido sua saída ser de 5v à 8V, e isso pode esquentar bastante o regulador do ESP, e queimá-lo.

Depois de tudo concluído.

Energize os ESPs... Com as fontes de carregador de Celular 5V

Conecte um a um.

Para testar, vamos pressionar o botão primeiro ESP, e deve acender tanto o LED de indicação do ESP01 como também na central deve acender o LED correspondente ao ESP01, ou seja, Cliente 01.

Se no seu funcionou, siga para o próximo, pressione o botão do EPS02...
Se estiver funcionando, siga o mesmo passo para todos os ESPs que você colocou, é importante você acompanhar o comportamento dos Clientes no serial monitor, quando pressionamos o cliente correspondente, aparece a situação do mesmo.

Essa nomenclatura que dei para o CLIENTE01 – 0 ou 1, é o Estado do mesmo, a qual 0 = Desligado e 1 = Ligado.

Isso serve para todos os clientes.
Você pode colocar o seu tipo de NOMENCLATURA, Só não esqueça de fazer em ambas as partes, no Cliente e no Server.

Para você que ver esse mesmo POST no tutorial do nosso canal no YouTube.
Fique à vontade para assistir no nosso canal.



E por hoje é só, espero que tenham gostado!!!

Qualquer dúvida, digita nos comentários que logos estaremos respondendo.

Se inscreva no nosso Blog!!! Click aqui - FVM Learning!!!

Forte abraço.

Deus vos Abençoe

Shalom

39 comentários:

  1. Boa tarde!
    Tem 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.

    ResponderExcluir
  2. Olá!

    Tem 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.

    ResponderExcluir
  3. Respostas
    1. Olá
      Estamos finalizando o vídeo da comunicação entre ESPs com Roteador.
      Fica ligado, em nossos canais.
      Forte abraço.

      Excluir
  4. Ola nao consigo baixar os codigos me redireciona pra outros sites

    ResponderExcluir
    Respostas
    1. Olá JUSSARA
      Os 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.

      Excluir
  5. Não consigo fazer download dos códigos poderia enviar por email?

    ResponderExcluir
    Respostas
    1. Olá!!!
      Os 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.

      Excluir
  6. Olá, já tem o código com 10 clientes com roteador ?

    ResponderExcluir
  7. Olá!!!

    Estamos 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.

    ResponderExcluir
  8. o link disponível direciona para um dropbox não acessível.

    ResponderExcluir
    Respostas
    1. Olá!!!
      Acabamos de testar o Link, e está funcionando perfeitamente.
      Mas, mesmo assim colocamos outra opção de link para baixar.
      Abraços.
      Boa sorte.

      Excluir
  9. 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 ?

    ResponderExcluir
    Respostas
    1. Olá Ϟ PATRIK

      Tecnicamente, 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.

      Excluir
  10. AMIGO QUERO COLOCAR DOIS ESP01 PARA RECEBER COMANDO UM DO OUTRO E ACIONAREM OS RELES. ME AJUDA NESSE PROJETO ???

    ResponderExcluir
    Respostas
    1. Olá!!!
      Temos 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.

      Excluir
  11. Boa noite!
    Esse código funciona com o ESP32?

    ResponderExcluir
    Respostas
    1. Olá @EDMILSON
      Acredito 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.

      Excluir
  12. Olá, boa noite, sem roteador ficamos presos com apenas 4 ESP ? ou podemos adiconar mais ? Quero trabalhar com 8 ESP.

    ResponderExcluir
    Respostas
    1. Olá @Ϟ PATRIK

      Dê 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

      Excluir
    2. Olá, boa tarde.
      Eu 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);
      }

      Excluir
  13. Respostas
    1. Olá
      Nã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.

      Excluir
  14. HOW To programming the server for coummunication two clients ضt the same time, each client does a different job.

    ResponderExcluir
    Respostas
    1. Hi @EE
      For 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.

      Excluir
  15. We hope that this article"ESP-NOW" is simplified and comprehensive and be at least examples between 3 ESPs .
    I suggest you use some sensors.
    all the best.
    I subscribed to the youtube channel

    ResponderExcluir
    Respostas
    1. Hi @KEE
      Certainly 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

      Excluir
  16. Olá tudo bem?

    A 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"?

    ResponderExcluir
    Respostas
    1. Olá
      Certamente 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.

      Excluir
    2. certo, obrigado!

      E 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?

      Excluir
    3. Olá @RODRIGO1120
      Certamente 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.

      Excluir
    4. Bom dia @FVML tudo bem?
      Certo, 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!!

      Excluir
    5. Olá @RODRIGO1120
      O 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.

      Excluir
  17. 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.

    ResponderExcluir
    Respostas
    1. Olá Amigo
      Nã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.

      Excluir
  18. 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.
    -----> 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

    ResponderExcluir
  19. Boa noite, alguém conseguiu fazer esse projeto com o Esp32? To tendo alguns problemas, o servidor inicializa, mas os clientes não conectam.

    ResponderExcluir
  20. Bom 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!

    ResponderExcluir
  21. ola 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