Vaš e-poštni naslov ne bo objavljen. Obvezna polja so označena *
Uporabljam arduino-uno, vendar ne morem dostopati do svoje spletne strani.i sem že dodelil ip naslov arduino. ko zaženem arduino (ctrl + shift + m), prikaže izhod. Ko pa dostopam do svoje spletne strani, se prikaže "ne morete" doseči to spletno stran.
Moj spletni strežnik dobro deluje z lokalnim IP in lokalnim omrežjem z ethernetnim kablom.
delo s posredovanjem vrat / javnim IP pri uporabi druge omrežne povezave do mobilne telefonije, kot je omenjeno v članku.
ne deluje v mojem mobilnem ali prenosnem računalniku, ko uporabljam usmerjevalnik Wifi / Wireless v istem omrežju z lokalnim IP-om. Prosim, obvestite me, kam grem narobe.
Potrebujem pomoč pri tej kodi, ker se v primeru nujnih primerov za 4 (visoko) ne morem vrniti v prejšnje stanje... kako naj to storim ???
// SAMO ARDUINO 1.0+
// SAMO ARDUINO 1.0+
#include
#include
logično branje = napačno;
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
bajt ip [] = {192, 168, 16, 71}; // Samo ročna nastavitev
// prehod bajtov [] = {192, 168, 1, 1}; // Samo ročna nastavitev
// podmrežje bajtov [] = {255, 255, 255, 0}; // Samo ročna nastavitev
// če je treba spremeniti naslov MAC (zelo redko)
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
Strežnik EthernetServer = EthernetServer (80); // vrata 80
////////////////////////////////////////////////////////////////////////
nična namestitev () {
Serial.begin (9600);
// Zatiči 10,11,12 in 13 uporabljajo eternetni ščit
pinMode (2, INPUT); // SWICH
pinMode (3, IZHOD); //LAMP
pinMode (4, INPUT); // NAPREJ
pinMode (6, INPUT);
Ethernet.begin (mac);
//Ethernet.begin (mac, ip, prehod, podomrežje); // za ročno nastavitev
server.begin ();
Serial.println (Ethernet.localIP ());
}
void loop () {
digitalWrite (6, NIZKA);
if ((digitalno branje (4) == LOW) || (digitalno branje (6) == HIGH))
{
če (digitalno branje (2) == HIGH)
{
digitalWrite (3, HIGH);
zamuda (5000);
digitalWrite (3, NIZKA);
}
}
checkForClient (); // poslušajte dohodne stranke in obdelajte qequest.
}
void checkForClient () {
Odjemalec EthernetClient = server.available ();
če (odjemalec) {
// Zahteva http se konča s prazno vrstico
logični tokLineIsBlank = res;
boolean sentHeader = napačen;
medtem ko (client.connected ()) {
če (client.available ()) {
če (! poslalHeader) {
// pošlje standardno glavo odziva http
client.println ("HTTP / 1.1 200 OK");
client.println ("Vrsta vsebine: besedilo / html");
odjemalec.println ();
sentHeader = res;
}
char c = client.read ();
če (branje && c == '') branje = napačno;
če (c == '?') branje = res; // našel?, začnite brati informacije
če (branje) {
Serijski odtis (c);
stikalo (c) {
primer '4':
// dodajte kodo, da se sproži 2
sprožilec (4, odjemalec);
odmor;
primer '6':
// dodajte kodo, da se sproži na 3
sprožilec (6, odjemalec);
odmor;
}
}
če (c == '\ n' && currentLineIsBlank) prekinitev;
če (c == '\ n') {
currentLineIsBlank = res;
} else if (c! = '\ r') {
currentLineIsBlank = napačno;
}
}
}
zamuda (1); // dajte spletnemu brskalniku čas za sprejemanje podatkov
odjemalec.stop (); // zaprete povezavo:
}
}
nični sprožilecPin (int pin, odjemalec EthernetClient) {
// utripa pin - odjemalec je potreben samo za izhod HTML.
client.print ("Vklop pin");
odjemalec.println (pin);
client.print ("");
če (pin, VISOK)
{
digitalWrite (4, HIGH);
digitalWrite (6, HIGH);}
}
Ali ne bi bilo to lažje in ceneje narediti z Raspberry Pi? Nisem prepričan, ker Arduino nikoli nisem uporabljal, vendar imam Pi.