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, Srpanj
Anonim
Ladica inventara
Ladica inventara

U sljedećem dokumentu možete vidjeti postupak izgradnje i programiranja inteligentne ladice. Ova je ladica programirana u Dragon Board 410c, sa svrhom poboljšanja kvalitete gradova. Projekt je dio natječaja "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 tvrtke poput tvornica, pa čak i bolnica. Na tim se mjestima radnicima daje neki materijal i alati za obavljanje aktivnosti, te se materijali i alati moraju ponovno upotrijebiti 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 pogreš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, a istovremeno znati tko je odgovoran.

Korak 1: Materijali

Materijal potreban za projekt je sljedeći: 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 tipkovnica

1x ekran

3 x vijci

Otpori (raznolikost)

Bakrene žice

Ljepilo

Bušilica

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 oblikovali ladicu s dvije male ladice i velikom

Korak 4: Uvrnite vijke u sredinu 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 poseban krug
Za senzor se koristi poseban krug

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

Spojite polukat senzora na Dragon Board 410c. (koristi se za pristup GPIO -u)
Spojite polukat senzora na Dragon Board 410c. (koristi se za pristup GPIO -u)

Vrlo je važno da se ovaj korak obavi s 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đusprat

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

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 donji dio koda čini da ovaj primjer 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]; lozinka char [20]; }Korisnik;

struct Database {

char Ime_lažu [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)) static void _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (config, "GPIO-A"); // senzor šaka BUTTON_2 = libsoc_board_gpio_id (config, "GPIO-C"); // drugi senzor BUTTON_3 = libsoc_board_gpio_id (config, "GPIO-D"); // zatvaranje stalka 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 (config, "GPIO-E"); // elektro iman

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

int main ()

{gpio *led_1, *gumb_1, *gumb_2, *gumb_3, *gumb_4; // int dodir; struct User Karina; struct User Manager; strcpy (Karina.korisničko ime, "Karina Valverde"); strcpy (Karina.password, "Viša okomica"); strcpy (Manager.username, "The Boss"); strcpy (lozinka upravitelja, "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 (gumb_1); senzor2 = libsoc_gpio_get_level (button_2); senzor3 = libsoc_gpio_get_level (gumb_4); senzor1_zadnje stanje = senzor1; senzor2_zadnje stanje = senzor2; senzor3_zadnje stanje = senzor3; if (sensor1 == 1) {strcpy (Tool. Location, "Nalazi se na stalku"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Nikad postavljeno u ovaj stalak"); } if (sensor2 == 1) {strcpy (Pen. Location, "Nalazi se na stalku"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Nikad postavljeno u ovaj stalak"); } if (sensor3 == 1) {strcpy (Case. Location, "Nalazi se na stalku"); } else if (sensor3 == 0) {strcpy (Case. Location, "Nikad 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 (gumb_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 istodobno je s RFID -om moguće koristiti osobne iskaznice za praćenje tko je odgovoran za materijal.

Preporučeni: