Este tópico contém respostas, possui 2 vozes e foi atualizado pela última vez por  Diogo Zimmermann 4 semanas .

Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #153769

    nalber2009
    Participante

    Prezado(os)! Sou iniciante em Arduino e talvez por causa disso não consegui transmitir os dados de um sensor conforme sketch abaixo (substitui o LM35 por um LDR) para a internet. O sketch compilou normal – utilizo um IDE versao 1.5.6-r2), também carrega normal, mas não visualizo a página na internet. Para minha rede utilizo o endereço IP 192.168.15.10 (tentei outros dentro de minha faixa de IP). Podem me ajudar? Utilizo uma placa ENC28J60 marca HanRun HR911105A 13/15 conectada num Arduino MEGA.

    //Programa : Modulo ethernet ENC28J60 com sensor LDR
    //Autor : FILIPEFLOP (alterado para sensor LDR)
    #include “etherShield.h”
    #include “ETHER_28J60.h”

    //Define o MAC da placa de rede. Nao eh necessario alterar
    static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
    //Define o endereco IP da sua placa
    static uint8_t ip[4] = {192,168,15,12};

    static uint16_t port = 80;

    ETHER_28J60 e;

    int pin = 1; // Pino analogico para ligacao do LDR
    int ldr = 0; // Variavel que armazena o valor
    // Variáveis para máximo e mínimo
    int maxldr = 700,minldr = 200;
    int i;

    void setup()
    {
    //Inicializa a placa com as configuracoes fornecidas
    e.setup(mac, ip, port);
    }

    void loop()
    {
    //Calcula o valor do lux
    ldr = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;

    //Armazena do lux máximo na variavel maxldr
    if(ldr > maxldr) {maxldr = ldr;}
    //Armazena a temperatura máxima na variavel mintemp
    if(ldr < minldr) {minldr = ldr;}

    if (e.serviceRequest())
    {
    e.print(“<H1>FILIPEFLOP – Teste ENC28J60</H1><br/>”);
    e.print(“Valor ldr : “);
    e.print(ldr);
    e.print(“&deg<br/><br/>”);
    e.print(“LDR minimo : “);
    e.print(minldr);
    e.print(“&deg<br/>”);
    e.print(“LDR maximo : “);
    e.print(maxldr);
    e.print(“&deg<b/>”);
    e.respond();
    }
    delay(100);
    }

    0
    #155215

    Olá, Nalber!

     

    Como você está usando um MEGA, o problema pode ser a conexão CS. Para isso, tente o seguinte:

    Adicione as linhas de código abaixo na parte void setup()

    if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
      {
      Serial.println(P("Failed to access Ethernet controller"));
      }
      else
      {
      Serial.println(P("Ethernet is fine and up"));
      }

    O que esse bloco de código faz é basicamente definir o pino CS para o 53 (que é o CS do MEGA), já que o padrão é o 10 no UNO

    Qualquer dúvida, pode mandar!
    Diogo – Equipe FilipeFlop

    0
    #156659

    nalber2009
    Participante

    Olá Diogo! Obrigado por responder. Fiz a inclusão do bloco de código no void setup conforme abaixo – aqui colocado após e.setup(mac, ip, port); mas também testei colocando antes dela, mas ao compilar ocorreu o um erro, conforme expresso mais abaixo.

    INCLUSÃO DO BLOCO DE CÓDIGO

    void setup()
    {
    //Inicializa a placa com as configuracoes fornecidas
    e.setup(mac, ip, port);
    if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
    {
    Serial.println(P(“Failed to access Ethernet controller”));
    }
    else
    {
    Serial.println(P(“Ethernet is fine and up”));
    }
    }

    CÓPIA DO ERRO AO COMPILAR

    Arduino: 1.5.6-r2 (Windows 8), Placa:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

    teste_shield_LDR.ino: In function ‘void setup()’:
    teste_shield_LDR:25: error: ‘ether’ was not declared in this scope
    teste_shield_LDR:25: error: ‘Ethernet’ has not been declared
    teste_shield_LDR:25: error: ‘mymac’ was not declared in this scope
    teste_shield_LDR:27: error: ‘P’ was not declared in this scope
    teste_shield_LDR:31: error: ‘P’ was not declared in this scope

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    0
    #158331

    Provavelmente você não incluiu a biblioteca internet.

    Adicione lá no início do seu código o seguinte: #include <Ethernet.h>

     

    Abraços!

    Diogo – Equipe FilipeFlop

    0
    #167760

    nalber2009
    Participante

    Ok Diogo! Fiz a inclusão mas ainda não compilou. Confesso que não entendi porque algumas variáveis ou funções que solicitastes para incluir não estão declaradas. Segue o sketch com as alterações cópia dos erros ao tentar compilar.

    //Programa : Modulo ethernet ENC28J60 com sensor LDR
    //Autor : FILIPEFLOP (alterado para sensor LDR)
    #include <Ethernet.h>
    #include “etherShield.h”
    #include “ETHER_28J60.h”

    //Define o MAC da placa de rede. Nao eh necessario alterar
    static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
    //Define o endereco IP da sua placa
    static uint8_t ip[4] = {192,168,15,12};

    static uint16_t port = 80;

    ETHER_28J60 e;

    int pin = 1; // Pino analogico para ligacao do LDR
    int ldr = 0; // Variavel que armazena o valor
    // Variáveis para máximo e mínimo
    int maxldr = 700,minldr = 200;
    int i;

    void setup()
    {
    if (ether.begin(sizeof Ethernet::buffer, mymac, 53) == 0)
    {
    Serial.println(P(“Failed to access Ethernet controller”));
    }
    else
    {
    Serial.println(P(“Ethernet is fine and up”));
    }
    //Inicializa a placa com as configuracoes fornecidas
    e.setup(mac, ip, port);

    }

    void loop()
    {
    //Calcula o valor do lux
    ldr = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;

    //Armazena do lux máximo na variavel maxldr
    if(ldr > maxldr) {maxldr = ldr;}
    //Armazena a temperatura máxima na variavel mintemp
    if(ldr < minldr) {minldr = ldr;}

    if (e.serviceRequest())
    {
    e.print(“<H1>FILIPEFLOP – Teste ENC28J60</H1><br/>”);
    e.print(“Valor ldr : “);
    e.print(ldr);
    e.print(“&deg<br/><br/>”);
    e.print(“LDR minimo : “);
    e.print(minldr);
    e.print(“&deg<br/>”);
    e.print(“LDR maximo : “);
    e.print(maxldr);
    e.print(“&deg<b/>”);
    e.respond();
    }
    delay(100);
    }

     

    Arduino: 1.5.6-r2 (Windows 8), Placa:”Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

    teste_shield_LDR.ino: In function ‘void setup()’:
    teste_shield_LDR:24: error: ‘ether’ was not declared in this scope
    teste_shield_LDR:24: error: ‘Ethernet’ is not a class or namespace
    teste_shield_LDR:24: error: ‘mymac’ was not declared in this scope
    teste_shield_LDR:26: error: ‘P’ was not declared in this scope
    teste_shield_LDR:30: error: ‘P’ was not declared in this scope

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    0
    #167979

    Então faça o seguinte:

     

    Utilize o código original disponível no blog. Em seguida, vá na pasta onde se encontra a librarie etherShield (Geralmente em Documentos > Arduino > libraries).

    Abra a pasta etherShield e abra o arquivo enc28j60.c (pode abrir com o bloco de notas).

    Altere os seguintes valores para os números em negrito:

    #define ENC28J60_CONTROL_CS 10 > 53
    #define SPI_MOSI 11 > 51
    #define SPI_MISO 12 > 50
    #define SPI_SCK 13 > 52

     

    Salve o arquivo e então abra sua IDE de novo. Mande compilar e teste.

     

    Abraços!

    Diogo – Equipe FilipeFlop

    0
Visualizando 6 posts - 1 até 6 (de 6 do total)

Você deve fazer login para responder a este tópico.