Indholdsfortegnelse:

IDC2018IOT Fortæl mig, hvornår AC -en skal slukkes: 7 trin
IDC2018IOT Fortæl mig, hvornår AC -en skal slukkes: 7 trin

Video: IDC2018IOT Fortæl mig, hvornår AC -en skal slukkes: 7 trin

Video: IDC2018IOT Fortæl mig, hvornår AC -en skal slukkes: 7 trin
Video: Mokey's Show - 425 - Math 2024, Juli
Anonim
Image
Image

Mange af os, især om sommeren, bruger AC næsten nonstop, når vi i virkeligheden på bestemte tidspunkter af dagen bare kan åbne et vindue og nyde en dejlig brise. Vi bemærkede også personligt, at vi nogle gange endda bare glemmer at slukke for AC, når vi forlader rummet og spilder energi og penge.

Den løsning, vi vil bygge, vil sammenligne indetemperaturen med ydersiden, og når de er tæt nok, giver det os besked via Facebook Messanger om, at det er tid til at åbne et vindue og give AC lidt hvile.

Vi vil også lave en anden mekanisme til at underrette os, når vi glemte AC'en og forlod rummet.

Trin 1: Lidt flere detaljer

Vi indsamler data fra 4 forskellige sensorer:

  • To DHT -sensorer samler temperaturen inde i huset og uden for huset.
  • Én PIR -sensor registrerer bevægelse i rummet.
  • En Electret -mikrofon bruges til at registrere vinden, der kommer ud fra AC -udluftningen, en enkel og pålidelig måde at afgøre, om AC er tændt.

Dataene fra sensorerne vil blive behandlet og sendt til Blynk, hvor de vil blive vist i en grænseflade, vi vil oprette. Vi vil også udløse IFTTT -hændelser for at give brugeren besked, når han kan åbne et vindue i stedet for AC, og når han glemte AC'en og forlod rummet i en foruddefineret periode.

Blynk -grænsefladen giver os også en måde at ændre relevante indstillinger i henhold til brugerpræferencer, som vi vil diskutere mere detaljeret senere.

Nødvendige dele:

  1. WiFi -modul - ESP8266
  2. PIR sensor.
  3. DHT11/DHT22 temperatursensorer x2.
  4. 10k/4.7k modstande (DHT11 - 4.7k, DHT22 - 10k, PIR - 10k).
  5. Electret mikrofon.
  6. Jumpere.
  7. Lange kabler (telefonkabel gør et godt stykke arbejde).

Den komplette kode for projektet er vedhæftet i slutningen med kommentarer i hele koden.

Logisk set har den et par forskellige funktionslag:

  • Dataene fra sensorerne læses i intervaller på 3 sekunder, da de viser sig at være mere præcise, og der er ikke behov for mere end det.
  • En del af koden er at holde styr på vekselstrømstilstanden ved de værdier, der kommer fra elektretmikrofonen, som er placeret over åbningen af vekselstrømmen.
  • En anden del er at holde styr på aflæsningen, der kommer fra temperatursensorerne, og forskellen i brugen defineret som acceptabel for at tænde AC'en og i stedet åbne et vindue. Vi ser efter det øjeblik, hvor temperaturerne kommer tæt nok på.
  • En tredje del er at holde styr på bevægelse i rummet. Hvis det ikke registrerer nogen større bevægelse (måden at kontrollere major vil blive forklaret snart) for en tidsramme, der er defineret af brugeren, og AC -tilstanden er TIL, sendes en meddelelse til brugeren.
  • Meddelelserne håndteres ved at udløse IFTTT Webhooks, der sender foruddefinerede meddelelser til brugeren via Facebook Messenger
  • Den sidste del, der er værd at bemærke, er den del, der håndterer Blynk -grænsefladen, både ved at få de ændringer, brugeren foretager i variabler og på den anden måde - skubbe data til Blynk -grænsefladen, som brugeren kan se.

Trin 2: I mange flere detaljer - Sensorer

I mange flere detaljer - Sensorer
I mange flere detaljer - Sensorer
I mange flere detaljer - Sensorer
I mange flere detaljer - Sensorer

Lad os begynde.

Først skal vi sikre os, at begge vores DHT -sensorer læser den samme temperatur, når de placeres samme sted. Til det lavede vi en simpel skitse vedhæftet i slutningen af dette afsnit (CompareSensors.ino). Tilslut begge sensorer, og sørg for at ændre typen af DHT -sensorer i skitsen i henhold til dem, du har (standard er en DHT11 og en DHT22, så du kan se, hvordan begge behandles i koden). Åbn den serielle skærm, og lad dem arbejde et stykke tid, især hvis du bruger DHT11 -sensorer, da de har en tendens til at tage længere tid at tilpasse sig temperaturændringer.

Bemærk forskellen mellem sensorerne, og indsæt den senere i hovedkoden i variablen "offset".

Placering af sensorer:

En DHT -sensor skal placeres på husets ydervæg, så tilslut den til nogle lange kabler, længe nok til at nå din ESP8266 inde i rummet, og placer den udenfor (kan gøres let gennem vinduet). Den anden DHT -sensor skal placeres på brødbrættet inde i rummet, hvor vi bruger AC.

Elektretmikrofonen skal også tilsluttes tilstrækkeligt lange kabler og placeres et sted, hvor vinden, der kommer ud af vekselstrømmen, vil ramme den.

Endelig skal PIR -sensoren placeres et sted mod midten af rummet, så den vil fange enhver bevægelse i rummet. Bemærk, at sensoren har to små knapper, den ene styrer forsinkelsen (hvor længe HIGH -signalet til at registrere en bevægelse holdes HIGH), og den anden styrer følsomheden (se billede).

Du skal muligvis lege med det, indtil du læser, som du er tilfreds med. For os var det bedste resultat forsinkelse helt til venstre (laveste værdi) og følsomhed lige i midten. Koden indeholder serielle udskrifter, der indeholder aflæsninger fra alle sensorer, der vil gøre fejlfinding af sådanne problemer meget lettere.

Tilslutning af sensorerne:

Pin -numrene, vi brugte, er som følger (og kan ændres i hovedkoden):

Udenfor DHT -sensor - D2.

Indvendig DHT -sensor - D3.

Electret - A0 (analog pin).

PIR - D5.

Skemaerne for at forbinde hver af dem kan let findes ved hjælp af google billedsøgning med noget i retning af "PIR -modstand Arduino -skematisk" (vi ville ikke kopiere dem her og krydse alle copyright -linjer:)).

Vi vedhæftede også et billede af vores brødbræt, det er nok svært at virkelig følge forbindelserne, men det kan give en god følelse for det.

Som du sikkert ved, fungerer ting sjældent, hvis nogensinde, første gang vi forbinder dem. Derfor lavede vi en funktion, der udskriver aflæsninger fra sensorerne på en letlæselig måde, så du kan fejlsøge din måde for at de kan fungere. Hvis du ikke vil have, at koden skal forsøge at oprette forbindelse til Blynk under fejlfinding, skal du bare kommentere "Blynk.begin (auth, ssid, pass);" fra opsætningsdelen af koden, kør den, og åbn den serielle skærm for at se udskrifterne. Vi vedhæftede også et billede af udskrifterne.

Trin 3: I mange flere detaljer - IFTTT -sekvens

I mange flere detaljer - IFTTT -sekvens
I mange flere detaljer - IFTTT -sekvens

Så vi ønsker at få besked i to scenarier:

1. Udetemperaturen er tæt nok på den, vi har indeni, når AC'en fungerer.

2. Vi har forladt rummet i en længere periode, og AC fungerer stadig.

IFTTT gør det muligt for os at forbinde mange forskellige tjenester, som normalt ikke interagerer, på en meget enkel måde. I vores tilfælde lader det os nemt sende meddelelser via mange tjenester. Vi valgte Facebook Messanger, men efter at have fået det til at fungere med Facebook Messanger vil du nemt kunne ændre det til enhver anden service, du vælger.

Processen:

På IFTTT -webstedet skal du klikke på dit brugernavn (øverste højre hjørne) og derefter "Ny applet" vælge "Webhooks" som udløser ("dette"), og vælge "Modtag en webanmodning". Angiv et begivenhedsnavn (f.eks. Tomrum).

For den udløste tjeneste, handlingen ("det"), vælg Facebook Messenger> Send besked, og indtast den besked, du vil modtage, når denne begivenhed sker (f.eks. "Hej, det ser ud til, at du har glemt AC på:).

Mens vi er her, skal du også finde din hemmelige nøgle, som du skal indsætte på det relevante sted i koden.

For at finde din hemmelige nøgle skal du gå til https://ifttt.com/services/maker_webhooks/settings Der finder du en URL med din nøgle i følgende format:

Trin 4: I en masse flere detaljer - Blynk

Image
Image
I en masse flere detaljer - Blynk
I en masse flere detaljer - Blynk
I en masse flere detaljer - Blynk
I en masse flere detaljer - Blynk

Vi ønsker også en grænseflade, der har følgende funktioner:

1. Mulighed for at indstille, hvor længe rummet skal være tomt, mens AC'en fungerer, før vi får besked

2. Evne til at vælge, hvor tæt udetemperaturen skal være på indersiden.

3. Et display til målingerne fra temperatursensorerne

4. En LED, der fortæller os AC -tilstanden (on/off).

5. Og vigtigst af alt et display, der viser, hvor meget $$$ og energi vi har sparet.

Sådan oprettes Blynk -grænsefladen:

Hvis du endnu ikke har Blynk -appen, skal du downloade den til din telefon. Når du åbner appen og opretter et nyt projekt, skal du sørge for at vælge den relevante enhed (f.eks. ESP8266).

Du får en e -mail med et godkendelsestoken, som du vil indsætte i koden på det relevante sted (du kan også sende den til dig selv igen fra indstillingerne senere, hvis du mister den).

Placer nye widgets på din skærm, klik på + -tegnet øverst. Vælg widgets, og klik derefter på en widget for at angive dens indstillinger. Vi har tilføjet billeder af indstillingerne for alle de widgets, vi brugte, til din reference.

Når du er færdig med appen, og når du til sidst vil bruge den, skal du blot klikke på "play" -ikonet i øverste højre hjørne for at køre Blynk -appen. Du vil også kunne se, hvornår din ESP8266 opretter forbindelse.

Bemærk - knappen "opdater" bruges til at hente temperaturen og tilstanden for AC, så vi kan se den i appen. Det er ikke påkrævet ved ændring af indstillinger (f.eks. Temperaturforskellen), da de bliver skubbet automatisk.

Trin 5: Koden

Vi gjorde en stor indsats for at dokumentere alle dele af koden på en måde, der ville gøre det lettere at forstå det.

Dele i koden, som du skal ændre, før du bruger den (som godkendelsesnøgle til Blynk, dit wifi SSID og adgangskode osv.) Efterfølges af kommentaren //* ændring*, så du let kan lede efter dem.

Du skal have bibliotekerne brugt i koden, du kan installere dem via Arduino IDE ved at klikke på Skitse> Inkluder biblioteker> Administrer biblioteker. Der kan du søge efter bibliotekets navn og installere det. Sørg også for at placere filen generic8266_ifttt.h på samme sted som ACsaver.ino.

En del af koden vil vi forklare her, da vi ikke ønskede at rode koden, er hvordan vi beslutter, hvornår AC -tilstanden skal ændres fra til og fra, og rummets tilstand fra tom til ikke tom.

Vi læser fra sensorerne hvert 3. sekund, men da sensorer ikke er 100% nøjagtige, ønsker vi ikke, at en enkelt læsning ændrer den tilstand, vi mener er i rummet nu. For at løse dette, hvad koden gør, er, at vi har en tæller, som vi ++ når vi får en læsning til fordel for "AC er på", og - ellers. Når vi når til den værdi, der er defineret i SWITCHAFTER (standard til 4), ændrer vi tilstanden til "AC er tændt", når vi kommer til -SWITCHAFTER (negativ den samme værdi), ændrer vi tilstanden til "AC er slukket ".

Virkningen på den tid, det tager at skifte, er ubetydelig, og vi finder det meget pålideligt at registrere kun korrekte ændringer.

Trin 6: Sæt det hele sammen

Ok, så alle sensorerne er på plads og fungerer korrekt. Blynk -grænsefladen er indstillet (med de korrekte virtuelle pins!). Og IFTTT -begivenhederne venter på vores trigger.

Du har indsat IFTTT -hemmelig nøgle i koden, auth -nøglen fra Blynk, SSID'en for din WiFi og adgangskoden, og du har endda kontrolleret, at DHT -sensorerne er kalibreret, og hvis ikke, har du ændret forskydningen i overensstemmelse hermed (f.eks. Vores uden for DHT læste temperaturer højere med 1 grad Celsius, hvad han skulle have, så vi brugte offset = -1).

Sørg for, at din WiFi er klar, start din Blynk -app, og indlæs koden på din ESP8266.

Det er det. Hvis alt blev gjort korrekt, kan du spille rundt nu og se det i aktion.

Og hvis du bare vil se det i aktion uden besværet med at sætte det hele sammen … Nå … Rul op og se videoen. (Se med undertekster! Ingen voice over)

Trin 7: Tanker

Vi havde to hovedudfordringer her.

Først og fremmest, hvordan ved vi, at AC er tændt? Vi forsøgte at bruge en IR -modtager, der vil "lytte" til kommunikationen mellem AC og fjernbetjeningen. Det syntes at være for kompliceret, da dataene var meget rodede og ikke var konsekvente nok til at forstå "ok, dette er et ON -signal". Så vi ledte efter andre måder. En idé var at bruge en lille propel, som vil generere lille strøm, når den bevæger sig fra AC -vinden, en anden idé, vi prøvede, var at få et accelerometer til at måle vinklen på de roterende vinger på ventilationsåbningerne og registrere deres bevægelse fra OFF -positionen.

Til sidst indså vi, at den enkleste måde at gøre det på er med elektretmikrofonen, som meget pålideligt registrerer vinden, der kommer ud af vekselstrømmen

Det var en leg at få DHT -sensorerne til at fungere;), men først senere indså vi, at en af dem var lidt væk fra den virkelige temperatur. PIR -sensoren krævede også nogle justeringer, som beskrevet tidligere.

Den anden udfordring var at gøre hele løsningen enkel og pålidelig. På en måde, at det burde være irriterende at bruge, skal det bare være der og skubbe, når du har brug for det. Ellers ville vi nok nok selv stoppe med at bruge det.

Så vi tænkte over, hvad der skulle være i Blynk -grænsefladen og forsøgte at gøre koden så pålidelig som muligt ved at tage sig af alle kant -sager, vi kunne finde på.

En anden udfordring, som vi ikke kunne løse, da vi skrev dette instruerbare, var at tilføje en IR -blaster, der giver os mulighed for at slukke AC fra Blynk -grænsefladen. Hvad er meningen med at vide, at du har glemt AC'en uden mulighed for at slukke? (godt … du kan spørge nogen om de er hjemme).

Desværre havde vi nogle problemer med at afspille de signaler, vi registrerede fra fjernbetjeningen, tilbage til AC med ESP8266. Det lykkedes os at styre AC'en med en Arduino Uno efter denne instruktive:

www.instructables.com/id/How-to-control-th…

Vi vil snart prøve igen og opdatere den instruerbare med vores fund og forhåbentlig instruktioner om, hvordan vi tilføjer denne kapacitet.

En anden begrænsning, vi ser, er det faktum, at vi skal tilslutte en sensor uden for vinduet, hvilket muligvis ikke er muligt i visse situationer, og det betyder også, at et langt kabel skal gå udenfor. En løsning kan være at hente vejrdata for din placering fra internettet. Også electret -sensoren, der løber fra vekselstrømmen, kan erstattes af den IR -modtager, vi beskrev ovenfor, til modeller af vekselstrøm med mere kendte eller lette at afkode IR -koder.

Projektet kan udvides på mange måder. Som sagt ovenfor vil vi forsøge at finde en måde at inkludere IR -kontrol over AC'en, som derefter åbner en helt ny verden af muligheder for at tænde og slukke for AC'en hvor som helst i verden eller indstille og slukke tider via Blynk app, som et andet eksempel. Efter at have fundet ud af de tekniske IR -vanskeligheder er tilføjelse af koden temmelig enkel og ligetil og bør ikke tage lang tid.

Hvis vi virkelig vil drømme stort … Projektet kan omdannes til et komplet modul, der gør enhver AC til en smart AC. Og det behøver ikke meget mere, end vi gjorde. Bare mere kode, mere udnyttelse af IR, og hvis vi vil have det til at blive masseproduceret, skal du måske sørge for at hente vejrdata efter sted, så kan vi lægge det hele i en lillebitte kasse.

Virkelig alt, hvad vi har brug for, er en temperatursensor til indetemperaturen, en PIR -sensor til at registrere bevægelse og IR -LED som blaster og en IR -modtager til at "lytte" til kommunikationen mellem AC og fjernbetjeningen, vi bruger.

Blynk leverer alle de funktioner, vi har brug for til at styre den magiske boks, på en meget enkel og pålidelig måde.

Det vil tage noget tid at lave et så fuldstændigt projekt, især med henblik på at gøre det alsidigt nok til at konfigurere sig selv og automatisk registrere og forstå de fleste AC'er.

Men gør det til dig selv, ja, hvis du gør det i din fritid, bør vi omtrentlige ikke tage mere end en uge eller to. Det afhænger af, hvor meget fritid du har … Den største udfordring her ville være at gemme alle de forskellige signaler, som AC -fjernbetjeningen kan sende, og give mening om dem. (Selvom bare afspilning af dem burde være endnu lettere).

Anbefalede: