Skicka sensordata (DHT11 & BMP180) till ThingSpeak med en Arduino, via kabel eller WiFi (ESP8266) (4 / 5 steg)

Steg 4: En Bonus

I fall du inte vill använda Thingspeak men vill bara din egen webbserver: Använd detta program:

/*
* DHT11 Sensor kopplad till stift 2
< en href = "http://arduino-info.wikispaces.com/ethernet-temp-humidity" rel = "nofollow" > http://arduino-info.wikispaces.com/ethernet-temp-...>
Baserat på koden av David A. Mellis & Tom Igoe
Av diy_bloke
* bmp180sensor på a4/a5

*/
/ *---(Import behövs bibliotek)---* /
#include < SPI.h >
#include < Ethernet.h >
#include < dht11.h >
#include < Wire.h >
#include < Adafruit_Sensor.h >
#include < Adafruit_BMP085_U.h >
#include < Adafruit_BMP085.h >
/ *---(Deklarera konstanter och Pin nummer)---* /
#define DHT11PIN 2 / / The temperatur/hygrometergivare

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};

/ *---(Deklarera objekt)---* /
IP-adress ip (192,168,1, 177);

Starta servern Ethernet-biblioteket
med IP-adress och port vill du använda
(port 80 är standard för HTTP):
EthernetServer server(80);

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
Adafruit_BMP085 bmp;
dht11 DHT11; Objektet Sensor
/ *---(Deklarera variabler)---* /

void setup() / *** SETUP: kör en gång *** /
{
Öppna seriell kommunikation och vänta på port att öppna:
Serial.BEGIN(9600);
tag (!. Serial) {
; vänta för seriell port att ansluta. Behövs för Leonardo endast
}

Starta Ethernet-anslutningen och servern:
Ethernet.BEGIN (mac, ip);
Server.BEGIN();
Serial.Print (F ("servern är på"));
Serial.println(Ethernet.localIP());
} //--(end setup)---

void loop() / *---(LOOP: kör OVER AND OVER AGAIN)---* /
{
lyssna efter inkommande klienter
EthernetClient klient = server.available();
om (klient) {
Serial.println F ("ny kund").
en http-förfrågan avslutas med en tom rad
booleska currentLineIsBlank = sant;
samtidigt (client.connected()) {
om (client.available()) {
char c = client.read();
Serial.write(c);
Om du har fått till slutet av raden (fick en newline
karaktär) och raden är tom, http-begäran har avslutats,
så du kan skicka ett svar
om (c == '\n' & & currentLineIsBlank) {
Skicka ett standard http-svarshuvud
client.println ("HTTP/1.1 200 OK");
client.println ("Content-Type: text/html");
client.println ("Connnection: Stäng");
client.println();
client.println ("<! DOCTYPE HTML > ");
client.println ("< html >");
lägga till en meta refresh-taggen, så webbläsaren drar igen var femte sekund:
client.println ("< meta http-equiv = \"refresh\"innehåll = \"5\">");
client.println ("< head >");
client.println ("< title >");
client.println F ("My hem miljö").
client.println ("</title >");
client.println ("</head >");
client.println ("< body >");
client.Print (F ("< h3 > My hem miljö </h3 >"));
client.println ("< br/>");

/ *---(Får sensor läsa, beräkna och skriva ut resultaten)---* /

int chk = DHT11.read(DHT11PIN);

Serial.Print (F ("Läs sensor:"));
Switch (chk)
{
fall 0:
Serial.println(F("OK"));
bryta;
fall -1:
Serial.println F ("Checksum error").
bryta;
fall -2:
Serial.println F ("Time out fel").
bryta;
standard:
Serial.println F ("okänt fel").
bryta;
}
/ * Få en ny sensor (BMP085) händelse * /
sensors_event_t händelse;
bmp.getEvent(&event);
//--------------
client.Print (F ("< tabell style =" border: 1px solid svart; bakgrundsfärg: vit; " > "));
client.Print F (< tr >< td >").
client.Print ("< font color ="röd"> temperatur </font > (° C):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println ((float) DHT11.temperature, 1);
client.println (F ("< br/>"));
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
client.Print ("< b > temperatur < /b > (° F):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println(Fahrenheit(DHT11.temperature), 1);
client.println ("< br/>");
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
client.Print ("< teckenfärg = 'blå' > luftfuktighet </font > (%):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println ((float) DHT11.humidity, 0);
client.println ("< br/>");
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
/*
client.Print ("< b > temperatur < /b > (° K):");
client.println(Kelvin(DHT11.temperature), 1);
client.println ("< br/>");
*/
client.Print ("< i > daggpunkt < /i > (° C):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println (daggpunkten (DHT11.temperature, DHT11.humidity));
client.println ("< br/>");
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
client.Print ("< i > dagg PointFast < /i > (° C):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println (dewPointFast (DHT11.temperature, DHT11.humidity));
client.println ("< br/>");
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").

om (! bmp.begin()) {
client.Print ("geen sensor");
}
annat
{
client.Print ("tryck (hPa):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println(bmp.readPressure()/100.0);
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
client.Print ("tryck (mmHg):");
client.Print (F ("< /td >< td align ="rätt">"));
client.println(bmp.readPressure()/133.3);
client.Print F ("< /td >< /tr >").
client.Print F (< tr >< td >").
client.println ("temperatur (° C):");
client.Print (F ("< /td >< td align ="rätt">"));
client.Print(bmp.readTemperature());
client.println ("< br/>");
}
client.Print F ("< /td >< /tr >").
client.Print (F ("</table >"));
/ * Visa resultatet (barometertrycket är åtgärd i hPa) * /

/ * Visa lufttrycket i hPa * /
/ * client.print ("tryck:");
client.println(Event.Pressure);
client.println ("hPa");
client.println ("< br/>");
*/

/ *---(Avsluta Sensor Läs)---* /
client.println ("</kropp >");
client.println ("</html >");
bryta;
}
om (c == "\n") {
du börjar en ny rad
currentLineIsBlank = sant;
}
annars om (c! = '\r') {
du har fått ett tecken på den aktuella raden
currentLineIsBlank = false;
}
}
}
de web webbläsare möjlighet att ta emot data
Delay(1);
stänga anslutningen:
client.stop();
Serial.println F ("klient disonnected").
}
} / / END Loop

/ *---(Förklara användaren skrivna funktioner)---* /
//
Celsius till Fahrenheit konvertering
dubbel Fahrenheit (dubbel celsius)
{
returnera 1,8 * celsius + 32.
}

Celsius till Kelvin konvertering
Dubbelrum Kelvin(double celsius)
{
returnera celsius + 273.15;
}

Daggpunkten funktion NOAA
Referens: < en href = "http://wahiduddin.net/calc/density_algorithms.htm" rel = "nofollow" > http://arduino-info.wikispaces.com/ethernet-temp-...>
dubbel daggpunkten (dubbel celsius, dubbel luftfuktighet)
{
dubbel A0 = 373.15 / (273.15 + celsius);
dubbla summan =-7.90298 * (A0-1).
SUMMA += 5.02808 * log10(A0);
Summa +=-1.3816e-7 * (pow (10, (11.344*(1-1/A0)))-1);
SUMMA += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1);
SUMMA += log10(1013.246);
dubbla VP = pow (10, SUM-3) * luftfuktighet;
dubbel T = log(VP/0.61078); Temp var
Return (241.88 * T) / 17.558-T,
}

delta max = 0.6544 wrt dewPoint()
5 x snabbare än dewPoint()
Referens: < en href = "http://en.wikipedia.org/wiki/Dew_point" rel = "nofollow" > http://arduino-info.wikispaces.com/ethernet-temp-...>
dubbel dewPointFast (dubbel celsius, dubbel luftfuktighet)
{
dubbel en = 17.271;
dubbel b = 237.7;
dubbel temp = (en * celsius) / (b + c) + log(humidity/100);
dubbel Td = (b * temp) / (a - temp);
returnera Td;
}
/ * (SLUTET) * /

Se Steg
Relaterade Ämnen

Skicka sensordata (DHT11 & BMP180) till ThingSpeak med en Arduino, använder ENC28J60 Ethercard

Obs: Detta instructable är för gamla ENC26J60 Ethershield och ethercard. Om du har den moderna WIZ5100 baserade Ethernetshield eller en ESP8266 gå besöka min andra instructable som jag nämner nedanOm ett och ett halvt år sedan jag publicerade baserat...

Kör två Nixie rör med en Arduino via ett skiftregister och två SN74141s.

Nixie rör är verkligen göra sval sett och blir ganska populär för sina "retro" utseende. Även om det finns ett antal tutorials ute på med nixie rör och några fina färdigförpackade enheter (se dessa trevliga sådana från ogi lumen och ArduiNIX) in...

Skicka varning plats informera till Twitter med hjälp av GPS med WIZwiki-W7500

Hej alla!Detta instructable har ett annat namn, "Vem bryr sig när jag har ett problem!".Syftet med detta projekt för att jaga roten i Alert situation.Det händer runt omkring oss ibland, ingen där nära oss när vi är i trubbel.På den tiden måste v...

Hur man gör LED blixt till musik med en Arduino

detta är en guide till gör en LED blinkar krets som "slår" mp3-fil på din dator, som kan lägga en awesome effekt till vilken enhet som helst med ljudet, eller ens ditt rum (om du utvidgar begreppet LED drivrutiner eller gott om motstånd/transist...

Hur man använder en 16 X 2 LCD uppvisning med en Arduino, TI Launchpad eller breadboarded MSP430

i den här videon instructable jag visa hur man koppla ett billigt 16 X 2 LCD-skärm upp till en Arduino, då en TI Launchpad MSP430 kör Energia, sedan en breadboarded MSP430.Dessa skärmar är billiga - jag fick min för $2.26 levereras på eBay. De endast...

Hemma temperaturövervakning med Raspberry Pi och Thingspeak (med BMP180)

Det är en ålder av IoT.Each dagen mer och fler människor ansluter sig till molnet. Så verkade det som göra orätt att temperatur/tryck givare och en raspberry pi B + (en nästan 1GHz pumpas upp odjuret) som låg runt tabellen dator. De behövs för att ko...

Bygga din första IOT med en Raspberry Pi, DHT11 sensor och Thingspeak.

Sakernas Internet eller Internet of Things är ett hett ämne! Enligt experterna allt kommer att vara ansluten till internet och alla våra enheter och deras data snart kommer bara en IP-adress från oss. Så var börjar du om du vill utforska världen av S...

Förvandla en gammal mobiltelefon till en data skickas enhet (med en arduino)

Vad gör denna enhet?När allt är klart kommer kombinationen av kretsar, arduino och modded cellphone kunna autonomt skicka data via texter via mobilnätet. Detta kan vara sensordata, till exempel från väder sensorer.Vad ska jag visa dig i den här guide...

Låg kostnad WIFI temperatur (DS18B20) datalogger baserad på ESP8266 med anslutning till thingspeak.com

Datalogger för temperatur baserat på ESP8266 och DS18B20 1-tråds temperaturgivare.På bara $5 ESP-01 styrelsen och DS18B20 sensor.Mjukvaran är skriven i LUA språk och körs direkt i ESP8266.Inga andra MCU!Steg 1: Del förteckning ESP-01 styrelsen - eBay...

Linkit en IoT: ansluten till Thingspeak

Linkit en är en arduino kompatibel styrelsen gjord av seeed studio och baserat på mediatek ARM chip. Målet med detta forum är att göra bärbara och IoT projektet easiear till beslutsfattare.Thingspeak är en IoT plattform som har varit allmänt använda...

STM32103: esp8266 NodeMCU ThingSpeak [med mbed.h]

I denna handledning kommer vi att gå att skicka analoga värdet av våra varierande Resistor till en fjärrserver (ThingSpeak.com) med hjälp av våra STM32F103RB Nucleo styrelsen via esp8266 som programmeras med hjälp av mbed.h.Projektet är indelat i föl...

Ansluta Nokia 3310 LCD till USB med hjälp av AVR

vad gör du med en gammal telefon, en mikrokontroller och massor av tid?Du ansluter den gamla telefonen LCD skärm till datorn USB naturligtvis!I detta projekt vi ska kommunicera med en Nokia 3310 LCD uppvisning via USB! Hur ska vi göra det? Vi kommer...

Anslutning av DIY IoT enheter till Internet med pfodApp

Hur du ansluter hemma och bort med hjälp av samma anslutningDetta instructabe omfattar hur du får din WiFi pfodDevice, IoT, ansluten till Internet. Det visar också hur pfodApp löser problemet med att inte kunna ansluta till din lokala enhet via Inter...

Konvertera doc till .jpeg med Office för Mac 2008

Detta "vänners kompatibla är om hur man tar ett Word-dokument och konvertera den till foto-filer på en gammal Mac med gamla mjukvaran. Det systemet jag använder är en svart MacBook c.2006 kör snö Leopard (10.6.8) med Office för Mac 2008 och iPhoto '...

Arduino Nano: Temperatur och fuktighet DHT11/DHT21/DHT22 Sensormodul med Visuino

DTH11 / DTH21 / DTH22 och AM2301är mycket populära kombinerade temperatur och luftfuktighet Arduino sensorer.I detta Instructable, ska jag visa dig hur lätt det är att programmera Arduino att använda dem, med Visuino - en enkel att använda grafiska u...

Lägga till knappar i din X52-Pro Joystick med en Arduino mikro

Jag har en Saitek X52-Pro HOTAS setup som jag använder för Elite: farligt. Det är en fantastisk joystick men det kan göra med bara några fler knappar. Med en Arduino Micro kan du utöka detta (eller någon annan) joystick för alla spel som kommer att s...

Skicka och ta emot e-post med en Net10 telefon

skicka och ta emot e-post med en Net10 telefon*************TeleFlip är död - men det finns andra resurser för de "enkla" (och billigt) mobiltelefon!Steg 1: Hittade jag några snygga Instructibles om skicka och ta emot e-post med en enkel Net10 ty...

Hur man använder Twitter till Connect med seger Baptist Church

Twitter är en Internettjänst på World Wide Web (WWW) som gör korta textmeddelanden till att sändas till hela världen, eller bara dina vänner, beroende på vad du vill.Du kan skicka meddelanden till Twitter via e-post eller mobiltelefon, och dina vänne...

Från filen till kniv (med enkla verktyg)

en bra "bushcraft" kniv är ett måste för varje friluftsmänniska.Det är ett verktyg som varar en livstid.Skulle inte det vara häftigt att göra ett sådant avgörande, varaktig verktyg själv?Det finns många olika typer av knivar och många sätt att g...