from machine import Pin, I2C
from imu import MPU6050
import network
import time
import math
from umqtt.simple import MQTTClient
# ---------- WiFi Configuration ----------
WIFI_SSID = "Wokwi-GUEST" # Change if needed
WIFI_PASS = ""
# ---------- MQTT Configuration ----------
MQTT_BROKER = "broker.hivemq.com"
MQTT_CLIENT_ID = "ESP32_MPU6050_PUB"
MQTT_TOPIC = b"sensor/mpu6050/data"
# ---------- Connect WiFi ----------
def connect_wifi():
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
print("Connecting to WiFi...")
time.sleep(1)
print("Connected to WiFi:", wlan.ifconfig())
# ---------- Sensor Setup ----------
i2c = I2C(1, sda=Pin(21), scl=Pin(22), freq=400000)
mpu = MPU6050(i2c)
# ---------- Main Program ----------
connect_wifi()
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER)
client.connect()
print("Connected to MQTT Broker!")
while True:
try:
ax = mpu.accel.x
ay = mpu.accel.y
az = mpu.accel.z
temp = mpu.temperature
msg = "{:.3f},{:.3f},{:.3f},{:.2f}".format(ax, ay, az, temp)
client.publish(MQTT_TOPIC, msg)
print("Published:", msg)
except Exception as e:
print("Error:", e)
time.sleep(1)