Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Hướng dẫn cách tạo hẹn giờ cho phòng học.
Bước 1: Video tương tác
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Bước 2: Tuyên bố vấn đề
Hầu hết thời gian, các phòng học luôn được thực hiện. Điều này xảy ra bởi vì mọi người thích ở trong phòng lâu hơn nhiều so với nhu cầu của họ. Chúng tôi đã thiết kế một bộ đếm thời gian cho phép mỗi người có tổng cộng 2 giờ và những người đang chờ có khả năng yêu cầu xếp phòng cho nhóm tiếp theo. Việc sử dụng RGB trên Neopixels sẽ thể hiện lượng thời gian còn lại.
Bước 3: Tổng quan về cách thức hoạt động
Bộ đếm thời gian gồm các bộ phận được cắt bằng máy cắt laze, 3 nút bấm, 1 đèn LED, 1 chiết áp.
Neopixel và chiết áp được nối với NodeMCU. NodeMCU được lập trình để điều chỉnh lại mức độ xoay của chiết áp để thay đổi lượng đèn LED sáng trên dải Neopixel hình tròn. Nút Yêu cầu dừng chức năng của chức năng Bắt đầu, Dừng và Đặt thời gian. Màu của đèn LED trên đồng hồ hẹn giờ trong phòng giống với màu của đèn LED chiếu sáng ở mặt bên của hộp. Neopixel ở mặt bên của hộp tượng trưng cho màn hình hiển thị ở sảnh của tòa nhà để biết phòng nào được lấy và còn lại bao nhiêu thời gian. 2 đèn LED được quy định cho mỗi phòng, một đèn LED biểu thị nếu phòng được lấy và đèn LED còn lại phản chiếu màu của đèn LED trên bộ hẹn giờ (màu xanh lá cây là nhiều thời gian hơn, sau đó màu vàng, sau đó màu đỏ cho ít thời gian hơn).
Bước 4: Danh sách vật liệu và công cụ
- Acrylic rõ ràng
-Cáp MicroUSB
www.digikey.com/product-detail/en/stewart-…
-Breadboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Chiết áp
www.alliedelec.com/honeywell-380c32500/701…
-3 nút
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 dải Neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Resistors
www.digikey.com/product-detail/en/te-conne…
- Dây điện
www.digikey.com/product-detail/en/sparkfun…
-1 đèn LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
- Súng bắn keo
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Dải Velcro dính
www.amazon.com/VELCRO-Brand-90076-Fastener…
Bước 5: Bắt đầu xây dựng với Breadboard
A0 đến chân giữa trên Potentiometer
Vin để Power on Neopixel ring
3v3 với một bên của Potentiometer
Tất cả các cơ sở để tiếp đất trên NodeMCU
Nút D1 đến Yêu cầu
D2 để yêu cầu đèn LED
D3 đến nút Bắt đầu
D4 đến nút dừng
D5 đến điện trở với Đầu vào Neopixel trên vòng
D6 đến điện trở với dải đầu vào Neopixel
Bước 6: Bắt đầu mã
Đây là mã để đảm bảo dự án của bạn đang hoạt động cho đến nay. Bộ hẹn giờ chỉ nên vài giây cho mỗi đèn LED trên Neopixel Ring. Khi bạn biết nó đang hoạt động cho đến thời điểm này, tất cả những gì bạn cần làm là thay đổi thời gian nếu các câu lệnh bên dưới thành phạm vi được chỉ định của bạn. Tôi sẽ đặt '#Change time' vào mỗi thời điểm nếu các tuyên bố mà bạn cần thay đổi cho phân bổ thời gian của mình.
Đang thử mã:
nhập khẩu utime
thời gian nhập khẩu
từ ADC nhập máy
máy nhập khẩu
nhập khẩu neopixel
adc = ADC (0)
pin = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = machine. Pin (12, machine. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = machine. Pin (4, machine. Pin. OUT)
b1 = machine. Pin (5, machine. Pin. IN, machine. Pin. PULL_UP)
b3 = machine. Pin (2, machine. Pin. IN, machine. Pin. PULL_UP)
b2 = machine. Pin (0, machine. Pin. IN, machine. Pin. PULL_UP)
l1. giá trị (0)
def tglled (): # chức năng đèn LED chuyển đổi 'yêu cầu'
nếu l1.value () == 0:
l1. giá trị (1)
khác:
l1. giá trị (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
trong khi Đúng:
# Đây là nút bật tắt đèn LED 'yêu cầu'
b1temp2 = b1.value ()
nếu b1temp1 chứ không phải b1temp2:
tglled ()
time.sleep (0,05)
b1temp1 = b1temp2
# Đây là lưới
np2 [0] = np [11]
nếu l1.value () == 1:
np2 [1] = (30, 0, 0)
khác:
np2 [1] = (0, 0, 30)
np2.write ()
# Đây là nơi chúng tôi chọn lượng thời gian chúng tôi cần
nếu t == 0:
cho tôi trong phạm vi (-1, 12):
if (l1.value () == 0):
if (adc.read ()> = (85,34 * (i + 1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
khác:
np = (0, 0, 30)
np.write ()
khác:
np = (0, 0, 0)
np.write ()
# Đây là nút để bắt đầu hẹn giờ
if (l1.value () == 0) và (t == 0):
b2temp2 = b2.value ()
nếu b2temp1 và không phải b2temp2:
x + = 1
t + = (s * 100)
time.sleep (0,05)
b2temp1 = b2temp2
# Nút này kết thúc bộ hẹn giờ
if (l1.value () == 0):
b3temp2 = b3.value ()
nếu b3temp1 và không phải b3temp2:
x = 0
t = 0
time.sleep (0,05)
b3temp1 = b3temp2
# Đây là bộ đếm thời gian
nếu x> 0:
t + = 1
if (t> 0) and (t <= 100): # Thay đổi thời gian
np [0] = (5, 30, 0)
np [1] = (5, 30, 0)
np [2] = (5, 30, 0)
np [3] = (5, 30, 0)
np [4] = (5, 30, 0)
np [5] = (5, 30, 0)
np [6] = (5, 30, 0)
np [7] = (5, 30, 0)
np [8] = (5, 30, 0)
np [9] = (5, 30, 0)
np [10] = (5, 30, 0)
np [11] = (5, 30, 0)
np.write ()
if (t> 100) and (t <= 200): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (10, 30, 0)
np [2] = (10, 30, 0)
np [3] = (10, 30, 0)
np [4] = (10, 30, 0)
np [5] = (10, 30, 0)
np [6] = (10, 30, 0)
np [7] = (10, 30, 0)
np [8] = (10, 30, 0)
np [9] = (10, 30, 0)
np [10] = (10, 30, 0)
np [11] = (10, 30, 0)
np.write ()
if (t> 200) and (t <= 300): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (15, 30, 0)
np [3] = (15, 30, 0)
np [4] = (15, 30, 0)
np [5] = (15, 30, 0)
np [6] = (15, 30, 0)
np [7] = (15, 30, 0)
np [8] = (15, 30, 0)
np [9] = (15, 30, 0)
np [10] = (15, 30, 0)
np [11] = (15, 30, 0)
np.write ()
if (t> 300) and (t <= 400): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (20, 30, 0)
np [4] = (20, 30, 0)
np [5] = (20, 30, 0)
np [6] = (20, 30, 0)
np [7] = (20, 30, 0)
np [8] = (20, 30, 0)
np [9] = (20, 30, 0)
np [10] = (20, 30, 0)
np [11] = (20, 30, 0)
np.write ()
if (t> 400) và (t <= 500): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (25, 30, 0)
np [5] = (25, 30, 0)
np [6] = (25, 30, 0)
np [7] = (25, 30, 0)
np [8] = (25, 30, 0)
np [9] = (25, 30, 0)
np [10] = (25, 30, 0)
np [11] = (25, 30, 0)
np.write ()
if (t> 500) and (t <= 600): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (30, 30, 0)
np [6] = (30, 30, 0)
np [7] = (30, 30, 0)
np [8] = (30, 30, 0)
np [9] = (30, 30, 0)
np [10] = (30, 30, 0)
np [11] = (30, 30, 0)
np.write ()
if (t> 600) và (t <= 700): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (30, 25, 0)
np [7] = (30, 25, 0)
np [8] = (30, 25, 0)
np [9] = (30, 25, 0)
np [10] = (30, 25, 0)
np [11] = (30, 25, 0)
np.write ()
if (t> 700) và (t <= 800): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (30, 20, 0)
np [8] = (30, 20, 0)
np [9] = (30, 20, 0)
np [10] = (30, 20, 0)
np [11] = (30, 20, 0)
np.write ()
if (t> 800) và (t <= 900): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (30, 15, 0)
np [9] = (30, 15, 0)
np [10] = (30, 15, 0)
np [11] = (30, 15, 0)
np.write ()
if (t> 900) và (t <= 1000): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (30, 10, 0)
np [10] = (30, 10, 0)
np [11] = (30, 10, 0)
np.write ()
if (t> 1000) và (t <= 1100): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (30, 5, 0)
np [11] = (30, 5, 0)
np.write ()
if (t> 1100) và (t <= 1200): # Thay đổi thời gian
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (0, 0, 0)
np [11] = (30, 0, 0)
np.write ()
nếu t> = 1300: # Thay đổi thời gian
t = 0
x = 0
Bước 7: Hoàn thiện các lần chạm
Bây giờ, khi bạn đã đến đây, bạn sẽ có mã làm việc được tải lên NodeMCU và tất cả các bộ phận được kết nối với breadboard. Sau khi bạn đã thử mã và cắt bất kỳ phần nào bạn có cho bên ngoài, tức là vỏ cắt bằng laser, bây giờ bạn có thể hàn dây với NodeMCU. Việc hàn là tùy chọn nhưng có thể làm cho nó an toàn hơn và nhỏ hơn cho vỏ của bạn. Dưới đây là một số bộ phận cắt bằng laser mà chúng tôi đã thực hiện.