# Temperatur kontroller
Erol Ibraimovski (ei222fb)
En liten temperatur kontroller med led indikator som visar om det är behaglig temperatur hemma.
Det kommer att ta ca 30 timmar att göra projektet.
### Objective
Jag valde detta projekt för att temperatur har många användningsområden. Fick lite inspiration av att vämrepumpen hemma har gått sönder och kom att tänka på hur allt detta används i bakgrunden. Man mäter temperaturen hemma, bilar, utomhus, datorer och kroppen och allt annat. Pumpen jag har hemma kan man ha igång bara ett antal timmar per dag och gjorde detta projektet för att kunna mäta och se genom led lampan ifall det är en behaglig temperatur inomhus. Lyser lampan grönt så är det bra. Blir lampan blå är det kallt och blir lampan rött är det för varmt. Passar perfekt ifall man har småbarn hemma.
### Material
| Material | Quantity | Purchased | Price |
| -------- | -------- | -------- | -------- |
| Fipy | 1 | pycom | 54 € |
| Expansion board 3.0 | 1 | pycom | 16 €|
| LoRa (868MHz/915MHz) & Sigfox Antenna Kit | 1 | Pycom | 9 € |
| Kopplingsdäck | 1 | Electrokit | 59 kr |
| MCP9700 Sensor | 1 | Electrokit | 8 kr |
| kopplingstråd | 1 | Electrokit | 36 kr |
Fipy har jag valt för att den har det lilla extra där man kan koppla in LTE anslutning. Enheten programmeras med micropython och har flera olika anslutningar som bluethooth, lora, sigfox och wifi. Enheten har också analoga och digitala input/output.
Fig. 1. Fipy with headers. Pycom.io

Expansion board 3.0 används för att ansluta Fipy.
Fig. 2. Expansion board. Pycom.io

MCP7900 är en digital temperature sensor.
Fig. 3. MCP7900 temperatur sensor. [Electrokit](https:Electrokit.com)

Antennen kopplas till Fipy för att kunna köra med
lora och sigfox anslutning.
Fig. 4. Lora och Sigfox antenn. Pycom.io

Kablarna används för att koppla kopplingsdäcket där sensorn sitter med Expansionboard 3.0.
Fig. 5. Kablar för koppling. [Electrokit](https:Electrokit.com)

Kopplingsdäcket används för att underlätta projektet. Det går att jobba utan.
Fig. 6. Kopplingsdäck. [Electrokit](https:Electrokit.com)

### Computer setup
Använder Windows 10. Började med att använda VS Code men gillade inte gränssnittet och byta till Atom istället. Så det krävs installation av Atom. Sen behöver man installera eller uppgradera node.js. Efter det installerar man pymakr plugin till atom. Sedan ska man välja en plattform för att visa visuell data. Där använde jag pybytes. När man har fått tillgång till pybytes ska man installera pycom firmwire update och koppla upp enheten till pybytes med en aktiveringskod som hämtas i platformen. Sedan körde jag koden genom main.py
### Putting everything togheter
Det finns 6 olika main komponenter. Första ska fipy kopplas på pycom breadboarden med pycom loggorna på samma sida. Antennen kopplas in nere på vänster hörna på fipy. Sedan kopplar man temperatur sensorn MCP 7900 på den andra breadboarden. Tänk på att om platta sidan av sensorn är frontad mot dig själv så är ground på högra sida. Då blir mitten pin och vänster voltage.
blå används för ground och dras från sensorns högra sida till ground i fipy, gul från mitten av sensorn till P20 på fipy och röda från sensorns vänstra sida till 3v3 på fipy. Eftersom att det inte krävs så mycket ström så behövs inga resistorer.
Detta projektet är bara avsett för utbildning där man simulerar ett givet temperatur men kan vidareutvecklas till större projekt för affärsendamål.

### Platform
Tittade på olika plattformar eftersom att pybytes inte funkade at the moment. Men fick ett supportmail precis när jag skulle prova på andra plattformar att det skulle funka nu och beslöt mig för att ge pybytes en chans till. Pybytes gränssnitt är inte jättebra och och verktygen för att läsa av data är väldigt basic jämfört med andra plattformar som jag hittade på internet, har däremot inte provat för att vittna detta. Ett plus i kanten är nyheterna sim-cards, pymakr och machine learning och att det är gratis att använda pybytes.
### The code
Koden till Temperatur sensor och led lampan på Fipy enheten. Från rad 8 definierar man pin på fipy där temperatursensorn är kopplad och omvandlar analog till digital eftersom sensorn körs på digital. Sedan vid rad 11 börjar en while loop som omvandlar millivolt till grader i C. Från rad 15 börjar en if elif där programmet printar ut om det är low eller high temperatur beroende på om temperaturen är under 27 grader eller över 30 grader. Pycom.rgbled i dessa if elif ändrar till blå vid low och röd vid high. Sista elif i rad 23 printar nice mellan 28-29 grader och lyser grönt. Detta ska vara som en indikator att allt är som det ska. I rad 27 skickar man signalen pin 20. Round används för att avrunda till heltal. Det har jag använt för att få tydligare överblick.

### Transmitting the data / connectivity
Jag har använt mig av vanlig WIFI uppkoppling. I terminalen kommer värdet varje sekund. I Pybytes kommer värdet bara vid temperatur ändring. Detta skickas med Pybytes.send_signal(20, round(degC)).
### Presenting the data
Diagrammet är en Line Chart som är aktiv bara ifall temperaturen ändras och sparar 20 värden. Uppdatering av tabellen är satt varje sekund.
Under linecharten har jag en Main Table som visar bara tid och temperatur för att förenkla analys. Detta sparas i Pybytes platformen.

### Finalizing the design
Bilderna nedan visar hur temperaturen hanterar tre olika faser. Det är low(kallt), nice(bra) och high(varmt/critical). Tanken från början var att koppla led lampor på kopplingsdäcket. Precis när jag hade nått slutet av projektet så hade jag glömt att stänga av strömmen och pillade på kopplingen och någonting förstördes. Fipyn och sensorn klarade sig och efter många om och men kom jag på att det gick att lösa med den inbyggda lampan i Fipy.




