Stap 3: Arduino verbinden met internet
Met behulp van het voorbeeld van de webserver is het echt gemakkelijk om te zetten uw gegevens op internet.De vorige schets bewerkt kon worden om acept http-aanvraag:
#include
#include
#include
dht11 DHT11;
#define nSensores 3
int puertos [nSensores];
float fHumedades [nSensores];
float fTemperaturas [nSensores];
int iNVisitas = 0;
Voer een MAC-adres en het IP-adres voor uw controller hieronder.
Het IP-adres zal afhankelijk van uw lokale netwerk zijn:
byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xEE, 0xEE};
byte ip [] = {192,168,1, 177};
Initialiseren van de Ethernet server bibliotheek
met het IP-adres en de poort die u wilt gebruiken
(poort 80 is de standaardwaarde voor HTTP):
Server server(666);
VOID Setup
{
de Ethernet-verbinding en de server starten:
Ethernet.begin (mac, ip);
server.begin();
Serial.begin(115200);
Puertos = {2,3,4};
}
VOID getdata(int iIndice)
{
int chk = DHT11.read(puertos[iIndice]);
fHumedades [iIndice] =-1;
fTemperaturas [iIndice] =-1;
Serial.Print ("Sensor");
Serial.Print(iIndice);
Serial.Print("");
schakelaar (chk)
{
Case 0:
fHumedades [iIndice] = (float) DHT11.humidity;
Serial.Print (fHumedades [iIndice], 2);
Serial.Print ("%");
fTemperaturas [iIndice] = (float) DHT11.temperature;
Serial.Print (fTemperaturas [iIndice], 2);
Serial.println ("o C");
breken;
kast -1: Serial.println ('Checksum-fout'); breken;
kast -2: Serial.println ("time-out fout"); breken;
standaard: Serial.println ('onbekende fout'); breken;
}
}
void loop
{
luisteren voor clients voor inkomende
Cliënt = server.available();
Als (client) {}
een http-verzoek eindigt met een lege regel
Boole currentLineIsBlank = waar;
terwijl (client.connected()) {}
Als (client.available()) {}
char c = client.read();
Als u toegang hebt verkregen tot het einde van de regel (ontvangen een newline
teken) en de regel is leeg, de http-aanvraag is beëindigd,
zodat u kunt een antwoord sturen
Als (c == "" & & currentLineIsBlank) {}
verzenden van een standaard http-antwoordheader
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println();
uitgang de waarde van elke analoge invoer pin
voor (int i = 0; i / / voor (int analogChannel = 0; analogChannel < 6; analogChannel ++) {}
client.Print ("sensor");
client.Print(i);
client.Print(":");
if(fHumedades[i]==-1)
client.Print ("fout leyendo el-sensor");
anders
{
client.Print (fHumedades [i], 2);
client.Print ("%");
client.Print (fTemperaturas [i], 2);
client.println ("o C");
}
client.println("
");
}
client.Print((iNVisitas++)/2);
client.println ("visitas
");
breken;
}
if (c == ' ') {
je begint een nieuwe regel
currentLineIsBlank = true;
}
anders als (c! = "") {}
je hebt gekregen een teken op de huidige regel
currentLineIsBlank = false;
}
}
}
de web browser tijd geven om te ontvangen van de gegevens
delay(1);
de verbinding sluiten:
client.stop();
}
anders
{
for (int i = 0; ik getdata(i);
delay(200);
}
}
Waar ben ik met behulp van mijn goede netwerkconfiguratie. Om uw configuratie gebruikt, alleen de mac- en IP-waarden te wijzigen.
U kunt aansluiten op mijn eigen arduino server om te zien de temperatuur van de kamer van mijn server