جدول المحتويات:
- الخطوة 1: المواد
- الخطوة 2: قص القطع للدرج في MDF. (للحصول على نتائج أفضل استخدم قاطع الليزر)
- الخطوة 3: الصق كل القطع معًا لتشكيل درج به درجين صغيرين ودرج كبير
- الخطوة 4: برغي المسامير في منتصف كل درج
- الخطوة 5: باستخدام المثقاب ، قم بعمل ثقوب من خلال الدرج الموجود في الجانب الخلفي ، يجب أن يكون الثقب بحجم المستشعر
- الخطوة 6: قم بلحام كل مستشعر 70 CNY بالأسلاك النحاسية. (كرر 4 مرات أكثر)
- الخطوة 7: يتم استخدام دائرة خاصة لجهاز الاستشعار
- الخطوة 8: قم بتوصيل جهاز الاستشعار الميزانين بلوحة التنين 410 ج. (تستخدم للوصول إلى GPIO)
- الخطوة 9: قم بتوصيل الدائرة من اللوح إلى الميزانين
- الخطوة 10: اكتب أو انسخ الكود
- الخطوة 11: قم بتشغيل البرنامج
- الخطوة 12: الاستنتاجات
فيديو: درج الجرد "Smart Cities Hackathon Qualcomm17": 13 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
في المستند التالي ، يمكنك أن ترى عملية إنشاء وبرمجة درج ذكي. تمت برمجة هذا الدرج في Dragon Board 410c ، بهدف تحسين جودة المدن. المشروع جزء من مسابقة "هاكاثون المدن الذكية كوالكوم 17".
بدأت فكرة هذا المشروع بمشكلة لا يراها سوى قلة قليلة من الناس ، وهي الإدارة الضائعة والسيئة للأدوات والمواد التي توفرها الشركات مثل المصانع وحتى المستشفيات. في هذه الأماكن ، يتم توفير بعض المواد والأدوات للعاملين للقيام بأنشطة ، ويجب إعادة استخدام هذه المواد والأدوات لأنها باهظة الثمن أو لعدم توفر الموارد الاقتصادية لاستبدالها.
في المستشفيات ، هناك أشخاص يتحكمون في المواد التي يتم إزالتها ، ولكن عندما يكون هناك تدخل بشري ، يكون هناك خطأ ، مما قد يؤدي إلى نفقات غير ضرورية. أفضل حل لهذه المشكلة هو درج ذكي قادر على الاحتفاظ بجرد للأشياء التي يتم استعارتها وإعادتها وفي نفس الوقت معرفة من هو المسؤول.
الخطوة 1: المواد
المواد اللازمة للمشروع هي التالية: 1 x Dragon Board 410c
1 × مستشعر الميزانين 96 لوحًا للوحة التنين 410c
1 × اللوح
1 × لوح MDF (لوح ألياف متوسط الكثافة) 61 × 122 سم
5 × مستشعر 70 يوان صيني
1 X TIP31B
1 × مغناطيس كهربائي
1 × 7408
1 × لوحة مفاتيح
1 × شاشة
3 × مسامير
مقاومات (متنوعة)
سلك نحاس
صمغ
تدريبات
الخطوة 2: قص القطع للدرج في MDF. (للحصول على نتائج أفضل استخدم قاطع الليزر)
الخطوة 3: الصق كل القطع معًا لتشكيل درج به درجين صغيرين ودرج كبير
الخطوة 4: برغي المسامير في منتصف كل درج
الخطوة 5: باستخدام المثقاب ، قم بعمل ثقوب من خلال الدرج الموجود في الجانب الخلفي ، يجب أن يكون الثقب بحجم المستشعر
الخطوة 6: قم بلحام كل مستشعر 70 CNY بالأسلاك النحاسية. (كرر 4 مرات أكثر)
الخطوة 7: يتم استخدام دائرة خاصة لجهاز الاستشعار
الخطوة 8: قم بتوصيل جهاز الاستشعار الميزانين بلوحة التنين 410 ج. (تستخدم للوصول إلى GPIO)
من المهم جدًا أن تتم هذه الخطوة مع إيقاف تشغيل لوحة التنين ، إذا لم يكن الأمر كذلك ، فيمكن أن تحترق ، بالإضافة إلى أن كل رقم التعريف الشخصي يجب أن يتم وضعه بشكل صحيح.
الخطوة 9: قم بتوصيل الدائرة من اللوح إلى الميزانين
الخطوة 10: اكتب أو انسخ الكود
# تضمين # تضمين # تضمين // # تضمين
# تضمين "libsoc_gpio.h"
# تضمين "libsoc_debug.h" #include "libsoc_board.h"
/ * هذا الجزء من الشفرة أدناه يجعل هذا المثال يعمل على جميع الألواح الـ 96 * /
غير موقعة int LED_1 ؛ // اليكترو إيمان
int غير موقعة BUTTON_1 ؛ // أول جهاز استشعار
int غير موقعة BUTTON_2 ؛ // المستشعر الثاني بدون إشارة إلى BUTTON_3 ؛ // أغلق int غير موقعة BUTTON_4 ؛ // المستشعر الثالث
مستخدم منظم {
اسم مستخدم char [20] ؛ كلمة مرور char [20] ؛ }مستخدم؛
قاعدة بيانات هيكلية {
char Article_Name [20] ؛ موقع char [20] ؛ }قاعدة البيانات؛
مستشعر كثافة العمليات 1 ؛
مستشعر كثافة العمليات 2 ؛ مستشعر كثافة العمليات 3 ؛
حساس int sensor1_last_state؛
مستشعرات int sensor2_last_state ؛ حساس int sensor3_last_state ؛
اسم المستخدم char [50] ؛
كلمة مرور char [50] ؛
char YesNo [40] ؛
ملف * ملف ؛
char نعم [20] = {"Yes"} ؛
كثافة العمليات = 1 ؛
_attribute _ ((المُنشئ)) static void _init ()
{board_config * config = libsoc_board_init () ، BUTTON_1 = libsoc_board_gpio_id (config، "GPIO-A")؛ // مستشعر القبضات BUTTON_2 = libsoc_board_gpio_id (config، "GPIO-C")؛ // المستشعر الثاني BUTTON_3 = libsoc_board_gpio_id (التكوين ، "GPIO-D") ؛ // إغلاق الحامل BUTTON_4 = libsoc_board_gpio_id (config، "GPIO-B") ؛ // المستشعر الثالث // BUTTON_5 = libsoc_board_gpio_id (config ، "GPIO-E") ؛
LED_1 = libsoc_board_gpio_id (التكوين ، "GPIO-E") ؛ // اليكترو إيمان
libsoc_board_free (التكوين) ، } / * نهاية الرمز الخاص بـ 96Boards * /
انت مين()
{gpio * led_1 ، * button_1 ، * button_2 ، * button_3 ، * button_4 ؛ // int touch ؛ مستخدم الهيكل كارينا ؛ مدير مستخدم هيكلي؛ strcpy (Karina.username، "Karina Valverde") ؛ strcpy (Karina.password، "Taller Vertical") ؛ strcpy (Manager.username، "The Boss") ؛ strcpy (Manager.password، "ITESM") ؛ أداة قاعدة البيانات الهيكلية ؛ قلم قاعدة بيانات هيكلي ؛ هيكل قاعدة البيانات حالة ؛ strcpy (Tool. Article_Name ، "أداة") ؛ أداة قاعدة البيانات الهيكلية ؛ قلم قاعدة بيانات هيكلي ؛ هيكل قاعدة البيانات القضية ؛ strcpy (Tool. Article_Name ، "أداة") ؛ 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) ؛
إذا ((led_1 == NULL) || (button_1 == NULL) || (button_2 == NULL) || (button_3 == NULL) || (button_4 == NULL))
{اذهب للفشل ؛ } libsoc_gpio_set_direction (led_1 ، الإخراج) ؛ 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) ؛
إذا ((libsoc_gpio_get_direction (led_1)! = الإخراج)
|| (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)) {فشل الانتقال ؛ } 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 = مستشعر 2 ؛ sensor3_last_state = sensor3 ؛ إذا (sensor1 == 1) {strcpy (Tool. Location، "يقع على الرف") ؛ } else if (sensor1 == 0) {strcpy (Tool. Location، "Never put in this Rack")؛ } إذا (sensor2 == 1) {strcpy (Pen. Location، "يقع على الرف")؛ } else if (sensor2 == 0) {strcpy (Pen. Location، "Never put in this Rack")؛ } إذا (sensor3 == 1) {strcpy (Case. Location، "تقع على الرف") ؛ } else if (sensor3 == 0) {strcpy (Case. Location، "Never put in this Rack")؛ } أثناء (تشغيل) {libsoc_gpio_set_level (led_1، HIGH) ؛ printf ("الرجاء إدخال اسم المستخدم:") ؛ scanf ("٪ s" ، اسم المستخدم) ؛ printf ("الرجاء إدخال كلمة المرور:") ؛ scanf ("٪ s" ، كلمة المرور) ؛ if (strcmp (username، "Karina") == 0 && strcmp (password، "Taller") == 0) {libsoc_gpio_set_level (led_1، LOW)؛ libsoc_gpio_set_level (led_1 ، منخفض) ؛ بينما (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) ؛ إذا (sensor1 == 1 && sensor1! = sensor1_last_state) {strcpy (Tool. Location، Karina.username) ؛ } else if (sensor1 == 0 && sensor1! = sensor1_last_state) {strcpy (Tool. Location، "واقع على الرف")؛ } إذا (sensor2 == 1 && sensor2! = sensor2_last_state) {strcpy (Pen. Location، Karina.username)؛ } else if (sensor2 == 0 && sensor2! = sensor2_last_state) {strcpy (Pen. Location، "واقع على الرف")؛ }
إذا (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 (username، "Boss") == 0 && strcmp (password، "ITESM") == 0) {printf ("هل ترغب في إنشاء ملف نصي باستخدام قاعدة البيانات؟ [نعم / لا] ") ؛ scanf ("٪ s" ، نعم لا) ؛ if ((strcmp (YesNo، Yes) == 0)) {// Manager_user (pFILE) ؛ pFILE = fopen ("Database.txt"، "w") ؛ fprintf (pFILE، "٪ s"، "-------- قاعدة بيانات الرف ----- / 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") ؛
}} فشل: إذا (led_1 || button_1 || button_2 || button_3) {printf ("تطبيق gpio مورد فشل! / n")؛ libsoc_gpio_free (led_1) ، libsoc_gpio_free (button_1) ، libsoc_gpio_free (button_2) ، libsoc_gpio_free (button_3) ، }
الخطوة 11: قم بتشغيل البرنامج
الخطوة 12: الاستنتاجات
يتمتع المشروع بمستقبل واعد ، نظرًا لأنه يمكن أن يتحسن بطريقة فعالة للغاية ، يمكن تغيير المستشعرات لعلامات RFID´S وفي نفس الوقت باستخدام RFID من الممكن استخدام بطاقات الهوية لمراقبة المسؤول عن المواد.
موصى به:
أضف قفل إنترنت الأشياء إلى أي درج !: 4 خطوات
أضف قفل IOT إلى أي درج!: مرحبًا! بعد فترة ، قررت مشاركة أحدث مشاريعي معكم جميعًا. كانت هذه مجرد فكرة حصلت عليها بعد شراء قفل ملف لولبي رخيص عبر الإنترنت ، واتضح أنه مشروع رائع. لذلك ، كانت الفكرة الأساسية هي إنشاء نفس
مكبرات صوت بلوتوث كلاسيكية معاد تدويرها من درج خشبي: 5 خطوات
مكبرات صوت بلوتوث محببة معاد تدويرها عتيقة من درج خشبي: لماذا لا تقوم بإعادة التدوير مثل نظارات جان نحيفة ترتدي ملابس محبب لاتيه شبه منزوع الدسم على دراجة مثبتة! لا تحب كلمة upcycle! آه أجل. دعونا نضع كل هذا الهراء جانبًا ونجعل شيئًا ممتعًا وسهلاً ومفيدًا. كل ما تحتاجه
درج صغير للمقصورة السرية: 5 خطوات
درج صغير للمقصورة السرية: سيوضح لك هذا التوجيه كيف صنعت خزانة ذات درج مع مقصورة سرية. سأستخدم بشكل أساسي تفاصيل صغيرة لوصف الإجراءات التي قمت بها
HC - 06 (الوحدة التابعة) تغيير "NAME" بدون استخدام "Monitor Serial Arduino" هذا "يعمل بسهولة": طريقة خالية من العيوب!: 3 خطوات
HC - 06 (الوحدة التابعة) تغيير "NAME" بدون استخدام "Monitor Serial Arduino" … هذا "يعمل بسهولة": طريقة خالية من العيوب!: بعد & quot؛ وقت طويل & quot؛ محاولة تغيير الاسم على HC - 06 (الوحدة التابعة) ، باستخدام & quot؛ الشاشة التسلسلية للاردوينو بدون & quot؛ نجح & quot ؛، وجدت طريقة أخرى سهلة وأشارك الآن! هل لديك أصدقاء المرح
درج Canon F لطابعات Pixma - اطبع مباشرة على أقراص CD / DVD القابلة للطباعة: 3 خطوات
علبة Canon F لطابعات Pixma - اطبع مباشرةً على أقراص CD / DVD القابلة للطباعة: كيفية صنع صينية طباعة على قرص مضغوط لـ Pixma MP600 أو طابعة Canon الأخرى التي تحتاج إلى درج F