ENC28J60 webkontroller programozása

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: tetye »

ppeter írta:
Robert írta:És az "arduino" karakterlánc 8 tagú....
na de utána volt char Str6[15] = "arduino"; is, ami már nem stimmel :)

tetye: a temp1 milyen típusú ?
Szerintem az is csak 7 tagú.
Az alsókból szeretnék hasznos infót kivenni és átadni a fent lévőbe:

Kód: Egész kijelölése

uint16_t print_webpage_ds1820(uint8_t *buf) {
 uint16_t plen; // Packet Length
    plen=http200ok();
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<html><head><title>Arduino</title></head><body bgcolor=\"black\">\n"));

    int x = dht_temp_www('t');
    sprintf(mystr,"<div><tr><td><font color=lime>DHT temperature: %x °C </font></td></tr></div>\n",x,x);
    add_string(mystr, plen);
    delay(500);
    x = dht_temp_www('h');
    sprintf(mystr,"<div><tr><td><font color=lime>DHT humidity: %d %% </font></td></tr></div>\n",x,x);
    add_string(mystr, plen);  

sensors.requestTemperatures();
int akarmi;
akarmi = printTemperature(insideThermometer);
    
    sprintf(mystr,"<div align=\"center\"><tr><td><font color=lime> temperature: %akarmi °C </font></td></tr>\n",akarmi,akarmi);
    add_string(mystr, plen);
    
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></center><hr></body></html>"));
  return(plen);
}

....
setup
....
loop
....

int dht_temp_www(char res){
  int result;
  int chk = DHT11.read(DHT11PIN);
  switch (chk)
  {
    case 0: Serial.println("OK"); 
           Serial.print(res);
            switch (res)
            {
              case 't':
                   result = ((float)DHT11.temperature);break;
              case 'h':
                   result = ((float)DHT11.humidity);break;
            }
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
 }
return result;
  
}

int printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
    akarmi= tempC;
  }
}

Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: tetye »

Más kérdésem is lenne, html-ben szeretnék megjeleníteni mért adatokat DS1820 4-5db 1dht11 meg egy i2c-s légnyomás mérő ilyesmi lenne. Hogy lehetne megoldani hogy friss adata legyen a weblapnak és egy változóból írja ki azt? ebben hogy lehetne timert beállítani hogy pl 1másodpercenként fusson? 16mhz orajelem van.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: Robert »

1sec: a html lapot kérd újra.
Refresh metatag...

Arduino alatt:delaymilisec()

Timer: onetimer függvénykönyvtár. De nem Bascom egyszerűségű...
Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: tetye »

Bascomban sem volt egyszerű... ettől meg kezdek félni.
Nem jó a lap újra kérése mert akkor megnő a válasz idő széthullik a kapcsolat. (ugye akkor szenzoronként x ideig áll GET közben).
És HA TALÁN... sikerül valahogy összeraknom, szeretnék még egy telnet-et is bele.(Ez lenne a legfontosabb. Távoli server(debian) betelnetelrá lekéri az adatokat a változókból és kilép. )
Mióta a html kódban kérdezem le a hőmérőt, sokkal bizonytalanabb a mérési eredmény, crc hiba /ismeretlen hiba/ nem talál szenzort...

Kód: Egész kijelölése

Checksum error
OK
Checksum error
Time out error
OK
Checksum error
Time out error
OK
Checksum error
OK
Checksum error
OK
Checksum error
Time out error
OK
Checksum error
Time out error
OK
Checksum error

Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: Robert »

Túl gyorsan kéred a szenzort v. parazitaként táplálod...
Avatar
tetye
Chipgyilok
Hozzászólások: 279
Csatlakozott: 2007. augusztus 29. szerda, 6:00

Re: ENC28J60 webkontroller programozása

Hozzászólás Szerző: tetye »

Kód: Egész kijelölése

 delay(500);
van a lekérdezések között. Be van kötve fix5v táp 100nF val.
update:
Már így néz ki az a rész hogy timer-ban kérdezem le a DS-eket, DE! ez nem az a timer ami a háttérben dolgozik... Ettől az ENC elveszti a kapcsolatot. Gondolom simán megáll az egész program 2 secre.
Nem tudnátok ebben segíteni? A változós kérdést igaz tizedes nélkül de megoldottam.

Kód: Egész kijelölése

#include "Timer.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 21
Timer t;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress insideThermometer = { 0x10, 0x3F, 0x78, 0x8A, 0x02, 0x08, 0x00, 0x9A };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };

uint16_t temp1;
uint16_t temp2;

void setup() {
Serial.begin(9600);
t.every(1000, takeReading);
sensors.begin();
sensors.setResolution(insideThermometer, 9);
sensors.setResolution(outsideThermometer, 10);
}

void loop() {
t.update();
}

void takeReading()
{
Serial.println("letelt timer");
sensors.requestTemperatures();
delay(2000);
float temp1 = sensors.getTempC(insideThermometer);
  if (temp1 == -127.00) {
    Serial.print("Error getting temperature");
  } 
Serial.print(temp1);
float temp2 = sensors.getTempC(outsideThermometer);
  if (temp2 == -127.00) {
    Serial.print("Error getting temperature");
  } 
 
Serial.print(temp2);

}

Jelenség:

Kód: Egész kijelölése

26.31Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
26.37Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
letelt timer
26.44Error getting temperature-127.00letelt timer
Error getting temperature-127.00Error getting temperature-127.00letelt timer
26.37Error getting temperature-127.00letelt timer
26.44Error getting temperature-127.00letel
Válasz küldése