Мазмұны:

Тапсырмалар менеджері - үй жұмысын басқару жүйесі: 5 қадам (суреттермен)
Тапсырмалар менеджері - үй жұмысын басқару жүйесі: 5 қадам (суреттермен)

Бейне: Тапсырмалар менеджері - үй жұмысын басқару жүйесі: 5 қадам (суреттермен)

Бейне: Тапсырмалар менеджері - үй жұмысын басқару жүйесі: 5 қадам (суреттермен)
Бейне: Басқа тышты деген осы 😡 2024, Қараша
Anonim
Тапсырмалар менеджері - үй шаруашылығын басқару жүйесі
Тапсырмалар менеджері - үй шаруашылығын басқару жүйесі
Тапсырмалар менеджері - үй шаруашылығын басқару жүйесі
Тапсырмалар менеджері - үй шаруашылығын басқару жүйесі

Мен үй шаруашылығында кездесетін нақты мәселені шешуге тырысқым келді (және менің ойымша, басқа оқырмандардың мәселесі), бұл менің балаларымды үй шаруасына көмектескені үшін бөлу, ынталандыру және марапаттау.

Осы уақытқа дейін біз тоңазытқыштың бүйірінде А4 форматындағы қағаздың ламинатталған парағын ұстадық. Онда осы тапсырманы орындау үшін табуға болатын қалта ақшасы бар тапсырмалар кестесі бар. Идея - біздің балаларымыздың әрқайсысы үй тапсырмасын орындауға көмектескен сайын, олар осы қорапта құсбелгі алады және әр аптаның соңында біз тапқан ақшаны қосамыз, тақтаны сүртеміз және қайтадан бастаймыз. Алайда, тапсырмалар тізімі ескірген және өзгерту қиын, кейде біз апта сайын тақтаны сүртуді ұмытпаймыз, ал кейбір тапсырмаларды әр түрлі жиілікте орындау қажет-кейбіреулері күн сайын жасалуы керек. басқалары айына бір рет болуы мүмкін. Сонымен, мен осы мәселелерді шешу үшін Arduino негізіндегі құрылғыны құруға кірістім - менің мақсатым - тапсырмаларды оңай қосуға/жоюға/жаңартуға мүмкіндік беретін нәрсені жасау, тапсырманы орындау кезінде есепке алудың жеңілдетілген механизмін құру. сәйкес адам және әр түрлі тапсырмаларды орындау кестесі мен жиілігін қадағалау және кешіктірілген тапсырмаларды бөлу әдісі. Бұл нұсқаулық нәтижесінде «Task Manager» құрылғысының қалай шыққанын көрсетеді.

1 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

Жоба бірнеше жақсы қолданылатын және құжатталған аппараттық компоненттерді қолданады:

  • Arduino UNO/Nano - бұл жүйенің «миы». EEPROM борттық жады жүйе өшірілген кезде де тапсырмалардың күйін сақтау үшін қолданылады. Сымды жеңілдету үшін мен наноны бұрағышқа бекітіп қойдым, бірақ сіз қаласаңыз, оның орнына GPIO түйреуіштеріне дәнекерлеуге немесе пайдалануға болады.
  • Нақты уақыттағы сағат (RTC) модулі - тапсырмалар орындалған уақыт белгісін жазу үшін қолданылады және соңғы уақытты ағымдағы уақытпен салыстыра отырып, қандай тапсырмалардың мерзімі өтіп кеткенін анықтайды. Назар аударыңыз, мен алған құрылғы қайта зарядталатын LiPo батареясымен (LIR2032) пайдалануға арналған. Дегенмен, мен зарядталмайтын CR2032 аккумуляторын қолданамын, сондықтан зарядтау тізбегін өшіру үшін бірнеше өзгертулер енгізуім керек болды (қайта зарядталмайтын батареяны қайта зарядтағыңыз келмейді, әйтпесе сіз жарылыс болуы мүмкін …). Атап айтқанда, мен R4, R5 және R6 резисторларын алып тастадым, ал диод D1 деп белгіленген. Содан кейін мен R6 болған жерден қысқа жерге дәнекерлеу көпірін құрдым. Бұл өзгерістер төмендегі суретте көрсетілген.
  • ISO14443 RFID оқу құралы + бір пайдаланушыға бір тег- жүйені «геймификациялау» әдісі ретінде менің балаларымның әрқайсысының өзіндік RFID тегтері бар. Тапсырманы таңдау, содан кейін олардың тегтерін оқырман бойымен жылжыту тапсырманы аяқталды деп белгілеудің механизмі болады
  • 16x2 СКД дисплейі - жүйеге қолданушы интерфейсін қамтамасыз ету үшін қолданылады. PCF8574A интегралды рюкзагы бар тақтаны қолдана отырып, тақтаны I2C интерфейсі арқылы Arduino -ға қосуға болады, бұл сымды айтарлықтай жеңілдетеді.
  • Rotary Encoder - бұл пайдаланушылар қол жетімді әр түрлі тапсырмаларды таңдау үшін бұрылатын негізгі басқару тұтқасы болады
  • Wago коннекторлары - бұл қосылатын коннекторлар - бұл компоненттерді біріктірудің немесе әр модуль үшін 5 В кернеуін қажет ететін бірнеше модульдер үшін қарапайым автобустарды құрудың ыңғайлы әдісі.

2 -қадам: Сымдарды жалғау

Сымдар
Сымдар

16x2 СКД дисплейі мен DS1307 RTC екеуі де I2C интерфейсін қолданады, себебі бұл сымды жеңілдетеді, тек Arduino A4 (SDA) және A5 (SCL) түйреуіштеріне баратын жұп сымдарды қажет етеді

MFRC-522 RFID оқу құралы 11 (MOSI), 12 (MISO) және 13 (SCK) бекітілген аппараттық түйреуіштерді қолданатын SPI интерфейсін қолданады. Ол сондай -ақ сәйкесінше 10 және 9 түйреуіштерге тағайындаған құлды таңдау және қалпына келтіру жолын қажет етеді

Айналмалы кодер жұп түйреуіштерді қажет етеді. Оңтайлы өнімділік үшін бұл түйреуіштер сыртқы үзілістерді басқара алатын болса жақсы, сондықтан мен 2 және 3 цифрлық түйреуіштерді қолданамын. Сіз де кодерді қосқыш ретінде шертуге болады, мен оны 4 -істікке қостым. Қазіргі уақытта кодта қолданылғандықтан, сіз оны қосымша мүмкіндіктерді қосу үшін пайдалы деп санай аласыз

Ыңғайлы болу үшін мен WAGO 222 сериялы қосқыш блоктарын қолданамын. Бұл 2-ден 8-ге дейінгі сымдардың кез келген жеріне қосылудың берік, қарапайым әдісін қамтамасыз ететін тез қосылатын қосқыштар, және жерүсті немесе 5В желісін бөлісу үшін бірнеше модульді қажет ететін Arduino жобалары үшін өте ыңғайлы немесе сізде бірнеше құрылғы бар. бірдей I2C немесе SPI шинасы, айталық

Диаграммада барлығы қалай біріктірілгені көрсетілген.

3 -қадам: құрылыс

Мен электрониканы орналастыру үшін қарапайым 3D басып шығарылған корпус жасадым. Мен құрылғыны тоңазытқыштың бүйіріне бекіту үшін артқы жағына бірнеше магнит қойдым, дәл алдыңғы басылған тізімдегідей. Мен сондай -ақ USB розеткасын ашық күйінде қалдырдым, себебі бұл жүйеге жаңа тапсырмалар қосу қажет болса немесе кіру және орындалған тапсырмаларды көрсететін деректер жиынтығын жүктеу үшін қажет болса.

Мен STL файлдарын басып шығарудан кейін сақтамадым, бірақ thingiverse.com сайтында көптеген ұқсас (және, мүмкін, жақсы!) Жағдайлар бар. Немесе сіз ағаштан жасалған жақсы қорапшаны жасай аласыз немесе электрониканы орналастыру үшін ескі картон қорапшасын немесе ыдысқа арналған контейнерді қолдана аласыз.

4 -қадам: код

Код
Код

Толық түсіндірілген код төменде жүктеу ретінде қосылады. Міне, бірнеше маңызды сәттерді ескеру қажет:

Мен «тапсырма» реттелетін құрылымын құрдым, ол бір нысанның барлық қасиеттерін қамтитын деректер бірлігі. Тапсырмалар СКД дисплейінде қалай пайда болатынын (және 16 таңбамен шектелген), оларды орындау жиілігін, және қашан және кім орындағанын көрсетеді

құрылымдық тапсырма {

char taskName [16]; // Бұл тапсырмаға арналған қысқа, «достық» атау int repeatEachXDays дисплейінде пайда болады; // Бұл тапсырма қайталанатын жүйелілік, күндермен. 1 = Күнделікті, 7 = Апталық және т.б. қол қойылмаған long lastCompletedTime; // Бұл тапсырма соңғы орындалған уақыт белгісі int lastCompletedBy; // бұл тапсырманы соңғы орындаған адамның жеке куәлігі};

Мәліметтердің негізгі құрылымы «taskList» деп аталады, бұл жай ғана жеке тапсырмалар жиыны. Сіз бұл жерде қай тапсырманы орындағыңыз келетінін анықтай аласыз, олар соңғы орындалған уақыт үшін 0 мәнімен инициализацияланған, ал соңғы орындаған пайдаланушының идентификаторы үшін -1

тапсырмалар тізімі [numTasks] = {

{«Таза автокөлік», 7, 0, -1}, {«Парақтарды өзгерту», 14, 0, -1}, {«Шөп шабу», 7, 0, -1}, {«Гувер», 3, 0, -1}, {«Итпен жүру», 1, 0, -1}, {«Жатын бөлмелері», 7, 0, -1}, {«Су өсімдіктері», 2, 0, -1}, {«Жоғарғы қабат дәретхана «, 7, 0, -1}, {» D/баспалдақ дәретханасы «, 7, 0, -1}, {» Гувер «, 3, 0, -1}, {» Таза душ «, 7, 0, -1},};

Кодтың жоғарғы жағындағы тұрақтылар бөлімінде «eepromSignature» деп аталатын бір байт мәні бар. Бұл мән EEPROM -де сақталған деректердің жарамдылығын анықтау үшін қолданылады. Егер сіз taskList элементінің құрылымын өзгертсеңіз, тапсырмаларды қосу немесе жою немесе қосымша өрістер қосу арқылы, айталық, бұл мәнді ұлғайту керек. Сіз бұл деректердің негізгі нұсқалық нөмірлеу жүйесі сияқты ойлай аласыз

const байт eepromSignature = 1;

Бағдарлама іске қосылған кезде EEPROM -да сақталған деректерді кодта анықталған деректердің қолтаңбасына сәйкес келсе ғана жүктеуге тырысады.

жарамсыз қалпына келтіруFromEEPROM () {

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

СКД дисплейі мен RTC модулі Arduino -мен байланысу үшін I2C интерфейсін қолданады. Бұл әр құрылғыда бірегей I2C адресі болуын талап етеді. Мен әр түрлі 16x2 дисплей тақталарын сынап көрдім, ал кейбіреулері 0x27 мекен -жайын қолданатын сияқты, ал басқа ұқсас тақталар 0x3f пайдаланады. Егер сіз дисплейде тек квадраттар мен мәтін жоқ екенін көрсеңіз, кодта анықталған мекенжай мәнін өзгертуге тырысыңыз:

LiquidCrystal_PCF8574 lcd (0x27);

RFID тегі анықталған кезде код 4 байтты идентификаторды оқиды және оны белгілі пайдаланушылар кестесінен сәйкес пайдаланушыны іздеуге тырысады. Егер тег танылмаса, 4 байтты идентификатор сериялық монитор консоліне жіберіледі:

int GetUserFromRFIDTag (RFID байты ) {

for (int i = 0; i <сандық пайдаланушылар; i ++) = «» {<сандық пайдаланушылар; i ++) {if (memcmp (userList .rfidUID, RFID, userList sizeof .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; }

Пайдаланушыға тег тағайындау үшін көрсетілген идентификаторды көшіріп, кодтың жоғарғы жағындағы, сәйкес пайдаланушының жанындағы пайдаланушылар массивіне 4 байтты мәнді енгізу керек:

const user userList [numUsers] = {{1, «Джини», {0x00, 0x00, 0x00, 0x00}}, {2, «Гарри», {0x12, 0x34, 0x56, 0x78}}, {3, «Рон», {0xE8, 0x06, 0xC2, 0x49}}, {4, «Гермиона», {0x12, 0x34, 0x56, 0x78}}, {5, «Alastair», {0x12, 0x34, 0x56, 0x78}},};

5 -қадам: Қолдану

Қолданылуы
Қолданылуы
Қолданылуы
Қолданылуы

Егер сіз осы уақытқа дейін жетсеңіз, жүйенің қолданылуы кодқа сәйкес болуы керек; кез келген уақытта пайдаланушылар қол жетімді тапсырмалар тізімін айналдыру үшін айналмалы тұтқаны айналдыра алады. Мерзімі өткен тапсырмалар атаудан кейін жұлдызшамен белгіленеді.

Орындалатын жұмысты таңдағаннан кейін, пайдаланушылар тапсырманы аяқталды деп белгілеу үшін бірегей RFID фобты оқу құралы бойынша сканерлей алады. Олардың жеке куәлігі мен қазіргі уақыты Arduino EEPROM -да жазылады және сақталады.

Алдымен RFID тегтерін дұрыс орнату үшін сіз эскизді Arduino сериялық мониторы қосылған кезде іске қосуыңыз керек. Әр тегті сканерлеңіз және сериялық мониторда көрсетілетін 4 байтты он алтылық UID мәніне назар аударыңыз. Содан кейін кодтың жоғарғы жағында жарияланған пайдаланушылар тізімін осы пайдаланушыға тег идентификаторын тағайындау үшін өзгертіңіз.

Мен әр апта сайын тиісті қалта ақшалай сыйақысын бөлу үшін соңғы аптада қолданушы орындаған барлық тапсырмаларды көрсететін есепті басып шығару үшін функционалдылықты қосуды қарастырдым. Алайда, бұл қалай болғанда да, менің балаларым жүйені қолданудың жаңалығына қанағаттанған сияқты, қалталы ақшалай сыйақыларды ұмытып кетті! Бұл өте қарапайым қосымша болар еді және оқырман үшін жаттығу ретінде қалады:)

Ұсынылған: