Inhoudsopgave:

IDC2018IOT Vertel me wanneer ik de AC moet uitschakelen - Ajarnpa
IDC2018IOT Vertel me wanneer ik de AC moet uitschakelen - Ajarnpa

Video: IDC2018IOT Vertel me wanneer ik de AC moet uitschakelen - Ajarnpa

Video: IDC2018IOT Vertel me wanneer ik de AC moet uitschakelen - Ajarnpa
Video: TEMPLE RUN 2 SPRINTS PASSING WIND 2024, November
Anonim
Image
Image

Velen van ons, vooral in de zomer, gebruiken de airco bijna non-stop, terwijl we in werkelijkheid op bepaalde tijden van de dag gewoon een raam kunnen openen en genieten van een lekker briesje. Ook merkten we persoonlijk dat we soms zelfs vergeten de airco uit te zetten als we de kamer verlaten, wat energie en geld verspilt.

De oplossing die we zullen bouwen zal de binnentemperatuur vergelijken met de buitentemperatuur, en wanneer ze dichtbij genoeg zijn, zal ons via Facebook Messanger laten weten dat het tijd is om een raam te openen en de airco wat rust te geven.

We zullen ook een ander mechanisme maken om ons op de hoogte te stellen wanneer we de AC zijn vergeten en de kamer hebben verlaten.

Stap 1: Een beetje meer details

We verzamelen gegevens van 4 verschillende sensoren:

  • Twee DHT-sensoren verzamelen de temperatuur binnen en buiten het huis.
  • Eén PIR-sensor detecteert beweging in de kamer.
  • Eén Electret-microfoon wordt gebruikt om de wind te detecteren die uit de AC-ventilatie komt, een eenvoudige en betrouwbare manier om te bepalen of de AC aan staat.

De gegevens die van de sensoren komen, worden verwerkt en naar de Blynk gestuurd, waar ze worden weergegeven in een interface die we zullen maken. We zullen ook IFTTT-gebeurtenissen activeren om de gebruiker op de hoogte te stellen wanneer hij een raam kan openen in plaats van de AC, en wanneer hij de AC vergat en de kamer verliet voor een vooraf gedefinieerde periode.

De Blynk-interface geeft ons ook een manier om relevante instellingen te wijzigen volgens de voorkeur van de gebruiker, zoals we later in meer details zullen bespreken.

Benodigde onderdelen:

  1. WiFi-module - ESP8266
  2. PIR-sensor.
  3. DHT11/DHT22 temperatuursensoren x2.
  4. 10k/4,7k-weerstanden (DHT11 - 4,7k, DHT22 - 10k, PIR - 10k).
  5. Electret microfoon.
  6. Truien.
  7. Lange kabels (telefoondraad zal geweldig werk doen).

De volledige code van het project is aan het einde bijgevoegd met opmerkingen in de code.

Logischerwijs heeft het een paar verschillende functionaliteitslagen:

  • De gegevens van de sensoren worden in intervallen van 3 seconden uitgelezen, omdat dit nauwkeuriger blijkt te zijn en meer dan dat niet nodig is.
  • Een deel van de code is het bijhouden van de AC-status door de waarden afkomstig van de elektreetmicrofoon die over de opening van de AC wordt geplaatst.
  • Een ander onderdeel is het bijhouden van de meetwaarde die afkomstig is van de temperatuursensoren, en het verschil in het gebruik dat als acceptabel wordt gedefinieerd om de AC uit te schakelen en in plaats daarvan een raam te openen. We zoeken het moment op waarop de temperaturen dicht genoeg in de buurt komen.
  • Een derde onderdeel is het bijhouden van beweging in de kamer. Als het geen grote beweging detecteert (de manier om groot te controleren wordt binnenkort uitgelegd) gedurende een door de gebruiker gedefinieerd tijdsbestek, en de AC-status is AAN, wordt een melding naar de gebruiker gestuurd.
  • De meldingen worden afgehandeld door het activeren van IFTTT-webhooks die vooraf gedefinieerde berichten naar de gebruiker sturen via Facebook Messenger
  • Het laatste deel dat het vermelden waard is, is het deel dat de Blynk-interface afhandelt, zowel door de wijzigingen die de gebruiker aanbrengt in variabelen, als andersom - door gegevens naar de Blynk-interface te pushen zodat de gebruiker ze kan zien.

Stap 2: In veel meer details - Sensoren

In veel meer details - Sensoren
In veel meer details - Sensoren
In veel meer details - Sensoren
In veel meer details - Sensoren

Laten we beginnen.

Ten eerste moeten we ervoor zorgen dat onze beide DHT-sensoren dezelfde temperatuur meten wanneer ze op dezelfde plaats worden geplaatst. Daarvoor hebben we een eenvoudige schets gemaakt aan het einde van deze sectie (CompareSensors.ino). Sluit beide sensoren aan en zorg ervoor dat je het type DHT-sensoren in de schets wijzigt volgens degene die je hebt (de standaard is één DHT11 en één DHT22, zodat je kunt zien hoe met beide wordt omgegaan in de code). Open de seriële monitor en laat ze een tijdje werken, vooral als je DHT11-sensoren gebruikt, omdat ze meer tijd nodig hebben om zich aan te passen aan temperatuurveranderingen.

Let op het verschil tussen de sensoren en voeg het later in de hoofdcode in de "offset" -variabele in.

Sensoren plaatsing:

Eén DHT-sensor moet op de buitenmuur van het huis worden geplaatst, dus sluit deze aan op enkele lange kabels, lang genoeg om uw ESP8266 in de kamer te bereiken, en plaats deze buiten (kan gemakkelijk door het raam worden gedaan). De andere DHT-sensor moet op het breadboard worden geplaatst, in de kamer waarin we de AC gebruiken.

De elektretmicrofoon moet ook worden aangesloten op lang genoeg kabels en op een plaats worden geplaatst waar de wind die uit de AC komt, hem zal raken.

Ten slotte moet de PIR-sensor op een locatie worden geplaatst die naar het midden van de kamer is gericht, zodat deze elke beweging in de kamer vastlegt. Merk op dat de sensor twee kleine knoppen heeft, een die de vertraging regelt (hoe lang het HOOG-signaal van het detecteren van een beweging HOOG wordt gehouden), en de andere regelt de gevoeligheid (zie afbeelding).

Mogelijk moet u ermee spelen totdat u leest waar u tevreden over bent. Voor ons was het beste resultaat vertraging helemaal naar links (laagste waarde) en gevoeligheid precies in het midden. De code biedt seriële afdrukken met metingen van alle sensoren die het debuggen van dergelijke problemen veel gemakkelijker maken.

Aansluiten van de sensoren:

De pincodes die we gebruikten zijn als volgt (en kunnen worden gewijzigd in de hoofdcode):

Buiten DHT-sensor - D2.

Binnen DHT-sensor - D3.

Electret - A0 (analoge pin).

PIR-D5.

De schema's voor het aansluiten van elk van hen kunnen gemakkelijk worden gevonden met behulp van Google Image Search met iets in de trant van "PIR-weerstand Arduino-schema" (we zouden ze hier niet willen kopiëren en copyrightregels overschrijden:)).

We hebben ook een foto van ons breadboard bijgevoegd, het is waarschijnlijk moeilijk om de verbindingen echt te volgen, maar het kan er een goed gevoel bij geven.

Zoals u waarschijnlijk weet, werken dingen zelden of nooit de eerste keer dat we ze verbinden. Daarom hebben we een functie gemaakt die de meetwaarden van de sensoren op een gemakkelijk leesbare manier afdrukt, zodat u uw weg kunt vinden om ze te laten werken. Als u niet wilt dat de code probeert verbinding te maken met Blynk tijdens het debuggen, geeft u gewoon de opmerking "Blynk.begin(auth, ssid, pass);" vanuit het setup-gedeelte van de code, voer het uit en open de seriële monitor om de afdrukken te zien. We hebben ook een foto van de afdrukken bijgevoegd.

Stap 3: In veel meer details - IFTTT-reeks

In veel meer details - IFTTT-reeks
In veel meer details - IFTTT-reeks

We willen dus in twee scenario's op de hoogte worden gesteld:

1. De buitentemperatuur is dicht genoeg bij degene die we binnen hebben terwijl de AC werkt.

2. We hebben de kamer voor een langere tijd verlaten en de airco werkt nog steeds.

IFTTT stelt ons in staat om op een zeer eenvoudige manier veel verschillende diensten met elkaar te verbinden die normaal gesproken geen interactie hebben. In ons geval kunnen we via veel services heel gemakkelijk meldingen verzenden. We kozen voor Facebook Messanger, maar nadat je het met Facebook Messanger hebt laten werken, kun je het gemakkelijk wijzigen in een andere service naar keuze.

Het proces:

Klik op de IFTTT-website op uw gebruikersnaam (rechterbovenhoek) en kies vervolgens "Nieuwe applet" en kies "Webhooks" als trigger (de "this") en kies "Ontvang een webverzoek". Stel een gebeurtenisnaam in (bijv. empty_room).

Voor de geactiveerde service, de actie (de "dat"), kies je Facebook Messenger > Bericht verzenden en typ je het bericht dat je wilt ontvangen wanneer deze gebeurtenis plaatsvindt (bijvoorbeeld "Hallo, het lijkt erop dat je de AC bent vergeten op:).

Terwijl we hier zijn, zou je ook je geheime sleutel moeten vinden die je op de juiste plaats in de code moet invoegen.

Om uw geheime sleutel te vinden, gaat u naar https://ifttt.com/services/maker_webhooks/settings Daar vindt u een URL met uw sleutel in het volgende formaat:

Stap 4: In veel meer details - Blynk

Image
Image
In veel meer details - Blynk
In veel meer details - Blynk
In veel meer details - Blynk
In veel meer details - Blynk

We willen ook een interface met de volgende kenmerken:

1. Mogelijkheid om in te stellen hoe lang de kamer leeg moet zijn terwijl de airco werkt voordat we een melding krijgen

2. Mogelijkheid om te kiezen hoe dicht de buitentemperatuur bij de binnenkant moet zijn.

3. Een display voor de metingen van de temperatuursensoren

4. Een led die ons de status van de AC vertelt (aan/uit).

5. En het allerbelangrijkste, een display om te laten zien hoeveel $$$ en energie we hebben bespaard.

Hoe de Blynk-interface te maken:

Als je de Blynk-app nog niet hebt, download deze dan naar je telefoon. Wanneer u de app opent en een nieuw project aanmaakt, zorg er dan voor dat u het juiste apparaat kiest (bijv. ESP8266).

U ontvangt een e-mail met een authenticatietoken, die u op de juiste plaats in de code invoegt (u kunt deze later ook opnieuw naar uzelf sturen vanuit de instellingen als u deze verliest).

Om nieuwe widgets op je scherm te plaatsen, klik je op het + teken bovenaan. Kies de widgets en klik vervolgens op een widget om de instellingen in te voeren. We hebben afbeeldingen toegevoegd van de instellingen voor alle widgets die we hebben gebruikt, ter referentie.

Nadat u klaar bent met de app en wanneer u deze uiteindelijk wilt gebruiken, klikt u eenvoudig op het pictogram "afspelen" in de rechterbovenhoek om de Blynk-app uit te voeren. U kunt ook zien wanneer uw ESP8266 verbinding maakt.

Opmerking - de "update"-knop wordt gebruikt om de temperatuur en status van de airco op te halen, zodat we deze in de app kunnen zien. Het is niet nodig bij het wijzigen van instellingen (zoals het temperatuurverschil), omdat ze automatisch worden ingedrukt.

Stap 5: De code

We hebben veel moeite gedaan om elk deel van de code te documenteren op een manier die het begrijpen ervan zo gemakkelijk mogelijk zou maken.

Delen in de code die u moet wijzigen voordat u deze gebruikt (zoals de auth-sleutel voor Blynk, uw wifi-SSID en wachtwoord, enz …) worden gevolgd door de opmerking //*wijzig* zodat u ze gemakkelijk kunt zoeken.

U moet de bibliotheken hebben die in de code worden gebruikt, u kunt ze installeren via de Arduino IDE door te klikken op Sketch>Include Libraries>Manage Libraries. Daar kunt u de bibliotheeknaam zoeken en installeren. Zorg er ook voor dat u het bestand generic8266_ifttt.h op dezelfde locatie plaatst als ACsaver.ino.

Een deel van de code die we hier zullen uitleggen, omdat we de code niet rommelig wilden maken, is hoe we beslissen wanneer we de status van de AC van aan naar uit moeten veranderen en de status van de kamer van leeg naar niet leeg.

We lezen elke 3 seconden van de sensoren, maar omdat sensoren niet 100% nauwkeurig zijn, willen we niet dat een enkele uitlezing de toestand verandert die volgens ons in de kamer is. Om dit op te lossen, wat de code doet, is dat we een teller hebben die we ++ wanneer we een lezing krijgen in het voordeel van "AC is aan", en - anders. Als we dan bij de waarde komen die is gedefinieerd in SWITCHAFTER (standaard 4), veranderen we de status in "AC is aan", wanneer we bij -SWITCHAFTER komen (negatief dezelfde waarde), veranderen we de status in "AC is uit ".

De impact op de tijd die nodig is om over te schakelen is verwaarloosbaar, en we vinden het zeer betrouwbaar in het detecteren van alleen correcte wijzigingen.

Stap 6: Alles samenbrengen

Oké, dus alle sensoren zijn op hun plaats en werken naar behoren. De Blynk-interface is ingesteld (met de juiste virtuele pinnen!). En de IFTTT-evenementen wachten op onze trigger.

Je hebt de geheime IFTTT-sleutel in de code ingevoerd, de auth-sleutel van Blynk, de SSID van je wifi en het wachtwoord, en je hebt zelfs gecontroleerd of de DHT-sensoren zijn gekalibreerd en zo niet, de offset dienovereenkomstig gewijzigd (bijvoorbeeld onze buiten DHT lezen temperaturen hoger met 1 graad Celsius dan wat hij zou moeten hebben, dus we gebruikten offset = -1).

Zorg ervoor dat je wifi aanstaat, start je Blynk-app en laad de code op je ESP8266.

Dat is het. Als alles correct is gedaan, kun je nu spelen en het in actie zien.

En als je het gewoon in actie wilt zien zonder de moeite om alles in elkaar te zetten… Nou… Scroll naar boven en bekijk de video. (Kijk met ondertiteling! Geen voice-over)

Stap 7: Gedachten

We hadden hier twee grote uitdagingen.

Allereerst, hoe weten we dat de airco aan staat? We hebben geprobeerd een IR-ontvanger te gebruiken die "luistert" naar de communicatie tussen de AC en de afstandsbediening. Het bleek te ingewikkeld te zijn, omdat de gegevens erg rommelig waren en niet consistent genoeg om te begrijpen "ok, dit is een AAN-signaal". Dus gingen we op zoek naar andere manieren. Een idee was om een kleine propeller te gebruiken die een kleine stroom genereert wanneer de wind van de AC komt, een ander idee dat we probeerden was om een versnellingsmeter de hoek van de draaiende vleugels op de ventilatieopeningen te laten meten en hun beweging te detecteren vanuit de UIT-stand.

Uiteindelijk realiseerden we ons dat de eenvoudigste manier om dit te doen is met de electret-microfoon, die zeer betrouwbaar de wind detecteert die uit de AC komt

De DHT-sensoren aan het werk krijgen was een fluitje van een cent;), maar pas later realiseerden we ons dat een van hen een beetje afwijkt van de echte temperatuur. De PIR-sensor vereiste ook enkele aanpassingen, zoals eerder beschreven.

De tweede uitdaging was om de hele oplossing eenvoudig en betrouwbaar te maken. In zekere zin zou het vervelend moeten zijn om te gebruiken, het zou er gewoon moeten zijn en aanstoten wanneer je het nodig hebt. Anders zouden we er zelf waarschijnlijk mee stoppen.

Dus hebben we nagedacht over wat er in de Blynk-interface zou moeten staan en hebben we geprobeerd de code zo betrouwbaar mogelijk te maken, door te zorgen voor elk randgeval dat we konden bedenken.

Een andere uitdaging, die we niet hadden opgelost toen we deze instructie schreven, was het toevoegen van een IR-blaster waarmee we de AC van de Blynk-interface kunnen uitschakelen. Wat heeft het voor zin om te weten dat je de airco bent vergeten zonder de mogelijkheid om het uit te zetten? (nou ja… je zou iemand kunnen vragen of ze thuis zijn).

Helaas hadden we wat problemen met het afspelen van de signalen die we van de afstandsbediening hadden opgenomen, terug naar de AC met de ESP8266. We zijn erin geslaagd om de AC te besturen door een Arduino Uno, volgens deze instructable:

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

We zullen het binnenkort opnieuw proberen en de instructable bijwerken met onze bevindingen en hopelijk instructies over hoe die mogelijkheid toe te voegen.

Een andere beperking die we zien, is het feit dat we een sensor buiten het raam moeten aansluiten, wat in bepaalde situaties misschien niet mogelijk is, en dat er ook een lange kabel naar buiten moet. Een oplossing kan zijn om weergegevens van uw locatie van internet te halen. Ook kan de elektreetsensor die van de AC loopt, worden vervangen door de IR-ontvanger die we hierboven hebben beschreven, voor modellen van AC met meer bekende of gemakkelijk te decoderen IR-codes.

Het project kan op vele manieren worden uitgebreid. Zoals hierboven vermeld, zullen we proberen een manier te vinden om IR-controle over de AC op te nemen, wat dan een hele nieuwe wereld van mogelijkheden opent om de AC overal ter wereld in en uit te schakelen, of om aan en uit tijden in te stellen via de Blynk app, als een ander voorbeeld. Na het uitzoeken van de technische IR-problemen, is het toevoegen van de code vrij eenvoudig en duidelijk, en zou niet lang moeten duren.

Als we echt groot willen dromen… Het project kan worden omgezet in een complete module die van elke AC een slimme AC maakt. En het heeft niet veel meer nodig dan wij. Gewoon meer code, meer gebruik van de IR, en als we willen dat het massaal wordt geproduceerd, zorg er dan voor dat we weergegevens per locatie ophalen, dan kunnen we het hele ding in een klein doosje doen.

Echt, alles wat we nodig hebben is een temperatuursensor voor de binnentemperatuur, een PIR-sensor om beweging te detecteren, en IR LED als een blaster, en een IR-ontvanger om te "luisteren" naar de communicatie tussen de AC en de afstandsbediening die we gebruiken.

Blynk biedt alle mogelijkheden die we nodig hebben om de magische doos te besturen, op een zeer eenvoudige en betrouwbare manier.

Het maken van zo'n volledig project zal enige tijd duren, vooral vanuit het oogpunt van het veelzijdig genoeg maken om zichzelf te configureren en automatisch de meeste AC's te detecteren en te begrijpen.

Maar om het voor jezelf te maken, nou, als je het in je vrije tijd doet, duurt het naar schatting niet langer dan een week of twee. Hangt ervan af hoeveel vrije tijd je hebt… De grootste uitdaging hier zou zijn om alle verschillende signalen die de AC-afstandsbediening kan verzenden op te slaan en te begrijpen. (Hoewel het gewoon nog eenvoudiger zou moeten zijn om ze opnieuw af te spelen).

Aanbevolen: