Visa data på en webbplats - elektroniska potten [Arduino Nano + Ethernet Shield] (2 / 3 steg)
Steg 2: Programvara för Arduino
/*
E-Pot v.1.0
------------------------
Författare: Jan Pedryc
E-post: jan.pedryc
Datum: 23.11.2015
För mer information om detta projekt, kolla http://www.janped.com
------------------------
Detta är koden för projektet E-potten. De viktigaste syftena med detta
koden är:
1. upprätta anslutning - Ethernet-shield
2. konfiguration av luftfuktighet modulen DHT11
3. konfiguration av fotomotstånd
SLINGA:
(ungefär en gång varje timme)
en) att få data från sensorer
b) förbereder en sträng (data) för _POST begäran
c) skicka data med hjälp av porten till sin destination
*/
#include < SPI.h >
#include < Ethernet.h >
#include < DHT.h >
---Web Server CONFIG
Ange en MAC-adress och IP-adressen för din controller nedan.
IP-adressen kommer att bero på ditt lokala nätverk:
byte [mac] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IP-adress ip(192,168,0,177);
IP-adress gateway(192,168,0,1);
IP-adress subnet(255,255,255,0);
EthernetClient klient;
---Luftfuktighet modul CONFIG
#define DHTPIN 2 / / vilken pin vi är ansluten till
#define DHTTYPE DHT11 / / DHT 11
DHT dht (DHTPIN, DHTTYPE);
---Fotomotstånd CONFIG
int lightPin = 0; Variabel lagrar värdet från fotomotstånd
int PRvalue = 0; Ytterligare variabel lagrar värdet att jämföra
int PRlight = 0; Står för ljus närvaro (på/av)
Strängdata; Den här strängen innehåller beredda data
som vi kommer att skicka som en POST-begäran
void setup() {
Öppna seriell kommunikation och vänta på port att öppna:
Serial.BEGIN(115200);
/*
För Arduino Leonardo användare - avkommentera denna del:
*/
tag (!. Serial) {
// ;
// }
Serial.println ("seriell anslutning etablerad");
om (Ethernet.begin(mac) == 0) {
Serial.println ("kunde inte konfigurera Ethernet via DHCP");
}
DHT.BEGIN();
Serial.println ("DHT11 anslutning etablerad");
data = "";
}
void loop() {
Delay(1000);
---Luftfuktighet modul åtgärder
Serial.println ("fuktighet modul ACTION");
Vänta några sekunder mellan mätningarna.
int t = 0; temperaturen
int h = 0; luftfuktighet
Läst temperatur eller fuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla"
(det är en mycket långsam sensor)
h = dht.readHumidity();
Delay(500);
Läs temperatur som Celsius (standard)
t = dht.readTemperature();
Delay(500);
Kontrollera om någon läser misslyckades och avsluta tidigt (för att försöka igen).
om (isnan(h) || isnan(t)) {
Serial.println ("kunde inte läsa från DHT sensorn!");
hemkomst.
}
---Foto Resistor åtgärder
PRvalue = analogRead(lightPin);
500 är valfria i det här fallet. Du bör testa den
fotomotstånd i din miljö och bestämma hur
känsliga sensorn bör vara
om (PRvalue > 500) {
PRlight = 1; 1 betyder i mitt fall att det finns tillräckligt med ljus
}
annat {
PRlight = 0; 0 betyder att det finns unefficient ljus
}
Serial.print & Serial.println kommandon är valfria
(Jag använde dem för att testa)
Serial.Print ("Temp:");
Serial.println(t);
Serial.Print ("nynna:");
Serial.println(h);
Serial.Print ("ljus:");
Serial.println(PRlight);
Förbereda data från sensorer att skicka via den
Ethernet-shield
data = "ahum1 =" + String(h) + "& temp1 =" + String(t) + "& ljus =" + String(PRlight);
Serial.println(data); För teständamål
---Ethernet Shield åtgärder
om (client.connect ("www.janped.com", 80)) {/ / din domän
Serial.println ("klient ansluten.");
client.println ("POST /add.php HTTP/1.1");
client.println ("Host: janped.com"); Din domän
client.println ("Content-Type: application/x-www-formuläret-urlencoded");
client.println ("anslutning: Stäng");
client.println ("User-Agent: Arduino/1.0");
client.Print ("Content-Length:");
client.println(data.length());
client.println();
client.println(data);
}
om (client.connected()) {
client.stop();
}
Nu vänta ungefär en timme
1000ms * 60 = 60 000ms = 1 min
60 000ms * 60 = 3 600 000ms = 1 h
Funktionen delay() bör veta är det en lång heltal,
Det är därför det finns ett "L" ingår i slutet
Delay(3600000L);
}
Jag försökte kommentera allt där kan uppstå några problem. Om något är oklart eller koden fungerar inte som den ska, vänligen kontakta mig på något sätt.
Du kan hitta en mer detaljerad beskrivning av koden på