"""
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 machine
import network
import time
from machine import Pin
import dht
import ujson
from machine import Pin, ADC
from umqtt.simple import MQTTClient
from machine import Pin, I2C
import ssd1306
# MQTT Server Parameters
MQTT_CLIENT_ID = "gongziwei2206051036"
MQTT_BROKER = "broker.emqx.io"
MQTT_USER = ""
MQTT_PASSWORD = ""
MQTT_TOPIC = "2206051036gongziwei11"
#显示板
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.text('Temp sensor ', 10, 10)
oled.show()
sensor = dht.DHT22(Pin(15))
adc=ADC(Pin(34))
p2=machine.PWM(machine.Pin(5),freq=50)
#温度传感器
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(adc.read())
p2.duty(int(adc.read()/4))
slide_pos=adc.read()
print("滑阻器位置为:",slide_pos)
print("Measuring weather conditions...",end="")
sensor.measure()
message = ujson.dumps({
"temp": sensor.temperature(),
"humidity": sensor.humidity(),
"slide": slide_pos/20
})
#通信
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)