Kazalo:

Upravitelj opravil - sistem za upravljanje gospodinjskih opravil: 5 korakov (s slikami)
Upravitelj opravil - sistem za upravljanje gospodinjskih opravil: 5 korakov (s slikami)

Video: Upravitelj opravil - sistem za upravljanje gospodinjskih opravil: 5 korakov (s slikami)

Video: Upravitelj opravil - sistem za upravljanje gospodinjskih opravil: 5 korakov (s slikami)
Video: У Клиента ВШИ! Моя Смешная История!:)) Откуда берутся вши! Вши как избавиться! 2024, November
Anonim
Upravitelj opravil - sistem za upravljanje gospodinjskih opravil
Upravitelj opravil - sistem za upravljanje gospodinjskih opravil
Upravitelj opravil - sistem za upravljanje gospodinjskih opravil
Upravitelj opravil - sistem za upravljanje gospodinjskih opravil

Želel sem poskusiti odpraviti resničen problem, s katerim se srečujemo v našem gospodinjstvu (in, predvidevam, tudi mnogih drugih bralcev), in sicer, kako dodeliti, motivirati in nagraditi svoje otroke za pomoč pri gospodinjskih opravilih.

Do sedaj smo ob strani hladilnika držali lepljen list papirja A4. Nanjo je natisnjena mreža nalog, s pripadajočimi zneski žepnine, ki bi jih lahko zaslužili za dokončanje te naloge. Ideja je, da vsakič, ko eden od naših otrok pomaga pri opravilih, dobijo kljukico v polju in na koncu vsakega tedna seštejemo zasluženi denar, obrišemo desko in začnemo znova. Seznam opravil pa je zastarel in ga je težko spremeniti, včasih se ne spomnimo, da ploščo obrišemo vsak teden, nekatere naloge pa je treba izvajati z različnimi frekvencami-nekatere bi bilo idealno opraviti vsak dan, medtem ko drugi so lahko le enkrat na mesec. Zato sem se lotil ustvarjanja naprave na osnovi Arduina za reševanje teh težav - moj namen je bil ustvariti nekaj, kar bi omogočalo enostavno dodajanje/odstranjevanje/posodabljanje nalog, poenostavljen mehanizem za beleženje, ko je bila naloga opravljena, in dodeljevanje zaslug ustrezno osebo in način za spremljanje različnih urnikov in pogostosti, s katerimi je treba opravljati različne naloge, ter poudariti zamude. Ta navodila bodo pokazala, kako je nastala nastala naprava "Upravitelj opravil".

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Projekt uporablja več dobro uporabljenih in dokumentiranih komponent strojne opreme:

  • Arduino UNO/Nano - to so "možgani" sistema. Vgrajeni pomnilnik EEPROM bo uporabljen za shranjevanje stanja opravil, tudi če je sistem izklopljen. Zaradi lažjega ožičenja sem Nano namestil na ščitnik za vijake, vendar lahko po želji spajkate ali uporabite stisnjene povezave z zatiči GPIO.
  • Modul ure v realnem času (RTC) - uporablja se za beleženje časovnega žiga, pri katerem so bile naloge izvedene, in s primerjavo zadnjega časa s trenutnim časom ugotavljanje, katere naloge so zapadle. Upoštevajte, da je bila enota, ki sem jo prejel, zasnovana za uporabo s polnilno baterijo LiPo (LIR2032). Uporabljam pa baterijo CR2032, ki je ni mogoče polniti, zato sem moral narediti nekaj sprememb, da onemogočim polnilno vezje (ne želite poskusiti napolniti baterije, ki je ni mogoče polniti, ali pa bi se lahko soočili z eksplozijo …).). Natančneje, odstranil sem upor R4, R5 in R6 ter diodo z oznako D1. Nato sem ustvaril spajkalni most do mesta, kjer je bil R6. Te spremembe so prikazane na spodnji fotografiji.
  • Bralnik RFID ISO14443 + ena oznaka na uporabnika- kot način "igranja" sistema ima vsak od mojih otrok svojo edinstveno oznako RFID. Mehanizem za označevanje opravila kot dokončanega bo izbira opravila in nato z vlečenjem njegove oznake po bralniku
  • 16x2 LCD zaslon - uporablja se za zagotavljanje uporabniškega vmesnika v sistemu. Z uporabo plošče, ki ima vgrajen nahrbtnik PCF8574A, lahko ploščo prek vmesnika I2C povežete z Arduinom, kar bistveno poenostavi ožičenje.
  • Rotacijski dajalnik - bo glavni gumb za upravljanje, ki ga bodo uporabniki obračali za izbiro različnih razpoložljivih opravil
  • Konektorji Wago - ti zaskočni konektorji so priročen način za povezovanje komponent skupaj ali ustvarjanje preprostih vodilov za več modulov, od katerih vsak potrebuje skupno ozemljitev ali 5V napajanje.

2. korak: Ožičenje

Ožičenje
Ožičenje

16 -palčni LCD -zaslon in DS1307 RTC uporabljata vmesnik I2C, kar je priročno, saj olajša ožičenje in zahteva le par žic, ki vodijo do nožic A4 (SDA) in A5 (SCL) Arduina

Bralnik RFID MFRC-522 uporablja vmesnik SPI, ki uporablja fiksne strojne zatiče 11 (MOSI), 12 (MISO) in 13 (SCK). Zahteva tudi linijo za izbiro in ponastavitev pomožnika, ki sem jo dodelil nožicama 10 in 9

Vrtljivi dajalnik potrebuje par zatičev. Za optimalno delovanje je najbolje, če ti zatiči prenesejo zunanje prekinitve, zato uporabljam digitalne zatiče 2 in 3. Dajalnik lahko kliknete tudi kot stikalo in to sem ožičil v pin 4. Čeprav ni ki se trenutno uporablja v kodi, se vam bo zdel koristen za dodajanje dodatnih funkcij

Za udobje uporabljam priključne bloke serije WAGO 222. To so priključki s hitrim zapiranjem, ki zagotavljajo robusten in enostaven način povezovanja kjer koli med 2 in 8 žicami skupaj in so zelo priročni za projekte Arduino, ki potrebujejo več modulov za skupno uporabo ozemljitvenega ali 5-voltnega voda, ali če imate na napravi več naprav. isto vodilo I2C ali SPI, recimo

Diagram prikazuje, kako je vse povezano.

3. korak: Gradnja

Ustvaril sem zelo osnovno 3D tiskano ohišje za namestitev elektronike. Na zadnjo stran sem položil nekaj magnetov, tako da je bilo enoto mogoče pritrditi na stran hladilnika, tako kot je bil prejšnji natisnjen seznam. USB vtičnico sem pustil tudi izpostavljeno, saj bi to uporabili, če bi bilo treba sistemu dodati nove naloge, ali se prijaviti in prenesti niz podatkov, ki prikazujejo opravljena opravila itd.

Datotek STL po tiskanju nisem shranil, vendar je na thingiverse.com na voljo veliko podobnih (in verjetno bolje!) Primerov. Druga možnost je, da zgradite lepo leseno škatlo ali preprosto uporabite staro kartonsko škatlo ali posodo za tupperware za shranjevanje elektronike.

4. korak: Koda

Koda
Koda

Popolnoma komentirana koda je priložena kot prenos spodaj. Tu je nekaj pomembnejših točk, ki jih je treba upoštevati:

Ustvaril sem strukturo po meri "opravilo", ki je enota podatkov, ki zajema vse lastnosti naloge v eni entiteti. Naloge so sestavljene iz imena, ki se bo prikazalo na LCD zaslonu (zato omejeno na 16 znakov), pogostosti, s katero jih je treba izvesti, ter kdaj in kdo so jih nazadnje dokončali

struct opravilo {

char taskName [16]; // Kratko, "prijazno" ime za to nalogo, ki bo prikazano na zaslonu int repeatEachXDays; // Rednost, v dneh, s katerimi se ta naloga ponovi. 1 = dnevno, 7 = tedensko itd. Brez podpisa dolgo lastCompletedTime; // Časovni žig, pri katerem je bila ta naloga nazadnje dokončana int lastCompletedBy; // ID osebe, ki je nazadnje opravila to nalogo};

Glavna struktura podatkov se imenuje "taskList", ki je preprosto niz ločenih nalog. Tu lahko določite katera koli opravila, ki se inicializirajo z vrednostjo 0 za čas, ko so bili nazadnje dokončani, in -1 za ID uporabnika, ki jih je nazadnje izvedel

opravilo taskList [numTasks] = {

V razdelku konstante na vrhu kode je ena bajtna vrednost, imenovana "eepromSignature". Ta vrednost se uporablja za ugotavljanje, ali so podatki, shranjeni v EEPROM -u, veljavni. Če spremenite strukturo elementa taskList z dodajanjem ali odstranjevanjem opravil ali dodajanjem dodatnih polj, recimo, morate to vrednost povečati. Zamislite si ga lahko kot osnovni sistem oštevilčevanja različic podatkov

const byte eepromSignature = 1;

Ob zagonu bo program poskušal naložiti podatke, shranjene v EEPROM -u, če se ujemajo s podpisom podatkov, opredeljenih v kodi.

void restoreFromEEPROM () {

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

LCD zaslon in modul RTC uporabljata vmesnik I2C za komunikacijo z Arduinom. To zahteva, da ima vsaka naprava edinstven naslov I2C. Poskusil sem nekaj različnih zaslonskih plošč 16x2 in nekatere se zdi, da uporabljajo naslov 0x27, medtem ko druge na videz enake plošče uporabljajo 0x3f. Če ugotovite, da vaš zaslon prikazuje samo niz kvadratov in brez besedila, poskusite spremeniti vrednost naslova, opredeljeno v kodi tukaj:

LiquidCrystal_PCF8574 lcd (0x27);

Ko zazna RFID oznako, koda prebere 4-bajtni identifikator in z njo poskuša poiskati ustreznega uporabnika iz tabele znanih uporabnikov. Če oznaka ni prepoznana, bo 4 -bajtni identifikator poslan na konzolo serijskega monitorja:

int GetUserFromRFIDTag (bajt RFID ) {

for (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, sizeof userList .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Zaznana neznana kartica RFID:")); for (bajt i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serijski.tisk (RFID , HEX); } return -1; }

Če želite uporabniku dodeliti oznako, morate kopirati prikazani ID in vstaviti 4-bajtno vrednost v polje uporabnikov na vrhu kode poleg ustreznega uporabnika:

const userList [numUsers] = {{1, "Ginny", {0x00, 0x00, 0x00, 0x00}}, {2, "Harry", {0x12, 0x34, 0x56, 0x78}}, {3, "Ron", {0xE8, 0x06, 0xC2, 0x49}}, {4, "Hermiona", {0x12, 0x34, 0x56, 0x78}}, {5, "Alastair", {0x12, 0x34, 0x56, 0x78}},};

5. korak: Uporaba

Uporaba
Uporaba
Uporaba
Uporaba

Če ste prišli tako daleč, bi morala biti uporaba sistema precej implicitna iz kode; uporabniki se lahko kadar koli obrnejo z vrtljivim gumbom, da se pomikajo po seznamu razpoložljivih opravil. Zamudna opravila so označena z zvezdico za naslovom.

Ko so izbrali opravilo, lahko uporabniki nato po bralniku poiščejo svoj edinstven RFID fob, da označijo nalogo kot dokončano. Njihov ID in trenutni čas se zapišeta in shranita v EEPROM Arduina.

Če želite najprej nastaviti pravilne oznake RFID, zaženite skico s priključenim serijskim monitorjem Arduino. Skenirajte vsako oznako in upoštevajte 4-bajtno šestnajstiško vrednost UID, prikazano na serijskem monitorju. Nato spremenite seznam uporabnikov, naveden na vrhu kode, da temu ID -ju oznake dodelite ustreznega uporabnika.

Razmišljal sem o dodajanju funkcionalnosti za tiskanje poročila, ki prikazuje vse opravljene naloge, ki so jih uporabniki opravili v zadnjem tednu, da bi vsak teden dodelili ustrezno nagrado žepnine. Vendar se zdi, da so moji otroci zadovoljni z novostjo uporabe sistema, saj so popolnoma pozabili na nagrade za žepnino! To pa bi bil dokaj preprost dodatek in bralcu ostane kot vaja:)

Priporočena: