Table des matières:

Tiroir d'inventaire "Smart Cities Hackathon Qualcomm17": 13 étapes
Tiroir d'inventaire "Smart Cities Hackathon Qualcomm17": 13 étapes

Vidéo: Tiroir d'inventaire "Smart Cities Hackathon Qualcomm17": 13 étapes

Vidéo: Tiroir d'inventaire
Vidéo: 17 Small house Smart organization hacks 2024, Juillet
Anonim
Tiroir d'inventaire
Tiroir d'inventaire

Dans le document suivant, vous pouvez voir le processus de construction et de programmation d'un tiroir intelligent. Ce tiroir a été programmé dans un Dragon Board 410c, dans le but d'améliorer la qualité des villes. Le projet fait partie du concours « smart cities hackathon Qualcomm 17 ».

L'idée de ce projet est née d'un problème que très peu de gens voient, à savoir la perte et la mauvaise gestion des outils et du matériel fournis par des entreprises telles que des usines et même des hôpitaux. Dans ces lieux, certains matériaux et outils sont fournis aux travailleurs pour faire des activités, ce matériel et outils doivent être réutilisés car ils sont chers ou le manque de ressources économiques pour les remplacer.

Dans les hôpitaux, il y a des gens qui prennent le contrôle des matériaux qui sont retirés, mais lorsqu'il y a une intervention humaine il y a l'erreur, ce qui peut entraîner des dépenses inutiles. La meilleure solution à ce problème est un tiroir intelligent capable de maintenir un inventaire des objets empruntés et rendus et en même temps de savoir qui est le responsable.

Étape 1: Matériaux

Le matériel nécessaire au projet est le suivant:1 x Dragon Board 410c

1 x Capteur Mezzanine 96 Cartes pour Dragon Board 410c

1 x planche à pain

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

5 x capteur CNY 70

1 X TIP31B

1 x électro-aimant

1x7408

1 x clavier

1 écran

3 vis

Résistances (variété)

Fils de cuivre

La colle

Percer

Étape 2: Coupez les pièces pour le tiroir dans le MDF. (Pour de meilleurs résultats, utilisez un découpeur laser)

Coupez les pièces pour le tiroir dans le MDF. (Pour de meilleurs résultats, utilisez un cutter laser)
Coupez les pièces pour le tiroir dans le MDF. (Pour de meilleurs résultats, utilisez un cutter laser)

Étape 3: Collez toutes les pièces ensemble pour former un tiroir avec deux petits tiroirs et un grand

Étape 4: Vissez les vis au milieu de chaque tiroir

Vissez les vis au milieu de chaque tiroir
Vissez les vis au milieu de chaque tiroir

Étape 5: Avec la perceuse, faites des trous dans le tiroir à l'arrière, le trou doit être de la taille du capteur

Avec la perceuse, faites des trous dans le tiroir à l'arrière, le trou doit être de la taille du capteur
Avec la perceuse, faites des trous dans le tiroir à l'arrière, le trou doit être de la taille du capteur

Étape 6: Soudez chaque capteur CNY 70 avec les fils de cuivre. (répéter 4 fois plus)

Soudez chaque capteur CNY 70 avec les fils de cuivre. (répéter 4 fois plus)
Soudez chaque capteur CNY 70 avec les fils de cuivre. (répéter 4 fois plus)

Étape 7: un circuit spécial est utilisé pour le capteur

Un circuit spécial est utilisé pour le capteur
Un circuit spécial est utilisé pour le capteur

Étape 8: Connectez la mezzanine du capteur à la Dragon Board 410c. (utilisé pour accéder au GPIO)

Connectez la mezzanine du capteur au Dragon Board 410c. (utilisé pour accéder au GPIO)
Connectez la mezzanine du capteur au Dragon Board 410c. (utilisé pour accéder au GPIO)

Il est très important que cette étape soit effectuée avec le dragon board éteint, sinon il peut brûler, en plus tous les PIN doivent être placés correctement.

Étape 9: connectez le circuit de la planche à pain à la mezzanine

Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine
Connectez le circuit de la planche à pain à la mezzanine

Étape 10: écrivez ou copiez le code

#include #include #include //#include

#include "libsoc_gpio.h"

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

/* Ce bout de code ci-dessous fait que cet exemple fonctionne sur toutes les 96Boards */

int non signé LED_1; // electro iman

unsigned int BUTTON_1;//premier capteur

unsigned int BUTTON_2;//second capteur unsigned int BUTTON_3;// close unsigned int BUTTON_4;//troisième capteur

struct Utilisateur{

nom d'utilisateur char[20]; mot de passe char[20]; }Utilisateur;

base de données de structure{

char Nom_Article[20]; caractère Emplacement[20]; }Base de données;

int capteur1;

int capteur2; int capteur3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

nom d'utilisateur char[50];

mot de passe char[50];

car OuiNon[40];

FICHIER *pFICHIER;

car Oui[20] = {"Oui"};

int en cours d'exécution = 1;

_attribute_((constructeur)) static void _init()

{ board_config *config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//capteur de poings BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C"); // deuxième capteur BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // ferme le rack BUTTON_4 = libsoc_board_gpio_id(config, "GPIO-B"); // troisième capteur // BUTTON_5 = libsoc_board_gpio_id(config, "GPIO-E");

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

libsoc_board_free(config); } /* Fin du code spécial 96Boards */

int main()

{ gpio *led_1, *bouton_1, *bouton_2, *bouton_3, *bouton_4; //int touch; struct Utilisateur Karina; struct Gestionnaire d'utilisateurs; strcpy(Karina.nom d'utilisateur, "Karina Valverde"); strcpy(Karina.password, "Taller Vertical"); strcpy(Manager.nom d'utilisateur, "Le patron"); strcpy(Manager.password, "ITESM"); outil de base de données struct; struct Stylo de base de données; struct Cas de la base de données; strcpy(Tool. Article_Name, "Tool"); outil de base de données struct; struct Stylo de base de données; struct Cas de la base de données; strcpy(Tool. Article_Name, "Tool"); strcpy(Stylo. Nom_Article, "Stylo"); 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))

{ va échouer; } libsoc_gpio_set_direction(led_1, SORTIE); 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) != SORTIE)

|| (libsoc_gpio_get_direction(button_1) != SAISIE) || (libsoc_gpio_get_direction(button_2) != SAISIE) || (libsoc_gpio_get_direction(button_3) != SAISIE) || (libsoc_gpio_get_direction(button_4) != INPUT)) { goto fail; } sensor1 = libsoc_gpio_get_level(button_1); sensor2 = libsoc_gpio_get_level(button_2); sensor3 = libsoc_gpio_get_level(button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 ==1){ strcpy(Tool. Location, "Localed on Rack"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Jamais placé dans ce rack"); } if (sensor2 ==1){ strcpy(Pen. Location, "Localed on Rack"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Jamais placé dans ce rack"); } if (sensor3 ==1){ strcpy(Case. Location, "Localed on Rack"); } else if (sensor3 == 0){ strcpy(Case. Location, "Jamais placé dans ce rack"); } while(running) { libsoc_gpio_set_level(led_1, HIGH); printf("Veuillez entrer le nom d'utilisateur: "); scanf("%s", nom d'utilisateur); printf("Veuillez entrer le mot de passe: "); scanf("%s", mot de passe); if (strcmp(nom d'utilisateur, "Karina") == 0 && strcmp(mot de passe, "Taller") == 0){ libsoc_gpio_set_level(led_1, LOW); libsoc_gpio_set_level(led_1, BAS); 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, HAUT); if (sensor1 == 1 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, Karina.username); }else if (sensor1 == 0 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, "Localed 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, "Localed on Rack"); }

if (sensor3 == 1 && sensor3 != sensor3_last_state){

strcpy(Case. Location, Karina.username); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Localed on Rack"); } }else if (strcmp(username, "Boss") == 0 && strcmp(password, "ITESM") == 0){ printf(" Souhaitez-vous générer un fichier texte avec la base de données ? [Oui/Non] "); scanf("%s", OuiNon); if ((strcmp(YesNo, Yes) == 0)){ //Manager_user(pFILE); pFILE = fopen("Database.txt", "w"); fprintf(pFILE, "%s", "--------Base de données du rack----- \n"); fprintf(pFILE, "%s", "Nom de l'article:"); fprintf(pFILE, "%s", Outil. Nom_Article); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Emplacement de l'article:"); fprintf(pFILE, "%s", Outil. Emplacement); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Nom de l'article:"); fprintf(pFILE, "%s", Stylo. Nom_Article); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Emplacement de l'article:"); fprintf(pFILE, "%s", Pen. Location); fprintf(pFILE, "%s", "\n");

fprintf(pFILE, "%s", "Nom de l'article:");

fprintf(pFILE, "%s", Case. Article_Name); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Emplacement de l'article:"); fprintf(pFILE, "%s", Case. Location); fprintf(pFILE, "%s", "\n");

fclose(pFICHIER);

}

printf("Accès refusé \n");

} } échouer: if(led_1 || button_1|| button_2|| button_3) { printf("appliquer la ressource gpio échouer !\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(button_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }

Étape 11: Exécutez le programme

Étape 12: Conclusions

Le projet a un avenir prometteur, car il peut s'améliorer de manière très efficace, les capteurs peuvent être remplacés par des étiquettes RFID et en même temps, avec la RFID, il est possible d'utiliser des cartes d'identité pour contrôler qui est responsable du matériel.

Conseillé: