# Automatiserat torkrum ## Hur man bygger ett uppkopplat torkrum med temperatur och fuktighetssensor som styr en avfuktare. Det här är mitt första Internet of Things-projekt som jag gjorde i kursen Tillämpad IoT på Linnéuniversitetet. Projektets primära syfte var att lära mig mera om IoT och det sekundära var att bygga ett system som slår av avfuktaren i mitt torkrum hemma när tvätten är torr. Mitt namn är Ola Karlsson och mitt student id på Linnéunisversitetet är ok222gr. Vill du bygga ett liknande system själv så, beroende på hur erfaren du är, kan det ta mellan en till några timmar, förutsatt att du har alla delar hemma. ### Syfte I mitt torkrum hemma står en avfuktare som enbart styrs med hjälp av en strömkontakt i väggen. Ofta hängs våt tvätt upp på kvällen och konsekvensen blir att avfuktaren går hela natten oavsett om tvätten är torr eller inte. Genom att slippa ha avfuktaren gående sparar jag elektrisitet samt slipper oljudet där ifrån. Som kuriosa kommer datan från temperatur och fuktighetssensorn publiceras på en dashboard på internet. Kunskaperna som jag hoppas få med mig från projektet är en djupare allmänbildning i ämnet IoT. ### Material Här är sakerna som jag använde för att bygga prototypen. För idéer om hur man gör för att bygga en mer permanent lösning se diskussionen längre ner. ![LoPy!](https://pycom.io/wp-content/uploads/2018/08/lopySide-1.png =360x) Pycom LoPy4, EUR 34.95, Pycom https://www.pycom.io Pycom Lopy4 är ett utvecklingskort som är utrustat med bland annat wifi. ![](https://pycom.io/wp-content/uploads/2020/03/Website-Product-Shots-ExpB-Front.png =360x) Expansion Board 3.0, EUR 16, Pycom https://pycom.io/product/expansion-board-3-0/ Ett expansion board har som uppgift att bland annat göra utvecklingskortets pins mer lätt åtkommliga. ![](https://www.electrokit.com/uploads/productimage/41015/41015728-1-600x450.jpg =360x) Digital temperatur- och fuktsensor DHT11, 49 kr, Elektrokit https://www.electrokit.com/produkt/digital-temperatur-och-fuktsensor-dht11/ Sensor som mäter temperatur och luftfuktighet. ![](https://www.kjell.com/globalassets/productimages/744875_87032.tif?ref=2AC909CE1A&format=jpg&w=960&h=960&mode=pad =360x) Relämodul för anslutning till Arduino, 100 kr https://www.kjell.com/se/produkter/el-verktyg/arduino/moduler/relamodul-for-arduino-1x-p87032 Relämodul för att styra starkström med lågspänning, 3,3 - 5 volt. ![](https://www.electrokit.com/uploads/productimage/41012/41012199-600x479.jpg =360x) Breadboard, 59 kr, Elektrokit https://www.electrokit.com/produkt/kopplingsdack-400-anslutningar/ Kopplingsbräda för att snabbt kunna koppla ihop kablar med sensor utan att behöva löda. ![](https://www.electrokit.com/uploads/productimage/41003/41003181-600x450.jpg =360x) Kopplingstråd byglar för kopplingsdäck – mjuka 65st, 36 kr, Elektrokit https://www.electrokit.com/produkt/kopplingstrad-byglar-for-kopplingsdack-mjuka-65st/ Kablar. ![](https://www.kjell.com/globalassets/productimages/220030_37584.tif?ref=A8EAF40109&format=jpg&w=960&h=960&mode=pad =360x) Malmbergs Nova Jordat vägguttag 2-vägs Utanpåliggande, 65 kr https://www.kjell.com/se/produkter/el-verktyg/el-produkter/starkstrom/vagguttag/malmbergs-nova-jordat-vagguttag-2-vags-utanpaliggande-p37584 Vanligt utanpåliggande väggutag. ![](https://www.kjell.com/globalassets/productimages/244853_67079.tif?ref=EC0CE27014&format=jpg&w=960&h=960&mode=pad =360x) Sladd Jordad Vit 2 m, 50 kr https://www.kjell.com/se/produkter/dator/kablar-adaptrar/strom-230v/sladdstall-jordad-vit-2-m-p67079 Vanlig sladdkontakt. ![](https://www.kjell.com/globalassets/productimages/230219_68687.tif?ref=7CE8512586&format=jpg&w=960&h=960&mode=pad =360x) Micro-USB-kabel 1 m, 100 kr https://www.kjell.com/se/produkter/dator/datortillbehor/usb-tillbehor/usb-kablar/micro-usb-kabel-1-m-p68687 USB - Micro-USB kabel ![](https://www.kjell.com/globalassets/productimages/768072_90295.tif?ref=E7C3E2C3FF&format=jpg&w=960&h=960&mode=pad =360x) Linocell Mini USB-laddare 2,4 A Svart, 99 kr https://www.kjell.com/se/produkter/mobilt/mobilladdare/usb-laddare/linocell-mini-usb-laddare-24-a-vit-p90218 USB-laddare. ### Mjukvara Jag har använt mig av VS Code som IDE som går ladda ner här: https://code.visualstudio.com/. Som plugin använde jag Pymakr för att kunna kommunicera med Pycom enheten. Förutom det behövs programmet Pycom Firmware Update. Det används för att uppdatera/byta firmware på Pycom enheten. Här valde jag Pybytes som fireware. Programmet går att ladda ner här: https://docs.pycom.io/gettingstarted/installation/firmwaretool/#app. Såhär byts firmware: 1. Första steget för att komma igång är att fästa Pycom enheten på expansion boarden och ansluta den till datorn med hjälp av en USB-kabel. 2. Steg två är att uppdatera firmware med Pycom Firmware Update. Här väljs Pybytes som firmware. 3. Spara informationen som kommer upp. Device ID kommer att behövas senare. När detta är gjort och VS Code är installerat med Pymakr plugin är det relativt enkelt att både ladda upp ny kod och ladda ner kod från Pycom enheten. Snabbkommandon är Ctrl + P, >Pymakr >Upload Project. Slå enter. ### Hårdvara och kopplingar ![](https://i.imgur.com/jfCrmaD.jpg) Från Pycom enheten är dessa kablar kopplade på respektive pin: - gnd går till (-) på breadboarden. - 3v3 går till (+) på breadboarden. - pin 23 går till dht-sensorns signalpin - pin 19 går till relämodulens signalpin Från breadboarden går: - (-) går till (-) på både dht-sensorn och relämodulen. - (+) går till (+) på både dht-sensorn och relämodulen. Relämodulen: - Koppla med hjälp av elektriker om du är osäker. ### Platform Jag har valt att använda mig av Pybytes platform för kommunikation mellan Pycom enhet och internet. Framförallt valde jag Pybytes för att det var väldigt smidigt. https://pybytes.pycom.io/ Så ansluter du enheten till Pybytes: 1. Skapa ett konto på pybytes.io 2. Klicka på Add device 3. Add device via USB 4. Välj typen av enhet du vill ansluta, i mitt fall LoPy4. 5. Välj över vilket nätverk du vill ansluta, jag körde Wifi. 6. Välj vad du vill kalla enheten eller använd föreslaget namn. 7. Lägg till det Wifi nätverk som kommer användas. 8. På skärmen visas nu en activation token. Denna token ska användas när Pycom Firmware Update körs. 9. Kör Pycom Firmware Update och ange din activation token. 10. Nu ska enheten vara ansluten till Pybytes. 11. För mig tog det några försök innan det fungerade. ### Koden Här nedan är koden. Förutom koden nedan har jag även länkat in bibliotektet dht för att kommunicera med temperatur och fuktighetssensorn. Biblioteket går ladda ner här: https://github.com/rbraggaar/DHT_PyCom/blob/master/dth.py. ```python= # Importing librarys import time from machine import Pin from machine import WDT import _thread # Sensor from dht import DHT # Type 0 = dht11 # Type 1 = dht22 # Instansiating a DHT objekt of the DHT class. Input parameters are, which pin and which dht senser type, 11 or 22. temphumi = DHT(Pin('P23', mode=Pin.OPEN_DRAIN), 0) # Giving the board some time to get started. time.sleep(2) # This is for controling the relay. p_out = Pin('P19', mode=Pin.OUT) # Watch dog timer. In case the wdt object don't have the feed() method called every 20 seconds the board will get restated automatically. # This is to prevent sleeping mode and that the board freezes. wdt = WDT(timeout=20000) # Forever running loop. while True: # Reads data from the sensor and store it in the result variable. result = temphumi.read() while not result.is_valid(): time.sleep(.5) result = temphumi.read() print('Temp:', result.temperature) print('RH:', result.humidity) # In case the humidity is greater then 46 the p_out pin is set to 1 (same as on, gives 3.3 volt). And that turns the relay on. if result.humidity > 46: print('Higher then 46') pybytes.send_signal(3,1) p_out.value(1) # In case the humidity is lower than 46 or lower the p_out is set to 0 (same as off, gives 0 volt). That turns the relay off. else: print('Lower then 47') pybytes.send_signal(3,0) p_out.value(0) # Sending the the data to Pybytes dashboard. pybytes.send_signal(1,result.temperature) pybytes.send_signal(2,result.humidity) # Pausing the the execution for 10 seconds. time.sleep(10) # Feeding the watch dog timer. wdt.feed() ``` ### Dataöverföring Data från pycom enheten skickas varje 10 sekunder. I denna prototyp är det wifi som används för att skicka datan till internet. Om jag förtått det rätt så är det MQTT protokollet som används vid kommunikation med Pybytes. ### Presenting the data I bilden nedan visas en dashboard för hur datan presenteras. Grafen upp till vänster visar temperaturen för sensorn, upp till höger visar luftfuktigheten och ner till vänster visar om relät är på eller av. ![](http://studenter.miun.se/~olka0600/img/dashboard_example.png) Datan sparas i Pybytes i 30 dagar. Det är vad som gäller för gratisversionen. Data från Pycom enheten skickas varje 10 sekunder. ### Slutresultatet ![]( http://studenter.miun.se/~olka0600/img/picproject.jpg) Så här blev slutresultatet. Prototypen är testkörd och fungerar. För att få det här till en mer permanent lösning skulle elektroniken behöva omslutas av en låda samt monteras fast med skruvhålen som finns på kretskorten. En sådan låda skulle gå specialdesign och skriva ut med hjälp av en 3d-skrivare. Som framgår av bilden finns ett batteri inkopplat. Det visad sig att strömen från batteriet inte räckte till för att koppla om relät. Därav måste USB-kabeln och laddaren vara med. Ett kraftfullare batteri hade givit en snyggare lösning.