Përmbajtje:

Task Manager - një sistem i menaxhimit të punës shtëpiake: 5 hapa (me fotografi)
Task Manager - një sistem i menaxhimit të punës shtëpiake: 5 hapa (me fotografi)

Video: Task Manager - një sistem i menaxhimit të punës shtëpiake: 5 hapa (me fotografi)

Video: Task Manager - një sistem i menaxhimit të punës shtëpiake: 5 hapa (me fotografi)
Video: Cracking the Code: Dive Deep into Windows Registry 2024, Nëntor
Anonim
Task Manager - një sistem i menaxhimit të punës shtëpiake
Task Manager - një sistem i menaxhimit të punës shtëpiake
Task Manager - një sistem i menaxhimit të punës shtëpiake
Task Manager - një sistem i menaxhimit të punës shtëpiake

Doja të përpiqesha të trajtoja një problem të vërtetë të hasur në familjen tonë (dhe, imagjinoj, atë të shumë lexuesve të tjerë), i cili është mënyra se si t'i ndajë, motivojë dhe shpërblejë fëmijët e mi për ndihmën në punët e shtëpisë.

Deri tani, ne kemi mbajtur një fletë të laminuar të letrës A4 të ngjitur në anën e frigoriferit. Ajo ka një rrjet detyrash të shtypura në të, me shuma të lidhura me para xhepi që mund të fitohen për përfundimin e asaj detyre. Ideja është që çdo herë që një nga fëmijët tanë të ndihmojë me një punë të përditshme, ata marrin një rriqër në atë kuti dhe, në fund të çdo jave, i shtojmë paratë e fituara, fshijmë tabelën dhe fillojmë përsëri. Sidoqoftë, lista e detyrave është e vjetëruar dhe e vështirë për tu ndryshuar, nganjëherë nuk mbajmë mend ta fshijmë bordin çdo javë, dhe disa detyra duhet të kryhen me frekuenca të ndryshme-disa ideale do të bëheshin çdo ditë, ndërsa të tjerët mund të jenë vetëm një herë në muaj. Kështu, unë fillova të krijoj një pajisje të bazuar në Arduino për të adresuar këto çështje - qëllimi im ishte të krijoja diçka që lejonte shtimin/heqjen/përditësimin e lehtë të detyrave, një mekanizëm i thjeshtë për regjistrimin kur një detyrë ishte kryer dhe ndarjen e kredisë për personi i përshtatshëm, dhe një mënyrë për të mbajtur shënim oraret dhe frekuencën e ndryshme me të cilat duhet të kryhen detyra të ndryshme, dhe të theksohen detyrat e vonuara. Dhe kjo e udhëzueshme do të tregojë se si doli pajisja "Task Manager" që rezultoi.

Hapi 1: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware

Projekti përdor disa komponentë hardueri të përdorur mirë dhe të dokumentuar:

  • Arduino UNO/Nano - kjo është "truri" i sistemit. Kujtesa në bord EEPROM do të përdoret për të ruajtur gjendjen e detyrave edhe kur sistemi është i fikur. Për lehtësinë e instalimeve elektrike, unë e kam montuar Nano -në në një vidë, por ju mund të lidhni ose përdorni lidhjet e shtrënguara me kunjat GPIO nëse preferoni.
  • Moduli i orës në kohë reale (RTC) - përdoret për të regjistruar vulën kohore në të cilën janë kryer detyrat dhe, duke krahasuar kohën e fundit me kohën aktuale, përcaktoni cilat detyra janë të vonuara. Vini re se njësia që mora ishte projektuar për t'u përdorur me një bateri LiPo të rimbushshme (LIR2032). Sidoqoftë, unë jam duke përdorur një bateri CR2032 jo të rimbushshme, kështu që më duhej të bëja disa modifikime për të çaktivizuar qarkun e karikimit (ju nuk doni të provoni të rimbushni një bateri jo të rimbushshme, ose mund të përballeni me një shpërthim….) Në mënyrë të veçantë, unë hoqa rezistorët R4, R5 dhe R6, dhe dioda e shënuar D1. Unë pastaj krijova një urë lidhëse në të shkurtër aty ku kishte qenë R6. Këto ndryshime janë ilustruar në foton më poshtë.
  • ISO14443 RFID lexues + një etiketë për përdorues- si një mënyrë për të "gamifikuar" sistemin, secili nga fëmijët e mi ka etiketën e tij unike RFID. Përzgjedhja e një detyre dhe pastaj kalimi i etiketës së tyre nëpër lexues do të jetë mekanizmi i përdorur për të shënuar një detyrë si të përfunduar
  • Ekran LCD 16x2 - përdoret për të siguruar ndërfaqen e përdoruesit në sistem. Duke përdorur një tabelë që ka një çantë integrale PCF8574A, bordi mund të lidhet përmes një ndërfaqeje I2C me Arduino, gjë që thjeshton instalimet elektrike në mënyrë të konsiderueshme.
  • Kodifikues rrotullues - do të jetë çelësi kryesor i kontrollit të cilin përdoruesit do ta kthejnë për të zgjedhur detyra të ndryshme në dispozicion
  • Lidhëset Wago - këta lidhës të mbyllur janë një mënyrë e përshtatshme për të lidhur elementët së bashku ose për të krijuar autobusë të thjeshtë për disa module që secila kërkon terren të përbashkët ose furnizim me 5V.

Hapi 2: Instalimet elektrike

Instalime elektrike
Instalime elektrike

Ekrani 16x2 LCD dhe DS1307 RTC të dy përdorin një ndërfaqe I2C, e cila është e përshtatshme pasi i bën instalimet elektrike shumë më të thjeshta, duke kërkuar vetëm një palë tela që shkojnë në kunjat A4 (SDA) dhe A5 (SCL) të Arduino

Lexuesi RFID MFRC-522 përdor një ndërfaqe SPI, e cila përdor kunjat e pajisjeve fikse 11 (MOSI), 12 (MISO) dhe 13 (SCK). Kërkon gjithashtu një linjë zgjedhjeje dhe rivendosjeje të skllevërve, të cilën e kam caktuar përkatësisht në kunjat 10 dhe 9

Kodifikuesi rrotullues kërkon një palë kunja. Për performancë optimale, është më mirë nëse këto kunja mund të trajtojnë ndërprerjet e jashtme, kështu që unë jam duke përdorur kunjat dixhitale 2 dhe 3. Ju gjithashtu mund të klikoni koduesin si ndërprerës, dhe këtë e kam lidhur në pin 4. Edhe pse nuk është aktualisht i përdorur në kod, mund ta shihni të dobishëm për shtimin e veçorive shtesë

Për lehtësi, unë jam duke përdorur blloqe lidhëse të serisë WAGO 222. Këto janë lidhës të mbyllur që sigurojnë një mënyrë të fortë dhe të lehtë për t'u lidhur kudo midis 2 dhe 8 telave së bashku, dhe janë shumë të përshtatshëm për projektet Arduino që kërkojnë disa module për të ndarë një linjë tokësore ose 5V, ose ku keni pajisje të shumta në i njëjti autobus I2C ose SPI, të themi

Diagrami ilustron sesi gjithçka lidhet së bashku.

Hapi 3: Ndërtimi

Kam krijuar një kuti shumë themelore të printuar 3D për të vendosur pajisjet elektronike. Vendosa disa magnete në pjesën e pasme në mënyrë që njësia të mund të fiksohej në anën e frigoriferit, ashtu siç ishte lista e mëparshme e shtypur. Unë gjithashtu lashë prizën USB të ekspozuar, pasi kjo do të përdorej nëse detyrat e reja duheshin shtuar në sistem, ose për të hyrë dhe shkarkuar një sërë të dhënash që tregojnë detyrat e përfunduara etj.

Unë nuk i ruaj skedarët STL pas printimit, por ka shumë raste të ngjashme (dhe, ndoshta më mirë!) Në dispozicion në thingiverse.com. Përndryshe, ju mund të ndërtoni një kuti të bukur prej druri, ose thjesht të përdorni një kuti të vjetër kartoni ose enë tupperware për të vendosur pajisjet elektronike.

Hapi 4: Kodi

Kodi
Kodi

Kodi i komentuar plotësisht është bashkangjitur si shkarkim më poshtë. Këtu janë disa nga pikat më të rëndësishme për tu vënë në dukje:

Unë kam krijuar një strukturë të personalizuar, "detyrë", e cila është një njësi e të dhënave që përfshin të gjitha vetitë e një detyre në një entitet të vetëm. Detyrat përbëhen nga një emër, i cili do të jetë mënyra se si shfaqen në ekranin LCD (dhe kështu të kufizuar në 16 karaktere), frekuenca me të cilën ato duhet të kryhen, dhe kur dhe nga kush janë përfunduar për herë të fundit

strukturë detyrë {

char taskName [16]; // Emri i shkurtër, "miqësor" për këtë detyrë siç do të shfaqet në ekran int repeatEachXDays; // Rregullsia, në ditë, me të cilat kjo detyrë përsëritet. 1 = Ditore, 7 = Javore etj. E panënshkruar gjatë e fundit KompletuarTime; // Vula kohore në të cilën kjo detyrë është përfunduar për herë të fundit int lastCompletedBy; // ID e personit që e ka kryer për herë të fundit këtë detyrë};

Struktura kryesore e të dhënave quhet "taskList", e cila është thjesht një grup detyrash të ndara. Ju mund të përcaktoni cilindo detyrë që dëshironi këtu, të cilat janë të inicializuara me një vlerë prej 0 për kohën në të cilën janë përfunduar për herë të fundit dhe -1 për ID -në e përdoruesit që i ka kryer për herë të fundit

task task List [numTasks] = {

Në pjesën e konstantave në krye të kodit, ekziston një vlerë e vetme e bajtit e quajtur "eepromSignature". Kjo vlerë përdoret për të përcaktuar nëse të dhënat e ruajtura në EEPROM janë të vlefshme. Nëse ndryshoni strukturën e artikullit taskList, duke shtuar ose hequr detyra, ose duke shtuar fusha shtesë, të themi, duhet ta rrisni këtë vlerë. Mund ta mendoni si një sistem bazë i numërimit të versioneve për të dhënat

const byte eepromSignature = 1;

Me fillimin, programi do të përpiqet të ngarkojë të dhënat e ruajtura në EEPROM nëse përputhet me nënshkrimin e të dhënave të përcaktuara në kod.

void restoreFromEEPROM () {

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

Ekrani LCD dhe moduli RTC përdorin një ndërfaqe I2C për të komunikuar me Arduino. Kjo kërkon që çdo pajisje të ketë një adresë unike I2C. Kam provuar disa borde të ndryshme të ekranit 16x2, dhe disa duket se përdorin adresën 0x27, ndërsa bordet e tjera në dukje identike përdorin 0x3f. Nëse gjeni se ekrani juaj tregon vetëm një seri katrorësh dhe asnjë tekst, provoni të ndryshoni vlerën e adresës të përcaktuar në kodin këtu:

LiquidCrystal_PCF8574 LCD (0x27);

Kur zbulohet një etiketë RFID, kodi lexon identifikuesin 4-bajtësh dhe e përdor atë për të provuar të kërkojë përdoruesin përkatës nga tabela e përdoruesve të njohur. Nëse etiketa nuk njihet, identifikuesi 4 bajt do të dërgohet në tastierën e serisë së monitorit:

int GetUserFromRFIDTag (byte RFID ) {

për (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, sizeof userList .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Karta e panjohur RFID u zbulua:")); për (byte i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serial.print (RFID , HEX); } kthimi -1; }

Për t'i caktuar një etiketë një përdoruesi, duhet të kopjoni ID-në e shfaqur dhe të futni vlerën 4-bajtësh në grupin e përdoruesve në krye të kodit, pranë përdoruesit përkatës:

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}},};

Hapi 5: Përdorimi

Përdorimi
Përdorimi
Përdorimi
Përdorimi

Nëse e keni arritur deri tani, përdorimi i sistemit duhet të jetë mjaft i nënkuptuar nga kodi; në çdo kohë, përdoruesit mund të rrotullojnë çelësin rrotullues për të lëvizur në listën e detyrave në dispozicion. Punët e punës që janë të vonuara shënohen me një yll pas titullit të tyre.

Pasi të keni zgjedhur një punë të përditshme për të kryer, përdoruesit mund të skanojnë fobin e tyre unik RFID në të gjithë lexuesit për të shënuar detyrën si të përfunduar. ID e tyre dhe koha aktuale do të regjistrohen dhe ruhen në EEPROM të Arduino.

Në mënyrë që së pari të vendosni etiketat e sakta RFID, duhet të bëni skicën me monitorin serial Arduino të bashkangjitur. Skanoni secilën etiketë dhe mbani shënim vlerën 4-byte gjashtëkëndëshe UID të shfaqur në monitorin serik. Pastaj modifikoni listën e përdoruesve të deklaruar në krye të kodit për t'i caktuar këtë ID etikete përdoruesit të duhur.

Kam marrë parasysh shtimin e funksionalitetit për të shtypur një raport që tregon të gjitha detyrat e kryera, nga përdoruesi, gjatë javës së fundit, në mënyrë që të ndajë shpërblimin e duhur të parave të xhepit çdo javë. Sidoqoftë, siç ndodh, fëmijët e mi duket se janë të kënaqur me risinë e përdorimit të sistemit për të harruar plotësisht shpërblimet e parave të xhepit! Kjo do të ishte një shtesë mjaft e thjeshtë megjithatë, dhe lihet si një ushtrim për lexuesin:)

Recommended: