Բովանդակություն:

Առաջադրանքների կառավարիչ - տնային տնտեսությունների կառավարման համակարգ. 5 քայլ (նկարներով)
Առաջադրանքների կառավարիչ - տնային տնտեսությունների կառավարման համակարգ. 5 քայլ (նկարներով)

Video: Առաջադրանքների կառավարիչ - տնային տնտեսությունների կառավարման համակարգ. 5 քայլ (նկարներով)

Video: Առաջադրանքների կառավարիչ - տնային տնտեսությունների կառավարման համակարգ. 5 քայլ (նկարներով)
Video: Alltag und Beruf - B2 - Deutsch lernen mit Dialogen 2024, Հուլիսի
Anonim
Առաջադրանքների կառավարիչ `տնային տնտեսությունների աշխատանքի կառավարման համակարգ
Առաջադրանքների կառավարիչ `տնային տնտեսությունների աշխատանքի կառավարման համակարգ
Առաջադրանքների կառավարիչ - տնային տնտեսությունների աշխատանքի կառավարման համակարգ
Առաջադրանքների կառավարիչ - տնային տնտեսությունների աշխատանքի կառավարման համակարգ

Ես ուզում էի փորձել անդրադառնալ մեր տան առջև ծառացած իրական խնդրին (և, ես պատկերացնում եմ, որ շատ այլ ընթերցողների), որն է `ինչպես բաժանել, մոտիվացնել և պարգևատրել իմ երեխաներին տնային գործերում օգնելու համար:

Մինչ այժմ մենք A4 թղթի լամինացված թերթ ենք պահել սառնարանի կողքին: Այն ունի տպագրված առաջադրանքների մի շարք ՝ կապված գրպանային գումարների հետ, որոնք կարելի էր վաստակել այդ առաջադրանքը կատարելու համար: Գաղափարն այն է, որ ամեն անգամ, երբ մեր երեխաներից մեկն օգնում է տնային աշխատանքին, նրանք տուփ են ստանում այդ տուփի մեջ և յուրաքանչյուր շաբաթվա վերջում մենք ավելացնում ենք վաստակած գումարը, սրբում ենք տախտակը և նորից սկսում: Այնուամենայնիվ, առաջադրանքների ցանկը հնացած է և դժվար է փոխվել: Երբեմն մենք չենք հիշում, որ ամեն շաբաթ մաքրենք տախտակը, և որոշ առաջադրանքներ պետք է կատարվեն տարբեր հաճախականություններով, իսկ որոշներն իդեալական կլինեին ամեն օր, մինչդեռ մյուսները կարող են լինել միայն ամիսը մեկ անգամ: Այսպիսով, ես սկսեցի ստեղծել Arduino- ի վրա հիմնված սարք ՝ այս խնդիրները լուծելու համար. Իմ մտադրությունն էր ստեղծել մի բան, որը թույլ կտար հեշտությամբ ավելացնել/հեռացնել/թարմացնել առաջադրանքները, պարզեցված մեխանիզմ ՝ առաջադրանքը կատարելու և վարկ տրամադրելու համար: համապատասխան անձ, ինչպես նաև տարբեր գրաֆիկներին և հաճախականություններին հետևելու միջոց, որոնցով անհրաժեշտ է կատարել տարբեր առաջադրանքներ, և ընդգծել ժամկետանց առաջադրանքները: Եվ այս ուսանելիը ցույց կտա, թե ինչպես է առաջացել արդյունքում ստացված «Առաջադրանքների կառավարիչ» սարքը:

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Րագիրը օգտագործում է մի քանի լավ օգտագործված և փաստաթղթավորված ապարատային բաղադրիչներ.

  • Arduino UNO/Nano - սա համակարգի «ուղեղն» է: Ինքնաթիռի EEPROM հիշողությունը կօգտագործվի առաջադրանքների վիճակը փրկելու համար, նույնիսկ երբ համակարգն անջատված է: Էլեկտրագծերի դյուրինության համար ես Nano- ն դրել եմ պտուտակահանի վրա, բայց եթե նախընտրում եք, կարող եք զոդել կամ օգտագործել սեղմված միացումներ GPIO- ի կապումներին:
  • Իրական ժամանակի ժամացույց (RTC) մոդուլ - օգտագործվում է առաջադրանքների կատարման ժամկետի գրանցման համար և վերջին անգամը համեմատելով ընթացիկ ժամանակի հետ `որոշելու, թե որ առաջադրանքներն են ուշացած: Նկատի ունեցեք, որ իմ ստացած միավորը նախատեսված էր օգտագործելու վերալիցքավորվող LiPo մարտկոցով (LIR2032): Այնուամենայնիվ, ես օգտագործում եմ չվերալիցքավորվող CR2032 մարտկոց, ուստի ինձ անհրաժեշտ էր մի քանի փոփոխություն կատարել ՝ լիցքավորման միացումն անջատելու համար (դուք չեք ցանկանում փորձել լիցքավորել չվերալիցքավորվող մարտկոցը, հակառակ դեպքում կարող է պայթյունի հանդիպել…):): Մասնավորապես, ես հանեցի R4, R5 և R6 ռեզիստորները, և D1 մակնշված դիոդը: Այնուհետև ես ստեղծեցի զոդման կամուրջ, որը պետք է կարճ անցներ այնտեղ, որտեղ գտնվում էր R6- ը: Այս փոփոխությունները պատկերված են ստորև ներկայացված լուսանկարում:
  • ISO14443 RFID ընթերցող + մեկ պիտակ յուրաքանչյուր օգտագործողի համար- որպես համակարգ «խաղամոլացնելու» միջոց, իմ երեխաներից յուրաքանչյուրն ունի իր ուրույն RFID պիտակը: Առաջադրանքի ընտրությունը, այնուհետև դրանց պիտակը ընթերցողի վրայով սահելը կլինի մեխանիզմը, որն օգտագործվում է առաջադրանքը որպես ավարտված նշելու համար
  • 16x2 LCD էկրան - օգտագործվում է համակարգին օգտագործողի միջերես տրամադրելու համար: Օգտագործելով տախտակ, որն ունի PCF8574A ինտեգրալ ուսապարկ, տախտակը կարող է I2C ինտերֆեյսի միջոցով միացվել Arduino- ին, ինչը զգալիորեն պարզեցնում է էլեկտրագծերը:
  • Պտտվող կոդավորիչ - կլինի հիմնական կառավարման կոճակը, որին օգտվողները կշրջեն `առկա տարբեր առաջադրանքներ ընտրելու համար
  • Wago միակցիչներ. Այս սեղմիչ միակցիչները հարմար միջոց են բաղադրիչները միասին միացնելու կամ մի քանի մոդուլների համար պարզ ավտոբուսներ ստեղծելու համար, որոնցից յուրաքանչյուրը պահանջում է ընդհանուր հիմք կամ 5 Վ լարում:

Քայլ 2: Լարերի տեղադրում

Հաղորդալարեր
Հաղորդալարեր

16x2 LCD էկրանը և DS1307 RTC- ն երկուսն էլ օգտագործում են I2C ինտերֆեյս, ինչը հարմար է, քանի որ էլեկտրագծերը շատ ավելի պարզ են դարձնում ՝ պահանջելով միայն զույգ լարեր, որոնք անցնում են Arduino- ի A4 (SDA) և A5 (SCL) կապերով:

MFRC-522 RFID ընթերցողն օգտագործում է SPI ինտերֆեյս, որն օգտագործում է ֆիքսված ապարատային կապեր 11 (MOSI), 12 (MISO) և 13 (SCK): Այն նաև պահանջում է ստրուկի ընտրության և վերակայման տող, որը ես նշանակել եմ համապատասխանաբար 10 և 9 կապում:

Պտտվող կոդավորիչը պահանջում է մի զույգ կապում: Օպտիմալ կատարման համար ավելի լավ է, եթե այս կապումներն աշխատեն արտաքին ընդհատումների հետ, այնպես որ ես օգտագործում եմ թվային 2 -րդ և 3 -րդ կապում: Դուք կարող եք նաև կոդավորիչը սեղմել որպես անջատիչ, և ես այն միացրել եմ 4 -րդ կապի մեջ: Թեև դա այդպես չէ ներկայումս օգտագործվում է ծածկագրում, գուցե օգտակար համարեք լրացուցիչ հնարավորություններ ավելացնելու համար:

Հարմարության համար ես օգտագործում եմ WAGO 222 շարքի միակցիչ բլոկներ: Սրանք միապաղաղ միակցիչներ են, որոնք ապահովում են 2 և 8 լարերի միջև ցանկացած վայրում միացման ուժեղ և հեշտ միջոց, և շատ հարմար են Arduino նախագծերի համար, որոնք պահանջում են մի քանի մոդուլ `գետնին կամ 5 Վ լարման գծերը կիսելու համար, կամ որտեղ բազմաթիվ սարքեր ունեք: նույն I2C կամ SPI ավտոբուսը, ասենք:

Դիագրամը ցույց է տալիս, թե ինչպես է ամեն ինչ միացված միասին:

Քայլ 3: Շինարարություն

Ես ստեղծեցի շատ հիմնական 3D տպագիր պատյան ՝ էլեկտրոնիկայի տեղադրման համար: Ես որոշ մագնիսներ դրեցի հետևի մասում, որպեսզի սարքը կարողանանք ամրացնել սառնարանի կողքին, ինչպես և նախորդ տպագիր ցուցակն էր: Ես նաև բաց թողեցի USB վարդակից, քանի որ այն կօգտագործվի, եթե անհրաժեշտ լինի համակարգում ավելացնել նոր առաջադրանքներ, կամ մուտք գործել և ներբեռնել կատարված առաջադրանքները ցույց տվող տվյալների հավաքածու և այլն:

Տպելուց հետո ես չպահեցի STL ֆայլերը, բայց տիեզերքում ՝ Thiverseiverse.com- ում, կան բազմաթիվ նմանատիպ (և, հավանաբար, ավելի լավ) դեպքեր: Այլապես, դուք կարող եք կառուցել գեղեցիկ փայտե տուփ, կամ պարզապես օգտագործել հին ստվարաթղթե տուփ կամ կափարիչով տարա ՝ էլեկտրոնիկան տեղադրելու համար:

Քայլ 4: Կոդ

Կոդ
Կոդ

Ամբողջությամբ մեկնաբանված ծածկագիրը կցված է որպես ներբեռնում ստորև: Ահա մի քանի առավել կարևոր կետեր, որոնք պետք է նշել.

Ես ստեղծել եմ հատուկ կառուցվածք ՝ «առաջադրանք», որը տվյալների միավոր է, որը պարունակում է առաջադրանքի բոլոր հատկությունները մեկ ամբողջության մեջ: Առաջադրանքները բաղկացած են անունից, որը կլինի այն, թե ինչպես են դրանք հայտնվում LCD էկրանին (և, հետևաբար, սահմանափակվում են 16 կերպարներով), հաճախականությամբ, որոնցով դրանք պետք է կատարվեն, և երբ և ում կողմից են դրանք կատարվել վերջին անգամ:

կառուցել առաջադրանք {

char taskName [16]; // Այս առաջադրանքի կարճ, «բարեկամական» անունը, որը կհայտնվի էկրանին int repeatEachXDays; // Օրինաչափություն, օրերով, որոնցով այս առաջադրանքը կրկնվում է: 1 = Օրական, 7 = Շաբաթական և այլն անստորագիր երկար վերջին CompletedTime; // estամկետային նշան, որի ընթացքում այս առաջադրանքը վերջին անգամ կատարվել է intComComletletBy; // անձը, ով վերջին անգամ կատարել է այս առաջադրանքը};

Տվյալների հիմնական կառուցվածքը կոչվում է «taskList», որը պարզապես առանձին առաջադրանքների զանգված է: Այստեղ կարող եք սահմանել այն խնդիրները, որոնք ցանկանում եք, որոնք նախաստորագրված են 0 արժեքով ՝ վերջին անգամ կատարված ժամանակի համար, և -1 ՝ վերջին անգամ կատարած օգտվողի ID- ի համար:

task taskList [numTasks] = {

Կոդի վերևում գտնվող հաստատունների բաժնում կա մեկ բայթ արժեք, որը կոչվում է «eepromSignature»: Այս արժեքը օգտագործվում է որոշելու, թե արդյոք EEPROM- ում պահվող տվյալները վավեր են: Եթե դուք փոխում եք taskList տարրի կառուցվածքը, առաջադրանքներ ավելացնելով կամ հեռացնելով կամ լրացուցիչ դաշտեր ավելացնելով, ասենք, պետք է մեծացնեք այս արժեքը: Դուք կարող եք դա մտածել, ինչպես տվյալների հիմնական տարբերակների համարակալման համակարգը:

const byte eepromSignature = 1;

Գործարկման ժամանակ ծրագիրը կփորձի բեռնել EEPROM- ում պահվող տվյալները միայն այն դեպքում, եթե այն համապատասխանի ծածկագրում սահմանված տվյալների ստորագրությանը:

void restoreFromEEPROM () {

int checkByte = EEPROM.read (0); եթե (checkByte == eepromSignature) {EEPROM.get (1, taskList); }}

LCD էկրանը և RTC մոդուլը օգտագործում են I2C ինտերֆեյս Arduino- ի հետ հաղորդակցվելու համար: Սա պահանջում է, որ յուրաքանչյուր սարք ունենա եզակի I2C հասցե: Ես փորձել եմ մի քանի տարբեր 16x2 ցուցատախտակներ, և ոմանք, կարծես, օգտագործում են 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 քարտ.")); for (բայթ i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serial.print (RFID , HEX); } վերադարձ -1; }

Օգտվողին պիտակ նշանակելու համար դուք պետք է պատճենեք ցուցադրված ID- ն և 4 բայթ արժեքը տեղադրեք կոդի վերևում գտնվող օգտվողների զանգվածում ՝ համապատասխան օգտատիրոջ կողքին.

const userList [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: Օգտագործում

Օգտագործումը
Օգտագործումը
Օգտագործումը
Օգտագործումը

Եթե դուք հասել եք այսքան հեռու, համակարգի օգտագործումը պետք է բավականին անուղղակիորեն ծածկված լինի ծածկագրից. ցանկացած պահի, օգտվողները կարող են պտտել պտտվող կոճակը ՝ առկա առաջադրանքների ցանկը ոլորելու համար: Oresամկետանց աշխատանքները վերնագրից հետո նշվում են աստղանիշով:

Ընտրելով տնային աշխատանք, օգտվողները կարող են սկանավորել իրենց սեփական եզակի RFID ֆոբը ընթերցողին ՝ առաջադրանքը որպես ավարտված նշելու համար: Նրանց ID- ն և ընթացիկ ժամը կգրանցվեն և կպահվեն Arduino- ի EEPROM- ում:

RFID- ի ճիշտ պիտակները նախ տեղադրելու համար դուք պետք է կատարեք էսքիզը `կցված Arduino սերիական մոնիտորով: Սկանավորեք յուրաքանչյուր պիտակ և նշեք սերիական մոնիտորի վրա ցուցադրված 4 բայթ վեցանկյուն UID արժեքը: Այնուհետև փոփոխեք ծածկագրի վերևում հայտարարված օգտագործողների ցուցակը ՝ այս պիտակի ID- ն համապատասխան օգտագործողին վերագրելու համար:

Ես հաշվի առա վերջին շաբաթվա ընթացքում օգտագործողի կողմից կատարված բոլոր առաջադրանքները ցուցադրող հաշվետվությունը տպելու գործառույթների ավելացումը, որպեսզի ամեն շաբաթ համապատասխան գրպանային գումար պարգևատրեմ: Այնուամենայնիվ, ինչպես պատահում է, իմ երեխաները, կարծես, գոհ են համակարգից օգտվելու նորույթից ՝ գրպանային դրամական պարգևների մասին ամբողջությամբ մոռացած: Այնուամենայնիվ, սա բավականին պարզ հավելում կլիներ և որպես վարժություն կմնա ընթերցողի համար:)

Խորհուրդ ենք տալիս: