# Guide för temparatur- och luftfuktighetssensor med belysning
Peter Hansson (ph222wf)
## Introduktion
Syftet med detta projekt var att kunna se temperaturen samt luftfuktighet i ett arbetsrum. Detta för att kunna se hur mycket temperaturen stiger samt om luftfuktigheten ändrar sig mycket då det är mycket värme som kommer från all elektronik och om rummet behövs kylas ner eller ändra luftfuktigheten.
### Tidsåtgång
Beräknad tidsåtgång för detta projekt uppskattas att ligga på ungefär en till två timmar vid lite tidigare vana med programmering. Annars upp till fyra timmar inräknat all installation av mjuk- och hårdvara.
## Syftet med projektet
Tanken med detta projekt kom då vi användandet av datorerna i arbetsrummet gör så det blir väldigt varmt i rummet och särskilt under sommarmånaderna. När datorerna används för spelande eller tyngre arbete höjs temperaturen markant samt att det märks också att luften i rummet blir väldigt torr när det blir varmare, så det skulle vara kul att se om det verkligen var någon skillnad eller om det bara är inbillning.
Troligtvis kommer detta projekt kunna visa sambandet mellan lägre luftfuktighet och högre temperaturer och för att motverka detta genom att t.ex. använda sig av en luftfuktare elle fläkt för att motverka detta.
## Material som behövs
I detta projekt har en Pycom LoPy4 använts då den har stor kapacitet för att göra olika svårighetsgrader på olika projekt och i detta fall skulle det kunna bli lite billigare genom att använda sig av en WiPy istället och blir då ungefär 150kr billigare än detta alternativ.
Som sensor för mätningarna valdes DHT11 dels då den är relativt billig men även då mätningarna inte behöver vara mer noggrann än 1 grad celsius. Sedan användes en breadboard vilket gör att det är enklare vid laboreringen men i detta fall så är det frivilligt om detta behövs. Slutligen behövs tre labbsladdar för att koppla ihop sensorn med LoPy.
| Material | Pris | Webbplats |
| ------------------------------ | --------- | ------------------------------------------------------------------------------------ |
| Pycom LoPy 4 + expansionsbräda | ca: 500kr | [LoPy 4](https://pycom.io/product/lopy4/) |
| DHT11 | 49kr | [DHT11](https://www.electrokit.com/produkt/digital-temperatur-och-fuktsensor-dht11/) |
|Breadboard |59kr |[Breadboard](https://www.electrokit.com/produkt/kopplingsdack-400-anslutningar/) |
| Labbsladd | 29kr | [Labbsladd](https://www.electrokit.com/produkt/labbsladd-20-pin-15cm-hona-hane/)
## Installation av mjukvara
All mjukvara är gjord via Windows 10 men skall fungera på Mac, Linux mm. Det första som gjordes var att uppdatera programvaran i LoPy 4 genom att ladda ner programvaran på https://docs.pycom.io/gettingstarted/installation/firmwaretool/ och följa instruktionerna att koppla ifrån Pycom-enheten och starta installationen. Koppla sedan in enheten igen och gå vidare i installationsprogrammet så kommer den senaste uppdateringen installeras på enheten.
Den IDE som används är [Visual Studio Code](https://code.visualstudio.com) och genom att använda pluginen [Pymakr](https://https://marketplace.visualstudio.com/items?itemName=pycom.Pymakr) för Visual Studio Code (VSC) så kan LoPy kommunicera med VSC och mjukvaran kan köras samt laddas upp på enheten. För att kunna köra Micropython som i detta fall är det programmeringsspråk som enheter använder behövs [Node.js](https://nodejs.org/en/) vilket är ett Javaspråk som behövs för utvecklandet. Det behövs också andra saker som Python, Chocolatey mm men genom att under installationen av Node.js (fig.1) bocka i rutan så kommer automatiskt nödvändiga verktyg som behövs laddas ner och installeras.
Koden skrivs in i VSC och laddas upp till Pycom-enheten genom att använda sig av "Upload" knappen längst ner i fönstret (fig.2). Då laddas projektet upp till enheten och om behovet av att ladda ned det som befinner sig på enheten använder man sig av "Download".

fig.1

fig.2
### Koppling
Inkopplingen av sensorn är enkel och kräver endast tre olika labbkablar i tre olika färger för att lättare skilja de olika utgångarna åt. P23 (data) Kopplas till pinne 1 på sensorn, 3,3v-kabeln kopplas till pinne två på sensorn och gnd (jord) kopplas till pinne tre. Se bilden nedan för tydligare beskrivning (fig.3).

fig.3
## Kod
```
# Läser in alla nödvändiga bibliotek samt stänger av pulserande lampa
import pycom
import time
from machine import Pin
from dht import DHT
pycom.heartbeat(False)
# Anger vilken pinne informationen skall läsas ifrån.
# 0 på slutet anger sensor DHT11 och 1 innebär DHT22.
th = DHT(Pin('P23', mode=Pin.OPEN_DRAIN), 0)
# Sover i en sekund så mätningen hinner komma igång
time.sleep(1)
# En loop som körs och läser in samt matar ut temperatur och luftfuktighet.
while True:
result = th.read()
while not result.is_valid():
time.sleep(.5)
result = th.read()
print('Temperaturen är:', result.temperature, 'grader celcius')
print('Luftfuktigheten är:', result.humidity, '%')
# Skickar informationen till pybytes via mqtt
pybytes.send_signal(1, result.temperature)
pybytes.send_signal(2, result.humidity)
# Om temperaturen är under 20 grader lyser diod blå, över 25 grader röd, annars grön
if (result.temperature) < 20:
pycom.rgbled(0x0000FF)
elif result.temperature > 25:
pycom.rgbled(0xFF0000)
else:
pycom.rgbled(0x00FF00)
# Vilotid innan ny mätning görs i sekunder.
time.sleep(20)
```
## Överföring av data och anslutningar
I detta fall då det är lite information som används och som används i samma rum som datorerna så har WiFi använts och då transportprotokollet MQTT som passar väldigt bra för just detta ändamål. Genom att i koden anväda sig av `pybytes.send_signal(1, result.temperature)
pybytes.send_signal(2, result.humidity)`så skickas teperatur- och luftfuktighetsdatan till pybytes som används för att visa och lagra den data som behövs.
Med den lilla kodsnutten `time.sleep(20)`anges tiden i sekunder hur ofta loopen skall köras och i detta fall hur ofta datan skall skickas. I detta fall kanske 30 sekunder eller till och med 1 minut hade räck gott och väl då temperaturen inte skiftar så ofta.
## Presentation av data
Då inga större datamängder eller information behövs visas så har [Pybytes](https://https://pybytes.pycom.io/) (fig.4) som tillhandahålls av Pycom och är gratis. Datan sparas var 20:e sekund och i detta fall sparas det i databasen i en timma då det är tillräckligt för att se sambandet mellan temperaturen och luftfuktigheten. Det finns många olika sätt att visa datan på och i detta fall har bara de enklaste sakerna tagits med och på bilden nedan finns visning för temperaturen samt luftfuktigheten i två olika tabeller. Det finns också ett par fönster för visandet av hur mycket data som tagits emot.

fig.4
## Slutförande av projektet
Nu när projektet har nått sitt slut så finns det mycket som har gått bra och som kanske kunde gjorts bättre. Det var en rolig utmaning som i efterhand kunde gjorts bättre då det var lite stressigt att komma på något som skulle byggas utan att ha en ordentlig grund innan. Hade det funnits lite mer kunskaper innan så hade detta projekt blivit lite mer avancerat. Men överlag har allt fungerat bra och om lite mer tid hade funnits så hade en fläkt kopplats till för att automatiskt slå av och på sig beroende av temperaturen.
Till sist så kommer en bild på den färdiga prototypen (fig.5).

fig.5