ENC28J60 WebController....
"milyen hozzaszolast toroltetek innen?"
Szerintem én voltam.
Ki akarom próbálni Szegoj Web kontrollerét.
Mikroelektronikás panelom van hozzá, egyenlőre ott tartok (sok-sok hibakeresés után: zárlatos panel stb) hogy a gépre ráteszem a hálózati kábelt, a gép látja, vannak fogadott adatok de küldött nincs, kipróbáltam pár egyszerűbb mintát is de ott sem volt jó.
Sajnos már csak jövőre tudok a témával foglalkozni...
A gond a pc internet beállításával lehet, ebben kérnék segítséget.
Úgy is lehetne használni a dolgot hogy ténylegesen az internettel?
Nekem kábel modemem van ami a gép háló kártyájára megy, de ezt meg kellene osztanom a szerkezettel, az IP cím dolgot sem nagyon értem, mikor miért változik, ha változik hogy találom meg?
Szerintem én voltam.
Ki akarom próbálni Szegoj Web kontrollerét.
Mikroelektronikás panelom van hozzá, egyenlőre ott tartok (sok-sok hibakeresés után: zárlatos panel stb) hogy a gépre ráteszem a hálózati kábelt, a gép látja, vannak fogadott adatok de küldött nincs, kipróbáltam pár egyszerűbb mintát is de ott sem volt jó.
Sajnos már csak jövőre tudok a témával foglalkozni...
A gond a pc internet beállításával lehet, ebben kérnék segítséget.
Úgy is lehetne használni a dolgot hogy ténylegesen az internettel?
Nekem kábel modemem van ami a gép háló kártyájára megy, de ezt meg kellene osztanom a szerkezettel, az IP cím dolgot sem nagyon értem, mikor miért változik, ha változik hogy találom meg?
Be kellene ruháznod egy olcsó routerre első körben. Akkor egyszerűen tudnál egy belső hálózatot létrehozni, ahol tesztelheted a web kontrollert.GPeti írta: Nekem kábel modemem van ami a gép háló kártyájára megy, de ezt meg kellene osztanom a szerkezettel, az IP cím dolgot sem nagyon értem, mikor miért változik, ha változik hogy találom meg?
Másik járható út még egy hálókártya a gépbe, de hosszabb távon a router jobb választás!
Re: ENC28J60 WebController....
Hogyan lehetne azt megoldani, hogy az analóg értékek automatikusan időközönként frissüljönek a képernyőn, ne csak a refresh kattintásával?
Re: ENC28J60 WebController....
A generált HTML kód elejébe:
Kód: Egész kijelölése
<html>
<head>
<meta http-equiv="refresh" content="5;url=mit_refreshlap">
</head>
<body>
.
.
.
.
</body>
</html>
Re: ENC28J60 WebController....
Üdv.
Kérhetek egy kis segítséget?
Bemásoltam az egész kódomat, szanaszét vannak még a lekérdezések, de szeretnék weben keresztül ipcimet változtatni és az a lényegesebb.
Ott tartok hogy böngészőben be tudom írni neki parancsba(http:\\192.168.1.95\ip=192.168.1.96&mac=xx:xx:xx:....) ezt serial.printel látom is hogy megkapta, de abból az átvett úgylátom char-ból nem tudom stringbe tenni hogy tudjam keresni a karaktereket.
Lentem részletesebb a gondom a kódban a int8_t analyse_cmd(char *str) résznél. Köszönöm előre is ha valaki segítene.
környezet: atmega644 "sanguino"+enc28j60+arduino 1.0.4
Arduino tanfolyamot és az arduino Reference-ket túrom már két hete haverommal és egyszerűen nem tudunk tovább jutni.
Kérhetek egy kis segítséget?
Bemásoltam az egész kódomat, szanaszét vannak még a lekérdezések, de szeretnék weben keresztül ipcimet változtatni és az a lényegesebb.
Ott tartok hogy böngészőben be tudom írni neki parancsba(http:\\192.168.1.95\ip=192.168.1.96&mac=xx:xx:xx:....) ezt serial.printel látom is hogy megkapta, de abból az átvett úgylátom char-ból nem tudom stringbe tenni hogy tudjam keresni a karaktereket.
Lentem részletesebb a gondom a kódban a int8_t analyse_cmd(char *str) résznél. Köszönöm előre is ha valaki segítene.
Kód: Egész kijelölése
// EtherShield webserver demo
#include "ethershield.h"
#include <dht11.h>
#include "Timer.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 21
#define DHT11PIN 20
Timer t;
dht11 DHT11;
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 };
DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };
// please modify the following two lines. mac and ip have to be unique
// in your local area network. You can not have the same numbers in
// two devices:
static uint8_t mymac[6] = {
0x54,0x55,0x58,0x10,0x00,0x25};
static uint8_t myip[4] = {192,168,1,96};
int usable_dpins[] = {11,12,13};
int usable_apins[] = {0,1,2,3,4,5};
#define MYWWWPORT 80
#define BUFFER_SIZE 1350
static uint8_t buf[BUFFER_SIZE+1];
uint16_t temp1;
uint16_t temp2;
uint16_t lofasz;
int x;
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];
int8_t analyse_cmd(char *str);
// The ethernet shield
EtherShield es=EtherShield();
uint16_t http200ok(void) {
return(es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n")));
}
// Add the string str to the buffer one character at a time
int add_string(char* str, uint16_t &plen) {
int i = 0;
//Loop through each char
while (str[i]) {
// Add each char one by one to the buffer
buf[TCP_CHECKSUM_L_P + 3 + plen] = str[i];
i++;
plen++;
}
}
// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage_about(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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - About </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</font><hr></body></html>"));
return(plen);
}
uint16_t print_webpage_def(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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - Menu </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</font><hr></body></html>"));
return(plen);
}
uint16_t print_webpage_setup(uint8_t *buf) {
uint16_t plen; // Packet Length
char mystr[100];
plen=http200ok();
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<html>\n<head><title>Arduino</title></head>\n<body bgcolor=\"black\">\n"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - Menu </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">\n", plen);
add_string("<ul>\n", plen);
add_string("<li><a href=./analog.html>Analog</a></li>\n", plen);
add_string("<li><a href=./digital.html>Digital</a></li\n>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li\n>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>\n", plen);
add_string("<li><a href=./about.html>About</a></li>\n", plen);
add_string("</ul>\n", plen);
add_string("<FORM ACTION=\"/\" METHOD=\"GET\" name=\"form\">\n", plen);
sprintf(mystr,"<tr><td><font color=lime>MYIP: %d.%d.%d.%d </font></td></tr>\n", myip[0] , myip[1] , myip[2] , myip[3]);
add_string(mystr, plen);
add_string("<H2>Please login</H2>\n" , plen);
add_string("Pass <INPUT NAME=\"pass\" TYPE=\"password\"><br><br>\n", plen);
add_string("<INPUT TYPE=\"SUBMIT\" value=\"Login\"> <INPUT TYPE=\"RESET\" value=\"Clear\"></FORM>\n", plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</font><hr></body>\n</html>\n"));
return(plen);
}
uint16_t print_webpage_digital(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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - Digital pins </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
add_string("<table border=\"1\" align=\"center\" font color=lime>\n", plen);
for (int i = 0; i < (sizeof(usable_dpins) / sizeof(usable_dpins[0])); i++) {
int mypin = usable_dpins[i];
char mystr[100];
pinMode(mypin, INPUT);
sprintf(mystr,"<div><tr><td><font color=lime>Digital Pin #%d is %d</font></td></tr></div>\n",mypin,digitalRead(mypin));
add_string(mystr, plen);
}
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></font></center><hr></body></html>"));
return(plen);
}
uint16_t print_webpage_analog(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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - Analog pins </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
add_string("<table border=\"1\" align=\"center\" >\n", plen);
for (int i = 0; i < (sizeof(usable_apins) / sizeof(usable_apins[0])); i++) {
int mypin = usable_apins[i];
char mystr[100];
sprintf(mystr,"<div><tr><td><font color=lime>Analog Pin #%d is %d</font></td></tr></div>\n",mypin,analogRead(mypin));
add_string(mystr, plen);
}
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></font></center><hr></body></html>"));
return(plen);
}
uint16_t print_webpage_dht(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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - DHT11 </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
add_string("<table border=\"1\" align=\"center\" >\n", plen);
char mystr[100];
int x = dht_temp_www('t');
sprintf(mystr,"<div><tr><td><font color=lime>DHT temperature: %d °C </font></td></tr></div>\n",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);
add_string(mystr, plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></center><hr></body></html>"));
return(plen);
}
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"));
add_string("<h1><center><font color=\"green\">szArduino Ethernet - DS1820 </h1><hr>\n", plen);
add_string("<div id=\"vmenu\">", plen);
add_string("<ul>", plen);
add_string("<li><a href=./analog.html>Analog</a></li>", plen);
add_string("<li><a href=./digital.html>Digital</a></li>", plen);
add_string("<li><a href=./ds1820.html>DS1820</a></li>", plen);
add_string("<li><a href=./dht11.html>DHT</a></li>", plen);
add_string("<li><a href=./about.html>About</a></li>", plen);
add_string("</ul>", plen);
add_string("<table border=\"1\" align=\"center\" >\n", plen);
//innen
x=45.6;
//idáig
char mystr[100];
//x='1';
sprintf(mystr,"<tr><td><font color=lime>Ds1 temperature: %d °C </font></td></tr>\n",temp1);
add_string(mystr, plen);
sprintf(mystr,"<tr><td><font color=lime>Ds2 temperature: %d °C </font></td></tr>\n",temp2);
add_string(mystr, plen);
sprintf(mystr,"<tr><td><font color=lime>Ds3 temperature: %d °C </font></td></tr></div>\n",x);
add_string(mystr, plen);
plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</table></center><hr></body></html>"));
return(plen);
}
void setup() {
Serial.begin(9600);
// Initialise SPI interface
es.ES_enc28j60SpiInit();
// initialize enc28j60
es.ES_enc28j60Init(mymac);
// init the ethernet/ip layer:
es.ES_init_ip_arp_udp_tcp(mymac,myip, MYWWWPORT);
// Start up the library
sensors.begin();
t.every(3000, takeReading);
// set the resolution to 10 bit (good enough?)
sensors.setResolution(insideThermometer, 9);
sensors.setResolution(outsideThermometer, 10);
sensors.setResolution(dogHouseThermometer, 10);
}
void loop() {
uint16_t plen, dat_p;
int8_t cmd;
while(1) {
// t.update();
// read packet, handle ping and wait for a tcp packet:
dat_p=es.ES_packetloop_icmp_tcp(buf,es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf));
/* dat_p will be unequal to zero if there is a valid
* http get */
if(dat_p==0){
// no http request
continue;
}
// tcp port 80 begin
if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
// head, post and other methods:
dat_p=http200ok();
dat_p=es.ES_fill_tcp_data_p(buf,dat_p,PSTR("<h1>200 OK</h1>"));
goto SENDTCP;
}
//digital.html
if (strncmp("/digital.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_digital(buf);
goto SENDTCP;
}
//anaglog.html
if (strncmp("/analog.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_analog(buf);
goto SENDTCP;
}
//ds.html
if (strncmp("/ds1820.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_ds1820(buf);
goto SENDTCP;
}
//about.html
if (strncmp("/about.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_about(buf);
goto SENDTCP;
}
//setup.html
if (strncmp("/setup.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_setup(buf);
goto SENDTCP;
}
//dht11.html
if (strncmp("/dht11.html ",(char *)&(buf[dat_p+4]),9)==0){
dat_p=print_webpage_dht(buf);
goto SENDTCP;
} else {
cmd=analyse_cmd((char *)&(buf[dat_p+5]));
// Serial.print(cmd);
dat_p=print_webpage_def(buf);
// dat_p=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 401 Unauthorized\r\nContent-Type: text/html\r\n\r\n<h1>401 Unauthorized</h1>"));
goto SENDTCP;
}
SENDTCP:
es.ES_www_server_reply(buf,dat_p); // send web page data
// tcp port 80 end
}
}
int dht_temp_www(char res){
int result;
int chk = DHT11.read(DHT11PIN);
switch (chk)
{
case 0: Serial.println("OK");
switch (res)
{
case 't':
result = ((float)DHT11.temperature);
delay(500);
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;
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
temp1= tempC;
}
}
void takeReading()
{
Serial.println("letelt timer");
sensors.requestTemperatures();
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);
}
/*============ Subordinate subroutines, from NuElectronics demo ===== */
uint8_t find_key_val(char *str,char *key){
// The returned value is stored in the global var strbuf
uint8_t found=0;
uint8_t i=0;
char *kp;
kp=key;
while(*str && *str!=' ' && found==0){
if (*str == *kp){
kp++;
if (*kp == '\0'){
str++;
kp=key;
if (*str == '='){
found=1;
}
}
}else{
kp=key;
}
str++;
}
if (found==1){
// copy the value to a buffer and terminate it with '\0'
while(*str && *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){
strbuf[i]=*str;
i++;
str++;
}
strbuf[i]='\0';
}
return(found);
}// end of "find_key_val()"
/*==========================*/
int8_t analyse_cmd(char *str)
{
int8_t r=-1;
if (find_key_val(str,"cmd")){
if (*strbuf < 0x3a && *strbuf > 0x2f){
// is a ASCII number, return it
r=(*strbuf-0x30);
}
}
if (find_key_val(str,"ip")){
if (*strbuf < 0x3a && *strbuf > 0x2f){
Serial.print(str); // erre kiirja az str tartalmát ami úgy kezdödik hogy : ip=192.168.1.96&mac=kl:67:43:io:56:z7:4e:8i HTTP/1.1..........
//ebből kellene nekem az IP és a MAC értéke, tömbökbe.
//gondoltam megkeresem a = és az első . közti részt és betöltöm a tömb[1] be, a kövezkező két . köztit pedig a tömb[2] és így tovább a & jel ig.
//ehez át kéne alakítani stringbe hogy tudjak benne keresgélni. a lentebbi müveletekkel de:
//erre:
String valami = String('str');
Serial.println(valami);
//ez az eredmény: 29810
//erre:
valami = String("str");
Serial.println(valami);
//ez: str
//erre:
valami = String(str);
Serial.println(valami);
//semmi
// if (str.startsWith("ip=")) {
// Serial.println("Server's find ip=");
// }
// Serial.print(valami.charAt(4));
// Serial.print(valami);
/* kiszedi az n-edik karaktert:
string.charAt(n)
Keresi a karaktert:
String stringOne = "HTTP/1.1 200 OK";
Serial.println(stringOne);
if (stringOne.startsWith("HTTP/1.1")) {
Serial.println("Server's using http version 1.1");
} */
r=(*strbuf-0x30);
}
}
return r;
}// end of "analyse_cmd()"
Arduino tanfolyamot és az arduino Reference-ket túrom már két hete haverommal és egyszerűen nem tudunk tovább jutni.
Re: ENC28J60 WebController....
Tipp - még nem teszteltem:
http://arduino.cc/en/Reference/StringConstructor
http://arduino.cc/en/Reference/StringConstructor
Re: ENC28J60 WebController....
Szia!
Igen már akkor túl voltam rajta amikor feltettem a kérdést, de az sem segített semmit.
Igen már akkor túl voltam rajta amikor feltettem a kérdést, de az sem segített semmit.
Re: ENC28J60 WebController....
Van arra lehetőség hogy az ENC28J60 vagy valamelyik Wiznet csippel ne egy weboldalt hozzak létre hanem mySQL adatbázisba esetleg ftp szerveren levő txt file-ba írjak adatokat?
Re: ENC28J60 WebController....
Persze. Szabadidő és programozás kérdése
SQL: necces, külső szerverről való hozzáférés nagyon ritka.
txt: le kell tölteni, módosítás, és feltöltés.
Egyszerű: ahol FTP vagy SQL van, ott van PHP is.
Hívd meg a PHP-t:
http://www.sajatlap.hu/feltolt.php?para ... ey=ezapass
És így a PHP-ra egyszerűsödik a feladat....
SQL: necces, külső szerverről való hozzáférés nagyon ritka.
txt: le kell tölteni, módosítás, és feltöltés.
Egyszerű: ahol FTP vagy SQL van, ott van PHP is.
Hívd meg a PHP-t:
http://www.sajatlap.hu/feltolt.php?para ... ey=ezapass
És így a PHP-ra egyszerűsödik a feladat....
Re: ENC28J60 WebController....
Szia!GPeti írta:Van arra lehetőség hogy az ENC28J60 vagy valamelyik Wiznet csippel ne egy weboldalt hozzak létre hanem mySQL adatbázisba esetleg ftp szerveren levő txt file-ba írjak adatokat?
Csak programozás téren írnám le a véleményem, enc28j60-at, és hasonlót soha nem használtam még, de gondolom nem erre akarsz adatbázis szervert írni, mert az pl túllép egy mikrokontroller pár kb-os lehetőségein: Ha az enc28j60-al weboldalt akarsz csinálni, akkor szervert hozol létre, ha mysql adatbázisba akarsz írni, akkor klienst akarsz csinálni az enc28j60-at használó eszközödből, ami csatlakozik pl egy mysql szerverhez? Ez nagy különbség. Egyébként nem kell megvalósítanod a mySQL protokollját, vagy az FTP protokollt a kliensben sem, szerveben sem, pl feltehetsz egy saját készítésű szerver programot valami számítógépre, ami a saját protokollodon kommunikál az eszközöddel, a lehető legegyszerűbb módon, tehát a saját programod (ami már nem mikrokontrolleren fut) lehet egy interfész az SQL adatbázis (vagy FTP szerver), és az eszköz között, amiben az enc28j60 van. Ez az egyszerű protokoll lehet pl http hívás is.
Még egy megjegyzés: Ha pl a http hívást választod, akkor teheted a programod a "felhőbe" (így már nem csak PHP van, hanem python, java stb..), aminek van http elérése, amilyen pl a heroku, vagy az appengine, és akkor nem is kell az interneten lógó számítógép (ami otthon folyamatosan bekapcsolva van). Ezeknek van ingyenes regisztrációja is (erőforrás limitekkel, de otthoni/kisebb alkalmazásoknak bőven elég), teljesen ingyen futtathatsz alkalmazást rajtuk, és pl adatbázist is biztosítanak (meg még 1000 más szolgáltatást). Az enc28j60 pedig az általad megvalósított lehető legegyszerűbb módon kommunikálhat velük. stb... a lehetőségeket már szabadon lehet kombinálni. (A heroku vagy a google appengine csak két lehetőség, van még 100 másik.)
Üdv!
Re: ENC28J60 WebController....
Miért van az hogy az Arduino-s példákban csak a MAC, és IP címet tudom állítani, a Bascom-ban pedig a W5100-hoz pedig a submask, getaway is tudom állítani, a kis enc28j60 as minta hőmérőt szerettük volna kötni helyi hálózatra de állítólag az ip címen kívül ezeket is be kellene tudni állítani hogy működjön.
Re: ENC28J60 WebController....
Benne van az a ENCben is, csak drotozva:
Subnet:
255.255.255.0 (192.168.x.y hálózatokhoz)
Ha 10.x.y.z hálózatod, akkor 255.255.240.0 a subnet.
Gateway: 192.168.1.15 háló esetén a default gateway: 192.168.1.1
Az első három cím azonos, a negyedik értéke fix 1.
Ethernet.cpp:
Subnet:
255.255.255.0 (192.168.x.y hálózatokhoz)
Ha 10.x.y.z hálózatod, akkor 255.255.240.0 a subnet.
Gateway: 192.168.1.15 háló esetén a default gateway: 192.168.1.1
Az első három cím azonos, a negyedik értéke fix 1.
Ethernet.cpp:
Kód: Egész kijelölése
void EthernetClass::begin(uint8_t *mac, uint8_t *ip, uint8_t *gateway)
{
uint8_t subnet[] = { 255, 255, 255, 0 };
begin(mac, ip, gateway, subnet);
}
void EthernetClass::begin(uint8_t *mac, uint8_t *ip)
{
uint8_t gateway[4];
gateway[0] = ip[0];
gateway[1] = ip[1];
gateway[2] = ip[2];
gateway[3] = 1;
begin(mac, ip, gateway);
}
Re: ENC28J60 WebController....
Róbert, az ENC28J60-as nem EthernetClass-t használ.
Más libek vannak, pl. az EtherCard, ott pedig staticSetup-pal lehet beállítani.
Mindenesetre ahogy látom, más filozófiával működik, nem automatikus kitöltéssel.
Más libek vannak, pl. az EtherCard, ott pedig staticSetup-pal lehet beállítani.
Mindenesetre ahogy látom, más filozófiával működik, nem automatikus kitöltéssel.
Re: ENC28J60 WebController....
Ez az ENC28J60 eljáráskönyvtárában van benne!
De nézd meg a cpp/h állományokat. Azokban van venne...
De nézd meg a cpp/h állományokat. Azokban van venne...