Sadržaj:

Ladica inventara "Hackathon pametnih gradova Qualcomm17": 13 koraka
Ladica inventara "Hackathon pametnih gradova Qualcomm17": 13 koraka

Video: Ladica inventara "Hackathon pametnih gradova Qualcomm17": 13 koraka

Video: Ladica inventara
Video: Обучение программированию с помощью хакатонов 2024, Juli
Anonim
Inventory ladica
Inventory ladica

U sljedećem dokumentu možete vidjeti proces izgradnje i programiranja inteligentne ladice. Ova ladica je programirana u Dragon Board 410c, sa svrhom poboljšanja kvalitete gradova. Projekat je dio takmičenja „Hackathon pametnih gradova Qualcomm 17“.

Ideja o ovom projektu započela je s problemom koji vidi vrlo mali broj ljudi, a to je izgubljeno i loše upravljanje alatima i materijalom koje osiguravaju kompanije poput tvornica, pa čak i bolnica. Na tim mjestima radnicima se pružaju neki materijali i alati za obavljanje aktivnosti, te se materijali i alati moraju ponovo koristiti jer su skupi ili zbog nedostatka ekonomskih resursa koji bi ih zamijenili.

U bolnicama postoje ljudi koji preuzimaju kontrolu nad uklonjenim materijalima, ali kada dođe do ljudske intervencije dolazi do greške koja može dovesti do nepotrebnih troškova. Najbolje rješenje za ovaj problem je inteligentna ladica sposobna održavati popis predmeta posuđenih i vraćenih i istovremeno znati ko je odgovoran.

Korak 1: Materijali

Za projekt je potreban sljedeći materijal: 1 x Dragon Board 410c

1 x Senzorske polukatne ploče 96 za Dragon Board 410c

1 x Oglasna ploča

1 x MDF (Vlaknaste ploče srednje gustoće) 61 x 122 cm

5 x senzor CNY 70

1 X TIP31B

1 x elektromagnet

1 x 7408

1 x Tastatura

1 x ekran

3 x vijci

Otpori (raznolikost)

Bakrene žice

Ljepilo

Drill

Korak 2: Izrežite komade za ladicu u MDF -u. (Za bolje rezultate upotrijebite laserski rezač)

Izrežite komade za ladicu u MDF -u. (Za bolje rezultate upotrijebite laserski rezač)
Izrežite komade za ladicu u MDF -u. (Za bolje rezultate upotrijebite laserski rezač)

Korak 3: Zalijepite sve dijelove zajedno kako biste formirali ladicu s dvije male ladice i jednom velikom

Korak 4: Zavijte vijke u sredini svake ladice

Zavijte vijke u sredini svake ladice
Zavijte vijke u sredini svake ladice

Korak 5: Bušilicom napravite rupe kroz ladicu na stražnjoj strani, rupa mora biti veličine senzora

Bušilicom napravite rupe kroz ladicu na stražnjoj strani, rupa mora biti veličine senzora
Bušilicom napravite rupe kroz ladicu na stražnjoj strani, rupa mora biti veličine senzora

Korak 6: Zavarite svaki senzor CNY 70 s bakrenim žicama. (ponovite još 4 puta)

Zavarite svaki senzor CNY 70 s bakrenim žicama. (ponovite još 4 puta)
Zavarite svaki senzor CNY 70 s bakrenim žicama. (ponovite još 4 puta)

Korak 7: Za senzor se koristi poseban krug

Za senzor se koristi posebno kolo
Za senzor se koristi posebno kolo

Korak 8: Povežite mezanin senzora na Dragon Board 410c. (koristi se za pristup GPIO -u)

Priključite mezanin senzora na Dragon Board 410c. (koristi se za pristup GPIO -u)
Priključite mezanin senzora na Dragon Board 410c. (koristi se za pristup GPIO -u)

Vrlo je važno da se ovaj korak obavi sa isključenom zmajevom pločom, ako ne može izgorjeti, osim što je sve PIN potrebno pravilno postaviti.

Korak 9: Spojite krug s pločice na međukat

Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat
Spojite krug s pločice na međukat

Korak 10: Napišite ili kopirajte kôd

#include #include #include // #include

#include "libsoc_gpio.h"

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

/ * Ovaj dio koda u nastavku čini ovaj primjer da radi na svim 96 pločama */

nepotpisani int LED_1; // elektro iman

unsigned int BUTTON_1; // prvi senzor

unsigned int BUTTON_2; // drugi senzor unsigned int BUTTON_3; // zatvori unsigned int BUTTON_4; // treći senzor

struct User {

char korisničko ime [20]; char lozinka [20]; } Korisnik;

struct Database {

char Article_Name [20]; char Lokacija [20]; } Baza podataka;

int senzor1;

int senzor2; int senzor3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char korisničko ime [50];

char lozinka [50];

char DaNe [40];

FILE *pFILE;

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

int trčanje = 1;

_atribut _ ((konstruktor)) statička void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // senzor šake BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // drugi senzor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // zatvori stalak BUTTON_4 = libsoc_board_gpio_id (config, "GPIO-B"); // treći senzor // BUTTON_5 = libsoc_board_gpio_id (config, "GPIO-E");

LED_1 = libsoc_board_gpio_id (konfiguracija, "GPIO-E"); // elektro iman

libsoc_board_free (config); } / * Kraj 96Boards posebnog koda * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; struct User Karina; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Password.password, "ITESM"); struct Database Tool; struct Database Pen; struct Baza podataka; strcpy (Tool. Article_Name, "Tool"); struct Database Tool; struct Database Pen; struct Baza podataka; strcpy (Tool. Article_Name, "Tool"); 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))

{goto fail; } 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; } senzor1 = libsoc_gpio_get_level (dugme_1); senzor2 = libsoc_gpio_get_level (button_2); senzor3 = libsoc_gpio_get_level (button_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Nalazi se na stalku"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nikada postavljeno u ovaj stalak"); } if (sensor2 == 1) {strcpy (Pen. Location, "Nalazi se na stalku"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Nikada postavljeno u ovaj stalak"); } if (sensor3 == 1) {strcpy (Case. Location, "Nalazi se na stalku"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nikada postavljeno u ovaj stalak"); } dok (radi) {libsoc_gpio_set_level (led_1, HIGH); printf ("Molimo unesite korisničko ime:"); scanf ("%s", korisničko ime); printf ("Molimo unesite lozinku:"); scanf ("%s", lozinka); if (strcmp (korisničko ime, "Karina") == 0 && strcmp (lozinka, "Viši") == 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); senzor2 = libsoc_gpio_get_level (button_2); senzor3 = 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, "Nalazi se na stalku"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Nalazi se na stalku"); }

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

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Nalazi se na stalku"); }} else if (strcmp (korisničko ime, "Šef") == 0 && strcmp (lozinka, "ITESM") == 0) {printf ("Želite li generirati tekstualnu datoteku s bazom podataka? [Da/Ne] "); scanf ("%s", DaNe); if ((strcmp (DaNe, Da) == 0)) {// Korisnički_menadžer (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Baza podataka stalka ----- / n"); fprintf (pFILE, "%s", "Naziv članka:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Lokacija članka:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Naziv članka:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Lokacija članka:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Naziv članka:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Lokacija članka:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Pristup odbijen / n");

}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("primijeni gpio resurs nije uspio! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (button_2); libsoc_gpio_free (button_3); }

Korak 11: Pokrenite program

Korak 12: Zaključci

Projekt ima budućnost koja obećava, budući da se može poboljšati na vrlo učinkovit način, senzori se mogu mijenjati za RFID oznake, a u isto vrijeme sa RFID -om je moguće koristiti lične karte za praćenje ko je odgovoran za materijal.

Preporučuje se: