import network
import time
import machine
from umqtt.simple import MQTTClient
# Colocar nombre de la red WiFi(ssid) y password:
#wifi_ssid = ""
#wifi_password = ""
# Prueba de conexión a WiFi
#wlan = network.WLAN(network.STA_IF)
#wlan.active(True)
#wlan.connect('Wokwi-GUEST', '')
#while wlan.isconnected() == False:
# print('Esperando conexión...')
# time.sleep(1)
#print("Conectado a WiFi")
print("Conectando a 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(" Conectado!")
# Configuración del broker MQTT (Node-RED)
#mqtt_host = "192.168.1.250" # IP para Node-RED
mqtt_host = "broker.mqttdashboard.com" # IP para Wokwi
mqtt_username = "" # Nombre de usuario de Node-RED (si es que es necesario)
mqtt_password = "" # Contraseña de Node-RED (si es que es necesaria)
mqtt_publish_topic1 = "topic_volt" # Nombre del topic 1 MQTT IO para Node-RED
mqtt_publish_topic2 = "topic_curr" # Nombre del topic 2 MQTT IO para Node-RED
# Colocar nombre para el cliente MQTT
mqtt_client_id = "rasppi_client"
# Inicializar el MQTTClient y conectarse al servidor MQTT
mqtt_client = MQTTClient(
client_id=mqtt_client_id,
server=mqtt_host,
user=mqtt_username,
password=mqtt_password)
mqtt_client.connect()
# Configuración de los pines analógicos
analog_pin1 = machine.ADC(26) # Canal ADC0
analog_pin2 = machine.ADC(27) # Canal ADC1
# Función para leer los valores analógicos
def leer_valores_analogicos():
# Leer los valores analógicos
analog_value1 = analog_pin1.read_u16()
analog_value2 = analog_pin2.read_u16()
return analog_value1, analog_value2
# Programa principal
try:
while True:
# Leer los valores analógicos
analog_value1, analog_value2 = leer_valores_analogicos()
# Convertir los valores analógicos a voltaje (se alimentan los sensores de Vbus = 5v)
voltage1 = analog_value1 * 5.0 / 65535.0
voltage2 = analog_value2 * 5.0 / 65535.0
# Publicar los valores en los tópicos correspondientes
mqtt_client.publish(mqtt_publish_topic1, str(voltage1))
mqtt_client.publish(mqtt_publish_topic2, str(voltage2))
# Se imprime en el monitor serial para ver la información enviada
print("Enviado datos: Analógico 1 =", voltage1, "V, Analógico 2 =", voltage2, "V")
# Esperar un tiempo antes de enviar nuevos datos (en segundos)
time.sleep(3)
except Exception as e:
print(f'Failed to publish message: {e}')
finally:
mqtt_client.disconnect()