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.