"""
Ejemplo de programa en MicroPython para realizar manipulación de un motor servo
Empleando la plataforma de Wokwi.com
Todos los derechos a los que crearon los códigos iniciales del movimiento del servo
https://www.upesy.com/blogs/tutorials/esp32-servo-motor-sg90-on-micropython
MicroPython IoT Weather Station Example for Wokwi.com
To view the data:
1. Go to http://www.hivemq.com/demos/websocket-client/
2. Click "Connect"
3. Under Subscriptions, click "Add New Topic Subscription"
4. In the Topic field, type "wokwi-weather" then click "Subscribe"
Now click on the DHT22 sensor in the simulation,
change the temperature/humidity, and you should see
the message appear on the MQTT Broker, in the "Messages" pane.
Copyright (C) 2022, Uri Shaked
https://wokwi.com/arduino/projects/322577683855704658
"""
print("Saludos, Este es un programa de prueba para mover servo en el ESP32! empleando un sensor de temperatura y humedad")
#Se realiza un saludo de bienvenida empleando la funcion print
import time
# Importa las rutinas necesarias para realizar operaciones empleando el tiempo https://docs.micropython.org/en/latest/library/time.html
from machine import Pin
# Importa las rutinas necesarias para realizar operaciones de control de la tarjeta https://docs.micropython.org/en/latest/library/machine.html
import dht
# Importa las rutinas necesarias para realizar operaciones bajo sensores digitales de temperatura y humedad https://docs.micropython.org/en/latest/esp32/quickref.html#dht-driver
import machine # Importa las rutinas necesarias para realizar operaciones de control de la tarjeta https://docs.micropython.org/en/latest/library/machine.html
sensor = dht.DHT22(Pin(15)) #Se asigna la salida del sensor al pin
control=machine.Pin(18,machine.Pin.OUT) #Se asigna a la variable control las funciones del control de la placa
motor=machine.PWM(control) #Se asigna a la variable motor, funciones en base al control de la placa con el PWM
#Para establecer la posicion del servo, se emplea la señal del PWM y su ciclo de trabajo por ejemplo:
# 0.5ms/20ms = 0.025 = 2.5% ciclo de trabajo
mensaje =""
motor.freq(50) #Se establece la frecuencia a 50 Hz que es un periodo de 20 ms
dormir = 1 #Se asigna la variable dormir
# Se inicia primer set de medidas para ajuste inicial
print("Realizando mediciones ambientales... ") # Mensaje de inicio de toma de datos
sensor.measure() #Realización de medida del sensor
temp1 = sensor.temperature() #Se asigna variable temperatura
hume1 = sensor.humidity() #Se asigna variable Humedad
mensaje = "Temperatura: ", temp1, " Humedad: ", hume1 #Se crea el mensaje para indicar los valores
print(mensaje) # Se imprime el mensaje
if temp1 < 20: # Si la temperatura es menor a 20, se ejecuta primera funcion
motor.duty(26)
time.sleep(dormir)
if (temp1 >= 20) and (temp1 < 50): # Si la temperatura es mayor de 20 y menor a 50 se ejecuta segunda funcion
motor.duty(77)
time.sleep(dormir)
if temp1 > 50: # Si la temperatura es mayor a 50, se ejecuta última funcion
motor.duty(123)
time.sleep(dormir)
while True: # Se inicia un ciclo infinito de mediciones
print("Realizando mediciones ambientales... ") # Mensaje de toma de datos continuo
sensor.measure() #Realización de medida del sensor
temp1 = sensor.temperature() #Se asigna variable temperatura
hume1 = sensor.humidity() #Se asigna variable Humedad
mensaje = "Temperatura: ", temp1, " Humedad: ", hume1 #Se crea el mensaje para indicar los valores
print(mensaje) # Se imprime el mensaje
if temp1 < 20: # Si la temperatura es menor a 20, se ejecuta primera funcion
motor.duty(26)
time.sleep(dormir)
if (temp1 >= 20) and (temp1 < 50): # Si la temperatura es mayor de 20 y menor a 50 se ejecuta segunda funcion
motor.duty(77)
time.sleep(dormir)
if temp1 > 50: # Si la temperatura es mayor a 50, se ejecuta última funcion
motor.duty(123)
time.sleep(dormir)