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
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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.
Tavsiya:
SONOFF aqlli kalitlari yordamida aqlli rolikli pardalarni qanday yasash mumkin ?: 14 qadam
SONOFF aqlli kalitlari yordamida aqlli rolikli pardalarni qanday yasash mumkin?: SONOFF aqlli kalitlarida interlok rejimidan foydalaning, oddiy rolikli pardalarni aqlli ko'rinishga aylantirish uchun ko'pchiligingiz rozi bo'lasizmi, siz ertalab rolikli pardalarni tortib olasiz. va kechqurun uni pastga tushirmoqchimisiz? Qanday bo'lmasin, men
Uskuna va dasturiy ta'minot Hack aqlli qurilmalar, Tuya va Broadlink LED lampochkasi, Sonoff, BSD33 aqlli vilkasi: 7 qadam
Uskuna va dasturiy ta'minot Hack Smart Devices, Tuya va Broadlink LED lampochkasi, Sonoff, BSD33 Smart Plug: Bu ko'rsatmada men bir nechta aqlli qurilmalarni o'z dasturiy ta'minotim bilan qanday o'chirganimni ko'rsataman, shuning uchun ularni Openhab sozlamalari orqali MQTT orqali boshqarishim mumkin. Men ularni buzganimda yangi qurilmalar. Albatta, maxsus dasturiy ta'minotni o'chirishning boshqa usullari mavjud
Aqlli budilnik: Raspberry Pi -dan tayyorlangan aqlli budilnik: 10 qadam (rasmlar bilan)
Aqlli budilnik: Raspberry Pi bilan yasalgan aqlli budilnik: Siz hech qachon aqlli soatni xohlaganmisiz? Agar shunday bo'lsa, bu siz uchun yechim! Men Smart Budilnikni yaratdim, bu soat, siz budilnik vaqtini veb -saytga ko'ra o'zgartirishingiz mumkin. Signal o'chganda, ovoz eshitiladi va ikkita chiroq yonadi
Maxfiy bo'linma mini tortmasi: 5 qadam
Maxsus maxfiy bo'linma: bu ko'rsatma sizga maxfiy bo'linma bilan tortma shkafni qanday yasaganimni ko'rsatib beradi, men qilgan harakatlarimni tasvirlash uchun asosan kichik detallardan foydalanaman
Inventarizatsiya - Kompyuterning tezkor diagnostikasi endi o'zgartirildi, quyida qarang: 6 qadam
Inventarizatsiya - Kompyuterni tez diagnostika qilish, endi quyida qarang: Agar siz oldingizda bo'lmagan kompyuterda ishlashingiz kerak bo'lsa, sizga aniq inventarizatsiya kerak bo'ladi. Bu ko'rsatma faqat hamkasbining kompyuter uchun haydovchini topishda qiynalayotgani tufayli paydo bo'ldi. Men Aida32 shaxsiy xizmatidan http://majorgeeks.com saytidan foydalanaman