جدول المحتويات:
فيديو: مدير المهام - نظام إدارة الأعمال المنزلية: 5 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
أردت أن أحاول معالجة مشكلة حقيقية تواجهنا في منزلنا (وأتخيل مشكلة العديد من القراء الآخرين) ، وهي كيفية تخصيص وتحفيز ومكافأة أطفالي على المساعدة في الأعمال المنزلية.
حتى الآن ، احتفظنا بورقة مغلفة من ورق A4 عالقة على جانب الثلاجة. يحتوي على شبكة من المهام المطبوعة عليها ، مع مبالغ مرتبطة بها من مصروف الجيب التي يمكن جنيها لإكمال تلك المهمة. الفكرة هي أنه في كل مرة يساعد فيها أحد أطفالنا في عمل روتيني ، يحصل على علامة في هذا المربع ، وفي نهاية كل أسبوع ، نجمع الأموال المكتسبة ، ونمسح السبورة ونبدأ من جديد. ومع ذلك ، فإن قائمة المهام قديمة ويصعب تغييرها ، وفي بعض الأحيان لا نتذكر مسح اللوحة كل أسبوع ، وتحتاج بعض المهام إلى أن يتم تنفيذها بترددات مختلفة - من الأفضل أداء بعضها يوميًا ، بينما قد يكون الآخرون مرة واحدة فقط في الشهر. لذلك ، شرعت في إنشاء جهاز قائم على Arduino لمعالجة هذه المشكلات - كانت نيتي إنشاء شيء يسمح بسهولة إضافة / إزالة / تحديث المهام ، وآلية مبسطة للتسجيل عند الانتهاء من المهمة وتخصيص رصيد إلى الشخص المناسب ، وطريقة لتتبع الجداول الزمنية المختلفة وتكرار المهام المختلفة التي يجب القيام بها ، وتسليط الضوء على المهام المتأخرة. وسيوضح هذا التوجيه كيف خرج جهاز "إدارة المهام" الناتج.
الخطوة 1: الأجهزة
يستخدم المشروع العديد من مكونات الأجهزة المستخدمة جيدًا والموثقة:
- Arduino UNO / Nano - هذه هي "أدمغة" النظام. سيتم استخدام ذاكرة EEPROM المدمجة لحفظ حالة المهام حتى عند إيقاف تشغيل النظام. لسهولة توصيل الأسلاك ، قمت بتثبيت Nano على درع لولبي ، ولكن يمكنك لحام أو استخدام وصلات مجعد إلى دبابيس GPIO بدلاً من ذلك إذا كنت تفضل ذلك.
- وحدة Real-Time Clock (RTC) - تُستخدم لتسجيل الطابع الزمني الذي تم تنفيذ المهام فيه ، ومن خلال مقارنة آخر مرة بالوقت الحالي ، حدد المهام التي فات موعدها. لاحظ أن الوحدة التي استلمتها مصممة للاستخدام مع بطارية LiPo قابلة لإعادة الشحن (LIR2032). ومع ذلك ، فأنا أستخدم بطارية CR2032 غير قابلة لإعادة الشحن ، لذلك كنت بحاجة إلى إجراء بعض التعديلات لتعطيل دائرة الشحن (لا ترغب في محاولة إعادة شحن بطارية غير قابلة لإعادة الشحن ، أو قد تواجه انفجارًا….). على وجه التحديد ، أزلت المقاومات R4 و R5 و R6 والصمام الثنائي المميز D1. ثم قمت بإنشاء جسر لحام لقصر مكان R6. هذه التغييرات موضحة في الصورة أدناه.
- قارئ ISO14443 RFID + علامة واحدة لكل مستخدم - كطريقة "لتلاعب" النظام ، يمتلك كل من أطفالي علامة RFID الفريدة الخاصة بهم. سيكون تحديد مهمة ثم تمرير علامتها عبر القارئ هو الآلية المستخدمة لوضع علامة على المهمة كمكتملة
- شاشة LCD مقاس 16 × 2 - تُستخدم لتوفير واجهة المستخدم للنظام. باستخدام لوحة تحتوي على حقيبة ظهر PCF8574A متكاملة ، يمكن توصيل اللوحة عبر واجهة I2C بـ Arduino ، مما يبسط الأسلاك بشكل كبير.
- التشفير الروتاري - سيكون مفتاح التحكم الرئيسي الذي سيوجهه المستخدمون لتحديد المهام المختلفة المتاحة
- موصلات Wago - تعتبر هذه الموصلات المفاجئة طريقة ملائمة لتوصيل مكونات الأسلاك معًا أو إنشاء حافلات بسيطة للعديد من الوحدات التي تتطلب كل منها أرضية مشتركة أو إمدادًا بجهد 5 فولت.
الخطوة 2: الأسلاك
تستخدم كل من شاشة LCD 16x2 و DS1307 RTC واجهة I2C ، وهي مريحة لأنها تجعل الأسلاك أبسط بكثير ، ولا تتطلب سوى زوج من الأسلاك يذهب إلى دبابيس A4 (SDA) و A5 (SCL) في Arduino
يستخدم قارئ MFRC-522 RFID واجهة SPI ، والتي تستخدم دبابيس الأجهزة الثابتة 11 (MOSI) و 12 (MISO) و 13 (SCK). يتطلب أيضًا تحديد خط الرقيق وإعادة تعيينه ، والذي قمت بتعيينه للدبابيس 10 و 9 على التوالي
يتطلب المشفر الدوار زوجًا من المسامير. للحصول على الأداء الأمثل ، من الأفضل أن تتمكن هذه المسامير من التعامل مع المقاطعات الخارجية ، لذا فأنا أستخدم الدبابيس الرقمية 2 و 3. يمكنك أيضًا النقر فوق المشفر كمفتاح ، وقمت بتوصيله في الطرف 4. على الرغم من أنه ليس كذلك المستخدمة حاليًا في الكود ، قد تجدها مفيدة لإضافة ميزات إضافية
للراحة ، أستخدم كتل موصل سلسلة WAGO 222. هذه موصلات سريعة الإغلاق توفر طريقة قوية وسهلة للاتصال في أي مكان بين 2 و 8 أسلاك معًا ، وهي مريحة جدًا لمشاريع Arduino التي تتطلب عدة وحدات لمشاركة خط أرضي أو 5 فولت ، أو حيث يكون لديك أجهزة متعددة على نفس الحافلة I2C أو SPI ، على سبيل المثال
يوضح الرسم التخطيطي كيف يتم توصيل كل شيء معًا.
الخطوة الثالثة: البناء
لقد صنعت علبة مطبوعة ثلاثية الأبعاد أساسية جدًا لإيواء الإلكترونيات. لقد وضعت بعض المغناطيسات على الظهر بحيث يمكن تأمين الوحدة على جانب الثلاجة ، تمامًا كما كانت القائمة المطبوعة السابقة. تركت أيضًا مقبس USB مكشوفًا ، حيث سيتم استخدامه في حالة الحاجة إلى إضافة مهام جديدة إلى النظام ، أو لتسجيل الدخول وتنزيل مجموعة من البيانات التي تعرض المهام المكتملة وما إلى ذلك.
لم أحفظ ملفات STL بعد الطباعة ، ولكن هناك الكثير من الحالات المماثلة (وربما الأفضل!) المتاحة على موقع thingiverse.com. بدلاً من ذلك ، يمكنك إنشاء صندوق خشبي جميل ، أو مجرد استخدام صندوق من الورق المقوى القديم أو حاوية tupperware لإيواء الأجهزة الإلكترونية.
الخطوة 4: الكود
يتم إرفاق الكود المعلق بالكامل كتنزيل أدناه. إليك بعض النقاط الأكثر أهمية التي يجب ملاحظتها:
لقد قمت بإنشاء بنية مخصصة ، "مهمة" ، وهي وحدة بيانات تلخص جميع خصائص مهمة في كيان واحد. تتكون المهام من اسم ، والذي سيكون كيف تظهر على شاشة LCD (وبالتالي تقتصر على 16 حرفًا) ، والتردد الذي يجب أن يتم تنفيذه بها ، ومتى ومن الذي تم الانتهاء منها آخر مرة
مهمة هيكلية {
char taskName [16] ؛ // الاسم المختصر "المألوف" لهذه المهمة كما سيظهر على الشاشة في تكرار كل يوم ؛ // الانتظام بالأيام التي تتكرر بها هذه المهمة. 1 = يوميًا ، 7 = أسبوعيًا ، إلخ. بدون توقيع طويل lastCompletedTime ؛ // الطابع الزمني الذي اكتملت فيه هذه المهمة آخر مرة int lastCompletedBy ؛ // معرف الشخص الذي أكمل هذه المهمة آخر مرة} ؛
تسمى بنية البيانات الرئيسية "قائمة المهام" ، وهي ببساطة مجموعة من المهام المنفصلة. يمكنك تحديد المهام التي تريدها هنا ، والتي تمت تهيئتها بقيمة 0 للوقت الذي اكتملت فيه آخر مرة ، و -1 لمعرف المستخدم الذي أجرى هذه المهام آخر مرة
قائمة المهام [numTasks] = {
في قسم الثوابت في الجزء العلوي من الكود ، توجد قيمة بايت واحدة تسمى "eepromSignature". تُستخدم هذه القيمة لتحديد ما إذا كانت البيانات المخزنة على EEPROM صالحة أم لا. إذا قمت بتغيير بنية عنصر قائمة المهام ، عن طريق إضافة المهام أو إزالتها ، أو إضافة حقول إضافية ، على سبيل المثال ، يجب زيادة هذه القيمة. يمكنك التفكير في الأمر على أنه نظام ترقيم إصدار أساسي للبيانات
const بايت eepromSignature = 1 ؛
عند بدء التشغيل ، سيحاول البرنامج فقط تحميل البيانات المخزنة في EEPROM إذا كانت تتطابق مع توقيع البيانات المحددة في الكود.
استعادة باطلةمن EEPROM () {
int checkByte = EEPROM.read (0) ؛ إذا (checkByte == eepromSignature) {EEPROM.get (1، TaskList) ؛ }}
تستخدم شاشة LCD ووحدة RTC واجهة I2C للتواصل مع Arduino. يتطلب هذا أن يكون لكل جهاز عنوان I2C فريد. لقد جربت لوحتين مختلفتين للعرض مقاس 16 × 2 ، ويبدو أن البعض يستخدم العنوان 0x27 ، بينما تستخدم اللوحات الأخرى التي تبدو متطابقة 0x3f. إذا وجدت أن شاشتك تعرض فقط سلسلة من المربعات ولا تحتوي على نص ، فحاول تغيير قيمة العنوان المحددة في الرمز هنا:
LiquidCrystal_PCF8574 lcd (0x27) ؛
عندما يتم الكشف عن علامة RFID ، يقرأ الرمز المعرف 4 بايت ، ويستخدمه لمحاولة البحث عن المستخدم المقابل من جدول المستخدمين المعروفين. إذا لم يتم التعرف على العلامة ، فسيتم إرسال المعرف 4 بايت إلى وحدة تحكم الشاشة التسلسلية:
int GetUserFromRFIDTag (بايت RFID ) {
لـ (int i = 0؛ i <numusers؛ i ++) = "" {<numUsers؛ i ++) {if (memcmp (userList .rfidUID، RFID، sizeof userList .rfidUID) == 0) {return userList .userID؛ }} Serial.print (F ("تم الكشف عن بطاقة RFID غير معروفة:"))؛ لـ (بايت i = 0؛ i <4؛ i ++) {Serial.print (RFID <0x10؟ "0": "")؛ Serial.print (RFID ، HEX) ؛ } عودة -1 ؛ }
لتعيين علامة إلى مستخدم ، يجب عليك نسخ المعرف المعروض وإدخال قيمة 4 بايت في مصفوفة المستخدمين في الجزء العلوي من الشفرة ، بجوار المستخدم المقابل:
قائمة مستخدم المستخدم الثابت [numUsers] = {{1، "Ginny"، {0x00، 0x00، 0x00، 0x00}}، {2، "Harry"، {0x12، 0x34، 0x56، 0x78}} ، {3 ، "Ron" ، {0xE8، 0x06، 0xC2، 0x49}}، {4، "Hermione"، {0x12، 0x34، 0x56، 0x78}} ، {5 ، "Alastair" ، {0x12 ، 0x34 ، 0x56 ، 0x78}} ،} ؛
الخطوة 5: الاستخدام
إذا كنت قد وصلت إلى هذا الحد ، فيجب أن يكون استخدام النظام ضمنيًا إلى حد ما من الكود ؛ في أي وقت ، يمكن للمستخدمين إدارة المقبض الدوار للتمرير عبر قائمة المهام المتاحة. يتم تمييز الأعمال التي فات موعد استحقاقها بعلامة النجمة بعد لقبها.
بعد اختيار عمل روتيني للقيام به ، يمكن للمستخدمين بعد ذلك مسح سلسلة RFID الفريدة الخاصة بهم عبر القارئ لتمييز المهمة على أنها مكتملة. سيتم تسجيل معرفهم والوقت الحالي وحفظهما في EEPROM الخاص بـ Arduino.
من أجل إعداد علامات RFID الصحيحة أولاً ، يجب عليك تشغيل المخطط مع شاشة Arduino التسلسلية المرفقة. امسح كل علامة ضوئيًا ولاحظ قيمة UID السداسية 4 بايت المعروضة على الشاشة التسلسلية. ثم قم بتعديل قائمة المستخدمين المعلنة في الجزء العلوي من الكود لتعيين معرف العلامة هذا للمستخدم المناسب.
لقد فكرت في إضافة وظيفة لطباعة تقرير يوضح جميع المهام المنجزة ، من قبل المستخدم ، خلال الأسبوع الماضي من أجل تخصيص مكافأة مصروف الجيب المناسبة كل أسبوع. ومع ذلك ، كما يحدث ، يبدو أن أطفالي راضون عن حداثة استخدام النظام لنسيان مكافآت مصروف الجيب تمامًا! ستكون هذه إضافة بسيطة إلى حد ما ، وستترك كتدريب للقارئ:)
موصى به:
مفتاح كهربائي للأجهزة المنزلية -- تحكم في أجهزتك المنزلية دون الحاجة إلى أي مفتاح: 4 خطوات
مفتاح كهربائي للأجهزة المنزلية || تحكم في أجهزتك المنزلية دون الحاجة إلى أي مفتاح: هذا مفتاح لا مثيل له للأجهزة المنزلية. يمكنك استخدام هذا في أي مكان عام حتى يساعد في مكافحة أي فيروس. الدائرة على أساس دائرة مستشعر الظلام المصنوعة بواسطة Op-Amp و LDR. الجزء الثاني المهم من هذه الدائرة فليب فلوب SR مع تسلسل
انشر تطبيق قائمة المهام الأولى: 8 خطوات
قم بنشر تطبيق قائمة المهام الأولى: إذا كنت جديدًا تمامًا في مجال الترميز أو لديك بعض الترميز في الخلفية ، فقد تتساءل من أين تبدأ التعلم. أنت بحاجة إلى معرفة كيف وماذا وأين ترمز ، وبعد ذلك ، بمجرد أن تصبح الشفرة جاهزة ، كيف تنشرها ليراها الجميع. حسنًا ، الخبر السار هو
آلة الحالة وتعدد المهام على Arduino مع موسعات SPI: 3 خطوات
آلة الحالة وتعدد المهام على Arduino مع SPI Expanders: الأسبوع الماضي ، كنت أطلب إنشاء نظام لتجربة الألعاب النارية باستخدام اردوينو. احتاجت إلى حوالي 64 مخرجات للسيطرة على الحرائق. طريقة واحدة للقيام بذلك هي استخدام موسعات IC. لذلك يتوفر حلان: - موسع I2C ولكنه يحتاج إلى عاكس عندما تقوم
متعدد المهام Raspberry 1 B (سحابة شخصية + محطة طقس): 4 خطوات
Multi Task Raspberry 1 B (Personal Cloud + Weather Station): منذ بعض الوقت ، تذكرت أنه كان هناك RPiB احتياطيًا بعد شراء إصدار أحدث. بالتفكير في الخصوصية عند الاحتفاظ بملفات النسخ الاحتياطي ، قررت أن يكون لدي خادم سحابي خاص بي. سعيد بالنتيجة الجيدة ولكن غير راضٍ عن إهدار الإمكانات من R
مدير علاقات الدائرة الاجتماعية: 7 خطوات (بالصور)
مدير علاقات الدائرة الاجتماعية: ما هو؟ قد يكون البقاء على اتصال مع جميع الأشخاص المهمين في دائرتك الاجتماعية أمرًا صعبًا ، خاصةً عندما تعيش في مدينة كبيرة أو مدمن عمل أو طالب أو كل ما سبق. تقدم Social Circle طريقة لإبقاء جميع أحبائك في مكان واحد