Sähköpostiosoitettasi ei julkaista. pakolliset kentät on merkitty *

Käytän arduino-unoa, mutta en pääse Web-sivulleni. Minulla oli jo osoitettu IP-osoite arduinolle. Kun suoritan arduinoa (ctrl + shift + m), se näyttää tulosteen. Mutta kun pääsen verkkosivulleni, siinä näkyy "et voi" tavoitettu tälle verkkosivulle.

Webserver toimii hyvin paikallisen IP: n ja ethernet-kaapelilla varustetun paikallisverkon kanssa.

työskentely portin edelleenlähetysten / julkisen IP: n kanssa, kun käytetään muuta verkkoyhteyttä matkapuhelimeen, kuten artikkelissa mainitaan.

ei toimi matkapuhelimessani tai kannettavassani, kun käytän langatonta / langatonta reititintä samassa verkossa paikallisen IP: n kanssa. Kerro minulle, mihin menen pieleen.

Tarvitsen apua tässä koodissa, koska hätätilanteessa 4 (korkea) en voi palata edelliseen tilaan... miten voin tehdä tämän ???

// VAIN ARDUINO 1.0+
// VAIN ARDUINO 1.0+

#sisältää
#sisältää
boolen lukema = väärä;

////////////////////////////////////////////////////////////////////////


//CONFIGURE
////////////////////////////////////////////////////////////////////////
tavu ip [] = {192, 168, 16, 71}; // Vain manuaalinen asennus
// tavun yhdyskäytävä [] = {192, 168, 1, 1}; // Vain manuaalinen asennus
// tavun aliverkko [] = {255, 255, 255, 0}; // Vain manuaalinen asennus

// jos on tarpeen muuttaa MAC-osoitetta (erittäin harvinainen)
tavu mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

EthernetServer-palvelin = EthernetServer (80); // portti 80
////////////////////////////////////////////////////////////////////////

tyhjä asennus () {
Serial.begin (9600);

// Ethernet-suoja käyttää tappeja 10, 11, 12 ja 13

pinMode (2, INPUT); // SWICH
pinMode (3, OUTPUT); //LAMP
pinMode (4, INPUT); // HÄTÄTILA
pinMode (6, INPUT);

Ethernet.begin (mac);
//Ethernet.begin (mac, ip, yhdyskäytävä, aliverkko); // manuaalista asennusta varten

server.begin ();
Serial.println (Ethernet.localIP ());

}

tyhjä silmukka () {

digitalWrite (6, LOW);
if ((digitalRead (4) == LOW) || (digitalRead (6) == HIGH))
{
if (digitalRead (2) == KORKEA)
{
digitalWrite (3, HIGH);
viive (5000);
digitalWrite (3, LOW);

}

}

checkForClient (); // kuuntele tulevia asiakkaita ja käsittele qequest.

}

void checkForClient () {

EthernetClient-asiakas = palvelin.on käytettävissä ();

if (asiakas) {

// http-pyyntö loppuu tyhjällä rivillä
boolean currentLineIsBlank = totta;
boolean sentHeader = false;

while (client.connected ()) {
if (asiakas.saatavissa ()) {

if (! sentHeader) {
// lähetä standardi http-vastausotsikko
client.println ("HTTP / 1.1 200 OK");
client.println ("Sisältö-tyyppi: teksti / html");
client.println ();
sentHeader = totta;
}

char c = asiakas.luku ();

if (lukeminen && c == '') lukeminen = epätosi;
if (c == '?') lukema = tosi; // löysitkö?, alkaa lukea tietoja

jos (lukeminen) {
Sarjajälki (c);

kytkin (c) {
tapaus '4':
// lisää koodi tähän käynnistääksesi 2
triggerPin (4, asiakas);
tauko;
tapaus '6':
// lisää koodi tähän käynnistääksesi 3
triggerPin (6, asiakas);
tauko;

}

}

if (c == '\ n' && currentLineIsBlank) tauko;

if (c == '\ n') {
currentLineIsBlank = totta;
} muuten, jos (c! = '\ r') {
currentLineIsBlank = vääriä;
}

}
}

viive (1); // anna selaimelle aikaa tietojen vastaanottamiseen
client.stop (); // sulje yhteys:

}

}

void triggerPin (int-pin, EthernetClient-asiakas) {
// vilkku pin - Asiakas tarvitaan vain HTML-tulostetarkoituksiin.
client.print ("Kytkentätappi");
asiakas.println (pin);
client.print ( "");

if (nasta, KORKEA)
{
digitalWrite (4, HIGH);
digitalWrite (6, HIGH);}

}

Eikö olisi helpompaa ja halvempaa tehdä tämä Raspberry Pi: llä? En ole oikein varma, koska en ole koskaan käyttänyt Arduinoa, mutta minulla on Pi.