import machine
import network
import time
import urequests
import ujson
import dht
# WiFi credentials
WIFI_SSID = "Wokwi-GUEST"
WIFI_PASSWORD = ""
# ThingSpeak API settings
THINGSPEAK_API_KEY = "A82MLQ0QRV1FRCTK"
THINGSPEAK_URL = "http://api.thingspeak.com/update"
# DHT22 (AM2302) sensor on GPIO 4
dht_sensor = dht.DHT22(machine.Pin(4))
# Function to read room temperature and humidity
def read_room_temperature_humidity():
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
return temperature, humidity
# Function to send data to ThingSpeak
def send_data_to_thingspeak(temperature, humidity):
data = {
"api_key": THINGSPEAK_API_KEY,
"field3": temperature,
"field4": humidity,
}
try:
response = urequests.post(THINGSPEAK_URL, json=data)
response.close()
print("Data sent successfully")
except Exception as e:
print("Failed to send data:", e)
# Initialize the Wi-Fi connection
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASSWORD)
# Wait for the Wi-Fi connection to establish
print("Connecting to Wi-Fi...")
max_retries = 10
retries = 0
while not wifi.isconnected() and retries < max_retries:
time.sleep(1)
retries += 1
print(f"Attempt {retries}...")
if wifi.isconnected():
print("Connected to Wi-Fi")
else:
print("Failed to connect to Wi-Fi")
machine.reset() # Optional: Restart the device
# Main program loop
if __name__ == "__main__":
try:
while True:
temperature, humidity = read_room_temperature_humidity()
print(f"Temp: {temperature}°C, Hum: {humidity}%")
send_data_to_thingspeak(temperature, humidity)
time.sleep(15) # Send data every 15 seconds
except KeyboardInterrupt:
pass