Ajuda-me no meu projecto


boa tarde pessoal!! :)
como eu sou novato nisto, estou precisar  de um empurrão para tentar acabar meu projeto que consiste em eu criar um web server  que vai apresentar dados de temperatura e humidade, eu estou utilizar os seguintes shield enc28j60"para conectar com net para depois monstra no browser" o sensor dht11" para dar os dados de temperatura e humidade ".
eu já tentei fazer um código mas tá ter um erro nos dados e não estou conseguir  corrigir o erro. :~

-------------------------------------------------------------------------------------------------------------------------
#include <dht.h>
#include <ethercard.h>
#define dht_dpin a1

dht dht;

// ethernet interface mac address, must unique on lan
static byte mymac[] = { 0x74,0x69,0x69,0x2d,0x30,0x31 };
static byte myip[] = { 192,168,1,203 };

byte ethernet::buffer[500];
bufferfiller bfill;
float   rh, rt;

void setup () {
  if (ether.begin(sizeof ethernet::buffer, mymac) == 0)
    serial.println( "failed access ethernet controller");
  ether.staticsetup(myip);
 
   serial.begin(9600);
   dht.begin();
}


static word homepage() {
  dht.read11(dht_dpin);

  bfill = ether.tcpoffset();
  bfill.emit_p(pstr(
    "http/1.0 200 ok\r\n"
    "content-type: text/html\r\n"
    "pragma: no-cache\r\n"
    "\r\n"
    "<meta http-equiv='refresh' content='1'/>"
    "<title>rbbb server</title>"
    "<h1>arduino </h1>"
    "<br>"
    "<h2>humidity: $d</h2>"
    "<h2>temperature: $d</h2>"),
    rh, rt);
  return bfill.position();
}

void loop () {
  rh = dht.readhumidity();
  rt = dht.readtemperature();
   
  word len = ether.packetreceive();
  word pos = ether.packetloop(len);

  if (isnan(rt) || isnan(rh)) {
    serial.println("failed read dht");
  } else {
    serial.print("humidity: ");
    serial.print(rh);
    serial.print(" %\t");
    serial.print("temperature: ");
    serial.print(rt);
    serial.println(" *c");
  }
 
 
  if (pos)  // check if valid tcp data received
    ether.httpserverreply(homepage()); // send web page data
}


------------------------------------------------------------------------------------------------------------------------

eu espero que me possam dar uma ajuda  :d

meus comprimentos
tiago gomes 

esse funciona, mas é com ds18b20, basta você adaptá-lo.

baseado em http://mk90.blogspot.com.br/2013/05/web.html
code: [select]
//*********************************************************//
// name:      ethercard + ds18b20 ? ?????????              //
// author:    ilya danilov www.mk90.ru/blog                //
// date:      07 may 2013, last update: 18 may 2013        //
// version:   0.0.1                                        //
// schematic: ???????-??????????? ????? ?? atmega328p +    //
//            ethercard (ss=d10) + ds18b20 (d9)            //
// note:      ??? ????????? ????? ??????? ?????????? ????? //
//            ???????? ds12b20, ??????????? ? ?????????    //
//            ??????? ???????? ???????????. ? ????????     //
//            ?????????????? ??????? ????????? ????????,   //
//            ?????? ?????????????? ? ??????. ??. ?????    //
//            mk90.blogspot.com/ds18b20                    //   
// based on ethercard project: github.com/jcw/ethercard    //
//*********************************************************//
#include <onewire.h>
#include <ethercard.h>

// definição ethernet

#define buf_size 512

byte mac[] = { 0x00, 0x04, 0xa3, 0x21, 0xca, 0x39 }; // mac address

byte fixed = false; // =false: tentando obter um endereço dhcp,
                    //         em caso de falha de usar uma estática;
                    // =true:  usar imediatamente uma estática

uint8_t ip[] = { 10, 16, 131, 23 };       // endereço ip estático
uint8_t subnet[] = { 255, 255, 252, 0 };  // mascara de subrede
uint8_t gateway[] = { 10, 16, 130, 70 };  // gateway
uint8_t dns[] = { 10, 16, 130, 9 };       // endereço servidor dns (opcional)

byte ethernet::buffer[buf_size];
static bufferfiller bfill;  // used cursor while filling buffer

// ????????? onewire

#define ds18b20pin  9
onewire ds(ds18b20pin);

// ??????? ds18b20

void setconversiontime(byte conf) {
  ds.reset();
  ds.skip(); // skip rom
  ds.write(0x4e); // write scratchpad
  ds.write(0); // th
  ds.write(0); // tl
  ds.write(conf); // configuration
}

void startconversionall() {
  ds.reset();
  ds.skip(); // skip rom
  ds.write(0x44, 1); // start conversion
  delay(10);
}

//#include <avr/pgmspace.h>

prog_char string_0[] progmem = "sensor 0";
prog_char string_1[] progmem = "sensor 1";
prog_char string_2[] progmem = "sensor 2";

progmem const char *locations[] =
{   
  string_0,
  string_1,
  string_2
};

void setup(void)
{
    serial.begin(57600);
    delay(2000);

    // verifique se o controlador ethernet está disponível para trabalhar
    serial.println("initialising ethernet controller");
    if (ether.begin(sizeof ethernet::buffer, mac) == 0) {
        serial.println( "ethernet controller not initialised");
        while (true);
    }

    // tentando obter um endereço dinamicamente
    serial.println("attempting ip address using dhcp");
    if (ether.dhcpsetup()) {
        ether.printip("got ip address using dhcp: ", ether.myip);
    } else {
        // se o dhcp não estiver disponível, use um endereço ip estático
        ether.staticsetup(ip, gateway, dns);
        ether.printip("dhcp failed, using fixed address: ", ether.myip);
        fixed = true;
    }
}

char okheader[] progmem =
  "http/1.0 200 ok\r\n"
  "content-type: text/html; charset=utf-8\r\n"
  "pragma: no-cache\r\n"
;

char authorlink[] progmem =
  "</pre><hr>temperatura"
;

static void homepage (bufferfiller& buf) {
 
  buf.emit_p(pstr("$f\r\n"
//    "<title>arduino web-thermometr</title>"
    "<h2>ds18b20 network:</h2>"
    "<pre>"), okheader);
 
  byte counter = 0;
  byte addr[8];
  byte data[12];
 
  setconversiontime(0x7f); // conjunto de resolução de 9 bits
  startconversionall(); // iniciar conversão de temperatura
  delay(400); // para converter 9 bits requer 93,75 ms
 
  // dispositivo procura e exibir os resultados
  ds.reset_search();
  delay(250);
  while (ds.search(addr)) {
    //buf.emit_p(pstr("$d: "),++counter);
    buf.emit_p( (char*)pgm_read_word(&(locations[counter++])) );
    buf.emit_p(pstr(": "));
   
    if ( onewire::crc8(addr, 7) != addr[7]) {
      buf.emit_p(pstr("- address crc not valid!\n"));
      continue;
    } else if (addr[0] != 0x28) {
      buf.emit_p(pstr("- not ds18b20 family device!\n"));
      continue;
    }
    ds.reset();
//    ds.select(addr);
//    ds.write(0x44, 1);        // start conversion, parasite power on @ end
//    delay(1000);     // maybe 750ms enough, maybe not
    // might ds.depower() here, reset take care of it.
 
    ds.reset();
    ds.select(addr);
    ds.write(0xbe); // leia rascunho
    (byte k=0; k<9; k++) {  // precisamos de 9 bytes
      data[k] = ds.read();
    }     
    if ( onewire::crc8( data, 8) != data[8]) {
      buf.emit_p(pstr("- value crc not valid!\n"));
      continue;
    }
    buf.emit_p(pstr("<title>$d.$d °c</title>"), *(int *)data/16, (int) (abs(*(int *)data % 16) * 0.625));
    buf.emit_p(pstr(" $d.$d °c\n"), *(int *)data/16, (int) (abs(*(int *)data % 16) * 0.625));
  }
  buf.emit_p(pstr("\ntotal: $d devices."), counter);
  buf.emit_p(authorlink);
}


void loop(void)
{
  word len = ether.packetreceive();
  word pos = ether.packetloop(len);
  if (pos) {
    bfill = ether.tcpoffset();
    char* data = (char *) ethernet::buffer + pos;
    serial.println(data); // imprimir um pedido de depuração
   
    if (strncmp("get / ", data, 6) == 0)
      homepage(bfill);
    else
      bfill.emit_p(pstr(
        "http/1.0 401 unauthorized\r\n"
        "content-type: text/html\r\n"
        "\r\n"
        "<h1>401 unauthorized</h1>"));
       
    // enviar uma resposta para o cliente
    ether.httpserverreply(bfill.position());
  }
}


Arduino Forum > International > Portugues > Ajuda-me no meu projecto


arduino

Comments

Popular posts from this blog

opencv3, tbb and rasp pi 2 - Raspberry Pi Forums

small ethernet problem - Raspberry Pi Forums

Multithumb configuration params not working? - Joomla! Forum - community, help and support