فهرست مطالب:

کشوی موجودی "شهرهای هوشمند Hackathon Qualcomm17": 13 مرحله
کشوی موجودی "شهرهای هوشمند Hackathon Qualcomm17": 13 مرحله

تصویری: کشوی موجودی "شهرهای هوشمند Hackathon Qualcomm17": 13 مرحله

تصویری: کشوی موجودی
تصویری: آیا موجودات هوشمند‌ یا انسانهایی هستند که در اعماق زمین زندگی کنند؟ 2024, جولای
Anonim
کشو موجودی
کشو موجودی

در سند بعدی می توانید روند ساخت و برنامه نویسی کشوی هوشمند را مشاهده کنید. این کشو با هدف ارتقاء کیفیت شهرها در Dragon Board 410c برنامه ریزی شده است. این پروژه بخشی از مسابقه "شهرهای هوشمند hackathon Qualcomm 17" است.

ایده این پروژه با مشکلی شروع شد که افراد کمی آن را می بینند ، یعنی مدیریت گم شده و بد ابزارها و موادی که توسط شرکت هایی مانند کارخانه ها و حتی بیمارستان ها ارائه می شود. در این مکانها ، برخی مواد و ابزار برای انجام فعالیتها در اختیار کارگران قرار می گیرد ، این مواد و ابزارها باید مجدداً مورد استفاده قرار گیرند زیرا گران هستند یا کمبود منابع اقتصادی برای جایگزینی آنها وجود دارد.

در بیمارستانها افرادی هستند که کنترل مواد حذف شده را در دست می گیرند ، اما وقتی مداخله انسانی وجود دارد خطایی رخ می دهد که می تواند منجر به هزینه های غیر ضروری شود. بهترین راه حل برای این مشکل کشوی هوشمندی است که می تواند موجودی اشیایی را که قرض گرفته و پس داده شده اند نگهداری کند و در عین حال بداند مسئول چه کسی است.

مرحله 1: مواد

مواد مورد نیاز برای پروژه بعدی است: 1 x Dragon Board 410c

1 عدد Sensor Mezzanine 96 برد برای Dragon Board 410c

1 عدد تخته نان

1 x MDF (تخته فیبر با چگالی متوسط) ورق 61 در 122 سانتی متر

سنسور 5 x CNY 70

1 X TIP31B

1 برابر الکترومغناطیس

1 7 7408

1 عدد صفحه کلید

صفحه نمایش 1 x

3 عدد پیچ

مقاومت ها (تنوع)

سیمهای مسی

چسب

مته

مرحله 2: قطعات کشو را در MDF برش دهید. (برای نتایج بهتر از لیزر برش استفاده کنید)

قطعات کشو را در MDF برش دهید. (برای نتایج بهتر از لیزر برش استفاده کنید)
قطعات کشو را در MDF برش دهید. (برای نتایج بهتر از لیزر برش استفاده کنید)

مرحله 3: همه قطعات را بچسبانید تا یک کشو با دو کشو کوچک و یک کش بزرگ ایجاد کنید

مرحله 4: پیچ ها را در وسط هر کشو پیچ کنید

پیچ ها را در وسط هر کشو پیچ کنید
پیچ ها را در وسط هر کشو پیچ کنید

مرحله 5: با استفاده از مته سوراخی در کشو در قسمت عقب ، سوراخ باید به اندازه سنسور باشد

با استفاده از مته در کشو در قسمت پشت ، سوراخ باید اندازه سنسور باشد
با استفاده از مته در کشو در قسمت پشت ، سوراخ باید اندازه سنسور باشد

مرحله 6: هر سنسور CNY 70 را با سیم های مسی جوش دهید. (4 بار بیشتر تکرار کنید)

هر سنسور CNY 70 را با سیم های مسی جوش دهید. (4 بار بیشتر تکرار کنید)
هر سنسور CNY 70 را با سیم های مسی جوش دهید. (4 بار بیشتر تکرار کنید)

مرحله 7: از یک مدار ویژه برای سنسور استفاده می شود

یک مدار ویژه برای سنسور استفاده می شود
یک مدار ویژه برای سنسور استفاده می شود

مرحله 8: سنسور میزانسن را به Dragon Board 410c وصل کنید. (برای دسترسی به GPIO استفاده می شود)

سنسور میزانسن را به Dragon Board 410c وصل کنید. (برای دسترسی به GPIO استفاده می شود)
سنسور میزانسن را به Dragon Board 410c وصل کنید. (برای دسترسی به GPIO استفاده می شود)

بسیار مهم است که این مرحله با برد اژدها خاموش انجام شود ، در غیر این صورت می تواند بسوزد ، علاوه بر این همه PIN باید به درستی قرار گیرد.

مرحله 9: مدار را از تخته نان به مزونین وصل کنید

مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید
مدار را از تخته نان به میزانسن متصل کنید

مرحله 10: کد را بنویسید یا کپی کنید

#شامل #شامل #شامل #شامل // #شامل

#شامل "libsoc_gpio.h"

#شامل "libsoc_debug.h" #شامل "libsoc_board.h"

/ * این بیت کد زیر باعث می شود این مثال روی همه 96Boards کار کند */

بدون LED int_1؛ // الکترو ایمان

unsigned int BUTTON_1؛ // اولین سنسور

unsigned int BUTTON_2 ؛ // سنسور دوم unsigned int BUTTON_3 ؛ // بستن unsigned int BUTTON_4 ؛ // سنسور سوم

ساختار کاربر {

نام کاربری char [20]؛ رمز عبور char [20]؛ }کاربر؛

ساختار پایگاه داده {

char نام مقاله [20]؛ char محل [20]؛ } پایگاه داده ؛

حسگر int1؛

سنسور int2؛ int sensor3؛

int sensor1_last_state؛

int sensor2_last_state؛ int sensor3_last_state؛

نام کاربری char [50]؛

رمز عبور char [50]؛

char YesNo [40]؛

FILE *pFILE؛

char بله [20] = {"Yes"}؛

int در حال اجرا = 1؛

_tribute _ ((سازنده)) void static _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 (پیکربندی) ؛ } / * پایان کد ویژه 96Boards * /

int main ()

{gpio *led_1 ، *button_1 ، *button_2 ، *button_3 ، *button_4 ؛ // int touch؛ struct User Karina؛ ساختار مدیریت کاربر ؛ strcpy (Karina.username، "Karina Valverde")؛ strcpy (Karina.password ، "بلندتر عمودی") ؛ strcpy (Manager.username ، "رئیس") ؛ strcpy (Manager.password ، "ITESM") ؛ ساختار پایگاه داده؛ ساختار قلم پایگاه داده ؛ ساختار پایگاه داده مورد؛ strcpy (Tool. Article_Name ، "Tool") ؛ ساختار پایگاه داده؛ ساختار قلم پایگاه داده ؛ ساختار پایگاه داده مورد؛ 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) ؛ 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) ؛

if ((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 (button_3 ، INPUT) ؛ libsoc_gpio_set_direction (button_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؛ } sensor1 = libsoc_gpio_get_level (button_1) ؛ sensor2 = libsoc_gpio_get_level (button_2) ؛ sensor3 = libsoc_gpio_get_level (button_4) ؛ sensor1_last_state = sensor1؛ sensor2_last_state = sensor2؛ sensor3_last_state = sensor3؛ if (sensor1 == 1) {strcpy (Tool. Location ، "واقع در رک") ؛ } else if (sensor1 == 0) {strcpy (Tool. Location ، "هرگز در این رک قرار داده نشده است") ؛ } if (sensor2 == 1) {strcpy (Pen. Location ، "واقع در رک") ؛ } else if (sensor2 == 0) {strcpy (Pen. Location ، "هرگز در این رک قرار داده نشده است") ؛ } if (sensor3 == 1) {strcpy (Case. Location ، "واقع در رک") ؛ } else if (sensor3 == 0) {strcpy (Case. Location ، "هرگز در این رک قرار داده نشده است")؛ } هنگام (در حال اجرا) {libsoc_gpio_set_level (led_1، HIGH)؛ printf ("لطفا نام کاربری را وارد کنید:")؛ scanf ("٪ s" ، نام کاربری) ؛ printf ("لطفاً رمز ورود را وارد کنید:")؛ scanf ("٪ s" ، رمز عبور) ؛ if (strcmp (نام کاربری ، "Karina") == 0 && strcmp (گذرواژه ، "بلندتر") == 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 (button_2) ؛ sensor3 = libsoc_gpio_get_level (button_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 ، "واقع در رک") ؛ } if (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location ، Karina.username) ؛ } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (مکان Pen، "واقع در رک")؛ }

if (sensor3 == 1 && sensor3! = sensor3_last_state) {

strcpy (Case. Location ، Karina.username) ؛ } else if (sensor3 == 0 && sensor3! = sensor3_last_state) {strcpy (Case. Location ، "واقع در رک") ؛ }} else if (strcmp (نام کاربری ، "رئیس") == 0 && strcmp (گذرواژه ، "ITESM") == 0) {printf ("آیا می خواهید یک فایل متنی با پایگاه داده ایجاد کنید؟ [بله/خیر] ")؛ scanf ("٪ s" ، YesNo)؛ if ((strcmp (YesNo، Yes) == 0)) {// Manager_user (pFILE)؛ pFILE = fopen ("Database.txt" ، "w") ؛ fprintf (pFILE ، "٪ s" ، "-------- پایگاه داده Rack ----- / 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 (button_1) ؛ libsoc_gpio_free (button_2) ؛ libsoc_gpio_free (دکمه_3) ؛ }

مرحله 11: برنامه را اجرا کنید

مرحله 12: نتیجه گیری

این پروژه آینده ای امیدوارکننده دارد ، زیرا می تواند به طرز بسیار موثری بهبود یابد ، سنسورها را می توان برای برچسب های RFID´S تغییر داد و همزمان با RFID می توان از کارت های شناسایی برای نظارت بر مسئولیت مواد استفاده کرد.

توصیه شده: