#ACTIVIDAD 1_ PARTE IV_ MOTOR SERVO INTEGRADO CON SENSOR DHT22_ERICK ZURITA
#SE CONSOLIDA LA IMPORTACIÓN DE TODAS LAS LIBRERIAS DE LOS DOS CÓDIGOS
import network
import time
import dht
import ujson
from umqtt.simple import MQTTClient
from machine import Pin, PWM
from utime import sleep, sleep_ms
#Se procede a configurar Servo
servo = PWM(Pin(18), freq=50)
#Se procede a configurar el Sensor conjuntamnte con el proceso de envio de datos al servidor de medición.
# MQTT Server Parameters
MQTT_CLIENT_ID = "micropython-weather-demo"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "wokwi-weather"
# configuración del sensor
sensor = dht.DHT22(Pin(15))
#proceso de conexión y envio de datos
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!")
prev_weather = ""
while True:
print("Measuring weather conditions... ", end="")
sensor.measure()
#defincion de la variable temperatura
temperature = sensor.temperature()
#definición de la condición de movimiento sobre temperatura ambiente
if temperature > 25.0:
print("Temperatura mayor al ambiente, moviendo servo.")
# Mover el servo de 0 a 180 grados
for i in range(1800, 8000):
servo.duty_u16(i)
sleep_ms(1)
#condición para detener el servo.
else:
print("Temperature menor a la ambiente. Parar servo.")
# Detener el servo
servo.duty(0)
message = ujson.dumps({
"temp": sensor.temperature(),
"humidity": sensor.humidity(),
})
if message != prev_weather:
print("Updated!")
print("Reporting to MQTT topic {}: {}".format(MQTT_TOPIC, message))
client.publish(MQTT_TOPIC, message)
prev_weather = message
else:
print("No change")
time.sleep(1)