Mundarija:
- 1 -qadam: materiallar
- 2 -qadam: MDFdagi tortma uchun bo'laklarni kesib oling. (Yaxshi natijalarga erishish uchun lazer kesgichdan foydalaning)
- 3 -qadam: Ikkita kichik va katta tortmasidan iborat tortma hosil qilish uchun barcha qismlarni bir -biriga yopishtiring
- 4 -qadam: Har bir tortmasining o'rtasiga vintlarni burab qo'ying
- 5 -qadam: Matkap orqa tarafdagi tortmasidan teshik ochganda, tuynuk sensori kattaligida bo'lishi kerak
- 6 -qadam: Har bir CNY 70 sensorini mis simlar bilan payvandlang. (Yana 4 marta takrorlang)
- 7 -qadam: Sensor uchun maxsus davr ishlatiladi
- 8 -qadam: Sensorli mezzaninani Dragon Board 410c -ga ulang. (GPIO -ga kirish uchun ishlatiladi)
- 9 -qadam: Devorni non panelidan mezzaninga ulang
- 10 -qadam: Kodni yozing yoki nusxalash
- 11 -qadam: Dasturni ishga tushiring
- 12 -qadam: Xulosa
Video: Inventarizatsiya tortmasi "Aqlli shaharlar Hackathon Qualcomm17": 13 qadam
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Keyingi hujjatda siz aqlli tortmasining qurilishi va dasturlash jarayonini ko'rishingiz mumkin. Bu tortma shaharlarning sifatini yaxshilash maqsadida Dragon Board 410c dasturlashtirilgan. Loyiha "aqlli shaharlar hackathon Qualcomm 17" tanlovining bir qismidir.
Loyihaning g'oyasi juda kam odam ko'radigan muammodan boshlandi, bu fabrikalar va hatto kasalxonalar kabi kompaniyalar tomonidan ta'minlangan asboblar va materiallarning yo'qolgan va yomon boshqarilishi. Bu joylarda ishchilarga ba'zi materiallar va asboblar beriladi, bu materiallar va asboblar qayta ishlatilishi kerak, chunki ular qimmat yoki ularni almashtirish uchun iqtisodiy resurslar yo'q.
Kasalxonalarda, olib tashlangan materiallarni nazoratga oladigan odamlar bor, lekin inson aralashuvi bo'lganida xato bo'ladi, bu esa keraksiz xarajatlarga olib kelishi mumkin. Bu muammoning eng yaxshi echimi - bu qarzga olingan va qaytarilgan ob'ektlarning inventarizatsiyasini yurita oladigan va ayni paytda kim javobgarligini biladigan aqlli tortmachadir.
1 -qadam: materiallar
Loyiha uchun zarur bo'lgan material: 1 x Dragon Board 410c
1 x Sensorli Mezzanine 96 Dragon Board 410c uchun taxtalar
1 x non paneli
1 x MDF (O'rta zichlikdagi tolali taxta) varag'i 61 x 122 sm
5 x CNY 70 sensori
1 X TIP31B
1 x elektromagnit
1 x 7408
1 x klaviatura
1 x ekran
3 x vint
Qarshiliklar (xilma -xillik)
Mis simlar
Yelim
Matkap
2 -qadam: MDFdagi tortma uchun bo'laklarni kesib oling. (Yaxshi natijalarga erishish uchun lazer kesgichdan foydalaning)
3 -qadam: Ikkita kichik va katta tortmasidan iborat tortma hosil qilish uchun barcha qismlarni bir -biriga yopishtiring
4 -qadam: Har bir tortmasining o'rtasiga vintlarni burab qo'ying
5 -qadam: Matkap orqa tarafdagi tortmasidan teshik ochganda, tuynuk sensori kattaligida bo'lishi kerak
6 -qadam: Har bir CNY 70 sensorini mis simlar bilan payvandlang. (Yana 4 marta takrorlang)
7 -qadam: Sensor uchun maxsus davr ishlatiladi
8 -qadam: Sensorli mezzaninani Dragon Board 410c -ga ulang. (GPIO -ga kirish uchun ishlatiladi)
Bu qadamni ajdaho taxtasi o'chirilgan holda bajarish juda muhim, agar u yonib ketmasa, bundan tashqari, barcha PIN -kodlarni to'g'ri joylashtirish kerak.
9 -qadam: Devorni non panelidan mezzaninga ulang
10 -qadam: Kodni yozing yoki nusxalash
#kiritish #qo'shish #qo'shish // #qo'shish
#"libsoc_gpio.h" ni qo'shing
#"libsoc_debug.h" ni kiriting #"libsoc_board.h" ni qo'shing
/ * Quyidagi kod biti bu misolni barcha 96Boards -da ishlaydi */
imzosiz int LED_1; // elektr imon
imzosiz int BUTTON_1; // birinchi sensor
imzosiz int BUTTON_2; // ikkinchi sensor imzosiz int BUTTON_3; // imzosiz int BUTTON_4ni yopish; // uchinchi sensor
tuzuvchi Foydalanuvchi {
char foydalanuvchi nomi [20]; char parol [20]; } Foydalanuvchi;
Ma'lumotlar bazasi tuzilishi {
char Maqola_Nomi [20]; char Manzil [20]; } Ma'lumotlar bazasi;
int sensori 1;
int sensori 2; int sensori 3;
int sensori1_last_state;
int sensor2_last_state; int sensor3_last_state;
char foydalanuvchi nomi [50];
char parol [50];
char Ha Yo'q [40];
FILE *pFILE;
char Ha [20] = {"Ha"};
int yugurish = 1;
_attribute _ ((konstruktor)) statik void _init ()
{board_config *config = libsoc_board_init (); BUTTON_1 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-A"); // musht sensori BUTTON_2 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-C"); // ikkinchi sensor BUTTON_3 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-D"); // tokchani yopish BUTTON_4 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-B"); // uchinchi sensor // BUTTON_5 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-E");
LED_1 = libsoc_board_gpio_id (konfiguratsiya, "GPIO-E"); // elektr imon
libsoc_board_free (konfiguratsiya); } / * 96Boards maxsus kodining oxiri * /
int main ()
{gpio *led_1, *button_1, *button_2, *button_3, *button_4; // int touch; tuzuvchi Foydalanuvchi Karina; struktura menejeri; strcpy (Karina.username, "Karina Valverde"); strcpy (Karina.password, "Balandroq vertikal"); strcpy (Manager.username, "Boss"); strcpy (Manager.password, "ITESM"); struktura ma'lumotlar bazasi vositasi; Ma'lumotlar bazasi tuzilishi; Ma'lumotlar bazasi tuzilishi; strcpy (Tool. Article_Name, "Tool"); struktura ma'lumotlar bazasi vositasi; Ma'lumotlar bazasi qalamini tuzish; Ma'lumotlar bazasi tuzilishi; 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); tugma_1 = libsoc_gpio_request (BUTTON_1, LS_SHARED); tugma_2 = libsoc_gpio_request (BUTTON_2, LS_SHARED); tugma_3 = libsoc_gpio_request (BUTTON_3, LS_SHARED); tugma_4 = libsoc_gpio_request (BUTTON_4, LS_SHARED); // tugma_5 = libsoc_gpio_request (BUTTON_5, LS_SHARED);
agar ((led_1 == NULL) || (tugma_1 == NULL) || (tugma_2 == NULL) || (tugma_3 == NULL) || (tugma_4 == NULL))
{muvaffaqiyatsizlikka uchradi; } libsoc_gpio_set_direction (led_1, OUTPUT); libsoc_gpio_set_direction (button_1, INPUT); libsoc_gpio_set_direction (tugma_2, Kirish); libsoc_gpio_set_direction (tugma_3, Kirish); libsoc_gpio_set_direction (tugma_4, Kirish); // libsoc_gpio_set_direction (tugma_5, Kirish);
agar ((libsoc_gpio_get_direction (led_1)! = OUTPUT)
|| (libsoc_gpio_get_direction (button_1)! = INPUT) || (libsoc_gpio_get_direction (tugma_2)! = Kirish) || (libsoc_gpio_get_direction (button_3)! = INPUT) || (libsoc_gpio_get_direction (button_4)! = INPUT)) {muvaffaqiyatsiz tugadi; } sensor1 = libsoc_gpio_get_level (tugma_1); sensor2 = libsoc_gpio_get_level (tugma_2); sensor3 = libsoc_gpio_get_level (tugma_4); sensor1_last_state = sensor1; sensor2_last_state = sensor2; sensor3_last_state = sensor3; if (sensor1 == 1) {strcpy (Tool. Location, "Rack ustida joylashgan"); } else if (sensor1 == 0) {strcpy (Tool. Location, "Hech qachon bu tokchaga joylashtirilmagan"); } if (sensor2 == 1) {strcpy (Pen. Location, "Rack ustida joylashgan"); } else if (sensor2 == 0) {strcpy (Pen. Location, "Hech qachon bu tokchaga joylashtirilmagan"); } if (sensor3 == 1) {strcpy (Case. Location, "Rack ustida joylashgan"); } else if (sensor3 == 0) {strcpy (Case. Location, "Hech qachon bu tokchaga joylashtirilmagan"); } (ishlayotgan) {libsoc_gpio_set_level (led_1, HIGH); printf ("Iltimos, foydalanuvchi nomini kiriting:"); scanf ("%s", foydalanuvchi nomi); printf ("Iltimos, parolni kiriting:"); scanf ("%s", parol); if (strcmp (foydalanuvchi nomi, "Karina") == 0 && strcmp (parol, "Uzunroq") == 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 (tugma_2); sensor3 = libsoc_gpio_get_level (tugma_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, "Rack ustida joylashgan"); } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, Karina.username); } if if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location, "Rack ustida joylashgan"); }
agar (sensor3 == 1 && sensor3! = sensor3_last_state) {
strcpy (Case. Location, Karina.username); } if if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location, "Rack ustida joylashgan"); }} else if (strcmp (foydalanuvchi nomi, "Boss") == 0 && strcmp (parol, "ITESM") == 0) {printf ("Siz ma'lumotlar bazasi bilan matnli fayl yaratmoqchimisiz? [Ha/Yo'q] "); scanf ("%s", Ha Yo'q); if ((strcmp (YesNo, Yes) == 0)) {// Manager_user (pFILE); pFILE = fopen ("Ma'lumotlar bazasi.txt", "w"); fprintf (pFILE, "%s", "-------- Rack ma'lumotlar bazasi ----- / n"); fprintf (pFILE, "%s", "Maqola nomi:"); fprintf (pFILE, "%s", Tool. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Maqola joylashuvi:"); fprintf (pFILE, "%s", Tool. Location); fprintf (pFILE, "%s", "\ n"); fprintf (pFILE, "%s", "Maqola nomi:"); fprintf (pFILE, "%s", Pen. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Maqola joylashuvi:"); fprintf (pFILE, "%s", Pen. Location); fprintf (pFILE, "%s", "\ n");
fprintf (pFILE, "%s", "Maqola nomi:");
fprintf (pFILE, "%s", Case. Article_Name); fprintf (pFILE, "%s", "\ t"); fprintf (pFILE, "%s", "Maqola joylashuvi:"); fprintf (pFILE, "%s", Case. Location); fprintf (pFILE, "%s", "\ n");
fclose (pFILE);
}
printf ("Kirish rad etildi / n");
}} muvaffaqiyatsiz: agar (led_1 || tugma_1 || tugma_2 || tugma_3) {printf ("gpio resursini qo'llash muvaffaqiyatsiz! / n"); libsoc_gpio_free (led_1); libsoc_gpio_free (tugma_1); libsoc_gpio_free (tugma_2); libsoc_gpio_free (tugma_3); }
11 -qadam: Dasturni ishga tushiring
12 -qadam: Xulosa
Loyihaning istiqbolli istiqboli bor, chunki u juda samarali tarzda takomillashtirilishi mumkin, sensorlar RFID teglari uchun o'zgartirilishi mumkin va shu bilan birga RFID yordamida material uchun kim javobgarligini kuzatish uchun ID kartalardan foydalanish mumkin.