Talaan ng mga Nilalaman:

Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay: 5 Hakbang (na may Mga Larawan)
Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay: 5 Hakbang (na may Mga Larawan)

Video: Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay: 5 Hakbang (na may Mga Larawan)

Video: Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay: 5 Hakbang (na may Mga Larawan)
Video: Fulltank by Bo Sanchez 1341 [Tagalog]: Paano Maging Mahusay na Leader? 2024, Hulyo
Anonim
Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay
Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay
Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay
Task Manager - isang Sistema ng Pamamahala ng Pangangalaga sa Bahay

Nais kong subukan na tugunan ang isang tunay na problemang kinakaharap sa aming sambahayan (at, sa palagay ko, ng marami pang iba pang mga mambabasa), na kung paano makalaan, maganyak, at gantimpalaan ang aking mga anak sa pagtulong sa mga gawain sa bahay.

Hanggang ngayon, napanatili namin ang isang nakalamina na sheet ng A4 na papel na nakadikit sa gilid ng ref. Mayroon itong isang grid ng mga gawain na nakalimbag dito, na may mga kaugnay na halaga ng pera sa bulsa na maaaring makuha para sa pagkumpleto ng gawaing iyon. Ang ideya ay ang bawat oras na ang isa sa aming mga anak ay tumulong sa isang gawain, nakakakuha sila ng tsek sa kahon na iyon at, sa pagtatapos ng bawat linggo, idinagdag namin ang kita na nakuha, punasan ang board at magsimulang muli. Gayunpaman, ang listahan ng mga gawain ay hindi napapanahon at mahirap baguhin, minsan hindi natin naaalala na punasan ang board malinis bawat linggo, at ang ilang mga gawain ay kailangang gumanap sa iba't ibang mga frequency - ang ilan ay perpektong gagawin araw-araw, samantalang ang iba ay maaaring isang beses lamang sa isang buwan. Kaya't, nagtakda ako tungkol sa paglikha ng isang aparato na nakabatay sa Arduino upang matugunan ang mga isyung ito - ang aking hangarin ay lumikha ng isang bagay na pinapayagan para sa madaling pagdaragdag / pag-aalis / pag-update ng mga gawain, isang naka-streamline na mekanismo para sa pagtatala kung ang isang gawain ay tapos na at naglaan ng kredito sa naaangkop na tao, at isang paraan upang subaybayan ang iba't ibang mga iskedyul at dalas na kung saan kailangang isagawa ang iba't ibang mga gawain, at i-highlight ang mga overdue na gawain. At ang itinuturo na ito ay ipapakita kung paano lumabas ang nagresultang "Task Manager" na aparato.

Hakbang 1: Hardware

Hardware
Hardware
Hardware
Hardware

Ginagamit ng proyekto ang maraming mahusay na ginamit at dokumentadong mga bahagi ng hardware:

  • Arduino UNO / Nano - ito ang "talino" ng system. Ang onboard EEPROM memory ay gagamitin upang i-save ang estado ng mga gawain kahit na ang system ay pinapatay. Para sa kadalian ng mga kable, na-mount ko ang Nano sa isang screwshield, ngunit maaari kang maghinang o gumamit ng crimped na koneksyon sa mga pin ng GPIO kung gusto mo.
  • Real-Time Clock (RTC) module - ginamit upang maitala ang timestamp kung saan ginanap ang mga gawain, at, sa paghahambing ng huling oras sa kasalukuyang oras, tukuyin kung aling mga gawain ang overdue. Tandaan na ang yunit na natanggap ko ay idinisenyo upang magamit sa isang rechargeable LiPo na baterya (LIR2032). Gayunpaman, gumagamit ako ng isang hindi rechargeable CR2032 na baterya, kaya kailangan kong gumawa ng ilang mga pagbabago upang hindi paganahin ang singilin na circuit (hindi mo nais na subukang muling magkarga ng isang hindi na ma-rechargeable na baterya, o maaari kang harapin ang isang pagsabog….). Sa partikular, inalis ko ang resistors R4, R5, at R6, at ang diode ay minarkahan ng D1. Gumawa ako pagkatapos ng isang solder na tulay patungo sa maikling lugar kung saan naroroon ang R6. Ang mga pagbabagong ito ay isinalarawan sa larawan sa ibaba.
  • ISO14443 RFID reader + isang tag bawat gumagamit- bilang isang paraan ng "gamifying" ang system, ang bawat isa sa aking mga anak ay may sariling natatanging RFID tag. Ang pagpili ng isang gawain at pagkatapos ang paglalagay ng kanilang tag sa mambabasa ay ang magiging mekanismo na ginamit upang markahan ang isang gawain bilang kumpleto
  • 16x2 LCD display - ginamit upang maibigay ang interface ng gumagamit sa system. Sa pamamagitan ng paggamit ng isang board na may isang mahalagang PCF8574A backpack, ang board ay maaaring konektado sa pamamagitan ng isang I2C interface sa Arduino, na pinapasimple ang mga kable nang malaki.
  • Ang Rotary Encoder - ay magiging pangunahing control knob kung aling mga gumagamit ang magpapasara upang pumili ng iba't ibang magagamit na mga gawain
  • Ang mga konektor ng Wago - ang mga snap-shut konektor na ito ay isang maginhawang paraan upang magkasama ang mga bahagi ng kawad o lumikha ng mga simpleng busse para sa maraming mga module na bawat isa ay nangangailangan ng karaniwang supply ng ground o 5V.

Hakbang 2: Mga kable

Kable
Kable

Ang 16x2 LCD display at DS1307 RTC ay parehong gumagamit ng isang I2C interface, na kung saan ay maginhawa dahil ginagawang mas simple ang mga kable, na nangangailangan lamang ng isang pares ng mga wire na papunta sa A4 (SDA) at A5 (SCL) na mga pin ng Arduino

Ang MFRC-522 RFID reader ay gumagamit ng isang interface ng SPI, na gumagamit ng nakapirming mga hardware pin 11 (MOSI), 12 (MISO), at 13 (SCK). Nangangailangan din ito ng isang pumili ng alipin at i-reset ang linya, na aking itinalaga sa mga pin 10 at 9 ayon sa pagkakabanggit

Ang rotary encoder ay nangangailangan ng isang pares ng mga pin. Para sa pinakamainam na pagganap, pinakamahusay kung ang mga pin na ito ay maaaring hawakan ang mga panlabas na pagkagambala, kaya gumagamit ako ng mga digital na pin 2 at 3. Maaari mo ring i-click ang encoder bilang isang switch, at na-wire ko ito sa pin 4. Kahit na hindi ito kasalukuyang ginagamit sa code, maaari mong makita na kapaki-pakinabang para sa pagdaragdag ng mga karagdagang tampok

Para sa kaginhawaan, gumagamit ako ng mga bloke ng konektor ng WAGO 222-series. Ito ang mga snap-shut konektor na nagbibigay ng isang matatag, madaling paraan ng pagkonekta saanman sa pagitan ng 2 at 8 na mga wire nang magkakasama, at napaka-maginhawa para sa mga proyekto ng Arduino na nangangailangan ng maraming mga module na magbahagi ng isang ground o 5V na linya, o kung saan mayroon kang maraming mga aparato sa parehong I2C o SPI bus, sabihin

Inilalarawan ng diagram kung paano ang lahat ay sama-sama na nai-wire.

Hakbang 3: Konstruksiyon

Lumikha ako ng isang napaka-pangunahing naka-print na kaso ng 3D upang mapaloob ang electronics. Naglagay ako ng ilang mga magnet sa likuran upang ang unit ay ma-secure sa gilid ng palamigan, tulad ng naunang naka-print na listahan. Iniwan ko rin ang USB socket na nakalantad, dahil magagamit ito kung kailangan ng mga bagong gawain na maidagdag sa system, o upang mag-log on at mag-download ng isang hanay ng data na nagpapakita ng mga nakumpletong gawain atbp.

Hindi ko nai-save ang mga file ng STL pagkatapos ng pag-print, ngunit maraming mga katulad (at, marahil mas mahusay!) Mga kaso na magagamit sa thingiverse.com. Bilang kahalili, maaari kang bumuo ng isang magandang kahon na gawa sa kahoy, o gumamit lamang ng isang lumang kahon ng karton o lalagyan ng tupperware upang maitabi ang mga electronics.

Hakbang 4: Code

Code
Code

Ang code na ganap na nagkomento ay nakakabit bilang isang pag-download sa ibaba. Narito ang ilan sa mga pinakamahalagang puntos na dapat tandaan:

Lumikha ako ng isang pasadyang istraktura, "gawain", na kung saan ay isang yunit ng data na encapsulate ang lahat ng mga katangian ng isang gawain sa isang solong entity. Ang mga gawain ay binubuo ng isang pangalan, na magiging kung paano lumitaw ang mga ito sa display ng LCD (at samakatuwid ay limitado sa 16 na mga character), ang dalas na kailangan nilang gampanan, at kailan at kanino sila huling natapos

gawain ng istraktura {

char taskName [16]; // Ang maikli, "magiliw" na pangalan para sa gawaing ito na lilitaw sa display int repeEachXDays; // Regularity, sa mga araw, kung saan inuulit ang gawaing ito. 1 = Pang-araw-araw, 7 = Lingguhan atbp. // Timestamp kung saan ang gawaing ito ay huling natapos int lastCompletedBy; // ID ng taong huling nakumpleto ang gawaing ito};

Ang pangunahing istraktura ng data ay tinatawag na "taskList", na kung saan ay simpleng isang hanay ng magkakahiwalay na gawain. Maaari mong tukuyin ang alinmang mga gawain na nais mo dito, na pinasimulan sa isang halaga ng 0 para sa oras kung saan sila huling natapos, at -1 para sa ID ng gumagamit na huling gumanap sa kanila

task taskList [numTasks] = {

Sa seksyon ng mga pare-pareho sa tuktok ng code, mayroong isang solong halaga ng byte na tinatawag na "eepromSignature". Ginamit ang halagang ito upang matukoy kung ang data na nakaimbak sa EEPROM ay wasto. Kung binago mo ang istraktura ng item ng listahan ng gawain, sa pamamagitan ng pagdaragdag o pag-alis ng mga gawain, o pagdaragdag ng mga karagdagang larangan, sabihin, dapat mong dagdagan ang halagang ito. Maaari mong isipin ito tulad ng isang pangunahing sistema ng pagnunumero ng bersyon para sa data

const byte eepromSignature = 1;

Sa pagsisimula, susubukan lamang ng programa na mag-load ng data na nakaimbak sa EEPROM kung tumutugma ito sa lagda ng data na tinukoy sa code.

void restoreFromEEPROM () {

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

Ang display ng LCD at ang module ng RTC ay gumagamit ng interface ng I2C upang makipag-usap sa Arduino. Kinakailangan nito ang bawat aparato na magkaroon ng isang natatanging I2C address. Sinubukan ko ang ilang magkakaibang mga 16x2 display board, at ang ilan ay tila gumagamit ng address na 0x27, habang ang iba pang mga tila magkaparehong board ay gumagamit ng 0x3f. Kung nakita mo ang iyong display ay nagpapakita lamang ng isang serye ng mga parisukat at walang teksto, subukang baguhin ang halaga ng address na tinukoy sa code dito:

LiquidCrystal_PCF8574 lcd (0x27);

Kapag nakita ang isang tag na RFID, binabasa ng code ang 4-byte identifier, at ginagamit ito upang subukang tingnan ang kaukulang gumagamit mula sa talahanayan ng mga kilalang gumagamit. Kung hindi nakilala ang tag, ang 4 byte identifier ay ipapadala sa serial monitor console:

int GetUserFromRFIDTag (byte RFID ) {

para sa (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, sizeof userList .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Hindi kilalang RFID card ang nakita:")); para sa (byte i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serial.print (RFID , HEX); } bumalik -1; }

Upang makapagtalaga ng isang tag sa isang gumagamit, dapat mong kopyahin ang ipinakitang ID at ipasok ang 4-byte na halaga sa hanay ng mga gumagamit sa tuktok ng code, sa tabi ng kaukulang gumagamit:

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

Hakbang 5: Paggamit

Paggamit
Paggamit
Paggamit
Paggamit

Kung nagawa mo ito hanggang ngayon, ang paggamit ng system ay dapat na medyo implicit mula sa code; sa anumang oras, maaaring i-on ng mga gumagamit ang rotary knob upang mag-scroll sa listahan ng mga magagamit na gawain. Ang mga gawain na overdue ay minarkahan ng isang asterisk pagkatapos ng kanilang pamagat.

Ang pagkakaroon ng napiling isang gawain na isasagawa, ang mga gumagamit ay maaaring mag-scan ng kanilang sariling natatanging RFID fob sa buong mambabasa upang markahan ang gawain bilang kumpleto. Ang kanilang ID at ang kasalukuyang oras ay maitatala at mai-save sa EEPROM ng Arduino.

Upang mai-set up muna ang tamang mga RFID tag, dapat mong patakbuhin ang sketch na may naka-attach na serial monitor ng Arduino. I-scan ang bawat tag at tandaan ang halagang 4-byte hex UID na ipinapakita sa serial monitor. Pagkatapos ay baguhin ang listahan ng gumagamit na idineklara sa tuktok ng code upang maitalaga ang tag ID na ito sa naaangkop na gumagamit.

Isinasaalang-alang ko ang pagdaragdag ng pag-andar upang mai-print ang isang ulat na ipinapakita ang lahat ng mga gawain na nakumpleto, ng gumagamit, sa huling linggo upang makapaglaan ng naaangkop na gantimpala ng bulsa ng pera sa bawat linggo. Gayunpaman, tulad ng nangyari, ang aking mga anak ay tila nasiyahan sa pagiging bago ng paggamit ng system na nakalimutan ang tungkol sa mga gantimpala ng bulsa ng pera! Ito ay magiging isang simpleng simpleng karagdagan gayunpaman, at naiwan bilang isang ehersisyo para sa mambabasa:)

Inirerekumendang: