Სარჩევი:

ინვენტარის უჯრა "Smart Cities Hackathon Qualcomm17": 13 ნაბიჯი
ინვენტარის უჯრა "Smart Cities Hackathon Qualcomm17": 13 ნაბიჯი

ვიდეო: ინვენტარის უჯრა "Smart Cities Hackathon Qualcomm17": 13 ნაბიჯი

ვიდეო: ინვენტარის უჯრა
ვიდეო: Négy város, egy cél 2024, ივლისი
Anonim
ინვენტარის უჯრა
ინვენტარის უჯრა

შემდეგ დოკუმენტში შეგიძლიათ ნახოთ ინტელექტუალური უჯრის მშენებლობისა და პროგრამირების პროცესი. ეს უჯრა დაპროგრამებულია Dragon Board 410c– ში, ქალაქების ხარისხის გაუმჯობესების მიზნით. პროექტი არის კონკურსის "ჭკვიანი ქალაქების hackathon Qualcomm 17" ნაწილი.

ამ პროექტის იდეა დაიწყო იმ პრობლემით, რომელსაც ძალიან ცოტა ადამიანი ხედავს, რაც არის ინსტრუმენტების და მასალის დაკარგული და ცუდი მართვა, რომელსაც უზრუნველყოფენ კომპანიები, როგორიცაა ქარხნები და საავადმყოფოებიც კი. ამ ადგილებში, გარკვეული მასალები და ინსტრუმენტები მიეწოდება მუშებს საქმიანობის გასაკეთებლად, ეს მასალა და ინსტრუმენტები ხელახლა უნდა იქნას გამოყენებული, რადგან ისინი ძვირია ან მათ შესაცვლელად ეკონომიკური რესურსი არ არის.

საავადმყოფოებში არიან ადამიანები, რომლებიც აკონტროლებენ ამოღებულ მასალებს, მაგრამ როდესაც ადამიანის ჩარევა ხდება შეცდომა, რამაც შეიძლება გამოიწვიოს არასაჭირო ხარჯები. ამ პრობლემის საუკეთესო გადაწყვეტა არის ინტელექტუალური უჯრა, რომელსაც შეუძლია შეინარჩუნოს საგნები, რომლებიც არის ნასესხები და დაბრუნებული და ამავე დროს იცის ვინ არის პასუხისმგებელი.

ნაბიჯი 1: მასალები

პროექტისათვის საჭირო მასალა შემდეგია: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 დაფები დრაკონის დაფისთვის 410c

1 x პურის დაფა

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: შეაერთეთ სენსორის ანტრესოლი დრაკონის დაფაზე 410c. (გამოიყენება GPIO– ზე წვდომისათვის)

შეაერთეთ სენსორული ანტრესოლი დრაკონის დაფასთან 410c. (გამოიყენება GPIO– ზე წვდომისათვის)
შეაერთეთ სენსორული ანტრესოლი დრაკონის დაფასთან 410c. (გამოიყენება GPIO– ზე წვდომისათვის)

ძალიან მნიშვნელოვანია, რომ ეს ნაბიჯი გაკეთდეს დრაკონის დაფის გათიშვით, თუ არა, ის შეიძლება დაიწვას, გარდა ამისა, ყველა PIN უნდა იყოს მოთავსებული სწორად.

ნაბიჯი 9: შეაერთეთ წრე პურიდან მეზანინეზე

შეაერთეთ წრე პურის დაფიდან ანტრესოლით
შეაერთეთ წრე პურის დაფიდან ანტრესოლით
შეაერთეთ წრე პურიდან მეზანინემდე
შეაერთეთ წრე პურიდან მეზანინემდე
შეაერთეთ წრე პურიდან მეზანინემდე
შეაერთეთ წრე პურიდან მეზანინემდე
შეაერთეთ წრე პურის დაფიდან ანტრესოლით
შეაერთეთ წრე პურის დაფიდან ანტრესოლით

ნაბიჯი 10: ჩაწერეთ ან დააკოპირეთ კოდი

#ჩართეთ #ჩართეთ #ჩართეთ // #მოიცავს

#მოიცავს "libsoc_gpio.h"

#მოიცავს "libsoc_debug.h" #მოიცავს "libsoc_board.h"

/ * ქვემოთ მოყვანილი კოდის ეს ნაწილი ამ მაგალითს ამუშავებს ყველა 96 დაფაზე */

ხელმოუწერელი LED_1; // ელექტრო იმანი

ხელმოუწერელი BUTTON_1; // პირველი სენსორი

ხელმოუწერელი int BUTTON_2; // მეორე სენსორი unsigned int BUTTON_3; // დახურეთ ხელმოუწერელი int BUTTON_4; // მესამე სენსორი

სტრუქტურის მომხმარებელი {

char მომხმარებლის სახელი [20]; char პაროლი [20]; } მომხმარებელი;

სტრუქტურის მონაცემთა ბაზა {

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];

FILE *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 (კონფიგურაცია); } / * 96 დაფის დასრულების სპეციალური კოდი * /

int მთავარი ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // ინტ შეხება; სტრუქ მომხმარებელი კარინა; struct მომხმარებლის მენეჯერი; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "უფრო მაღალი ვერტიკალური"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); struct მონაცემთა ბაზის ინსტრუმენტი; struct მონაცემთა ბაზის კალამი; struct მონაცემთა ბაზის საქმე; strcpy (Tool. Article_Name, "Tool"); struct მონაცემთა ბაზის ინსტრუმენტი; struct მონაცემთა ბაზის კალამი; struct მონაცემთა ბაზის საქმე; strcpy (Tool. Article_Name, "Tool"); strcpy (Pen. Article_Name, "Pen"); strcpy (Case. Article_Name, "Case"); libsoc_set_debug (0); led_1 = libsoc_gpio_quest (LED_1, LS_SHARED); ღილაკი_1 = libsoc_gpio_quest (BUTTON_1, LS_SHARED); ღილაკი_2 = libsoc_gpio_quest (BUTTON_2, LS_SHARED); ღილაკი_3 = libsoc_gpio_ თხოვნა (BUTTON_3, LS_SHARED); ღილაკი_4 = libsoc_gpio_ თხოვნა (BUTTON_4, LS_SHARED); // ღილაკი_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);

თუ ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{უნდა ჩავარდე; } 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 (ღილაკი_3, INPUT); libsoc_gpio_set_direction (ღილაკი_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; } სენსორი 1 = libsoc_gpio_get_level (ღილაკი_1); სენსორი 2 = libsoc_gpio_get_level (ღილაკი_2); სენსორი 3 = 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, "არასოდეს განთავსებული ამ თაროზე"); } if (sensor2 == 1) {strcpy (Pen. Location, "Located on Rack"); } else if (sensor2 == 0) {strcpy (პენ. მდებარეობა, "არასოდეს მოთავსებულია ამ თაროზე"); } if (sensor3 == 1) {strcpy (Case. Location, "Located on Rack"); } else if (sensor3 == 0) {strcpy (Case. Location, "არასოდეს განთავსებული ამ თაროზე"); } (გაშვებული) {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); ხოლო (libsoc_gpio_get_level (button_3)! = 1) {sensor1 = libsoc_gpio_get_level (button_1); სენსორი 2 = libsoc_gpio_get_level (ღილაკი_2); სენსორი 3 = 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"); }

if (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 ("გნებავთ ტექსტური ფაილის გენერირება მონაცემთა ბაზასთან? [დიახ/არა] "); scanf ("%s", დიახ არა); if ((strcmp (დიახNo, დიახ) == 0)) {// Manager_user (pFILE); pFILE = გახსნა ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rack's Database ----- / n"); fprintf (pFILE, "%s", "სტატიის სახელი:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "სტატიის მდებარეობა:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "სტატიის სახელი:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "სტატიის მდებარეობა:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "სტატიის სახელი:");

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");

}} fail: if (led_1 || button_1 || button_2 || button_3) {printf ("გამოიყენე gpio რესურსი fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (ღილაკი_1); libsoc_gpio_free (ღილაკი_2); libsoc_gpio_free (ღილაკი_3); }

ნაბიჯი 11: გაუშვით პროგრამა

ნაბიჯი 12: დასკვნები

პროექტს აქვს მომავალი პერსპექტიული, ვინაიდან ის შეიძლება გაუმჯობესდეს ძალიან ეფექტური გზით, სენსორები შეიძლება შეიცვალოს RFID´S ტეგებისთვის და ამავდროულად RFID– ით შესაძლებელია პირადობის მოწმობების გამოყენება მონიტორინგისთვის ვინ არის პასუხისმგებელი მასალაზე.

გირჩევთ: