Ir ao conteúdo
  • Cadastre-se

WMAC

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

posts postados por WMAC

  1. Olá, glra...gente, alguém sabe como faço pra receber uma string com valores de vários sensores e desmontá-la a partir de caracteres delimitadores?

     

    Por exemplo estou enviando pela Serial do Arduino ao Esp01 a seguinte string:

     "#34;54;67;99*"

    Onde # delimita inicio, ; separa os valores e * indica o fim da string...preciso receber os valores sempre numa mesma ordem.

    Se alguém puder ajudar agradeço..

    • Obrigado 1
  2. Olá, gente.. estou precisando de ajuda... estou tentando realizar o envio de strings de um arduino mega para um esp01 8266 através da serial.

     

    O código pra receber que implementei no esp é:

     

     

    if (Serial.available()) {
        String rx;
        String strArr2[4];
        delay(10);
        while(Serial.available()){
          //char *a = 12;12.6;78;87;;
         char a = Serial.read(); 
        rx += a;
           }
     

    No entanto, embora as strings estejam sendo enviadas para o esp ele não entra no if Serial.available... O hardware que estou usando é um adaptador pra esp01/usb ´para programar direto na IDE e depurar em seguida conecto ao arduino mega para a comunicação pela Serial2 do mega.  O vejo pelo monitor da IDE é que os dados estão sim sendo enviados pelo Arduino ao Esp mas não compreendo o porque não entra no if para receber e processar as strings. Se alguém puder me ajudar agradeço muito.

    image.png.667f8ac19f81da945d39c3a4ad3a8547.png

  3. Olá, glra.. estou tentando enviar uma string de um arduino mega para um esp01 8266 .

     Para enviar os dados do mega uso apenas:

     

    if (Serial2.available()) { //no caso o tx do esp01 está no rx2 e o rx do esp01 está no tx2..
      delay(10);
       Serial2.println(valores); // a string valores contém dados de sensores
     }

     

    E para receber os dados no esp01 uso:

     if (Serial.available()) {
        String rx;
        delay(10);
        while(Serial.available()){
         char a = Serial.read();
        rx += a;
           }

     

    Acontece que não estou recebendo nada na serial do esp (info: bd de ambos está em 115200). Alguém tem ideia do que seja que possa me auxiliar por favor. Agradeço..

     

     

     

     

  4. @darkstrikerd  obrigada por responder.

    Tentei de duas formas:

    1- Utilizando os commandos AT ele até conecta com o servidor do PBI e até mesmo indica que o json foi enviado mas na plataforma não chega nenhum dado;

    2 - Usei a library WiFi esp para fazer a requisição HTTP POST, usando a porta 443 (HTTPS). Aqui ele consegue se conectar ao power BI, mas recebo os erros "TIMEOUT" e

    Data packet send error (2)
    Failed to write to socket 3

     

    Eu consegui enviar json pro PBI usando um NodeMCu, as bibliotecas disponíveis para ele consideram o certificado SHA-1, diferente das bibliotecas que encontrei para o esp01. Preciso utilizar o arduino+esp01 como hardware.

  5. Olá, glra...Precisando de ajuda 😁

     

    Estou tentando enviar dados no formato json do arduino +esp01 para um conjunto de dados POWER BI através de requisição POST http mas não estou conseguindo. Estou utilizando os comandos AT, o esp conecta à rede wifi mas ocorre falha de conexão ao acessar a URLpush (url+API) que o power bi disponibiliza na versão online quando se cria um conjunto de dados.

     

     

  6. @Matheus Maldi e @Flávio Pedroza obrigada por responderem. Tentei da forma como vocês sugeriram e não deu certo. Fiz um outro teste obtendo a leitura de registradores com um SCADA e vi que obtenho valor correto lendo a variável como inteiro trocado de 4 bytes sem sinal, que teoricamente é a forma como vocês estão sugerindo, certo? Mas o valor que obtenho ao tentar com o Arduino não corresponde ao esperado...

  7. @Davi Silva Santos  Obrigada por responder! Mas acho que não expliquei direito...estou realizando a comunicação Modbus entre o arduino e um inversor solar..na memória do inversor um determinado valor que quero ler ocupa 2 registradores (32bits) de 16 bits cada (registradores de holding) . A variável é do tipo inteiro, só que,segundo o manual, a ordem das palavras é Lo-Hi. Eu queria saber como faço pra obter  o valor inteiro..

  8. @aphawk  obrigada pelas dicas! Realmente deveria ser simples mesmo, até porque eu testei com Modbus Slave e deu tudo certo...inclusive eu retirei o resistor de terminação do módulo para ver se funcionava uma vez, teoricamente, redes de curta distância não precisam dele. Não funcionou...

     

    O módulo está bom e funciona mas não com o inversor (como eu disse testei o circuito e o código usando o Modbus Slave)

     

    Felizmente, testei a comunicação apenas com o CI MAX485 (nem os resistores de polarização e terminação) e usando a biblioteca ModbusMaster e funcionou perfeitamente (até que enfim....rs). Eu deveria ter feito isso bem antes mas como tudo funcionava com o simulador ficou difícil encontrar o erro..

     

    Quero agradecer a todos que deram um pouco de seu tempo pra me ajudar aqui no fórum. Obrigada!

    • Curtir 2
  9. @aphawk  pela minha pesquisa, acredito que o problema tenha relação com polarização e/ou terminação de linha que o inversor pode possuir/precisar. Isso pode estar corrompendo os dados transmitidos, pois o que consta é o erro de código 0xE0 o qual representa diferença entre o ID requisitado e o da resposta...

    No manual existem algumas informações mas não o suficiente que indiquem a necessidade de implementar a polarização ou terminação da linha. Estou aguardando mais esclarecimentos por parte do fabricante do inversor. Qualquer avanço, eu posto aqui.

  10.  

    @Thiago Miotto  obrigada por responder! Já tentei isso e não funcionou.

    @aphawk obrigada por responder! Sim, o endereço (slave ID) que estou usando é o ID 7 e ele está especificado em: node.begin(7,Serial) no código. Os parâmetros de comunicação como ID, baud rate, paridade estão todos corretos pois posso conferir no monitor que o inversor tem.

    Inclusive usei o software Modbus Poll para simular um mestre e consigo ver o tráfego de dados entre o inversor e o PC usando um conversor RS485/USB, e funciona perfeitamente..

    Também já usei o Modbus Slave para testar o código e circuito com arduino e o conversor RS485/TTL e também tenho sucesso na comunicação. Entretanto quando junto o circuito com arduino e o inversor não tenho resposta..

    • Curtir 1

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!