import dht
from machine import Pin, ADC
import time
import random
import network
import BlynkLib
from BlynkTimer import BlynkTimer
WIFI_SSID = 'Wokwi-GUEST'
WIFI_PASS = ''
BLYNK_AUTH = 'jM0qdYPtiZdAUBT9yt7NpDe5ciZexNkA'
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
print("Connecting to WiFi...")
wifi.active(True)
wifi.connect(WIFI_SSID, WIFI_PASS)
while not wifi.isconnected():
print(".", end="_")
time.sleep(1)
print('\nWifi connected, IP:', wifi.ifconfig()[0])
blynk = BlynkLib.Blynk(BLYNK_AUTH, insecure=True)
timer = BlynkTimer()
# DHT22 sensor setup
DHT_PIN = Pin(16, Pin.IN)
dht_sensor = dht.DHT22(DHT_PIN)
# Soil Moisture sensor setup (replace with actual pin and ADC setup)
# soil_moisture_sensor = ADC(0)
# Virtual pin numbers in Blynk app
TEMPERATURE_PIN = 0
SOIL_MOISTURE_PIN = 1
HUMIDITY_PIN = 2
CROP_HEALTH_PIN = 3
def read_soil_moisture():
# Simulate random soil moisture level (replace with actual sensor reading)
return random.randint(0, 100)
def read_crop_health():
# Simulate random crop health (replace with actual sensor reading)
return random.uniform(0.0, 1.0)
def generate_random_coordinates():
# Generate random latitude and longitude values
latitude = random.uniform(-90, 90)
longitude = random.uniform(-180, 180)
return latitude, longitude
def send_data_to_blynk(temperature, soil_moisture, humidity, crop_health):
blynk.virtual_write(TEMPERATURE_PIN, temperature)
blynk.virtual_write(SOIL_MOISTURE_PIN, soil_moisture)
blynk.virtual_write(HUMIDITY_PIN, humidity)
blynk.virtual_write(CROP_HEALTH_PIN, crop_health)
# Main loop
while True:
# Simulate random soil moisture level
soil_moisture = read_soil_moisture()
# Read DHT22 sensor values
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
# Simulate random crop health
crop_health = read_crop_health()
# Send data to Blynk
send_data_to_blynk(temperature, soil_moisture, humidity, crop_health)
# Simulate data transmission every 5 seconds
time.sleep(5)
@blynk.on("connected")
def blynk_connected(ping):
print('Blynk Server is connected, ready. Ping:', ping, 'ms')
@blynk.on("disconnected")
def blynk_disconnected():
print('Blynk Server is disconnected')
# Main program
while True:
blynk.run()
timer.run()
time.sleep(1)