#from machine import Pin, Timer
import machine
import network
import urequests # for http API
import time
# WiFi credentials
SSID = "Wokwi-GUEST"
PASSWORD = ""
# Initialize ADC (LDR connected to GPIO34)
adc = machine.ADC(machine.Pin(34))
adc.atten(machine.ADC.ATTN_11DB) # Full range: 3.3V
# Function to connect to local WiFi
def connect_wifi():
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.disconnect()
wifi.connect(SSID,PASSWORD)
if not wifi.isconnected():
print('connecting..')
timeout = 0
while (not wifi.isconnected() and timeout < 10):
print(10 - timeout)
timeout = timeout + 1
time.sleep(1)
if(wifi.isconnected()):
print('connected')
else:
print('not connected')
sys.exit()
print('network config:', wifi.ifconfig())
connect_wifi() # Connecting to WiFi Router
# ThingSpeak settings
# Thingspeak HTTP API Protocol (Connection)
HTTP_HEADERS = {'Content-Type': 'application/json'}
#THINGSPEAK_URL = 'https://api.thingspeak.com/update'
#WRITE_API_KEY = 'YOUR_THINGSPEAK_WRITE_API_KEY' # Replace with your ThingSpeak Write API Key
THINGSPEAK_WRITE_API_KEY = '4ZV4EMSFR3A0EPRL'
# Function to read LDR value
def read_ldr():
value = adc.read()
voltage = value * (3.3 / 4095) # Convert ADC value to voltage
return voltage
while True:
time.sleep(5)
# Read LDR value
ldr_value = read_ldr()
print(f"LDR Value: {ldr_value:.4f} V")
# Initialize ADC (LDR connected to GPIO34)
adc = machine.ADC(machine.Pin(34))
adc.atten(machine.ADC.ATTN_11DB) # Full range: 3.3V
ldr_readings = {'field3':ldr_value}
# Send data to ThingSpeak
request = urequests.post( 'http://api.thingspeak.com/update?api_key=' + THINGSPEAK_WRITE_API_KEY, json = ldr_readings, headers = HTTP_HEADERS )
request.close()
print(ldr_readings)
print(" Msg sent to Thingspeak channel successfully...")
print(" ********************************************")