import network
import time
from machine import Pin, ADC
import dht
from umqtt.simple import MQTTClient
import ujson
# Wi-Fi Configuration
SSID = 'Redmi 9A'
PASSWORD = '12345678'
# MQTT Configuration
MQTT_BROKER = 'broker.hivemq.com'
MQTT_TOPIC = 'sensor/data'
# DHT22 Setup
sensor = dht.DHT22(Pin(15))
# Potentiometer Setup
potentiometer = ADC(Pin(34))
# Ultrasonic Setup
trig = Pin(14, Pin.OUT)
echo = Pin(27, Pin.IN)
# LDR Setup
ldr = ADC(Pin(33))
# LED Setup
led = Pin(32, Pin.OUT)
# Set up Wi-Fi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('Connecting to network...')
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('Network connected:', wlan.ifconfig())
# MQTT Setup
client = MQTTClient('esp32_sender', MQTT_BROKER)
client.connect()
# Measure Ultrasonic distance
def measure_distance():
trig.low()
time.sleep_us(2)
trig.high()
time.sleep_us(10)
trig.low()
pulse_time = time.pulse_us(echo, 1)
distance = (pulse_time * 0.0343) / 2
return distance
# Read sensor values and send data to MQTT
def read_sensors():
sensor.measure()
temperature = sensor.temperature()
humidity = sensor.humidity()
potentiometer_value = potentiometer.read()
distance = measure_distance()
ldr_value = ldr.read()
data = {
"temperature": temperature,
"humidity": humidity,
"potentiometer": potentiometer_value,
"distance": distance,
"ldr": ldr_value
}
# Display sensor data in the serial monitor
print("Sensor Data: ", data)
client.publish(MQTT_TOPIC, ujson.dumps(data))
# Main loop
def main():
connect_wifi()
while True:
read_sensors()
time.sleep(5)
main()