Sisällysluettelo:

Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä: 5 vaihetta (kuvilla)
Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä: 5 vaihetta (kuvilla)

Video: Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä: 5 vaihetta (kuvilla)

Video: Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä: 5 vaihetta (kuvilla)
Video: Обнаружение и удаление скрытого майнера #майнер 2024, Heinäkuu
Anonim
Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä
Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä
Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä
Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä

Halusin yrittää käsitellä todellista kotitalouksessamme (ja kuvittelen, että monien muiden lukijoiden ongelmaa) esiintyvää ongelmaa, eli kuinka jakaa, motivoida ja palkita lapseni kotitöissä auttamisesta.

Tähän asti olemme pitäneet laminoidun A4 -paperiarkin kiinni jääkaapin kyljessä. Siihen on painettu tehtävien ruudukko ja siihen liittyvät taskurahat, jotka voitaisiin ansaita tehtävän suorittamisesta. Ajatuksena on, että joka kerta, kun yksi lapsistamme auttaa työssä, he saavat rastiin tähän ruutuun ja laskemme joka viikon lopussa ansaitut rahat yhteen, pyyhimme taulun ja aloitamme alusta. Tehtävälista on kuitenkin vanhentunut ja sitä on vaikea muuttaa, toisinaan emme muista pyyhkiä taulua puhtaaksi joka viikko, ja jotkut tehtävät on suoritettava eri taajuuksilla-jotkut olisi parasta tehdä päivittäin, kun taas toiset voivat olla vain kerran kuukaudessa. Joten ryhdyin luomaan Arduino -pohjaisen laitteen näiden ongelmien ratkaisemiseksi - tarkoitukseni oli luoda jotain, joka mahdollistaa tehtävien helpon lisäämisen/poistamisen/päivittämisen, virtaviivaisen mekanismin tehtävän suorittamisen tallentamiseen ja luoton myöntämiseen sopiva tapa ja tapa seurata eri aikatauluja ja taajuuksia, joilla eri tehtävät on suoritettava, ja korostaa myöhässä olevia tehtäviä. Ja tämä opettavainen näyttää, miten tuloksena oleva "Tehtävienhallinta" -laite tuli ulos.

Vaihe 1: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto

Projektissa hyödynnetään useita hyvin käytettyjä ja dokumentoituja laitteistokomponentteja:

  • Arduino UNO/Nano - tämä on järjestelmän "aivot". Sisäänrakennettua EEPROM -muistia käytetään tehtävien tilan tallentamiseen, vaikka järjestelmä olisi sammutettu. Johdotuksen helpottamiseksi olen asentanut Nanon ruuvisuojaan, mutta voit halutessasi juottaa tai käyttää puristettuja liitäntöjä GPIO -nastoihin.
  • Real -Time Clock (RTC) -moduuli - käytetään tehtävien suorittamisen aikaleiman tallentamiseen ja viimeisten aikojen vertaamiseen nykyiseen aikaan. Huomaa, että vastaanottamani yksikkö on suunniteltu käytettäväksi ladattavan LiPo -akun (LIR2032) kanssa. Käytän kuitenkin ei-ladattavaa CR2032-akkua, joten minun piti tehdä muutamia muutoksia latauspiirin poistamiseksi käytöstä (et halua yrittää ladata ei-ladattavaa akkua, tai saatat kohdata räjähdyksen …).). Erityisesti poistin vastukset R4, R5 ja R6 ja diodin, joka oli merkitty D1. Sitten loin juotosillan oikosulkuun, missä R6 oli ollut. Nämä muutokset on kuvattu alla olevassa kuvassa.
  • ISO14443 RFID-lukija + yksi tunniste käyttäjää kohti- tapa "pelata" järjestelmää, jokaisella lapsellani on oma ainutlaatuinen RFID-tunniste. Tehtävän valitsemiseksi ja sen pyyhkäisemiseksi lukijan poikki on mekanismi, jolla tehtävää merkitään valmiiksi
  • 16x2 LCD -näyttö - käytetään käyttöliittymän tarjoamiseen järjestelmään. Käyttämällä korttia, jossa on kiinteä PCF8574A -reppu, levy voidaan liittää I2C -liitännän kautta Arduinoon, mikä yksinkertaistaa johdotusta merkittävästi.
  • Rotary Encoder - on tärkein säätönuppi, jota käyttäjät kääntävät valitakseen erilaisia käytettävissä olevia tehtäviä
  • Wago -liittimet - nämä pikaliittimet ovat kätevä tapa kytkeä komponentit yhteen tai luoda yksinkertaisia väyliä useille moduuleille, jotka kumpikin vaativat yhteisen maadoituksen tai 5 V: n jännitteen.

Vaihe 2: Johdotus

Johdotus
Johdotus

16x2 LCD -näyttö ja DS1307 RTC käyttävät kumpikin I2C -liitäntää, mikä on kätevää, koska se tekee johdotuksesta paljon yksinkertaisempaa

MFRC-522 RFID -lukija käyttää SPI-rajapintaa, joka käyttää kiinteitä laitteistotappeja 11 (MOSI), 12 (MISO) ja 13 (SCK). Se vaatii myös orjavalinta- ja nollauslinjan, jotka olen määrittänyt nastoille 10 ja 9

Pyörivä anturi vaatii parin tappeja. Optimaalisen suorituskyvyn saavuttamiseksi on parasta, jos nämä nastat voivat käsitellä ulkoisia keskeytyksiä, joten käytän digitaalisia nastoja 2 ja 3. Voit myös napsauttaa kooderia sisään kytkimenä, ja olen kytkenyt tämän nastaan 4. Vaikka se ei ole jota käytetään tällä hetkellä koodissa, se saattaa olla hyödyllistä lisäominaisuuksien lisäämisessä

Käytän mukavuuden vuoksi WAGO 222-sarjan liitinlohkoja. Nämä ovat pikakiinnitteisiä liittimiä, jotka tarjoavat vankan ja helpon tavan yhdistää 2-8 johtoa yhteen, ja ne ovat erittäin käteviä Arduino-projekteille, jotka vaativat useita moduuleja maadoitus- tai 5 V-linjan jakamiseen, tai joissa sinulla on useita laitteita sama I2C- tai SPI -väylä

Kaavio kuvaa kuinka kaikki on kytketty yhteen.

Vaihe 3: Rakentaminen

Tein hyvin yksinkertaisen 3D -tulostetun kotelon elektroniikan tallentamiseksi. Laitoin taakse magneetteja, jotta yksikkö voidaan kiinnittää jääkaapin sivulle, aivan kuten edellinen painettu luettelo. Jätin myös USB -liitännän näkyviin, koska tätä käytetään, jos järjestelmään on lisättävä uusia tehtäviä tai kirjauduttava sisään ja ladattava tietosarja, joka näyttää valmiit tehtävät jne.

En tallentanut STL -tiedostoja tulostuksen jälkeen, mutta osoitteessa thingiverse.com on paljon vastaavia (ja luultavasti parempia!) Tapauksia. Vaihtoehtoisesti voit rakentaa mukavan puulaatikon tai käyttää vain vanhaa pahvilaatikkoa tai tupperware -astiaa elektroniikan sijoittamiseen.

Vaihe 4: Koodi

Koodi
Koodi

Täysin kommentoitu koodi on alla ladattavana. Tässä muutamia tärkeitä huomioitavia kohtia:

Olen luonut mukautetun rakenteen, "task", joka on tietoyksikkö, joka kiteyttää kaikki tehtävän ominaisuudet yhteen entiteettiin. Tehtävät koostuvat nimestä, jonka mukaan ne näkyvät nestekidenäytössä (ja siten vain 16 merkkiä), niiden suorittamisen taajuudesta ja siitä, milloin ja kuka viimeksi suoritti ne

strukturointitehtävä {

char taskName [16]; // Tämän tehtävän lyhyt, "ystävällinen" nimi, joka näkyy näytössä int RepeEEXXDays; // Säännöllisyys päivinä, joilla tämä tehtävä toistetaan. 1 = päivittäinen, 7 = viikoittainen jne. Unsigned long lastCompletedTime; // Aikaleima, jolloin tämä tehtävä viimeksi suoritettiin int lastCompletedBy; // Tämän tehtävän viimeksi suorittaneen henkilön tunnus};

Päätietorakenne on nimeltään "taskList", joka on yksinkertaisesti joukko erillisiä tehtäviä. Tässä voit määrittää haluamasi tehtävät, jotka alustetaan arvolla 0 viimeisimmän suoritusajankohdan osalta ja -1 viimeksi suorittaneen käyttäjän tunnukselle

tehtävä taskList [numTasks] = {

Koodin yläosan vakio -osiossa on yksi tavuarvo nimeltä "eepromSignature". Tätä arvoa käytetään määrittämään, ovatko EEPROMiin tallennetut tiedot kelvollisia. Jos muutat taskList -kohteen rakennetta lisäämällä tai poistamalla tehtäviä tai lisäämällä kenttiä, sinun pitäisi esimerkiksi lisätä tätä arvoa. Voit ajatella sitä kuin tietojen perusversioiden numerointijärjestelmää

const tavu eepromSignature = 1;

Käynnistyksen yhteydessä ohjelma yrittää ladata EEPROMiin tallennettuja tietoja vain, jos se vastaa koodissa määritettyjen tietojen allekirjoitusta.

void restoreFromEEPROM () {

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

LCD -näyttö ja RTC -moduuli käyttävät I2C -rajapintaa kommunikoidakseen Arduinon kanssa. Tämä edellyttää, että jokaisella laitteella on yksilöllinen I2C -osoite. Olen kokeillut paria erilaista 16x2 -näyttötaulua, ja jotkut näyttävät käyttävän osoitetta 0x27, kun taas muut näennäisesti identtiset levyt käyttävät 0x3f. Jos huomaat, että näyttösi näyttää vain sarjan neliöitä eikä tekstiä, yritä muuttaa koodissa määritettyä osoitearvoa täällä:

LiquidCrystal_PCF8574 lcd (0x27);

Kun RFID-tunniste havaitaan, koodi lukee 4-tavun tunnisteen ja yrittää sen avulla etsiä vastaavan käyttäjän tunnettujen käyttäjien taulukosta. Jos tunnistetta ei tunnisteta, 4 tavun tunniste lähetetään sarjamonitorikonsoliin:

int GetUserFromRFIDTag (tavu RFID ) {

for (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, useroflist .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Tuntematon RFID -kortti havaittu:")); for (tavu i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Sarjajälki (RFID , HEX); } paluu -1; }

Jos haluat liittää tunnisteen käyttäjälle, sinun on kopioitava näytetty tunnus ja lisättävä 4 tavun arvo käyttäjäryhmään koodin yläosassa vastaavan käyttäjän vieressä:

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

Vaihe 5: Käyttö

Käyttö
Käyttö
Käyttö
Käyttö

Jos olet päässyt tähän asti, järjestelmän käytön pitäisi olla melko epäsuoraa koodista; käyttäjät voivat milloin tahansa kääntää kiertonuppia selatakseen käytettävissä olevien tehtävien luetteloa. Myöhästyneet työt on merkitty otsikolla tähdellä.

Kun käyttäjät ovat valinneet suoritettavat tehtävät, he voivat skannata oman ainutlaatuisen RFID -tunnistimensa lukijan yli merkitäkseen tehtävän valmiiksi. Heidän henkilöllisyytensä ja nykyinen aika tallennetaan ja tallennetaan Arduinon EEPROMiin.

Jotta voit ensin asettaa oikeat RFID -tunnisteet, sinun on suoritettava luonnos Arduino -sarjamonitorin ollessa liitettynä. Skannaa jokainen tunniste ja ota huomioon sarjamonitorissa näkyvä 4-tavuinen heksadesimaali-UID-arvo. Muokkaa sitten koodin yläosassa ilmoitettua käyttäjäluetteloa ja määritä tämä tunnistetunnus sopivalle käyttäjälle.

Harkitsin toiminnallisuuden lisäämistä raportin tulostamiseksi, jossa näkyvät kaikki käyttäjän viimeisen viikon aikana suorittamat tehtävät, jotta voisin jakaa sopivan taskurahapalkkion joka viikko. Kuitenkin, kuten tapahtuu, lapseni näyttävät olevan tyytyväisiä järjestelmän käyttämisen uutuuteen, koska he ovat unohtaneet taskurahapalkinnot kokonaan! Tämä olisi kuitenkin melko yksinkertainen lisäys, ja se jätetään lukijan harjoitukseksi:)

Suositeltava: