import network
import time
from machine import I2C, Pin
from i2c_lcd import I2cLcd
from machine import Pin
import dht
import ujson
from umqtt.simple import MQTTClient
# MQTT Server Parameters
MQTT_CLIENT_ID = "micropython-weather-demo"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = "Khanh191400557"
MQTT_PASSWORD = "Khanh3112"
MQTT_TOPIC = "Distance-HCSR04"
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '')
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")
AddressOfLcd = 0x27
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000) # connect scl to GPIO 22, sda to GPIO 21
lcd = I2cLcd(i2c, AddressOfLcd, 4, 20)
trig = Pin(13, Pin.OUT)
echo = Pin(12, Pin.IN)
lcd.move_to(0,0)
lcd.putstr('DONGOCKHANH')
lcd.move_to(0,1)
lcd.putstr("HA NOI ")
def ultra():
trig.off()
time.sleep_us(2)
trig.on()
time.sleep_us(10)
trig.off()
while echo.value() == 0:
inicio = time.ticks_us()
while echo.value() == 1:
fin = time.ticks_us()
duracion = fin - inicio
distancia = (duracion * 0.0343)/2
return distancia
while True:
lcd.move_to(0,2)
lcd.putstr("Distancia: {} cm".format(ultra()))
time.sleep_ms(2000)
message = ujson.dumps({ "Distancia: {} cm".format(ultra()) })
client.publish(MQTT_TOPIC, message)