from machine import Pin, PWM, ADC
# Analog to Digital Converter
import network
import time
import dht
import urequests as request
from umqtt.simple import MQTTClient
import my_thingspeak as tsp
LED_PIN = 12
DHT_PIN = 27
LIGHT_SENSOR_PIN = 33
SERVO_PIN = 14
# Khởi tạo các đối tượng: đèn led và cảm biến ánh sáng và cảm biến nhiệt độ, độ ẩm
led = Pin(LED_PIN, Pin.OUT)
light = ADC(LIGHT_SENSOR_PIN)
d = dht.DHT22(Pin(DHT_PIN))
WIFI_SSID = 'Wokwi-GUEST'
WIFI_PASSWORD = ''
# CHANNEL_ID = "2358706"
# WRITE_API_KEY = "TDBIB603KZNZ6BEK"
# THINGSPEAK_URL = 'https://api.thingspeak.com/update'
# Kết nối wifi tới internet
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect(WIFI_SSID, WIFI_PASSWORD)
while not sta_if.isconnected():
print(".", end="")
time.sleep_ms(50)
print(" Connected!")
def read_dht_data():
d.measure()
temperature = d.temperature()
humidity = d.humidity()
return temperature, humidity
def read_light_sensor():
light_intensity = (light.read()-32)*100/4031
return light_intensity
# Function gửi dữ liệu lên ThingSpeak thông qua REST API
# """def send_to_thingspeak(api_key, temperature, humidity, light_intensity):
# payload = {"api_key": api_key, "field1": temperature, "field2": humidity, "field3": light_intensity}
# response = request.post(THINGSPEAK_URL, json=payload)
# print("Thingspeak response:", response.status_code, response.text)
# response.close()"""
# Function gửi dữ liệu lên ThingSpeak thông qua MQTT API
def send_to_thingspeak_mqtt(temperature, humidity, light_intensity):
CHANNEL_ID = 2358706
CLIENT_ID = "CAwZDhAmITgIJgACJCgyOQU"
CLIENT_USERNAME = "CAwZDhAmITgIJgACJCgyOQU"
CLIENT_PASSWORD = "ttwTaOOahAotE8Dc4kySTEkv"
MQTT_SERVER = "mqtt3.thingspeak.com"
topic = "channels/" + str(CHANNEL_ID) + "/publish"
client = MQTTClient(CLIENT_ID, MQTT_SERVER, user=CLIENT_USERNAME, password=CLIENT_PASSWORD)
client.connect(clean_session = True)
payload = "field1={}&field2={}&field3={}".format(temperature, humidity, light_intensity)
client.publish(topic, payload, qos = 0)
client.disconnect()
# Chương trình chính
def main():
# connect_wifi()
while True:
try:
temperature, humidity = read_dht_data()
light_intensity = read_light_sensor()
# Hiển thị dữ liệu đọc được
print("Temperature: {}°C, Humidity: {}%, Light Intensity: {}".format(temperature, humidity, light_intensity))
# Gửi dữ liệu đến Thingspeak qua REST API
# send_to_thingspeak(WRITE_API_KEY, temperature, humidity, light_intensity)
tsp.update_temperature(temperature)
# Gửi dữ liệu đến Thingspeak qua MQTT API
# send_to_thingspeak_mqtt(temperature, humidity, light_intensity)
time.sleep(15) # Gửi dữ liệu mỗi 15 giây
except Exception as e:
print("Error:", e)
time.sleep(10) # Đợi 5 giây trước khi thử lại
if __name__ == "__main__":
main()
# servo = PWM(servo_Pin, freq=50, duty=0)
# Test đèn LED
# led.on()
# time.sleep(1)
# led.off()