Բովանդակություն:

Գույքագրման գզրոց «Smart Cities Hackathon Qualcomm17» ՝ 13 քայլ
Գույքագրման գզրոց «Smart Cities Hackathon Qualcomm17» ՝ 13 քայլ

Video: Գույքագրման գզրոց «Smart Cities Hackathon Qualcomm17» ՝ 13 քայլ

Video: Գույքագրման գզրոց «Smart Cities Hackathon Qualcomm17» ՝ 13 քայլ
Video: 26 - Գույքագրման անցկացման կարգը 2024, Նոյեմբեր
Anonim
Գույքագրման գզրոց
Գույքագրման գզրոց

Հաջորդ փաստաթղթում կարող եք տեսնել խելացի գզրոցի կառուցման և ծրագրավորման գործընթացը: Այս գզրոցը ծրագրավորվել է Dragon Board 410c- ում ՝ նպատակ ունենալով բարելավել քաղաքների որակը: Նախագիծը «Խելացի քաղաքներ հաքաթոն Qualcomm 17» մրցույթի մի մասն է:

Այս նախագծի գաղափարն սկսվեց մի խնդրով, որը շատ քչերն են տեսնում, դա գործիքների և նյութերի կորած և վատ կառավարումն է, որոնք տրամադրվում են այնպիսի ընկերությունների կողմից, ինչպիսիք են գործարանները և նույնիսկ հիվանդանոցները: Այս վայրերում որոշ նյութեր և գործիքներ տրամադրվում են աշխատողներին `գործունեություն ծավալելու համար, այս նյութը և գործիքները պետք է նորից օգտագործվեն, քանի որ դրանք թանկ են կամ դրանք փոխարինելու համար տնտեսական ռեսուրսների բացակայություն:

Հիվանդանոցներում կան մարդիկ, ովքեր վերահսկողություն են վերցնում հեռացված նյութերի վրա, բայց երբ մարդու միջամտությունը տեղի է ունենում սխալը, որը կարող է հանգեցնել անհարկի ծախսերի: Այս խնդրի լավագույն լուծումը խելացի գզրոցն է, որն ունակ է պահպանել փոխառված և վերադարձված առարկաների գույքագրումը և միևնույն ժամանակ իմանալ, թե ով է դրա պատասխանատուն:

Քայլ 1: Նյութեր

Նախագծի համար անհրաժեշտ նյութը հետևյալն է ՝ 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 տախտակ Dragon Board- ի համար 410c

1 x Breadboard

1 x MDF (միջին խտության մանրաթել) թերթ 61 x 122 սմ

5 x տվիչ CNY 70

1 X TIP31B

1 x էլեկտրամագնիս

1 x 7408

1 x Ստեղնաշար

1 x էկրան

3 x պտուտակ

Դիմադրություններ (բազմազանություն)

Պղնձե լարեր

Սոսինձ

Գայլիկոն

Քայլ 2. Կտրեք կտորները գզրոցի համար MDF- ում: (Ավելի լավ արդյունքների համար օգտագործեք լազերային դանակ)

Կտրեք գզրոցի կտորները MDF- ում: (Ավելի լավ արդյունքների համար օգտագործեք լազերային դանակ)
Կտրեք գզրոցի կտորները MDF- ում: (Ավելի լավ արդյունքների համար օգտագործեք լազերային դանակ)

Քայլ 3. Տեղադրեք բոլոր կտորները միասին ՝ կազմելով գզրոց երկու փոքր գզրոցով և մեծով:

Քայլ 4. Պտուտակներ պտտեք յուրաքանչյուր գզրոցի մեջտեղում:

Պտուտակներ տվեք յուրաքանչյուր գզրոցի մեջտեղում
Պտուտակներ տվեք յուրաքանչյուր գզրոցի մեջտեղում

Քայլ 5. Գայլիկոնով անցքեր կատարեք դարակի հետևի հետևի մասում, անցքը պետք է լինի սենսորի չափ:

Հորատանցքով անցքեր կատարեք հետևի գզրոցի միջոցով, անցքը պետք է լինի սենսորի չափ
Հորատանցքով անցքեր կատարեք հետևի գզրոցի միջոցով, անցքը պետք է լինի սենսորի չափ

Քայլ 6. Յուրաքանչյուր սենսոր CNY 70 եռակցեք պղնձե լարերով: (կրկնել 4 անգամ ավելին)

Եռակցեք յուրաքանչյուր տվիչ CNY 70 պղնձե լարերով: (կրկնել 4 անգամ ավելին)
Եռակցեք յուրաքանչյուր տվիչ CNY 70 պղնձե լարերով: (կրկնել 4 անգամ ավելին)

Քայլ 7: Սենսորի համար օգտագործվում է հատուկ միացում:

Սենսորների համար օգտագործվում է հատուկ միացում
Սենսորների համար օգտագործվում է հատուկ միացում

Քայլ 8. Սենսորային միջահարկը միացրեք Dragon Board 410c- ին: (օգտագործվում է GPIO մուտք գործելու համար)

Միացրեք Sensor Mezzanine- ը Dragon Board 410c- ին: (օգտագործվում է GPIO մուտք գործելու համար)
Միացրեք Sensor Mezzanine- ը Dragon Board 410c- ին: (օգտագործվում է GPIO մուտք գործելու համար)

Շատ կարևոր է, որ այս քայլը կատարվի վիշապի տախտակը անջատված վիճակում, եթե ոչ, այն կարող է այրվել, բացի այդ, PIN- ը պետք է ճիշտ տեղադրվի:

Քայլ 9. Միացրեք շղթան թխած տախտակից դեպի միջնահարկ

Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ
Միացրեք շղթան գրատախտակից դեպի միջահարկ

Քայլ 10: Գրեք կամ պատճենեք ծածկագիրը:

#ներառել #ներառել #ներառել // #ներառել

#ներառել «libsoc_gpio.h»

#ներառել «libsoc_debug.h» #ներառել «libsoc_board.h»

/ * Ստորև բերված կոդի այս հատվածը ստիպում է այս օրինակին աշխատել բոլոր 96 տախտակների վրա */

անստորագիր int_1_1; // էլեկտրո իման

անստորագիր int BUTTON_1; // առաջին սենսոր

անստորագիր int BUTTON_2; // երկրորդ սենսոր unsigned int BUTTON_3; // փակել անստորագիր int BUTTON_4; // երրորդ սենսոր

strukt օգտվող {

char օգտվողի անուն [20]; char գաղտնաբառ [20]; } Օգտվող;

struct տվյալների շտեմարան {

char Հոդվածի անվանումը [20]; char Վայրը [20]; } Տվյալների բազա;

int սենսոր 1;

int սենսոր 2; int սենսոր 3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char օգտվողի անուն [50];

char գաղտնաբառ [50];

char Այո Ոչ [40];

ՖԱՅԼ *pFILE;

char Այո [20] = {"Այո"};

int վազում = 1;

_ հատկանիշ _ ((կոնստրուկտոր)) ստատիկ դատարկություն _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (կազմաձևում, «GPIO-A»); // բռունցքների ցուցիչ BUTTON_2 = libsoc_board_gpio_id (կազմաձևում, «GPIO-C»); // երկրորդ սենսոր BUTTON_3 = libsoc_board_gpio_id (կազմաձևում, «GPIO-D»); // փակ դարակ BUTTON_4 = libsoc_board_gpio_id (կազմաձևում, «GPIO-B»); // երրորդ սենսոր // BUTTON_5 = libsoc_board_gpio_id (կոնֆիգուրացիա, «GPIO-E»);

LED_1 = libsoc_board_gpio_id (կազմաձևում, «GPIO-E»); // էլեկտրո իման

libsoc_board_free (կազմաձևում); } / * 96Boards հատուկ ծածկագրի ավարտ * /

int հիմնական ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int հպում; struct Օգտվող Կարինա; struct User Manager; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, «Ավելի բարձր ուղղահայաց»); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, «ITESM»); struct տվյալների բազայի գործիք; struct Տվյալների շտեմարան; strukt Database Case; strcpy (Tool. Article_Name, "Tool"); struct տվյալների բազայի գործիք; struct Տվյալների բազայի գրիչ; strukt Database Case; 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);

եթե ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{geto 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);

եթե ((libsoc_gpio_get_direction (led_1)! = OUTPUT)

|| (libsoc_gpio_get_direction (button_1)! = Մուտք) || (libsoc_gpio_get_direction (button_2)! = Մուտք) || (libsoc_gpio_get_direction (button_3)! = Մուտք) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {goto fail; } տվիչ 1 = libsoc_gpio_get_level (կոճակ_1); սենսոր 2 = libsoc_gpio_get_level (կոճակ_2); sensor3 = libsoc_gpio_get_level (կոճակ_4); sensor1_last_state = տվիչ 1; sensor2_last_state = սենսոր 2; sensor3_last_state = սենսոր 3; if (sensor1 == 1) {strcpy (Tool. Location, "Located on Rack"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Never posted in this Rack"); } if (sensor2 == 1) {strcpy (Pen. Location, "Located on Rack"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Never posted in this Rack"); } if (sensor3 == 1) {strcpy (Case. Location, "Located on Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "Never posted in this Rack"); } մինչ (վազում) {libsoc_gpio_set_level (led_1, HIGH); printf ("Խնդրում ենք մուտքագրել օգտվողի անունը."); scanf ("%s", օգտվողի անուն); printf ("Խնդրում ենք մուտքագրել գաղտնաբառ."); scanf ("%s", գաղտնաբառ); if (strcmp (օգտվողի անուն, «Կարինա») == 0 && strcmp (գաղտնաբառ, «ավելի բարձր») == 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); սենսոր 2 = libsoc_gpio_get_level (կոճակ_2); sensor3 = libsoc_gpio_get_level (կոճակ_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"); }

եթե (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Located on Rack"); }} else if (strcmp (օգտվողի անուն, «Բոսս») == 0 && strcmp (գաղտնաբառ, «ITESM») == 0) {printf («youանկանու՞մ եք տվյալների բազայի հետ տեքստային ֆայլ ստեղծել

fprintf (pFILE, "%s", "Article Name:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Հոդվածի գտնվելու վայրը."); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Մուտքը մերժված է / n");

}} ձախողում. libsoc_gpio_free (led_1); libsoc_gpio_free (կոճակ_1); libsoc_gpio_free (կոճակ_2); libsoc_gpio_free (կոճակ_3); }

Քայլ 11: Գործարկեք ծրագիրը:

Քայլ 12: Եզրակացություններ

Theրագիրն ունի ապագա խոստումնալից, քանի որ այն կարող է շատ արդյունավետ կերպով կատարելագործվել, սենսորները կարող են փոխվել RFID´S պիտակների համար, և միևնույն ժամանակ RFID- ի հետ հնարավոր է օգտագործել ID քարտեր ՝ վերահսկելու համար, թե ով է պատասխանատու նյութի համար:

Խորհուրդ ենք տալիս: