---
# System prepended metadata

title: Tutorial - Easy IOT Temperature monitor.

---

# Tutorial - Easy IOT Temperature monitor.



## :memo: Tutorial on how to build a room temperature monitor. 


Room temperature monitor. 
Kai Levin (kl223hu)
In this project, the goal is to create a simple room temperature monitor with Heltec Lora32 chip and MCP9700 sensor.
The project takes about 2 hours to do.

:rocket: 

### Objective
The room temperature monitor is a simple concept which allows users to check the temperature of the room or any enviroment from mobile phone or PC with a WIFI connection.

I choose to do this project because of it is something useful in our everyday life. 



### Material

1x Heltec Lora32 chip with Wifi connection
1x MCP9700 sensor
1x Breadboard
Jumper wire
1x Micro-USB to USB Cable
1x PC(Windows)
Registered account at Datacake.
WiFi connection

Everything can be bought at Electrokit.


## Putting everything together



1. Connect the Heltec chip to the breadboard. Shown in the picture.
2. Connect the positive voltage leg to 3V3.
3. Connect the ground leg to GND.
4. Connect the output leg to 39 (pin 16).

![](https://i.imgur.com/w8Jo3LR.png)

5. Connect the chip to the computer with a USB Cable.
6. Follow this https://hackmd.io/@lnu-iot/By5ZUqvOq To flush the heltec chip and make it ready to be programmed.

## Platform
When this project started, choosing the right platform was tough because there are so many awesome solutions out there. The most important factors were

ease of use
available documentation
price/subscription costs

After considering these factors, MQTT using (https://datacake.co/pricing) seemed like a perfect solution. Some of the functionality available on this platform are

Inbuilt easy to use dashboards
Straightforward and easy to use/understand documentation
Advanced services like weather, zapier

## The Code

The project contains:
main.py
config.py
boot.py
mqtt.py
lib

main.py:
```
from mqtt import MQTTClient
import time
import ujson
import machine
import config

def sub_cb(topic, msg):
   print(msg)


client = MQTTClient(config.SERIAL_NUMBER,
                    config.MQTT_BROKER,
                    user=config.TOKEN,
                    password=config.TOKEN,
                    port=config.PORT)
client.set_callback(sub_cb)
client.connect()
print('connected to MQTT broker')
my_topic = config.TOPIC


while True:
    adc = machine.ADC()
    apin = adc.channel(pin='P16')


  millivolts = apin.voltage()
  celsius = (millivolts - 500.0) / 10.0

  temperature = celsius

  time.sleep(1)
    client.publish(topic=my_topic, msg=str(temperature))
    client.check_msg()
    print("Send data to MQTT broker, sleeping for 2 minutes...")
    time.sleep(3) 
```
config.py:

```
WIFI_SSID = 'xxx'
WIFI_PASS = 'xxx'

SERIAL_NUMBER = 'DEVICE_SERIAL_NUMBER'
MQTT_BROKER = 'mqtt.datacake.co'
TOKEN = 'ACCOUNT_TOKEN'
PORT = 1883
TOPIC = 'TOPIC_TO_PUBLISH_TO'
```

boot.py:
```
import network
import time
import config


wlan = network.WLAN(mode=network.WLAN.STA)
wlan.connect(config.WIFI_SSID, auth=(network.WLAN.WPA2, config.WIFI_PASS))
while not wlan.isconnected():
    time.sleep_ms(50)
print(wlan.ifconfig())
```

main.py includes the code to catch the data from the sensor and send it to Datacake.
boot.py and config.py includes the code for the Wifi connection. The SSID and Password need to be set manually.
mqtt.py is the source code for mqtt modul. https://raw.githubusercontent.com/pycom/pycom-libraries/master/lib/mqtt/mqtt.py

## Transmitting the data / connectivity
WiFi is used to transfer data. Data collected by the sensor is encapsulated within the IPv4 packet and send to the Datacake server by transport protocol MQTT. 

This provides a reliable way to transfer the data. The home WiFi network provides enough bandwidth for the monitor. 

The data is sent every 3 secs.

## Presenting the data
After registeration at Datacake.
Now that we can send data to Datacake, let’s build a simple dashboard. To do that, navigate to your device and select Dashboard.
Click on the toggle button to the far right and you will see some additional options.
Click on Add Widget and select Value.
Give it a name and select Data in the middle menu. Select the Field from which you want your Widget to fetch data from, in our case it is the Temperature field.
Finally, Click on Save and make sure to click on the toggle button to the far right again to save your dashboard.
![](https://i.imgur.com/bBbDB3T.png)

## Finalizing the design
Great work! Now the project is finished!
Enjoy monitoring the temperature! :)
![](https://i.imgur.com/qhblkhj.jpg)


