Tabla de contenido:

Cajón de inventario "Smart Cities Hackathon Qualcomm17": 13 pasos
Cajón de inventario "Smart Cities Hackathon Qualcomm17": 13 pasos

Video: Cajón de inventario "Smart Cities Hackathon Qualcomm17": 13 pasos

Video: Cajón de inventario
Video: Sobre aviso NO hay ENGAÑ0!!! #shorts 2024, Mes de julio
Anonim
Cajón de inventario
Cajón de inventario

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)

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

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

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)

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

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)

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
Conecte el circuito desde la placa de pruebas al entresuelo
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
Conecte el circuito de la placa de pruebas al entresuelo
Conecte el circuito de la placa de pruebas al entresuelo

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: