Inhoudsopgave:

Inventarislade "Smart Cities Hackathon Qualcomm17" - Ajarnpa
Inventarislade "Smart Cities Hackathon Qualcomm17" - Ajarnpa

Video: Inventarislade "Smart Cities Hackathon Qualcomm17" - Ajarnpa

Video: Inventarislade
Video: А вот Булли заценил!😾 #симбочка #симба #тигра 2024, Juli-
Anonim
Inventaris Lade
Inventaris Lade

In het volgende document ziet u het proces van constructie en programmering van een intelligente lade. Deze lade is geprogrammeerd in een Dragon Board 410c, met als doel de kwaliteit van steden te verbeteren. Het project maakt deel uit van de wedstrijd “smart cities hackathon Qualcomm 17”.

Het idee van dit project begon met een probleem dat maar heel weinig mensen zien, namelijk het verloren en slecht beheer van gereedschappen en materiaal dat wordt geleverd door bedrijven zoals fabrieken en zelfs ziekenhuizen. Op deze plaatsen worden sommige materialen en gereedschappen aan de arbeiders verstrekt om activiteiten uit te voeren. Dit materiaal en gereedschap moeten worden hergebruikt omdat ze duur zijn of vanwege het gebrek aan economische middelen om ze te vervangen.

In ziekenhuizen zijn er mensen die de controle nemen over de materialen die worden verwijderd, maar wanneer er een menselijke tussenkomst is, is er de fout, die tot onnodige kosten kan leiden. De beste oplossing voor dit probleem is een intelligente lade die in staat is om een inventaris bij te houden van geleende en ingeleverde objecten en tegelijkertijd te weten wie de verantwoordelijke is.

Stap 1: Materialen

Het materiaal dat nodig is voor het project is het volgende: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Boards voor Dragon Board 410c

1 x Breadboard

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

5 x sensor CNY 70

1 X TIP31B

1 x elektromagneet

1x 7408

1 x toetsenbord

1 x scherm

3 x schroeven

Weerstanden (variëteit)

Koperdraden

Lijm

Oefening

Stap 2: Snijd de stukken voor de lade in de MDF. (Gebruik voor betere resultaten een lasersnijder)

Snijd de stukken voor de lade in de MDF. (Gebruik voor betere resultaten een lasersnijder)
Snijd de stukken voor de lade in de MDF. (Gebruik voor betere resultaten een lasersnijder)

Stap 3: Plak alle stukken samen om een lade te vormen met twee kleine lades en een grote

Stap 4: Schroef de schroeven in het midden van elke lade

Schroef de schroeven in het midden van elke lade
Schroef de schroeven in het midden van elke lade

Stap 5: Maak met de boor gaten door de lade aan de achterkant, het gat moet de grootte van de sensor hebben

Maak met de boor gaten door de lade aan de achterkant, het gat moet de grootte van de sensor hebben
Maak met de boor gaten door de lade aan de achterkant, het gat moet de grootte van de sensor hebben

Stap 6: Las elke sensor CNY 70 met de koperdraden. (herhaal 4 keer meer)

Las elke sensor CNY 70 met de koperdraden. (herhaal 4 keer meer)
Las elke sensor CNY 70 met de koperdraden. (herhaal 4 keer meer)

Stap 7: Er wordt een speciaal circuit gebruikt voor de sensor

Voor de sensor wordt een speciaal circuit gebruikt
Voor de sensor wordt een speciaal circuit gebruikt

Stap 8: Sluit de Sensor Mezzanine aan op de Dragon Board 410c. (gebruikt om toegang te krijgen tot de GPIO)

Sluit de Sensor Mezzanine aan op de Dragon Board 410c. (gebruikt om toegang te krijgen tot de GPIO)
Sluit de Sensor Mezzanine aan op de Dragon Board 410c. (gebruikt om toegang te krijgen tot de GPIO)

Het is erg belangrijk dat deze stap wordt uitgevoerd met het drakenbord uit, anders kan het branden, bovendien moet de pincode correct worden geplaatst.

Stap 9: Verbind het circuit van het breadboard naar de mezzanine

Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine
Verbind het circuit van het breadboard naar de mezzanine

Stap 10: Schrijf of kopieer de code

#include #include #include //#include

#include "libsoc_gpio.h"

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

/* Dit stukje code hieronder zorgt ervoor dat dit voorbeeld op alle 96Boards werkt */

niet-ondertekend int LED_1; // electro iman

unsigned int BUTTON_1;//eerste sensor

unsigned int BUTTON_2;//tweede sensor unsigned int BUTTON_3;// sluit unsigned int BUTTON_4;//derde sensor

struct Gebruiker{

char gebruikersnaam[20]; char wachtwoord[20]; }Gebruiker;

struct Database{

char Artikel_Naam[20]; char Locatie[20]; }Database;

int-sensor1;

int-sensor2; int-sensor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char gebruikersnaam [50];

char wachtwoord [50];

char JaNee[40];

BESTAND *pBESTAND;

char Ja[20] = {"Ja"};

int actief = 1;

_attribute_((constructor)) statische leegte _init()

{ board_config * config = libsoc_board_init(); BUTTON_1 = libsoc_board_gpio_id(config, "GPIO-A");//fists sensor BUTTON_2 = libsoc_board_gpio_id(config, "GPIO-C");// tweede sensor BUTTON_3 = libsoc_board_gpio_id(config, "GPIO-D"); // rek sluiten BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // derde sensor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");

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

libsoc_board_free(config); } /* Einde van speciale code 96Boards */

int hoofd()

{ gpio *led_1, *button_1, *button_2, *button_3, *button_4; //int-aanraking; struc Gebruiker Karina; struct gebruikersbeheer; strcpy(Karina.gebruikersnaam, "Karina Valverde"); strcpy(Karina.wachtwoord, "Groter Verticaal"); strcpy(Manager.gebruikersnaam, "The Boss"); strcpy(Manager.wachtwoord, "ITESM"); struct Database-tool; structuur Database Pen; structuur Database Case; strcpy(Tool. Article_Name, "Tool"); struct Database-tool; structuur Database Pen; structuur Database Case; strcpy(Tool. Article_Name, "Tool"); strcpy(Pen. Artikelnaam, "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))

{ ga mislukken; } 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; } 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, "Bevindt zich op Rack"); } else if (sensor1 == 0){ strcpy(Tool. Location, "Nooit in dit rek geplaatst"); } if (sensor2 ==1){ strcpy(Pen. Locatie, "Gelegen op rek"); } else if (sensor2 == 0){ strcpy(Pen. Location, "Nooit in dit rek geplaatst"); } if (sensor3 ==1){ strcpy(Case. Location, "Bevindt zich in rack"); } else if (sensor3 == 0){ strcpy(Case. Location, "Nooit in dit rek geplaatst"); } while(running) {libsoc_gpio_set_level(led_1, HIGH); printf("Voer gebruikersnaam in: "); scanf("%s", gebruikersnaam); printf("Voer wachtwoord in: "); scanf("%s", wachtwoord); if (strcmp(gebruikersnaam, "Karina") == 0 && strcmp(wachtwoord, "Groter") == 0){ libsoc_gpio_set_level(led_1, LOW); libsoc_gpio_set_level (led_1, LAAG); 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, HOOG); if (sensor1 == 1 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, Karina.username); }else if (sensor1 == 0 && sensor1 != sensor1_last_state){ strcpy(Tool. Location, "Bevindt zich in rack"); } if (sensor2 == 1 && sensor2 != sensor2_last_state){ strcpy(Pen. Locatie, Karina.gebruikersnaam); }else if (sensor2 == 0 && sensor2 != sensor2_last_state){ strcpy(Pen. Location, "Bevindt zich in rack"); }

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

strcpy (Case. Locatie, Karina.gebruikersnaam); }else if (sensor3 == 0 && sensor3 != sensor3_last_state){ strcpy(Case. Location, "Bevindt zich in rack"); } }else if (strcmp(gebruikersnaam, "Boss") == 0 && strcmp(wachtwoord, "ITESM") == 0){ printf(" Wilt u een tekstbestand genereren met de database? [Ja/Nee] "); scanf("%s", JaNee); if ((strcmp(YesNo, Yes) == 0)){ //Manager_user(pFILE); pFILE = fopen("Database.txt", "w"); fprintf(pFILE, "%s", "--------De database van het rack ----- \n"); fprintf(pFILE, "%s", "Artikelnaam:"); fprintf(pFILE, "%s", Tool. Article_Name); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Locatie van artikel:"); fprintf(pFILE, "%s", Tool. Location); fprintf(pFILE, "%s", "\n"); fprintf(pFILE, "%s", "Artikelnaam:"); fprintf(pFILE, "%s", Pen. Artikelnaam); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Locatie van artikel:"); fprintf(pFILE, "%s", Pen. Locatie); fprintf(pFILE, "%s", "\n");

fprintf(pFILE, "%s", "Artikelnaam:");

fprintf(pFILE, "%s", Case. Article_Name); fprintf(pFILE, "%s", "\t"); fprintf(pFILE, "%s", "Locatie van artikel:"); fprintf(pFILE, "%s", Case. Locatie); fprintf(pFILE, "%s", "\n");

fclose(pFILE);

}

printf("Toegang geweigerd \n");

} } fail: if(led_1 || button_1|| button_2|| button_3) { printf("apply gpio resource fail!\n"); libsoc_gpio_free(led_1); libsoc_gpio_free(button_1); libsoc_gpio_free(button_2); libsoc_gpio_free(button_3); }

Stap 11: Voer het programma uit

Stap 12: Conclusies

Het project heeft een veelbelovende toekomst, omdat het op een zeer effectieve manier kan worden verbeterd, de sensoren kunnen worden gewijzigd voor RFID'S-tags en tegelijkertijd met de RFID het mogelijk is om ID-kaarten te gebruiken om te controleren wie verantwoordelijk is voor het materiaal.

Aanbevolen: