Sommario:

Cassetto dell'inventario "Smart Cities Hackathon Qualcomm17": 13 passaggi
Cassetto dell'inventario "Smart Cities Hackathon Qualcomm17": 13 passaggi

Video: Cassetto dell'inventario "Smart Cities Hackathon Qualcomm17": 13 passaggi

Video: Cassetto dell'inventario
Video: Inside the MOST EXPENSIVE and HIGHEST Penthouse In the WORLD! 2024, Luglio
Anonim
Cassetto inventario
Cassetto inventario

Nel prossimo documento, puoi vedere il processo di costruzione e programmazione di un cassetto intelligente. Questo cassetto è stato programmato in una Dragon Board 410c, con lo scopo di migliorare la qualità delle città. Il progetto fa parte del concorso “smart cities hackathon Qualcomm 17”.

L'idea di questo progetto è iniziata con un problema che pochi vedono, ovvero la perdita e la cattiva gestione di strumenti e materiali forniti da aziende come fabbriche e persino ospedali. In questi luoghi vengono forniti ai lavoratori alcuni materiali e strumenti per svolgere attività, questi materiali e strumenti devono essere riutilizzati perché costosi o per mancanza di risorse economiche per sostituirli.

Negli ospedali ci sono persone che prendono il controllo dei materiali che vengono rimossi, ma quando c'è un intervento umano c'è l'errore, che può portare a spese inutili. La migliore soluzione a questo problema è un cassetto intelligente in grado di mantenere un inventario degli oggetti presi in prestito e restituiti e allo stesso tempo sapere chi è il responsabile.

Passaggio 1: materiali

Il materiale necessario per il progetto è il prossimo:1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Schede per Dragon Board 410c

1 x tagliere

1 x foglio MDF (Medium Density Fiberboard) 61 x 122 cm

5 x sensore CNY 70

1 X TIP31B

1 x elettromagnete

1 x 7408

1 x tastiera

1 x schermo

3 x viti

Resistenze (varietà)

Fili di rame

Colla

Trapano

Passaggio 2: tagliare i pezzi per il cassetto nell'MDF. (Per risultati migliori utilizzare un laser cutter)

Taglia i pezzi per il cassetto nell'MDF. (Per risultati migliori utilizzare un laser cutter)
Taglia i pezzi per il cassetto nell'MDF. (Per risultati migliori utilizzare un laser cutter)

Passaggio 3: incolla tutti i pezzi insieme per formare un cassetto con due cassetti piccoli e uno grande

Passaggio 4: avvitare le viti al centro di ogni cassetto

Avvitare le viti al centro di ogni cassetto
Avvitare le viti al centro di ogni cassetto

Passaggio 5: con il trapano praticare dei fori attraverso il cassetto sul lato posteriore, il foro deve essere della dimensione del sensore

Con il trapano praticare dei fori attraverso il cassetto sul lato posteriore, il foro deve essere della dimensione del sensore
Con il trapano praticare dei fori attraverso il cassetto sul lato posteriore, il foro deve essere della dimensione del sensore

Passaggio 6: saldare ogni sensore CNY 70 con i fili di rame. (ripetere 4 volte di più)

Saldare ogni sensore CNY 70 con i fili di rame. (ripetere 4 volte di più)
Saldare ogni sensore CNY 70 con i fili di rame. (ripetere 4 volte di più)

Passaggio 7: viene utilizzato un circuito speciale per il sensore

Per il sensore viene utilizzato un circuito speciale
Per il sensore viene utilizzato un circuito speciale

Passaggio 8: collegare il Sensor Mezzanine alla Dragon Board 410c. (usato per accedere al GPIO)

Collegare il Sensor Mezzanine alla Dragon Board 410c. (usato per accedere al GPIO)
Collegare il Sensor Mezzanine alla Dragon Board 410c. (usato per accedere al GPIO)

È molto importante che questo passaggio venga eseguito con la scheda del drago spenta, in caso contrario può bruciare, inoltre tutti i PIN devono essere posizionati correttamente.

Passaggio 9: collegare il circuito dalla breadboard al mezzanino

Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino
Collega il circuito dalla breadboard al mezzanino

Passaggio 10: scrivere o copiare il codice

#include #include #include //#include

#include "libsoc_gpio.h"

#include "libsoc_debug.h" #include "libsoc_board.h"

/* Questo bit di codice sotto fa funzionare questo esempio su tutte le 96Board */

int non firmato LED_1; // electro iman

unsigned int BUTTON_1;//primo sensore

unsigned int BUTTON_2;//secondo sensore unsigned int BUTTON_3;// chiude unsigned int BUTTON_4;//terzo sensore

struttura utente{

char nome utente[20]; carattere password[20]; }Utente;

struttura database{

char Nome_Articolo[20]; char Posizione[20]; }Banca dati;

int sensore1;

int sensore2; int sensore3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char nome utente[50];

char password[50];

carattere SìNo[40];

FILE *pFILE;

char Sì[20] = {"Sì"};

int in esecuzione = 1;

_attribute_((costruttore)) static void _init()

{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//fist sensor BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C");// secondo sensore BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // chiudi il rack BUTTON_4 = libsoc_board_gpio_id(config, "GPIO-B"); // terzo sensore // BUTTON_5 = libsoc_board_gpio_id(config, "GPIO-E");

LED_1 = libsoc_board_gpio_id(config, "GPIO-E"); // electro iman

libsoc_board_free(config); } /* Fine del codice speciale 96Boards */

intero principale()

{ gpio *led_1, *pulsante_1, *pulsante_2, *pulsante_3, *pulsante_4; //int touch; struct utente Karina; struttura User Manager; strcpy(Karina.username, "Karina Valverde"); strcpy(Karina.password, "Più alto verticale"); strcpy(Manager.username, "The Boss"); strcpy(Manager.password, "ITESM"); strumento di database struttura; struct Penna del database; struct Database Case; strcpy(Strumento. Nome_articolo, "Strumento"); struct strumento di database; struct Penna del database; struct Database Case; strcpy(Strumento. Nome_articolo, "Strumento"); strcpy(Pen. Nome_Articolo, "Penna"); strcpy(Case. Nome_articolo, "Caso"); 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))

{ andare a fallire; } libsoc_gpio_set_direction(led_1, OUTPUT); libsoc_gpio_set_direction(button_1, INPUT); libsoc_gpio_set_direction(button_2, INPUT); libsoc_gpio_set_direction(button_3, INPUT); libsoc_gpio_set_direction(button_4, INPUT); //libsoc_gpio_set_direction(button_5, INPUT);

if((libsoc_gpio_get_direction(led_1) != OUTPUT)

|| (libsoc_gpio_get_direction(button_1) != INPUT) || (libsoc_gpio_get_direction(button_2) != INPUT) || (libsoc_gpio_get_direction(button_3) != INPUT) || (libsoc_gpio_get_direction(button_4) != INPUT)) { goto fail; } sensore1 = libsoc_gpio_get_level(pulsante_1); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_4); sensore1_last_state = sensore1; sensore2_last_state = sensore2; sensore3_last_state = sensore3; if (sensor1 ==1){ strcpy(Tool. Location, "Located on Rack"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Mai posizionato in questo Rack"); } if (sensor2 ==1){ strcpy(Pen. Location, "Located on Rack"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Mai posizionato in questo Rack"); } if (sensor3 ==1){ strcpy(Case. Location, "Located on Rack"); } else if (sensor3 == 0){ strcpy(Case. Location, "Mai posizionato in questo Rack"); } while(in esecuzione) { libsoc_gpio_set_level(led_1, HIGH); printf("Inserisci il nome utente: "); scanf("%s", nome utente); printf("Inserisci la password: "); scanf("%s", password); if (strcmp(nome utente, "Karina") == 0 && strcmp(password, "Più alto") == 0){ libsoc_gpio_set_level(led_1, LOW); libsoc_gpio_set_level(led_1, LOW); while(libsoc_gpio_get_level(button_3) != 1){ sensor1 = libsoc_gpio_get_level(button_1); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_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, "Located on Rack"); } if (sensor2 == 1 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, Karina.username); }else if (sensor2 == 0 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, "Located on Rack"); }

if (sensore3 == 1 && sensore3 != sensore3_last_state){

strcpy(Case. Location, Karina.username); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Located on Rack"); } }else if (strcmp(username, "Boss") == 0 && strcmp(password, "ITESM") == 0){ printf(" Vuoi generare un file di testo con il database? [Sì/No] "); scanf("%s", SiNo); if ((strcmp(YesNo, Yes) == 0)){ //Manager_user(pFILE); pFILE = fopen("Database.txt", "w"); fprintf(pFILE, "%s", "--------Database Rack----- \n"); fprintf(pFILE, "%s", "Nome articolo:"); fprintf(pFILE, "%s", Tool. Article_Name); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Posizione articolo:"); fprintf(pFILE, "%s", Tool. Location); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Nome articolo:"); fprintf(pFILE, "%s", Pen. Nome_Articolo); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Posizione articolo:"); fprintf(pFILE, "%s", Pen. Località); fprintf(pFILE, "%s", "\n");

fprintf(pFILE, "%s", "Nome articolo:");

fprintf(pFILE, "%s", Case. Nome_Articolo); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Posizione articolo:"); fprintf(pFILE, "%s", Case. Location); fprintf(pFILE, "%s", "\n");

fclose(pFILE);

}

printf("Accesso negato\n");

} } fail: if(led_1 || button_1|| button_2|| button_3) { printf("applica risorsa gpio fallisce!\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(pulsante_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }

Passaggio 11: eseguire il programma

Fase 12: Conclusioni

Il progetto ha un futuro promettente, poiché può migliorare in modo molto efficace, i sensori possono essere cambiati per i tag RFID e allo stesso tempo con l'RFID è possibile utilizzare le carte d'identità per monitorare chi è responsabile del materiale.

Consigliato: