Sommario:
- Passaggio 1: materiali
- Passaggio 2: tagliare 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
- Passaggio 5: 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ù)
- Passaggio 7: viene utilizzato un circuito speciale per il sensore
- Passaggio 8: collegare il Sensor Mezzanine alla Dragon Board 410c. (usato per accedere al GPIO)
- Passaggio 9: collegare il circuito dalla breadboard al mezzanino
- Passaggio 10: scrivere o copiare il codice
- Passaggio 11: eseguire il programma
- Fase 12: Conclusioni
Video: Cassetto dell'inventario "Smart Cities Hackathon Qualcomm17": 13 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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)
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
Passaggio 5: 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ù)
Passaggio 7: viene utilizzato un circuito speciale per il sensore
Passaggio 8: 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
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:
Cassetto segreto: 4 passaggi
Secret Drawer: Sono sempre stato affascinato dalle stanze segrete o dai cassetti nascosti. Questo è il motivo per cui ho deciso di costruire il mio cassetto nascosto un giorno dopo aver visto un film di Batman. Questo progetto consiste in un busto con un bottone segreto che puoi posizionare ovunque nel
Aggiungi un blocco IOT a QUALSIASI cassetto!: 4 passaggi
Aggiungi un lucchetto IOT a QUALSIASI cassetto!: Ciao! Dopo un po' ho deciso di condividere il mio ultimo progetto con tutti voi. Questa era solo un'idea che mi è venuta dopo aver acquistato online una serratura a solenoide economica, e si è rivelata un ottimo progetto. Quindi, fondamentalmente l'idea di base era quella di fare un se
Altoparlanti Bluetooth vintage hipster riciclati da un cassetto in legno: 5 passaggi
Altoparlanti Bluetooth vintage hipster riciclati da un cassetto in legno: perché non riciclare come un paio di occhiali di jeans skinny che indossano pantaloni a vita bassa che saldano un latte al caramello parzialmente scremato su una bici fixie! Non ami la parola upcycle! O si. Mettiamo da parte tutte queste sciocchezze e facciamo qualcosa di divertente, facile e utile. Tutto ciò di cui hai bisogno
Sistema di gestione dell'inventario integrato: 10 passaggi (con immagini)
Sistema di gestione dell'inventario integrato: ho sempre desiderato un modo conveniente per tenere traccia di tutto nella mia dispensa, quindi un paio di mesi fa ho iniziato a lavorare a un progetto che avrebbe fatto proprio questo. L'obiettivo era quello di creare un sistema semplice ed economico che fosse molto facile da usare e allo stesso tempo stori
Divisori dell'organizzatore del cassetto dalle carte del portafoglio: 5 passaggi
Divisori dell'organizzatore del cassetto dalle carte del portafoglio: questo istruibile ti mostrerà come creare nuovi divisori per gli organizzatori dell'archiviazione delle parti del cassetto con carte fedeltà del negozio o altra spazzatura nel tuo portafoglio. Stavo cercando di dare un senso al mio caos che erano diversi tipi di bulloni e viti, e non ho h