Სარჩევი:
- ნაბიჯი 1: მასალები
- ნაბიჯი 2: გაჭერით ცალი უჯრისთვის MDF- ში. (უკეთესი შედეგისთვის გამოიყენეთ ლაზერული საჭრელი)
- ნაბიჯი 3: ჩასვით ყველა ცალი ერთად, რომ შექმნათ უჯრა ორი პატარა უჯრით და ერთი დიდით
- ნაბიჯი 4: ხრახნიანი ხრახნები თითოეული უჯრის შუაში
- ნაბიჯი 5: საბურღით გააკეთეთ ხვრელები უჯრის უკანა მხარეს, ხვრელი უნდა იყოს სენსორის ზომა
- ნაბიჯი 6: შედუღეთ თითოეული სენსორი CNY 70 სპილენძის მავთულხლართებით. (გაიმეორეთ 4 ჯერ მეტი)
- ნაბიჯი 7: სპეციალური წრე გამოიყენება სენსორისთვის
- ნაბიჯი 8: შეაერთეთ სენსორის ანტრესოლი დრაკონის დაფაზე 410c. (გამოიყენება GPIO– ზე წვდომისათვის)
- ნაბიჯი 9: შეაერთეთ წრე პურიდან მეზანინეზე
- ნაბიჯი 10: ჩაწერეთ ან დააკოპირეთ კოდი
- ნაბიჯი 11: გაუშვით პროგრამა
- ნაბიჯი 12: დასკვნები
ვიდეო: ინვენტარის უჯრა "Smart Cities Hackathon Qualcomm17": 13 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
შემდეგ დოკუმენტში შეგიძლიათ ნახოთ ინტელექტუალური უჯრის მშენებლობისა და პროგრამირების პროცესი. ეს უჯრა დაპროგრამებულია 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- ში. (უკეთესი შედეგისთვის გამოიყენეთ ლაზერული საჭრელი)
ნაბიჯი 3: ჩასვით ყველა ცალი ერთად, რომ შექმნათ უჯრა ორი პატარა უჯრით და ერთი დიდით
ნაბიჯი 4: ხრახნიანი ხრახნები თითოეული უჯრის შუაში
ნაბიჯი 5: საბურღით გააკეთეთ ხვრელები უჯრის უკანა მხარეს, ხვრელი უნდა იყოს სენსორის ზომა
ნაბიჯი 6: შედუღეთ თითოეული სენსორი CNY 70 სპილენძის მავთულხლართებით. (გაიმეორეთ 4 ჯერ მეტი)
ნაბიჯი 7: სპეციალური წრე გამოიყენება სენსორისთვის
ნაბიჯი 8: შეაერთეთ სენსორის ანტრესოლი დრაკონის დაფაზე 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– ით შესაძლებელია პირადობის მოწმობების გამოყენება მონიტორინგისთვის ვინ არის პასუხისმგებელი მასალაზე.
გირჩევთ:
საიდუმლო უჯრა: 4 ნაბიჯი
საიდუმლო უჯრა: მე ყოველთვის მოხიბლული ვიყავი საიდუმლო ოთახებით ან ფარული უჯრით. ეს არის მიზეზი, რის გამოც გადავწყვიტე ავაშენო ჩემი ფარული უჯრა ბეტმენის ფილმის ყურებიდან ერთი დღის შემდეგ. ეს პროექტი მოიცავს ბიუსტს საიდუმლო ღილაკით, რომლის განთავსებაც შეგიძლიათ ყველგან
ინვენტარის მართვის ინტეგრირებული სისტემა: 10 ნაბიჯი (სურათებით)
ინვენტარის მენეჯმენტის ინტეგრირებული სისტემა: მე ყოველთვის მინდოდა ხელმისაწვდომი გზა მენახა ყველაფერი ჩემი საკუჭნაოში, ამიტომ რამდენიმე თვის წინ დავიწყე მუშაობა პროექტზე, რომელიც ამას გააკეთებდა. მიზანი იყო შეექმნა მარტივი, ხელმისაწვდომი სისტემა, რომელიც ძალიან მარტივი გამოსაყენებლად და ასევე ისტორიული
D4E1 - წვრილმანი - დამხმარე ტექნოლოგია: რეგულირებადი ინვალიდის ეტლის უჯრა: 7 ნაბიჯი (სურათებით)
D4E1 - წვრილმანი - დამხმარე ტექნოლოგია: რეგულირებადი ინვალიდის ეტლის უჯრა: კელეს აქვს თანდაყოლილი შეზღუდული შესაძლებლობები: დისკინეტიკური კვადრიპარეზი და არ შეუძლია დამოუკიდებლად ჭამა. მას სჭირდება მონიტორის, ოკუპაციური თერაპევტის დახმარება, რომელიც მას კვებავს. ამას მოყვება ორი პრობლემა: 1) საჭესთან დგას ოკუპაციური თერაპევტი
როგორ გააკეთოთ ავტომატური მბრუნავი კვერცხის უჯრა PVC და ხისგან: 5 ნაბიჯი
როგორ გააკეთოთ ავტომატური მბრუნავი კვერცხის უჯრა PVC და ხისგან: თუ თქვენ გინახავთ ქათამი, რომელიც კვერცხებს იქცევს, შეიძლება შეამჩნიოთ, რომ ის ცდილობს კვერცხის სრულად ბრუნვას ფეხებით, ეს ყველაზე გავრცელებული და ეფექტური ტექნიკაა, ის კვერცხუჯრედს კვერცხუჯრედს აქცევს და დონ არ დავტოვე შანსი, რომ შევიდე ჭურვიში, ამიტომ
საიდუმლო კუპე მინი უჯრა: 5 ნაბიჯი
საიდუმლო განყოფილების მინი უჯრა: ეს ინსტრუქცია გაჩვენებთ, თუ როგორ გავაკეთე უჯრის კარადა საიდუმლო განყოფილებით. მე ძირითადად მცირე დეტალებს გამოვიყენებ ჩემს მიერ გაკეთებული ქმედებების აღსაწერად