import network
import umqtt.simple
from machine import Pin, ADC, SoftI2C
from time import sleep
import math
import mip
ssid = "Wokwi-GUEST"
broker_address = "broker.mqttdashboard.com"
t = "bipolar/15/v/speed"
client_id = "temperature-homework-15-v"
client = umqtt.simple.MQTTClient(client_id, broker_address)
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=400000)
pot = ADC(Pin(32))
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, "")
while not wifi.isconnected():
pass
mip.install("github:brainelectronics/micropython-i2c-lcd")
import lcd_i2c
display = lcd_i2c.LCD(addr=0x27, cols=16, rows=2,i2c=i2c)
display.begin()
client.connect()
while True:
pot_value = pot.read_u16()
temperature = 1 / (math.log(1 / (65536 / pot_value - 1)) / 3950 + 1 / 298.15) - 273.15 #formula from sensor documentation, adjusted for 16bit adc
client.publish(t, "temp " + str(temperature))
display.clear()
display.set_cursor(col=0, row=0)
display.print("Sending temp: ")
display.set_cursor(col=0, row=1)
display.print(f"{temperature:.1f}" + "C")
sleep(5)