Kazalo:
Video: Upravitelj opravil - sistem za upravljanje gospodinjskih opravil: 5 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Ž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
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
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
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
Č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:
Vgrajen upravitelj oken: 10 korakov
Vgrajeni upravitelj oken: Ta projekt prikazuje, kako implementirati upravitelja oken s premičnimi prekrivajočimi se okni na vgrajenem mikrokrmilniku z LCD-zaslonom in zaslonom na dotik. Za to obstajajo komercialno dostopni programski paketi, vendar stanejo denarja in so blizu
GENERATOR SONČNE ENERGIJE - Energija od sonca do vsakodnevnih gospodinjskih aparatov: 4 koraki
GENERATOR SONČNE ENERGIJE | Energija od sonca do vsakodnevnih gospodinjskih aparatov: To je zelo preprost znanstveni projekt, ki temelji na pretvorbi sončne energije v uporabno električno energijo. Uporablja regulator napetosti in nič drugega. Izberite vse komponente in se pripravite na super projekt, ki vam bo pomagal
Upravitelj gesel, tip, makro, koristna obremenitev Vse v enem!: 11 korakov (s slikami)
Upravitelj gesel, tip, makro, koristna obremenitev … Vse v enem !: POZOR PROSIM: Če imate težave pri izdelavi te naprave (pcb, spajkanje ali drugo), mi pošljite zasebno sporočilo tukaj ali e -pošto na [email protected]. Z veseljem pošljem eno od tiskalnikov ali naprav, ki jih že izdelujem
Nadzor gospodinjskih aparatov z uporabo NodeMCU (ESP8266) in aplikacije Blynk: 8 korakov (s slikami)
Nadzor gospodinjskih aparatov z uporabo NodeMCU (ESP8266) in aplikacije Blynk: V tej vadnici se bomo naučili uporabljati aplikacijo Blynk in NodeMCU (ESP8266) za nadzor svetilke (kateri koli drugi gospodinjski aparati bodo v redu), kombinacija bo biti prek interneta. Namen tega navodila je pokazati preprostost
Upravitelj odnosov v družabnem krogu: 7 korakov (s slikami)
Upravitelj odnosov v socialnem krogu: kaj je to? Ohranjanje stikov z vsemi pomembnimi ljudmi v vašem družabnem krogu je lahko težko, še posebej, če živite v velikem mestu, deloholik, študent ali vse zgoraj našteto. Socialni krog ponuja način, da vse svoje ljubljene obdržite v enem