# TUTORIAL: Bygga en IoT enhet kopplad till Wi-Fi som mäter Luftfuktighet och Temperatur och har ett batteri
av **Nikita Tzonov**, nt222gq

Denna tutorial kommer att gå igenom hur man gör en IoT enhet som mäter luftfuktighet och temperatur. Tutorialen kommer att beskriva alla moment från start till slut för att kunna införskaffa delar, bygga ihop, programmera och visualisera datan från de mätningar som genomförts.
Ett exempel på ett användingsområde för detta är att på distans hålla koll på luftfuktigheten i källaren på ett landställe. Då behöver man inte vara på plats för att veta om det håller på att bli för fuktigt och kan riskera att mögel bildas.
**Tid att genomföra projektet exkluderat leveranstid är ungefär 30-60 minuter.**
## Material
För att genomföra detta projekt kommer vi att använda oss av följande material:
- [ ] [Pycoms LoPy4](https://pycom.io/product/lopy4/) - MicroPython Board som kan kopplas till bl.a. Wi-Fi.
- [ ] [Pycoms Expansion Board](https://pycom.io/product/expansion-board-3-0/) - Expansion till LoPy4 för att bl.a. kunna koppla denna till datorn via USB.
- [ ] [DHT11 Sensor](https://www.electrokit.com/en/product/digital-temperature-and-humidity-sensor-dht11/) - Sensor som mäter luftfuktighet och temperatur.
- [ ] [Breadboard](https://www.electrokit.com/en/product/solderless-breadboard-400-tie-points/) - Platta för att lättare koppla ihop sladdar.
- [ ] [Jumper Wires](https://www.electrokit.com/en/product/jumper-wires-1-pin-male-male-150mm-10-pack/) - Sladdar.
- [ ] [USB till Micro USB](https://www.electrokit.com/produkt/usb-kabel-a-hane-micro-b-hane-15cm/) - USB för att koppla enhet till dator.
- [ ] [Li-Po-batteri med JST-PH-kontakt](https://www.kjell.com/se/produkter/el-verktyg/arduino/tillbehor/luxorparts-li-po-batteri-37-v-med-kontakt-1200-mah-p87924?gclid=Cj0KCQjw6PD3BRDPARIsAN8pHuFgWzIFTvEDVKHreUVKa-MtwftktIuYneBmQ6cYXJCCZ1JiRPmx1fMaAuqQEALw_wcB&gclsrc=aw.ds) - Batteri som går att koppla till Expansionboarden.
- [ ] [USB-C till USB Adapter](https://www.apple.com/shop/product/MJ1M2AM/A/usb-c-to-usb-adapter) - Behövs för vissa MacBook användare.
## Förberedelser
För att kunna koppla enheten och programmera denna behöver vi genomföra några steg för att förbereda datorn. Dessa kan skilja sig lite mellan macOS och Windows.
### Förbereda programering
- [ ] Installera [NodeJs](https://nodejs.org/en/)
- [ ] Ladda ner [Atom](https://atom.io/) eller [VSCode](https://code.visualstudio.com/)
- [ ] Installera PyMakr Plugin:
- **Atom**: Install a Package > Open Installer > Sök på PyMakr > Install
- **VSCode**: Extensions > Sök på PyMakr > Install
### Förbereda Plattform och Uppdatera/Koppla Expansion Board till denna
Vi kommer att använda oss av Pycoms egna plattform Pybytes. Fördelar med denna är att det är gratis, är enkelt att arbeta med och är lätt att visualisera insamlad data.
- [ ] Skapa ett konto på [Pybytes](https://pybytes.pycom.io)
- [ ] Lägg till Wi-Fi på Pybytes
- På Pybytes navigera till Configure Networks
- Klicka på Add Wi-Fi
- Skriv in SSID (namn) och Password.
- [ ] Lägga till en enhet på Pybytes
- Navigera till Add a Device
- Add a Device via USB
- Välj LoPy4
- Välj Wi-Fi
- Välj ett namn och nätverket som du har lagt till
- [ ] Ladda ner Firmware Updater från den sidan du blir skickad till på pybytes (välj rätt operativsystem) och kopiera Activation Token som står under
- [ ] Sätt ihop LoPy4 till din Expansion Board enligt följande bild (så att det blir rätt håll):

- [ ] Koppla din expansionboard till datorn via USB
- [ ] Kör Firmware Updater
- [ ] Klistra in Activation Token när du blir ombedd om denna
- [ ] Följ instruktionerna på skärmen tills du är klar.
## Sätta ihop enheten
Nu har vi kopplat upp enheten men för att denna ska kunna mäta luftfuktighet och temperaturen behöver vi koppla dit sensorn. För att denna ska funka utan att vara kopplad till datorn behöver vi koppla dit vårt batteri. Följ bilderna för att sätta ihop enheten.
### Skruva ihop delarna från antennen

### Koppla antennen till 868/915 MHz


### Koppla batteriet

### Koppla DHT11 Sensorn till breadboarden
#### Uttagen på DHT11

#### Koppla GND till GND, VCC till 3v3 och DATA till P23


## Ladda upp koden
Nu är enheten uppkopplad och byggd. Nu behöver vi ge denna instruktioner. Detta gör vi genom att ladda upp koden till enheten.
- [x] Koppla enheten via USB till datorn
- [x] Öppna VSCode eller Atom, enheten kommer att kännas av via Pymakr
- [x] Lägg till följande kod i main.py
```
import time
from machine import Pin
import _thread
from dht import DHT
# Type 0 = dht11
th = DHT(Pin('P23', mode=Pin.OPEN_DRAIN), 0)
time.sleep(2)
# Läser och skickar signal 1 (temp) & 2 (fukt)
while True:
result = th.read()
while not result.is_valid():
time.sleep(.5)
result = th.read()
pybytes.send_signal(1,result.temperature)
pybytes.send_signal(2,result.humidity)
# Mäter efter 1800 sekunder/30 minuter
time.sleep(1800)
```
- [ ] Spara och ladda upp
## Nätverk
Datan skickas var 30 minut. Vi har använt oss av Wi-Fi för att skicka datan.
## Samanställa mätningarna och skapa dashboard
Nu kommer datan att skickas som signaler till Pybytes. Vi ska nu tolka och presentera denna på en dashboard på Pybytes.
Såhär kommer dashboarden se ut efter detta steg

- [ ] Navigera till Maintain Device
- [ ] Välj den enhet som vi konfigurerade
- [ ] Navigera till Signals
- [ ] Define New Signal och skriv in följande:
- Signal: 1
- Name: Temp
- Unit: C
- [ ] Define New Signal och skriv in följande:
- Signal: 2
- Name: RH
- Unit: %
- [ ] Klicka på Signal 1, Edit på grafen och sedan Add to Dashboard. Gör samma på Signal 2.
## Slutgiltiga ord
Detta projekt är huvudsakligen för att lära sig mer om IoT och hur man kan bygga en snabb prototyp. Förutom det som man redan gjort kan man även 3d printa ett fodral till enheten för att det ska bli kompaktare och smidigare.
