Wokwi Simulator Setup
1
Create MicroPython Project
1. Go to wokwi.com
2. Click "New Project"
3. Select "ESP32" board
4. In the project settings, choose "MicroPython" as the firmware
2
4 Add DHT22 Sensor
1. Click the "+" button to add parts
2. Search for "DHT22"
3. Place the DHT22 sensor on the canvas
4. Connect the wires:
- VCC (Pin 1) → ESP32 3V3
- DATA (Pin 2) → ESP32 GPIO 15
- GND (Pin 4) → ESP32 GND
Configure wokwi.toml
The wokwi.toml file configures the simulation environment:
wokwi.toml
[wokwi] version = 1 firmware = "micropython-20240222-v1.22.2" elf = "" [[wokwi.wifi]] ssid = "Wokwi-GUEST" password = "" channel = 6 [env] MQTT_BROKER = "broker.hivemq.com" MQTT_PORT = "1883"
💡 Note: Wokwi automatically provides internet connectivity in the simulation, allowing your ESP32 to connect to real MQTT brokers like HiveMQ!
✅ Setup Complete! Your Wokwi environment is ready for MicroPython code.
"""
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
"""
import network
import time
from machine import Pin
import dht
import ujson
from umqtt.simple import MQTTClient
# MQTT Server Parameters
MQTT_CLIENT_ID = "micropython-weather-demo"
MQTT_BROKER = "broker.mqttdashboard.com"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "wokwi-weather"
sensor = dht.DHT22(Pin(15))
print("Connecting to 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(" Connected!")
print("Connecting to MQTT server... ", end="")
client = MQTTClient(MQTT_CLIENT_ID, MQTT_BROKER, user=MQTT_USER, password=MQTT_PASSWORD)
client.connect()
print("Connected!")
prev_weather = ""
while True:
print("Measuring weather conditions... ", end="")
sensor.measure()
message = ujson.dumps({
"temp": sensor.temperature(),
"humidity": sensor.humidity(),
})
if message != prev_weather:
print("Updated!")
print("Reporting to MQTT topic {}: {}".format(MQTT_TOPIC, message))
client.publish(MQTT_TOPIC, message)
prev_weather = message
else:
print("No change")
time.sleep(1)
Testing & Monitoring
1
Run in Wokwi
1. Copy all code files to your Wokwi project
2. Make sure the circuit is connected (DHT22 to GPIO 15)
3. Click the green Play ▶ button
4. Open the Serial Monitor (bottom panel)
5. Watch the weather data being published!
Diagram.json:
{
"version": 1,
"author": "Uri Shaked",
"editor": "wokwi",
"parts": [
{ "type": "board-esp32-devkit-c-v4", "id": "esp", "top": -37.58, "left": -96.37, "attrs": {} },
{ "type": "wokwi-dht22", "id": "dht1", "top": -32.2, "left": 40.16, "attrs": {} }
],
"connections": [
[ "esp:TX", "$serialMonitor:RX", "", [] ],
[ "esp:RX", "$serialMonitor:TX", "", [] ],
[ "dht1:VCC", "esp:3V3", "red", [ "v109.3", "h-170.36", "v-200.78" ] ],
[ "dht1:SDA", "esp:15", "green", [ "v0" ] ],
[ "dht1:GND", "esp:GND.1", "black", [ "v99.7", "h-189.56", "v-66.38" ] ]
],
"dependencies": {}
}


Comments
Post a Comment