Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Instrucciones sobre cómo crear un temporizador para una sala de estudio.
Paso 1: video de interacción
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Paso 2: declaración del problema
La mayoría de las veces, las salas de estudio siempre están ocupadas. Esto sucede porque a las personas les gusta quedarse en la habitación mucho más tiempo del que necesitan. Hemos diseñado un temporizador que permite a cada persona un total de 2 horas y a las personas que esperan la posibilidad de solicitar que la sala sea el siguiente grupo. El uso de RGB en Neopixels expresará la cantidad de tiempo restante.
Paso 3: descripción general de cómo funciona
El temporizador consta de piezas cortadas por el cortador láser, 3 botones, 1 LED, 1 potenciómetro.
Los Neopixels y el potenciómetro están conectados al NodeMCU. El NodeMCU está programado para regonizar cuánto se gira el potenciómetro para cambiar la cantidad de LED que se encienden en la tira circular de Neopixel. El botón Solicitar detiene la función de Iniciar, Detener y Establecer la hora. El color de los LED en el temporizador dentro de la habitación es el mismo color del LED iluminado en el costado de la caja. El neopixel en el lateral de la caja representa la pantalla en el vestíbulo del edificio para saber qué habitación se toma y cuánto tiempo queda. Se prescriben 2 LED para cada habitación, un LED representa si la habitación está ocupada y el otro LED refleja el color de los LED en el temporizador (el verde es más tiempo, luego el amarillo, luego el rojo por menos tiempo).
Paso 4: Lista de materiales y herramientas
-Acrílico transparente
-Cable MicroUSB
www.digikey.com/product-detail/en/stewart-…
-Tablero de circuitos
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Potenciómetro
www.alliedelec.com/honeywell-380c32500/701…
-3 botones
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 tiras de Neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Resistores
www.digikey.com/product-detail/en/te-conne…
- alambres
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Pistola de silicona
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Tiras adhesivas de velcro
www.amazon.com/VELCRO-Brand-90076-Fastener…
Paso 5: Comience a construir con la placa de pruebas
A0 al pin central del potenciómetro
Vin to Power on anillo Neopixel
3v3 a un lado del potenciómetro
Todos los motivos a tierra en NodeMCU
D1 al botón de solicitud
D2 para solicitar LED
D3 al botón de inicio
D4 al botón de parada
D5 a la resistencia a la entrada de Neopixel en el anillo
D6 a la resistencia a la tira de entrada Neopixel
Paso 6: Iniciar el código
Este es el código para asegurarse de que su proyecto esté funcionando hasta ahora. El temporizador solo debe ser de un par de segundos por LED en el anillo de Neopixel. Una vez que sepa que está funcionando hasta este punto, todo lo que necesita hacer es cambiar el tiempo si las declaraciones a continuación a su rango especificado. Pondré '#Change time' en cada una de las declaraciones de tiempo que necesita cambiar para su asignación de tiempo.
Probar el código:
import utime
tiempo de importación
desde la importación de la máquina ADC
máquina de importación
importar neopixel
adc = ADC (0)
pin = máquina. Pin (14, máquina. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = máquina. Pin (12, máquina. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = máquina. Pin (4, máquina. Pin. OUT)
b1 = máquina. Pin (5, máquina. Pin. IN, máquina. Pin. PULL_UP)
b3 = máquina. Pin (2, máquina. Pin. IN, máquina. Pin. PULL_UP)
b2 = máquina. Pin (0, máquina. Pin. IN, máquina. Pin. PULL_UP)
l1.valor (0)
def tglled (): # alternar la función LED de 'solicitud'
si l1.value () == 0:
l1.valor (1)
demás:
l1.valor (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
mientras que es cierto:
# Este es el botón que alterna el LED de 'solicitud'
b1temp2 = b1.value ()
si b1temp1 y no b1temp2:
tglled ()
tiempo de sueño (0.05)
b1temp1 = b1temp2
# Esta es la cuadrícula
np2 [0] = np [11]
si l1.value () == 1:
np2 [1] = (30, 0, 0)
demás:
np2 [1] = (0, 0, 30)
np2.write ()
# Aquí es donde seleccionamos cuánto tiempo necesitamos
si t == 0:
para i en el rango (-1, 12):
si (l1.value () == 0):
si (lectura adc. ()> = (85.34 * (i + 1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
demás:
np = (0, 0, 30)
np.write ()
demás:
np = (0, 0, 0)
np.write ()
# Este es el botón para iniciar el temporizador
si (l1.value () == 0) y (t == 0):
b2temp2 = b2.value ()
si b2temp1 y no b2temp2:
x + = 1
t + = (s * 100)
tiempo de sueño (0.05)
b2temp1 = b2temp2
# Este botón finaliza el temporizador
si (l1.value () == 0):
b3temp2 = b3.value ()
si b3temp1 y no b3temp2:
x = 0
t = 0
tiempo de sueño (0.05)
b3temp1 = b3temp2
# Este es el temporizador
si x> 0:
t + = 1
if (t> 0) y (t <= 100): #Cambio de hora
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) y (t <= 200): #Cambio de hora
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) y (t <= 300): #Cambio de hora
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) y (t <= 400): #Cambio de hora
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) y (t <= 500): #Cambio de hora
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) y (t <= 600): #Cambio de hora
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 ()
si (t> 600) y (t <= 700): #Cambio de hora
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) y (t <= 800): #Cambio de hora
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) y (t <= 900): #Cambio de hora
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) y (t <= 1000): #Cambio de hora
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) y (t <= 1100): #Cambio de hora
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) y (t <= 1200): #Cambiar hora
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 ()
si t> = 1300: #Cambio de hora
t = 0
x = 0
Paso 7: Toques finales
Ahora, una vez que esté tan lejos, debería tener el código de trabajo cargado en NodeMCU y todas las partes conectadas a la placa de pruebas. Una vez que haya probado el código y cortado las piezas que tenga para el exterior, es decir, la carcasa cortada con láser, ahora puede soldar los cables al NodeMCU. La soldadura es opcional, pero puede hacerla más segura y más pequeña para su carcasa. Estas son algunas de las piezas cortadas con láser que hicimos.