Kontrollera alla ljus eller elektrisk apparat med du Tablet PC eller smartphone (wifi) (8 / 9 steg)
Steg 8: Lägga till sensorer
Det är en bra idé att lägga till minst en sensor till mona växeln. Därför kommer att jag förklara exakt hur du lägger till ett fotomotstånd, en dht temperatur och luftfuktighetsgivare och en mycket exakt vattentät DS18b20 temperaturgivare. Det är mycket lätt och billigt att genomföra dessa sensorer. Några praktiska exempel varför det är en bra idé:
1) du vill ha de trädgård lampor att stänga av när första solljuset träffar din vackra japanska zen trädgård
2) efter att du aktiverat ditt badrum värmare via telefonen, vill du att det ska stängas av automatiskt när temperaturen i rummet överstiger 30 grader celcius.
3) när luftfuktigheten överstiger 20%, vill du en fläkt för att slå på.
Även om du inte planerar att använda en sensor nu, är det fortfarande en bra idé att inkludera en eftersom det är mycket svårare att göra det efter att du har limmade och boxed allt.
Obs om sensorer:De flesta sensorer finns i två versioner: bara sensorn och en sköld-version som är bakbord vänliga. Om utrymme eller pengar frågor, alltid gå för versionen utan sköld. De är mycket billigare och du kan enkelt löda vissa förbindande kablar till sensorer kontakter att göra den breadboardfriendly och därefter gör det lätt att direkt löda till produktens slutliga. Kolla bild 5.
Alla sensorer jag diskutera fungera både med 3, 3V och 5V. Enligt min erfarenhet Wemos hanterar båda spänningar som indata till dess stift men det är bäst att använda 3, 3V och 5v inte som jag gjorde i scheman. Detta gäller särskilt för fotomotstånd.
Fotomotstånd:
Ett fotomotstånd kommer att berätta hur ljusa miljön är på en skala från 0 till 255. För mest praktiska homeautomation applikationer är detta mer än tillräckligt exakta. Köp din photoresistors här för cirka 3 cent styck. Anslut din fotomotstånd till 3, 3v på ena sidan och A0 och gnd på den andra med en 10 k resistor mellan fotomotstånd och gnd. (se bild 1 och 2 - om du vill göra cool grafik som mig, kolla in fritzing.com!)) Notera värdet på motståndet kommer att förändra dina avläsningar. Utan motståndet blir dina avläsningar gibrish, så var inte lata! ;). Kod klokt det är så enkelt som att göra en analog läsa av pin A0. Hitta koden nedan och bifogade.
Koden:
Rutinen installationsprogrammet körs en gång när du trycker på reset:
void setup() {/ / initiera seriell kommunikation 115200 bitar per sekund:
Serial.BEGIN(9600); }
loop rutinen körs för evigt om och om igen:
void loop() {
Läs input på analoga stift 0:
int sensorValue = analogRead(A0);
Konvertera analog läsning (som går från 0 - 1023) till en spänning (0 - 3.2V):
flyta spänning = sensorValue * (3.2 / 1023.0);
skriva ut värdet du läsa: Serial.println(voltage); }
DHT SENSOR
En DHT-sensor ger dig information på både fukt och temperatur samtidigt, medan du använder endast 1 pin. DHT 11 (länk att köpa) är ok exakt för bara lite över en dollar. Använd en DHT 22 om precision är mycket viktigt (Tänk bryggerier, växthus). Upphakning av det är mycket lätt. Anslut stift 1 till 5v, stift 2 till alla tillgängliga digitala pin och pin 4 till marken. Men sätta en 4, 7kresistor från raden data till 5v eller det kommer inte att fungera - jag var tvungen att ta reda på den hårda vägen... (se bild 3 och 4). Nedan finner du standard koden för att få båda sensorerna kör. Observera att du måste undvika alla förseningar i din kod när du arbetar med nätverket. Också, enligt min erfarenhet dht 11 kan vara instabilt när man läser enskilda temperatur värden. Därför genomföra jag kod som tar genomsnittet för de senaste 10 avläsningarna. Här är hur jag gör det:
temperatureDHT1 = dht.readTemperature();
temperature2 = (((temperatureDHT1 + temperatureDHT2 + temperatureDHT3 + temperatureDHT4 + temperatureDHT5 + temperatureDHT6 + temperatureDHT7 + temperatureDHT8 + temperatureDHT9 + temperatureDHT10) / 10) + temperatureDHTlast) / 2;
ta ett genomsnitt av de senaste tio temperaturavläsningar för dht11, vi gör detta för att få ett jämnare resultat. I genomsnitt dht är korrekt men enskilda avläsningar är aweful. Sedan beräkna medelvärdet för de sista 2 genomsnitt för ett stabilt resultat.
temperatureDHTlast = temperature2;
Serial.println (temperatur).
Serial.println(temperature2);
FLYTTA ALLA TIDIGARE TEMPERATUREREADINGS AV DEN DHT11 PLATSEN UPP:
temperatureDHT10 = temperatureDHT9; temperatureDHT9 = temperatureDHT8; temperatureDHT8 = temperatureDHT7; temperatureDHT7 = temperatureDHT6; temperatureDHT6 = temperatureDHT5; temperatureDHT5 = temperatureDHT4; temperatureDHT4 = temperatureDHT3; temperatureDHT3 = temperatureDHT2; temperatureDHT2 = temperatureDHT1;Obs: Sätta din DHT sensor på utsidan av ditt projekt. Din elektronik ge värme och kommer att påverka ditt resultat om DHT är på insidan.
Weekendpaket DHT koden:Observera att du måste hämta DHT biblioteket först. Koden är också fäst.
Skrivet av ladyada, offentlig
#include "DHT.h"
#define DHTPIN D4 / / vilken pin vi är ansluten till
Avkommentera oavsett vilken typ du använder!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22
/ / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Ansluta stift 1 (till vänster) av sensorn till + 5V
Obs: Om med en styrelse med 3.3V logik som en Arduino vederbörlig ansluta stift 1
till 3.3V istället för 5V! Ansluta stift 2 av sensorn till vad din DHTPIN är
Anslut stift 4 (till höger) av sensorn till marken / / ansluta en 10K motstånd från stift 2 (data) till stift 1 (power) av sensorn
Initiera DHT sensor.
Observera att äldre versioner av detta bibliotek tog en valfri tredje parameter till
justera tidsinställningarna för snabbare processorer. Den här parametern behövs inte längre
/ / som nuvarande DHT läsa algoritm justerar sig arbeta på snabbare procs. DHT dht (DHTPIN, DHTTYPE),
void setup() {Serial.begin(9600);
Serial.println ("DHTxx test!");
DHT.BEGIN();
}
void loop() {
Vänta några sekunder mellan mätningarna. Delay(2000);
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)
flyta h = dht.readHumidity();
Läs temperatur som Celsius (standard)
flyta t = dht.readTemperature();
Läs temperatur som Fahrenheit (isFahrenheit = true)
flyta f = dht.readTemperature(true);
Kontrollera om någon läser misslyckades och avsluta tidigt (för att försöka igen).
om (isnan(h) || isnan(t) || isnan(f)) {
Serial.println ("kunde inte läsa från DHT sensorn!");
hemkomst.
}
Beräkna Värmeindex i Fahrenheit (standard)
flyta hif = dht.computeHeatIndex (f, h);
Beräkna Värmeindex i Celsius (isFahreheit = false)
flyta hic = dht.computeHeatIndex (t, h, false);
Serial.Print ("luftfuktighet:");
Serial.Print(h);
Serial.Print ("% \t");
Serial.Print ("temperatur:");
Serial.Print(t); Serial.Print ("* C");
Serial.Print(f); Serial.Print ("* F\t");
Serial.Print ("Värmeindex:");
Serial.Print(HIC);
Serial.Print ("* C");
Serial.Print(HIF);
Serial.println ("* F");
}
DS18b20 vattentät temperaturgivare
Detta är en mycket exakt sensor som kan användas under vatten. Till skillnad från DHT ger det inte information om luftfuktighet. Det fungerar riktigt bra både i öppen luft och vatten.
Köpa det härI pic 7 hittar du schematiskt. Igen, ägna uppmärksamhet åt motståndet eller sensorn fungerar inte!
För detta behöver du dallas sensor bibliotek och en tråd bibliotek . Koden för att få denna sensor att arbeta är lätt att hitta i dallas sensor exemplen "enkla". Se bild 8 för dess läge.