from machine import Pin, ADC
import time
import dht
'''
Đèn thông minh
- Led xanh dương
Chân dài nối với điện trở và nối với chân GPIO13
- Button vàng
Một chân nối với GPIO26 của ESP2
Một chân nối với GND
'''
'''
Vòi nước thông minh
-DHT22
Chân VCC của relay nối với nguồn 3v3 của ESP32
Chân GND của relay nối với GND của ESP32
Chân SDA của DHT22 nối với 25 của ESP32
-Relay
Chân VCC của relay nối với nguồn 3v3 của ESP32
Chân GND của relay nối với GND của ESP32
Chân IN của relay nối với GPIO16 của ESP32
-Led xanh nước biển
Chân dài nối với nguồn VCC
Chân ngắn nối với NO của relay
-Button xanh dương
Một chân nối với GND của ESP32
Một chân nối với GPIO18 của ESP32
'''
'''
Quạt thông minh
- LED đỏ
Chân dài nối với D của PIR
Chân ngắn nối với GND của ESP32
-LED xanh lá cây
Chân dài nối với nguồn VCC
Chân ngắn nối với NO của relay
-Potentiometer
VCC nối với 3v3 của ESP32
GND nối với GND của ESP32
SIG nối với chân GPIO34 của ESP32
-Relay
Chân VCC của relay nối với nguồn 3v3 của ESP32
Chân GND của relay nối với GND của ESP32
Chân IN của relay nối với GPIO2 của ESP32
-Button đen
Một chân nối với GND của ESP32
Một chân nối với GPIO5 của ESP32
'''
'''
Rèm cửa thông minh
- Led tím
Chân dài nối với nguồn VCC
Chân ngắn nối với NO của relay
- Button đỏ
Một chân nối với GPIO15 của ESP2
Một chân nối với GND
- Relay
Chân VCC của relay nối với nguồn 3v3 của ESP32
Chân GND của relay nối với GND của ESP32
Chân IN của relay nối với GPIO4 của ESP32
'''
'''
Chuyển kênh TV
- Led cam
Chân dài nối với điện trở và nối điện trở với GPIO17 của ESP32
- Button xanh lá
Một chân nối với GPIO14 của ESP2
Một chân nối với GND
'''
# Định nghĩa chân kết nối
led_xanh_duong_pin = 13 # Chân kết nối đèn LED
button_vang_pin = 26 # Chân kết nối nút nhấn
relay_rem_pin = 4 # Chân kết nối Relay
button_do_pin = 15 # Chân kết nối nút nhấn
led_cam_pin = 17 # Chân kết nối đèn LED
button_xanh_la_pin = 14 # Chân kết nối nút nhấn
# Vòi nước thông minh
chan_dht = 25 # Chân DHT22
chan_relay_voi_nuoc = 16 # Chân relay vòi nước
chan_led_nuoc = 21 # Chân LED xanh nước biển
button_xanh_duong_pin = 18
# Quạt thông minh
chan_potentiometer = ADC(Pin(34)) # Chân potentiometer
chan_led_xanh_la = 12 # Chân LED xanh lá (cho quạt)
chan_relay_quat = 2 # Chân relay quạt
button_đen = 5
# Khởi tạo chân GPIO
led_xanh_duong = Pin(led_xanh_duong_pin, Pin.OUT)
button_vang = Pin(button_vang_pin, Pin.IN, Pin.PULL_UP) # Sử dụng pull-up resistor
relay_rem = Pin(relay_rem_pin, Pin.OUT)
button1 = Pin(button_do_pin, Pin.IN, Pin.PULL_UP) # Sử dụng pull-up resistor
led_cam = Pin(led_cam_pin, Pin.OUT)
button_xanh_la = Pin(button_xanh_la_pin, Pin.IN, Pin.PULL_UP) # Sử dụng pull-up resistor
relay_voi_nuoc =Pin(chan_relay_voi_nuoc, Pin.OUT)
button2 =Pin(button_xanh_duong_pin, Pin.IN, Pin.PULL_UP)
relay_quat = Pin(chan_relay_quat, Pin.OUT)
button3 =Pin(button_đen,Pin.IN, Pin.OUT)
# Vòi nước
sensor_dht = dht.DHT22(Pin(chan_dht)) # Khởi tạo cảm biến DHT22
led_nuoc = Pin(chan_led_nuoc, Pin.OUT)
# Quạt thông minh
led_xanh_la = Pin(chan_led_xanh_la, Pin.OUT)
curtain_open = False # Biến trạng thái để theo dõi rèm hiện đang mở hay đóng
faucet_on = False
fan_on= False
# Hàm điều khiển vòi nước
def turnOnFan():
print("Bật quạt...")
relay_quat.value(1)
led_xanh_la.value(1)
time.sleep(3)
def turnOffFan():
print("Tắt quạt...")
relay_quat.value(0)
led_xanh_la.value(0)
time.sleep(3)
def turnOnFaucet():
print("Bật vòi nước...")
relay_voi_nuoc.value(1) # Bật Relay để mở vòi nước
led_nuoc.value(1) # Bật LED xanh nước biển (nước đang chảy)
time.sleep(3) # Giữ trong 3 giây
# relay_voi_nuoc.value(0) # Tắt Relay (ngắt vòi nước)
# led_nuoc.value(0) # Tắt LED (nước đã ngừng chảy)
def turnOffTap():
print("Tắt vòi nước...")
relay_voi_nuoc.value(0) # Tắt Relay để đóng vòi nước
led_nuoc.value(0) # Tắt LED xanh nước biển (nước không chảy)
time.sleep(3) # Giữ trong 3 giây
def open_curtain():
print("Mở rèm cửa...")
relay_rem.value(1) # Bật Relay để mở rèm
time.sleep(3) # Giữ trong 3 giây (thời gian mở rèm)
relay_rem.value(0) # Tắt Relay
def close_curtain():
print("Đóng rèm cửa...")
relay_rem.value(1) # Bật Relay để đóng rèm
time.sleep(3) # Giữ trong 3 giây (thời gian đóng rèm)
relay_rem.value(0) # Tắt Relay
# Bảng ánh xạ tên kênh với mã IR (mô phỏng)
channel_codes = {
"kênh 1": "IR Code 1", # Thay bằng mã IR thực tế
"kênh 2": "IR Code 2", # Thay bằng mã IR thực tế
}
def send_ir_signal(channel_name):
print(f"Sending IR signal for {channel_name}...")
led_cam.value(1) # Bật LED để mô phỏng gửi tín hiệu
time.sleep(0.1) # Giữ LED bật trong 100ms
led_cam.value(0) # Tắt LED
while True:
# Kiểm tra nhiệt độ và độ ẩm của DHT22
sensor_dht.measure()
nhiet_do = sensor_dht.temperature()
do_am = sensor_dht.humidity()
# # Điều khiển tốc độ quạt bằng potentiometer
gia_tri_pot = chan_potentiometer.read() # Đọc giá trị từ potentiometer (0-4095)
if button_vang.value() == 0: # Nếu nút nhấn được nhấn
print("Nút vàng được nhấn.")
led_xanh_duong.value(1) # Bật LED để mô phỏng gửi tín hiệu
time.sleep(1) # Giữ LED bật trong 100ms
led_xanh_duong.value(0) # Tắt LED
time.sleep(1)
elif button1.value() == 0: # Nếu nút nhấn được nhấn
print("Nút đỏ được nhấn.")
if curtain_open: # Nếu rèm đang mở, thì đóng rèm
close_curtain()
curtain_open = False # Cập nhật trạng thái thành đóng
else: # Nếu rèm đang đóng, thì mở rèm
open_curtain()
curtain_open = True # Cập nhật trạng thái thành mở
time.sleep(3) # Tránh phản ứng nhanh liên tục khi nút vẫn được nhấn
elif button_xanh_la.value() == 0: # Nếu nút nhấn được nhấn
print("Nút xanh lá được nhấn.")
# Giả lập chuyển kênh
for channel in channel_codes.keys():
send_ir_signal(channel) # Gửi tín hiệu cho từng kênh
time.sleep(1) # Đợi một chút giữa các tín hiệu
elif button2.value() ==0:
print("Nút xanh dương đã được nhấn")
if faucet_on:
turnOffTap()
faucet_on = False
else:
turnOnFaucet()
faucet_on =True
print("Nhiệt độ vòi nước:",nhiet_do, "°C")
time.sleep(3)
elif button3.value()==0:
print("Nút đen đã được nhấn")
if fan_on :
turnOffFan()
fan_on =False
else:
turnOnFan()
fan_on =True
print("Tốc độ quạt : ", gia_tri_pot)
elif fan_on or faucet_on:
if fan_on:
print("Tốc độ quạt : ", gia_tri_pot)
if faucet_on:
print("Nhiệt độ vòi nước:",nhiet_do, "°C")
else:
print("Chưa có button nào được nhấn.")
time.sleep(1)