Mündəricat:
- Addım 1: Materiallar
- Addım 2: 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
- Addım 5: Matkapla Arxa tərəfdəki Çekmecədən Deliklər 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)
- Addım 7: 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)
- Addım 9: Dövrəni Breadboard -dan Mezzanine bağlayın
- Addım 10: Kodu yazın və ya kopyalayın
- Addım 11: Proqramı işə salın
- Addım 12: Nəticələr
Video: Envanter Çekmecesi "Ağıllı Şəhərlər Hackathon Qualcomm17": 13 addım
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
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)
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
Addım 5: Matkapla Arxa tərəfdəki Çekmecədən Deliklər 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)
Addım 7: 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)
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
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.