![Cajón de inventario "Smart Cities Hackathon Qualcomm17": 13 pasos Cajón de inventario "Smart Cities Hackathon Qualcomm17": 13 pasos](https://i.howwhatproduce.com/images/010/image-29383-j.webp)
Tabla de contenido:
- Paso 1: Materiales
- Paso 2: Corta las piezas para el cajón en el MDF. (Para obtener mejores resultados, utilice un cortador láser)
- Paso 3: pegue todas las piezas para formar un cajón con dos cajones pequeños y uno grande
- Paso 4: atornille los tornillos en el medio de cada cajón
- Paso 5: Con el taladro, haga orificios a través del cajón en la parte posterior, el orificio debe ser del tamaño del sensor
- Paso 6: Suelde cada sensor CNY 70 con los cables de cobre. (repite 4 veces más)
- Paso 7: Se utiliza un circuito especial para el sensor
- Paso 8: Conecte el sensor Mezzanine a la Dragon Board 410c. (usado para acceder al GPIO)
- Paso 9: conecte el circuito desde la placa de pruebas al entresuelo
- Paso 10: Escriba o copie el código
- Paso 11: Ejecute el programa
- Paso 12: Conclusiones
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-23 14:39
![Cajón de inventario Cajón de inventario](https://i.howwhatproduce.com/images/010/image-29383-1-j.webp)
En el siguiente documento, puede ver el proceso de construcción y programación de un cajón inteligente. Este cajón fue programado en un Dragon Board 410c, con el propósito de mejorar la calidad de las ciudades. El proyecto se enmarca dentro del concurso “smart cities hackathon Qualcomm 17”.
La idea de este proyecto comenzó con un problema que muy poca gente ve, que es la pérdida y mal manejo de herramientas y material que brindan empresas como fábricas e incluso hospitales. En estos lugares se entregan algunos materiales y herramientas a los trabajadores para realizar las actividades, este material y herramientas deben ser reutilizados porque son costosos o por la falta de recursos económicos para reemplazarlos.
En los hospitales hay personas que se hacen con el control de los materiales que se retiran, pero cuando hay una intervención humana existe el error, que puede conllevar gastos innecesarios. La mejor solución a este problema es un cajón inteligente capaz de mantener un inventario de los objetos que se toman prestados y devueltos y al mismo tiempo saber quién es el responsable.
Paso 1: Materiales
El material necesario para el proyecto es el siguiente: 1 x Dragon Board 410c
1 x Tableros de entrepiso de 96 sensores para tablero Dragon 410c
1 x tablero
1 x Hoja de MDF (Fibra de densidad media) 61 x 122 cms
5 x sensor CNY 70
1 X TIP31B
1 x electroimán
1 x 7408
1 x teclado
1 x pantalla
3 x tornillos
Resistencias (variedad)
Cables de cobre
Pegamento
Taladro
Paso 2: Corta las piezas para el cajón en el MDF. (Para obtener mejores resultados, utilice un cortador láser)
![Corta las piezas para el cajón en el MDF. (Para obtener mejores resultados, utilice un cortador láser) Corta las piezas para el cajón en el MDF. (Para obtener mejores resultados, utilice un cortador láser)](https://i.howwhatproduce.com/images/010/image-29383-2-j.webp)
Paso 3: pegue todas las piezas para formar un cajón con dos cajones pequeños y uno grande
Paso 4: atornille los tornillos en el medio de cada cajón
![Atornille los tornillos en el medio de cada cajón Atornille los tornillos en el medio de cada cajón](https://i.howwhatproduce.com/images/010/image-29383-3-j.webp)
Paso 5: Con el taladro, haga orificios a través del cajón en la parte posterior, el orificio debe ser del tamaño del sensor
![Con el taladro para hacer agujeros a través del cajón en la parte posterior, el agujero debe ser del tamaño del sensor Con el taladro para hacer agujeros a través del cajón en la parte posterior, el agujero debe ser del tamaño del sensor](https://i.howwhatproduce.com/images/010/image-29383-4-j.webp)
Paso 6: Suelde cada sensor CNY 70 con los cables de cobre. (repite 4 veces más)
![Suelde cada sensor CNY 70 con cables de cobre. (repite 4 veces más) Suelde cada sensor CNY 70 con cables de cobre. (repite 4 veces más)](https://i.howwhatproduce.com/images/010/image-29383-5-j.webp)
Paso 7: Se utiliza un circuito especial para el sensor
![Se utiliza un circuito especial para el sensor Se utiliza un circuito especial para el sensor](https://i.howwhatproduce.com/images/010/image-29383-6-j.webp)
Paso 8: Conecte el sensor Mezzanine a la Dragon Board 410c. (usado para acceder al GPIO)
![Conecte el sensor Mezzanine al Dragon Board 410c. (usado para acceder al GPIO) Conecte el sensor Mezzanine al Dragon Board 410c. (usado para acceder al GPIO)](https://i.howwhatproduce.com/images/010/image-29383-7-j.webp)
Es muy importante que este paso se haga con la placa del dragón apagada, si no se puede quemar, además todo el PIN necesita estar colocado correctamente.
Paso 9: conecte el circuito desde la placa de pruebas al entresuelo
![Conecte el circuito de la placa de pruebas al entresuelo Conecte el circuito de la placa de pruebas al entresuelo](https://i.howwhatproduce.com/images/010/image-29383-8-j.webp)
![Conecte el circuito desde la placa de pruebas al entresuelo Conecte el circuito desde la placa de pruebas al entresuelo](https://i.howwhatproduce.com/images/010/image-29383-9-j.webp)
![Conecte el circuito de la placa de pruebas al entresuelo Conecte el circuito de la placa de pruebas al entresuelo](https://i.howwhatproduce.com/images/010/image-29383-10-j.webp)
![Conecte el circuito de la placa de pruebas al entresuelo Conecte el circuito de la placa de pruebas al entresuelo](https://i.howwhatproduce.com/images/010/image-29383-11-j.webp)
Paso 10: Escriba o copie el código
#include #include #include // #include
#include "libsoc_gpio.h"
#include "libsoc_debug.h" #include "libsoc_board.h"
/ * Este fragmento de código a continuación hace que este ejemplo funcione en todos los 96Boards * /
unsigned int LED_1; // electro iman
unsigned int BUTTON_1; // primer sensor
unsigned int BUTTON_2; // segundo sensor unsigned int BUTTON_3; // cierra unsigned int BUTTON_4; // tercer sensor
estructura de usuario {
char nombre de usuario [20]; char contraseña [20]; }Usuario;
struct Database {
char Article_Name [20]; char Location [20]; }Base de datos;
int sensor1;
int sensor2; int sensor3;
int sensor1_last_state;
int sensor2_last_state; int sensor3_last_state;
char nombre de usuario [50];
char contraseña [50];
char Sí No [40];
ARCHIVO * pFILE;
char Sí [20] = {"Sí"};
int corriendo = 1;
_attribute _ ((constructor)) vacío estático _init ()
{board_config * config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // sensor de puños BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // segundo sensor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // cerrar el rack BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // tercer sensor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");
LED_1 = libsoc_board_gpio_id (configuración, "GPIO-E"); // electro iman
libsoc_board_free (config); } / * Fin del código especial 96Boards * /
int main ()
{gpio * led_1, * botón_1, * botón_2, * botón_3, * botón_4; // int touch; estructura de usuario Karina; administrador de usuarios de estructura; strcpy (Karina.nombre de usuario, "Karina Valverde"); strcpy (Karina.password, "Vertical más alto"); strcpy (Manager.username, "El Jefe"); strcpy (Contraseña de administrador, "ITESM"); estructura de la herramienta de base de datos; struct Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Herramienta"); estructura de la herramienta de base de datos; struct Database Pen; struct Database Case; strcpy (Tool. Article_Name, "Herramienta"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Case"); libsoc_set_debug (0); led_1 = libsoc_gpio_request (LED_1, LS_SHARED); button_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); button_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); button_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); button_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // button_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);
if ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))
{ir a fallar; } libsoc_gpio_set_direction (led_1, SALIDA); libsoc_gpio_set_direction (botón_1, ENTRADA); libsoc_gpio_set_direction (botón_2, ENTRADA); libsoc_gpio_set_direction (botón_3, ENTRADA); libsoc_gpio_set_direction (botón_4, ENTRADA); // libsoc_gpio_set_direction (botón_5, ENTRADA);
if ((libsoc_gpio_get_direction (led_1)! = SALIDA)
|| (libsoc_gpio_get_direction (button_1)! = ENTRADA) || (libsoc_gpio_get_direction (button_2)! = ENTRADA) || (libsoc_gpio_get_direction (button_3)! = ENTRADA) || (libsoc_gpio_get_direction (button_4)! = ENTRADA)) {ir a fallar; } sensor1 = libsoc_gpio_get_level (botón_1); sensor2 = libsoc_gpio_get_level (botón_2); sensor3 = libsoc_gpio_get_level (botón_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Ubicación de la herramienta, "Ubicado en el estante"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nunca colocado en este bastidor"); } if (sensor2 == 1) {strcpy (Ubicación del lápiz, "Ubicado en el estante"); } else if (sensor2 == 0) {strcpy (Ubicación del lápiz, "Nunca colocado en este estante"); } if (sensor3 == 1) {strcpy (Case. Location, "Ubicado en Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nunca colocado en este bastidor"); } mientras (en ejecución) {libsoc_gpio_set_level (led_1, HIGH); printf ("Por favor ingrese el nombre de usuario:"); scanf ("% s", nombre de usuario); printf ("Introduzca la contraseña:"); scanf ("% s", contraseña); if (strcmp (nombre de usuario, "Karina") == 0 && strcmp (contraseña, "Taller") == 0) {libsoc_gpio_set_level (led_1, LOW); libsoc_gpio_set_level (led_1, BAJO); while (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); sensor2 = libsoc_gpio_get_level (botón_2); sensor3 = libsoc_gpio_get_level (botón_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Ubicado en Rack"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Ubicado en el estante"); }
if (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Ubicado en Rack"); }} else if (strcmp (nombre de usuario, "Jefe") == 0 && strcmp (contraseña, "ITESM") == 0) {printf ("¿Desea generar un archivo de texto con la base de datos? [Sí / No] "); scanf ("% s", SíNo); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Base de datos.txt", "w"); fprintf (pFILE, "% s", "-------- Base de datos de Rack ----- / n"); fprintf (pFILE, "% s", "Nombre del artículo:"); fprintf (pFILE, "% s", Tool. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Ubicación del artículo:"); fprintf (pFILE, "% s", Tool. Location); fprintf (pFILE, "% s", "\ n"); fprintf (pFILE, "% s", "Nombre del artículo:"); fprintf (pFILE, "% s", Pen. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Ubicación del artículo:"); fprintf (pFILE, "% s", Pen. Location); fprintf (pFILE, "% s", "\ n");
fprintf (pFILE, "% s", "Nombre del artículo:");
fprintf (pFILE, "% s", Case. Article_Name); fprintf (pFILE, "% s", "\ t"); fprintf (pFILE, "% s", "Ubicación del artículo:"); fprintf (pFILE, "% s", Case. Location); fprintf (pFILE, "% s", "\ n");
fclose (pFILE);
}
printf ("Acceso denegado / n");
}} falla: if (led_1 || button_1 || button_2 || button_3) {printf ("¡falla la aplicación del recurso gpio! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (botón_2); libsoc_gpio_free (button_3); }
Paso 11: Ejecute el programa
Paso 12: Conclusiones
El proyecto tiene un futuro prometedor, ya que se puede mejorar de manera muy efectiva, los sensores se pueden cambiar por etiquetas RFID´S y al mismo tiempo con la RFID es posible utilizar tarjetas de identificación para monitorear quién es responsable del material.
Recomendado:
Cajón secreto: 4 pasos
![Cajón secreto: 4 pasos Cajón secreto: 4 pasos](https://i.howwhatproduce.com/images/007/image-18915-j.webp)
Cajón secreto: siempre me fascinaron las habitaciones secretas o los cajones ocultos. Esa es la razón por la que decidí construir mi propio cajón oculto un día después de ver una película de Batman. Este proyecto consiste en un busto con un botón secreto que puedes colocar en todas partes del
¡Agregue un candado IOT a CUALQUIER cajón !: 4 pasos
![¡Agregue un candado IOT a CUALQUIER cajón !: 4 pasos ¡Agregue un candado IOT a CUALQUIER cajón !: 4 pasos](https://i.howwhatproduce.com/images/011/image-30334-j.webp)
¡Agregue un candado IOT a CUALQUIER cajón !: ¡Hola! Después de bastante tiempo decidí compartir mi último proyecto con todos ustedes. Esta fue solo una idea que se me ocurrió después de comprar una cerradura de solenoide barata en línea, y resultó ser un gran proyecto, así que básicamente la idea básica era hacer un se
Altavoces Bluetooth reciclados vintage Hipster de un cajón de madera: 5 pasos
![Altavoces Bluetooth reciclados vintage Hipster de un cajón de madera: 5 pasos Altavoces Bluetooth reciclados vintage Hipster de un cajón de madera: 5 pasos](https://i.howwhatproduce.com/images/002/image-5988-21-j.webp)
Altavoces Bluetooth Vintage Hipster Upcycled de Wooden Drawer: ¿Por qué no reciclar como unas gafas de jean delgadas con hipster soldando un café con leche semidesnatado de caramelo en una bicicleta fixie? ¿No te encanta la palabra upcycle? Oh sí. Dejemos todas esas tonterías a un lado y hagamos algo divertido, fácil y útil. Todo lo que necesita un
Sistema de gestión de inventario integrado: 10 pasos (con imágenes)
![Sistema de gestión de inventario integrado: 10 pasos (con imágenes) Sistema de gestión de inventario integrado: 10 pasos (con imágenes)](https://i.howwhatproduce.com/images/003/image-6628-19-j.webp)
Sistema de gestión de inventario integrado: siempre he querido una forma asequible de realizar un seguimiento de todo en mi despensa, así que hace un par de meses comencé a trabajar en un proyecto que haría precisamente eso. El objetivo era crear un sistema simple y asequible que fuera muy fácil de usar y al mismo tiempo almacenara
Mini cajón con compartimento secreto: 5 pasos
![Mini cajón con compartimento secreto: 5 pasos Mini cajón con compartimento secreto: 5 pasos](https://i.howwhatproduce.com/images/002/image-4009-55-j.webp)
Mini cajón con compartimento secreto: este instructivo le mostrará cómo hice un armario con cajones con un compartimento secreto. Utilizaré principalmente pequeños detalles para describir las acciones que hice