IOT Energieverbruik helper

IOT Energieverbruik helper

Maak je eigen IOT energieverbruik hulp, en krijg een melding op je smartphone als het licht of de verwarming nog aan staat wanneer er tussen een bepaald tijdsinterval niemand meer in de kamer is.

Leer hoe je de ESP32 programmeert met de Arduino IDE. Ontdekt hoe je meldingen kan sturen naar je smartphone met Arduino.

Maaktijd: langer dan 3u.

Materiaalkost onder de 6 EUR, maar met ESP32 van 20 Eur.

Deze handleiding werd ontwikkeld door Stijn Liekens voor Maakbib

Benodigdheden

Materialen:

Materialen

Gereedschap:

  • Computer
  • Micro-usb kabel
  • WiFi
  • Smartphone
  • 3D-printer
  • Lijmpistool
  • Aan de slag

    Arduino software configureren

    1. Start Arduino IDE op, dit is het programma om de Arduino Code in te schrijven, en ziet er zo uit:
      Arduino software
      Als de Arduino IDE nog niet op je computer geïnstalleerd is, kan je het hier gratis downloaden.

    2. Ga naar de Preferences, onder FILE → PREFERENCES
      Arduino software

    3. Copy Paste het volgende in het “Additional Boards Manager URLs” vak.

      1
      
      https://dl.espressif.com/dl/package_esp32_index.json  
      

      En druk op “OK”.
      Arduino software

    4. Open de Board Manager, onder TOOLS → BOARD: “….” → Boards Manager. Dit zal even duren, bord defenities worden eerst gedownload.
      Arduino software

    5. Typ “ESP32” in de zoekbalk en instaleer het pakket.
      Arduino software
      En druk op “close”

    6. Test de Arduino
      Verbind de Arduino met de Computer via de usb kabel.

    7. Open het voorbeeld “Wifi Scan” , onder File → Examples → WiFi → WiFiScan
      Arduino software

    8. Selecteer “ESP32 Dev Module”, onder Tools → Board… → ESP32 Dev Module. We gaan er hier vanuit dat je de ESP32 gekocht hebben zoals wij gebruiken. Heb je een ander type ESP32, dien je hier de juiste versie te kiezen.
      Arduino software

    9. Selecteer de juiste COM poort, onder Tools → Port. De juiste poort is deze die er nieuw bijstaan na het aansluiten van je ESP32.
      Arduino software

    10. Upload de WiFiScan code naar de Arduino. Druk eerst op het vinkje links boven om de code te compileren (rood omcirkeld in de figuur hieronder). Dit mag geen fouten geven. Upload daarna door op de pijl links boven naast het vinkje te drukken.
      Problemen bij uploaden? Hou dan de “boot” drukknop op de Arduino ingedrukt tijdens het uploaden (omcirkeld op de foto).
      Arduino software

    11. Open de serial monitor, onder Tools → Serial Monitor
      Arduino software

    12. Zet het Baud tapje naar 115200
      Arduino software
      Als je nu een lijst krijgt van alle wifi netwerken in de buurt zoals hierboven, dan werkt alles zoals het moet!

    Componenten assembleren

    Het elektrisch schema is als volgt:

    Assembleren
    Assembleren
    Assembleer alle componenten zoals hierboven weergegeven.

    Assembleren

    Als alles goed in elkaar gestoken is zou het geheel er ongeveer moeten uitzien als hierboven.

    Om nu te testen of we alles juist hebben verbonden en alles werkt, gaan we testcode uploaden.

    Deze gaat de waardes van de inputs (temperatuur sensor, lichtsensor en bewegingssensor) in de Serial monitor weergeven. En de groene en rode led zullen aan gaan wanneer er beweging gedetecteerd wordt.

    De testcode (op de foto hieronder) is terug te vinden in de zip bijlage onder de naam “Aansluitingen_test”, zo moet je die niet overtypen!

    1. Open de testcode “Aansluitingen_test”
      Assembleren

    2. Upload de test code, vergeet niet op de “boot” knop op de Arduino te drukken tijdens het uploaden.
    3. Open de serial monitor, en zet de baud op 115200.
      Assembleren

    4. Als de serial monitor er zo uit ziet en de LED’s aan gaan wanneer je voor de bewegingssensor zwaait is alles in orde!

    We kunnen nu verder met het volgende hoofdstuk: GSM meldingen sturen.

    GSM melding sturen

    1. Download de IFTTT APP op je smartphone en maak een account.
    2. We dienen een eigen app te maken die onze meldingen oppikt. Maak dus de applet, in de huidige versie zijn de opeenvolgende stappen:
      Applet

      Applet

      Applet

      Applet

      Applet

      Applet

      Applet

      Applet

      Applet

      Applet

      Laat de “link URL” en “image URL” leeg

    3. Hierna dien je je persoonlijke IFTTT Code op te vragen.
      Surf naar: ifttt.com/maker_webhooks
      Check dat je ingelogd bent!
      En druk op “Documentation”, dan opent er een webpagina met jouw Persoonlijke Code.

      Applet

      Applet

      Om te testen of alles juist is ingesteld, dien je nu een test code up te loaden naar de Arduino.

    4. Open de code “ GSM_notificatie_test” (deze is te vinden in de zip bijlage).
      Applet

    5. Vervang (WIFI_NAAM) door je eigen wifi netwerk, bv.: telenet-80415.
      Vervang (wifi_wachtwoord) door je eigen wifi wachtwoord.
      Vervang (XXXXXXXXXXXX) door de persoonlijke Code die je in stap 3 hebt opgevraagd.

    6. Upload de code naar de Arduino, vergeet niet de “boot” drukknop ingedrukt te houden tijdens het uploaden.

    7. Ontvang een melding!
      Applet
      Als alles goed is verlopen zou je na enkele seconden een melding moeten krijgen op de Smartphone.

    Finale Code

    1. Open de volledige code voor onze energieverbruik melder, deze is te vinden als “volledige_code” in de zip bijlage.
      Finale Code

    2. Vervang (WIFI_NAAM) door je eigen wifi netwerk, bv.: telenet-80415.
      Vervang (wifi_wachtwoord) door je eigen wifi wachtwoord.
      Vervang (XXXXXXXXXXXX) door de persoonlijke code die je eerder hebt opgevraagd.

    3. Je dient nu de parameters van de code in te stellen.
      Het eerste deel van de code tot aan de sterretjes lijn vanonder zijn alle instellingen voor de code. Hier kan je instellen vanaf wanneer de IOT energieverbruik helper inschakelt door de waarde van uur_start en minuten_start aan te passen. Nu is uur_start = 20 en minuten_start= 0, wat betekent dat de helper inschakelt om 20u ’s avonds.

      Hetzelfde geld voor uur_stop en minuten_stop.
      Deze staan nu op 8 en 15, wat wilt zeggen dat de helper om 20u ’s avonds ingeschakeld wordt en ’s morgens om 8:15 uitgeschakeld wordt.

      Ook kan je hier de tijd_geen_beweging_tot_melding_sturen aanpassen, dit is zoals de naam doet vermoeden: hoe lang er niemand aanwezig mag zijn (in minuten) als de helper actief is voordat hij een melding stuurt als het licht of de verwarming nog aan zou staan. Momenteel staat die op 1, wat wilt zeggen dat er al een melding kan gestuurd worden na 1 minuut.

      Finale Code

    4. Uitleg void setup() deel van de code
      Dit deel van de code zal slechts een keer uitgevoerd worden wanneer de Arduino opstart. Dus zetten we hier alle commando’s die maar één keer moeten gebeuren.
      Zoals de pinMode commando’s ,die vertellen de Arduino welke pins outputs moeten zijn, want op de ESP32 kunnen de meeste pins zowel outputs als inputs zijn.
      Ook zeggen we hier of die pinnen hoog of laag moeten zijn bij het opstarten.
      Daarna maken we verbinding met de wifi, synchroniseren we de interne klok en kalibreren we de analoge sensoren.
      Deze drie commando’s zijn geschreven als modules zodat we die eenvoudig in onze code kunnen gebruiken, de volledige modules van deze drie onderdelen komen in de volgende puntjes aan bod.
      Als laatste definiëren we de tijd als minuten_sinds_middernacht omdat dit makkelijker rekent verder in de code.
      Finale Code

    5. Uitleg void loop() deel van de code
      Dit is het deel van de code die voortdurend zichzelf zal herhalen. Dit deel van de code zorgt ervoor dat wanneer de helper actief is en er voor de bepaalde tijd (buffer_tijd) geen beweging meer is geweest in de ruimte, er een melding zal gestuurd worden als het licht of de kachel nog aan staat.
      Als er iemand in de kamer is tijdens deze buffer_tijd zal de timer resetten en zal de helper weer wachten vooraleer een melding te verzenden moest het licht of de kachel nog aan staan.
      Finale Code

    6. Commando’s in de code Dit zijn de stukken code die geschreven zijn als op te roepen modules en die we al eerder hebben gebruikt in void setup en void loop.

      1. maak_verbinding() commando Deze module verbind de Arduino met het wifi netwerk en laat de rode LED branden zolang de module bezig is met de verbinding tot stand te brengen. Switcht naar de groene LED als de verbinding geslaagd is.
        Finale Code

      2. sync_tijd() commando
        Deze module synchroniseert de interne klok van de Arduino met het internet door een Google tijd server te contacteren.
        Ook hier weer gaat de rode LED branden zolang de module bezig is en switcht deze naar de groene LED als alles succesvol is verlopen.
        Finale Code

      3. kalibreren() commando
        Dit commando kalibreert de temperatuur en de licht sensor naar de kamer en positie waarin de helper wordt geplaatst. Deze zullen beschouwd worden als de goede gewenste waarden. Ook hier weer gaat de rode LED branden zolang de module bezig is en switcht deze naar de groene LED als alles succesvol is verlopen.
        Finale Code

      4. stuur_melding() commando
        Deze module stuurt een bepaald stukje tekst naar de Webhook server zodat dit naar de app op je smartphone kan verzonden worden. Finale Code

      5. check_sensoren_en_stuur_meldingen() commando
        Deze module lijst de temperatuur en licht sensor en bepaalt of het licht of de kachel nog aan staat. En als een van de twee, of beiden, nog aan staan stuurt deze module de juiste melding naar je smartphone.
        Dit gebeurt door het juiste stukje tekst naar de stuur_melding() module te sturen.
        Finale Code

    De behuizing

    Ons project is niet af als we niet ook voor een behuizing zorgen voor onze energieverbruiker! Laat ons er dus eentje maken.

    1. 3Dprint de behuizing
      De STL files hiervoor zijn te vinden in de zip bijlage als 3D print case bottom en 3D print case top.
      Finale Code Finale Code
      Finale Code

    2. Plaats de componenten in de behuizing. Gebruik het lijmpistool of dubbelzijdige tape op het mini breadboard om deze in de behuizing te lijmen zodat de usb poort overeen komt met het gat. Duw de bewegingssensor in het gat in het deksel zoals op de foto hieronder.
      Finale Code

    3. Sluit de behuizing. Plaats het dekseltje zo op de behuizing zodat het gat over de LED’s en sensoren komt te liggen, zoals op de foto hieronder.
      Finale Code

    Plaatsen voor gebruik

    Om de helper nuttig te kunnen gebruiken is het best dat je hem dicht bij een verwarming plaatst en op een plaats waar niet veel zonlicht valt, maar integendeel door de binnenverlichting wel goed oplicht.

    1. Zet de helper op de gekozen plaats.

    2. Zorg ervoor dat het buiten donker is, de binnenverlichting uit is en dat de kachel uit staat. Onze energieverbruiker calibreert immers met de waarden tijdens de opstart, en beschouwt deze startwaarden als de goede waarden. Je zou dit in de code kunnen wijzigen in voorgedefinieerde waarden.

    3. Steek de stekker van de helper in het stopcontact. Voor het optimale resultaat doe je dit best ’s avonds.
      Wanneer je de stekker in steekt zal de helper na enkele seconden beginnen zijn sensoren te kalibreren, dus het is best om wat afstand te nemen voor een accurate kalibratie.

    4. Klaar!
      Nu krijg je een melding iedere keer het licht of de kachel nog aan staat en er al een bepaalde tijd niemand in de kamer is geweest wanneer de helper actief is!

    Weetjes

    Met de Arduino en IFTTT app kan je nog veel meer doen dan enkel meldingen sturen! Je kan bijvoorbeeld Alexa iets laten zeggen als er nog een licht aan staat of een email sturen naar iemand om het licht te gaan uit zetten, om er maar twee te noemen.

    STEM

    In deze high tech activiteit komen heel wat technieken aan bod! We hebben in deze handleiding met een 3d printer gewerkt en met de arduino IDE en de verschillende sensoren.

    Challenge!

    Breid het systeem uit met een rookmelder.

    Maak het je eigen

    • Kun je zelf een behuizing ontwerpen voor het systeem?

    Voorbeelden

    Heb je een foto van je eigen IOT Energieverbruik helper? Stuur hem ons!

    Downloads

    Handleiding: Download


    3D files: Download


    Arduino files: Download


    Lasercut files: Download