import network
import time
from machine import Pin, ADC
from umqtt.simple import MQTTClient
# WiFi connection details
SSID = "Wokwi-GUEST"
PASSWORD = ""
# MQTT broker details
MQTT_BROKER = "broker.hivemq.com"
MQTT_PORT = 1883
MQTT_TOPIC = "esp32/potentiometer"
# Setup potentiometer
adc = ADC(Pin(36)) # VP pin (GPIO36)
adc.atten(ADC.ATTN_11DB) # Full range: 0-3.3V
# Connect to WiFi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
print("Connecting to WiFi...")
time.sleep(1)
print("Connected to WiFi:", wlan.ifconfig())
# Connect to MQTT broker
def connect_mqtt():
client = MQTTClient("esp32_client", MQTT_BROKER, port=MQTT_PORT)
client.connect()
print("Connected to MQTT Broker")
return client
def main():
connect_wifi()
client = connect_mqtt()
try:
while True:
pot_value = adc.read() # Read potentiometer value (0 to 4095)
print("Potentiometer value:", pot_value)
# Publish potentiometer value to the MQTT broker
client.publish(MQTT_TOPIC, str(pot_value))
print(f"Published {pot_value} to {MQTT_TOPIC}")
time.sleep(1) # Delay before sending the next value
except KeyboardInterrupt:
print("Disconnected from MQTT Broker")
client.disconnect()
if __name__ == "__main__":
main()