Mündəricat:

Envanter Çekmecesi "Ağıllı Şəhərlər Hackathon Qualcomm17": 13 addım
Envanter Çekmecesi "Ağıllı Şəhərlər Hackathon Qualcomm17": 13 addım

Video: Envanter Çekmecesi "Ağıllı Şəhərlər Hackathon Qualcomm17": 13 addım

Video: Envanter Çekmecesi
Video: Steam Envanter Gizliliği Nasıl Açılır? #steam 2024, Iyul
Anonim
Envanter Çekmecesi
Envanter Çekmecesi

Növbəti sənəddə, ağıllı bir çekmecenin qurulması və proqramlaşdırılması prosesini görə bilərsiniz. Bu çekmece, şəhərlərin keyfiyyətini artırmaq məqsədi ilə Dragon Board 410c -də proqramlaşdırılmışdır. Layihə, "ağıllı şəhərlər hackathon Qualcomm 17" yarışmasının bir hissəsidir.

Bu layihənin ideyası, çox az adamın gördüyü bir problemlə başladı, bu, fabriklər və hətta xəstəxanalar kimi şirkətlər tərəfindən təmin edilən alət və materialların itirilmiş və pis idarə olunmasıdır. Bu yerlərdə işləmək üçün işçilərə bəzi materiallar və alətlər verilir, bu material və alətlər bahalı olduğu üçün və ya onları əvəz etmək üçün iqtisadi qaynaqların olmaması səbəbindən yenidən istifadə edilməlidir.

Xəstəxanalarda, çıxarılan materiallara nəzarəti ələ alan insanlar var, ancaq insan müdaxiləsi olduqda səhv var ki, bu da lazımsız xərclərə səbəb ola bilər. Bu problemin ən yaxşı həlli, borc götürülən və qaytarılmış obyektlərin inventarını saxlaya bilən və eyni zamanda kimin məsuliyyət daşıdığını bilən ağıllı bir çekmecedir.

Addım 1: Materiallar

Layihə üçün lazım olan material aşağıdakılardır: 1 x Dragon Board 410c

1 x Sensor Mezzanine 96 Dragon Board 410c üçün lövhələr

1 x Çörək paneli

1 x MDF (Orta Sıxlıq Fiberboard) vərəqi 61 x 122 sm

5 x CNY 70 sensoru

1 X TIP31B

1 x elektromaqnit

1 x 7408

1 x Klaviatura

1 x ekran

3 x vida

Müqavimət (müxtəliflik)

Mis tellər

Yapışqan

Qazma

Addım 2: MDF -də Çekmece üçün Parçaları kəsin. (Daha yaxşı nəticələr üçün lazer kəsici istifadə edin)

MDF -də Çekmece üçün Parçaları kəsin. (Daha yaxşı nəticələr üçün lazer kəsici istifadə edin)
MDF -də Çekmece üçün Parçaları kəsin. (Daha yaxşı nəticələr üçün lazer kəsici istifadə edin)

Addım 3: İki kiçik və böyük bir çekmece ilə bir çekmece yaratmaq üçün bütün parçaları bir -birinə yapışdırın

Addım 4: Vidaları hər bir çekmecenin ortasına vidalayın

Vidaları hər bir çekmecenin ortasına vidalayın
Vidaları hər bir çekmecenin ortasına vidalayın

Addım 5: Matkapla Arxa tərəfdəki Çekmecədən Deliklər Açın, Delik Sensor Ölçüsü Olmalıdır

Matkapla Arxa tərəfdəki Çekmecədən Delik Açın, Delik Sensor Ölçüsü Olmalıdır
Matkapla Arxa tərəfdəki Çekmecədən Delik Açın, Delik Sensor Ölçüsü Olmalıdır

Addım 6: Hər bir CNY 70 Sensorunu Mis Tellərlə Qaynaqlayın. (4 dəfə daha çox təkrarlayın)

Hər bir CNY 70 Sensorunu Mis Tellərlə Qaynaqlayın. (4 dəfə daha çox təkrarlayın)
Hər bir CNY 70 Sensorunu Mis Tellərlə Qaynaqlayın. (4 dəfə daha çox təkrarlayın)

Addım 7: Sensor üçün xüsusi bir dövrə istifadə olunur

Sensor üçün xüsusi bir dövrə istifadə olunur
Sensor üçün xüsusi bir dövrə istifadə olunur

Addım 8: Sensor Mezzanini Dragon Board 410c -ə qoşun. (GPIO -ya daxil olmaq üçün istifadə olunur)

Sensor ara qatını Dragon Board 410c -ə qoşun. (GPIO -ya daxil olmaq üçün istifadə olunur)
Sensor ara qatını Dragon Board 410c -ə qoşun. (GPIO -ya daxil olmaq üçün istifadə olunur)

Bu addımın əjdaha lövhəsi söndürüldükdə edilməsi çox vacibdir, əgər yanmazsa, bütün PİN kodlarının düzgün yerləşdirilməsi lazımdır.

Addım 9: Dövrəni Breadboard -dan Mezzanine bağlayın

Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın
Dövrəni Breadboard -dan Mezzanine bağlayın

Addım 10: Kodu yazın və ya kopyalayın

#daxil edin #daxil edin #daxil edin # #daxil edin

#"libsoc_gpio.h" daxil edin

#"libsoc_debug.h" daxil edin #"libsoc_board.h" daxil edin

/ * Aşağıdakı bu kod parçası bu nümunəni bütün 96Boards üzərində işləməyə məcbur edir */

işarəsiz int LED_1; // elektro iman

imzasız int BUTTON_1; // ilk sensor

imzasız int BUTTON_2; // ikinci sensor işarəsiz int BUTTON_3; // işarəsiz int BUTTON_4 -ü bağla; // üçüncü sensor

struktur İstifadəçi {

char istifadəçi adı [20]; char parol [20]; } İstifadəçi;

struktur verilənlər bazası {

char Article_Name [20]; char Məkan [20]; } Verilənlər bazası;

int sensoru 1;

int sensoru 2; int sensor 3;

int sensor1_last_state;

int sensor2_last_state; int sensor3_last_state;

char istifadəçi adı [50];

char parol [50];

char YesNo [40];

DOSYA *pFILE;

char Bəli [20] = {"Bəli"};

int çalışan = 1;

_attribute _ ((qurucu)) statik boşluq _init ()

{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfiqurasiya, "GPIO-A"); // yumruq sensoru BUTTON_2 = libsoc_board_gpio_id (konfiqurasiya, "GPIO-C"); // ikinci sensor BUTTON_3 = libsoc_board_gpio_id (konfiqurasiya, "GPIO-D"); // rəfi bağla BUTTON_4 = libsoc_board_gpio_id (konfiqurasiya, "GPIO-B"); // üçüncü sensor // BUTTON_5 = libsoc_board_gpio_id (konfiqurasiya, "GPIO-E");

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

libsoc_board_free (konfiqurasiya); } / * 96Boards xüsusi kodu sonu * /

int main ()

{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; İstifadəçi Karina; struktur İstifadəçi Meneceri; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Taller Vertical"); strcpy (Manager.username, "The Boss"); strcpy (Manager.password, "ITESM"); struct Database Tool; struktur verilənlər bazası qələmi; struktur Database Case; strcpy (Tool. Article_Name, "Alət"); struktur verilənlər bazası vasitəsi; struktur verilənlər bazası qələmi; struktur Database Case; strcpy (Tool. Article_Name, "Alət"); strcpy (Pen. Article_Name, "Qələm"); 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);

əgər ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))

{uğursuz olmaq; } libsoc_gpio_set_direction (led_1, ÇIXIŞ); libsoc_gpio_set_direction (düymə_1, GİRİŞ); libsoc_gpio_set_direction (düymə_2, GİRİŞ); libsoc_gpio_set_direction (düymə_3, GİRİŞ); libsoc_gpio_set_direction (düymə_4, GİRİŞ); // libsoc_gpio_set_direction (düymə_5, GİRİŞ);

əgər ((libsoc_gpio_get_direction (led_1)! = ÇIXIŞ)

|| (libsoc_gpio_get_direction (button_1)! = GİRİŞ) || (libsoc_gpio_get_direction (button_2)! = GİRİŞ) || (libsoc_gpio_get_direction (button_3)! = GİRİŞ) || (libsoc_gpio_get_direction (button_4)! = GİRİŞ)) {uğursuz oldu; } sensor1 = libsoc_gpio_get_level (düymə_1); sensor2 = libsoc_gpio_get_level (düymə_2); sensor3 = libsoc_gpio_get_level (düymə_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Rafda yerləşir"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Heç vaxt bu rafda yerləşdirilmir"); } if (sensor2 == 1) {strcpy (Pen. Location, "Rafda yerləşir"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Heç vaxt bu rafda yerləşdirilmir"); } if (sensor3 == 1) {strcpy (Case. Location, "Rafda yerləşir"); } else if (sensor3 == 0) {strcpy (Case. Location, "Heç vaxt bu rafda yerləşdirilmir"); } (işləyərkən) {libsoc_gpio_set_level (led_1, HIGH); printf ("İstifadəçi adını daxil edin:"); scanf ("%s", istifadəçi adı); printf ("Zəhmət olmasa parol daxil edin:"); scanf ("%s", parol); if (strcmp (istifadəçi adı, "Karina") == 0 && strcmp (parol, "Daha Uzun") == 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); sensor2 = libsoc_gpio_get_level (düymə_2); sensor3 = libsoc_gpio_get_level (düymə_4); } libsoc_gpio_set_level (led_1, HIGH); if (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, Karina.username); } if if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location, "Rafda yerləşir"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Rafda yerləşir"); }

əgər (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location, Karina.username); } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Rafda yerləşir"); }} else if (strcmp (istifadəçi adı, "Boss") == 0 && strcmp (parol, "ITESM") == 0) {printf ("Verilənlər bazası ilə mətn faylı yaratmaq istəyirsiniz? [Bəli/Xeyr] "); scanf ("%s", Bəli Xeyr); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Database.txt", "w"); fprintf (pFILE, "%s", "-------- Rafın Veritabanı ----- / n"); fprintf (pFILE, "%s", "Məqalənin Adı:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Məqalənin yeri:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Məqalənin Adı:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Məqalənin yeri:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");

fprintf (pFILE, "%s", "Məqalənin Adı:");

fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Məqalənin yeri:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");

fclose (pFILE);

}

printf ("Giriş Rədd edildi / n");

}} uğursuz: if (led_1 || button_1 || button_2 || button_3) {printf ("apply gpio resource fail! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (button_1); libsoc_gpio_free (düymə_2); libsoc_gpio_free (düymə_3); }

Addım 11: Proqramı işə salın

Addım 12: Nəticələr

Layihənin perspektivli perspektivləri var, çünki çox təsirli bir şəkildə inkişaf edə biləcəyi üçün sensorlar RFID etiketləri üçün dəyişdirilə bilər və eyni zamanda RFID ilə birlikdə kimin materialdan məsul olduğunu izləmək üçün şəxsiyyət vəsiqələrindən istifadə etmək mümkündür.

Tövsiyə: