
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48


Ես ուզում էի փորձել անդրադառնալ մեր տան առջև ծառացած իրական խնդրին (և, ես պատկերացնում եմ, որ շատ այլ ընթերցողների), որն է `ինչպես բաժանել, մոտիվացնել և պարգևատրել իմ երեխաներին տնային գործերում օգնելու համար:
Մինչ այժմ մենք 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- ն համապատասխան օգտագործողին վերագրելու համար:
Ես հաշվի առա վերջին շաբաթվա ընթացքում օգտագործողի կողմից կատարված բոլոր առաջադրանքները ցուցադրող հաշվետվությունը տպելու գործառույթների ավելացումը, որպեսզի ամեն շաբաթ համապատասխան գրպանային գումար պարգևատրեմ: Այնուամենայնիվ, ինչպես պատահում է, իմ երեխաները, կարծես, գոհ են համակարգից օգտվելու նորույթից ՝ գրպանային դրամական պարգևների մասին ամբողջությամբ մոռացած: Այնուամենայնիվ, սա բավականին պարզ հավելում կլիներ և որպես վարժություն կմնա ընթերցողի համար:)
Խորհուրդ ենք տալիս:
Գույքագրման կառավարման ինտեգրված համակարգ. 10 քայլ (նկարներով)

Ինտեգրված գույքագրման կառավարման համակարգ. Ես միշտ ցանկացել եմ մատչելի եղանակով հետևել իմ մառանում եղած ամեն ինչին, ուստի մի քանի ամիս առաջ ես սկսեցի աշխատել մի նախագծի վրա, որը հենց դա կաներ: Նպատակն էր ստեղծել պարզ, մատչելի համակարգ, որը շատ հեշտ էր օգտագործել, մինչդեռ նաև պատմական
Գրավոր առաջադրանքների կառուցվածք ՝ Google Ձևաթղթերով + AutoCrat: 12 քայլ

Գրավոր առաջադրանքների կառուցվածք Google Forms + AutoCrat- ով. Արդյո՞ք ձեր ուսանողները դժվարանում են կառուցել թեզի հայտարարություններ, ներածություններ, ամփոփագրեր կամ ամբողջական գրավոր առաջադրանքներ: Ստանո՞ւմ եք էսսեներ, որոնք չեն հետևել որոշակի ձևաչափի: Եթե այո, ապա օգտագործեք Google Ձևաթղթեր և Chrome ընդլայնում autoCrat ՝
Alexa վարագույրների կառավարման համակարգ - 3D տպագրությամբ և ցածր գնով. 19 քայլ (նկարներով)

Alexa Curtain Control System - 3D Printable and Low Price: Բարև, ես երկար ժամանակ փորձում էի ավտոմատացնել մեր տան հնարավորինս մեծ մասը: Երբ Ձմեռը գալիս է այստեղ ՝ Միացյալ Թագավորություն, ես որոշեցի հեռացնել երեկոյան բոլոր վարագույրները փակելու աշխատանքը, այնուհետև դրանք նորից բացել առավոտյան: Սա նշանակում է վազել
Շարժիչային կառավարման համակարգ `Arduino Mega 2560 և IoT- ի օգտագործմամբ` 8 քայլ (նկարներով)

Շարժիչային կառավարման համակարգ `Arduino Mega 2560- ի և IoT- ի միջոցով. Տնտեսապես դրանք օգտագործվում են համակարգչի փոխարեն: Usրագրի նպատակն է `ամբողջությամբ թվայնացված հսկողություն, տվյալների գրանցում և մոնիտորինգ 3 փուլային ինդուկցիոն շարժիչով
Գաղտնաբառերի կառավարիչ, Typer, Macro, Payload Բոլորը մեկում: 11 քայլ (նկարներով)

Գաղտնաբառերի կառավարիչ, Typer, Macro, Payload … Բոլորը մեկում: ՈTՇԱԴՐՈԹՅՈՆ. Խնդրում ենք. Եթե այս սարքի (PCB, զոդման կամ այլ սարքավորումների) հետ կապված խնդիրներ ունեք, ազատ զգալ ինձ անձնական նամակ ուղարկեք այստեղ կամ էլ. [email protected]. Ես ուրախ կլինեմ ուղարկել արդեն արտադրած համակարգիչներից կամ սարքերից մեկը