Obsah:

Správca úloh - Systém správy chorey domácnosti: 5 krokov (s obrázkami)
Správca úloh - Systém správy chorey domácnosti: 5 krokov (s obrázkami)

Video: Správca úloh - Systém správy chorey domácnosti: 5 krokov (s obrázkami)

Video: Správca úloh - Systém správy chorey domácnosti: 5 krokov (s obrázkami)
Video: 33. zasadnutie Mestského zastupiteľstva v Žiline | 20.6.2022 2024, Júl
Anonim
Správca úloh - systém správy chore domácnosti
Správca úloh - systém správy chore domácnosti
Správca úloh - systém správy chore domácnosti
Správca úloh - systém správy chore domácnosti

Chcela som sa pokúsiť vyriešiť skutočný problém, s ktorým sa stretávame v našej domácnosti (a predpokladám, že aj u mnohých ďalších čitateľov), a to rozdeliť, motivovať a odmeniť moje deti za pomoc s domácimi prácami.

Doteraz sme nechali laminovaný list papiera formátu A4 prilepený k boku chladničky. Je na ňom vytlačená mriežka úloh so súvisiacim množstvom vreckového, ktoré je možné zarobiť na splnení tejto úlohy. Ide o to, že zakaždým, keď jedno z našich detí pomôže s prácou, dostane zaškrtnutie v tomto políčku a na konci každého týždňa zrátame zarobené peniaze, utrieme dosku a začneme znova. Zoznam úloh je však zastaraný a je ťažké ho zmeniť. Niekedy si nepamätáme, že by sme dosku každý týždeň vymazali a niektoré úlohy je potrebné vykonávať s rôznymi frekvenciami-niektoré by sa v ideálnom prípade vykonávali denne, zatiaľ čo ostatné môžu byť iba raz za mesiac. Začal som teda vytvárať zariadenie založené na Arduine na riešenie týchto problémov - mojim zámerom bolo vytvoriť niečo, čo by umožňovalo ľahké pridávanie/odstraňovanie/aktualizáciu úloh, efektívny mechanizmus na zaznamenávanie vykonaných úloh a prideľovanie kreditu vhodnú osobu a spôsob, ako sledovať rôzne plány a frekvenciu, s ktorou je potrebné vykonávať rôzne úlohy, a upozorniť na úlohy po lehote splatnosti. A tento návod ukáže, ako vzniklo výsledné zariadenie „Správca úloh“.

Krok 1: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér

Projekt využíva niekoľko dobre používaných a zdokumentovaných hardvérových komponentov:

  • Arduino UNO/Nano - to sú „mozgy“systému. Vstavaná pamäť EEPROM sa použije na uloženie stavu úloh, aj keď je systém vypnutý. Aby sa uľahčilo zapojenie, namontoval som Nano na skrutkový štít, ale ak chcete, môžete namiesto toho spájkovať alebo použiť krimpované spojenia s kolíkmi GPIO.
  • Modul hodín v reálnom čase (RTC) - slúži na zaznamenanie časovej pečiatky, v ktorej sa úlohy vykonávali, a porovnaním posledného času s aktuálnym časom určuje, ktoré úlohy sú po termíne. Upozorňujeme, že jednotka, ktorú som dostal, bola navrhnutá na použitie s nabíjateľnou batériou LiPo (LIR2032). Používam však nenabíjateľnú batériu CR2032, takže som potreboval vykonať niekoľko úprav, aby som deaktivoval nabíjací obvod (nechcete sa pokúšať dobíjať nenabíjateľnú batériu, inak vám môže hroziť výbuch …). Konkrétne som odstránil odpory R4, R5 a R6 a diódu s označením D1. Potom som vytvoril spájkovací mostík, ktorý skracoval miesto, kde bola R6. Tieto zmeny sú znázornené na fotografii nižšie.
  • Čítačka RFID ISO14443 + jeden štítok na používateľa- ako spôsob „gamifikácie“systému má každé moje dieťa svoj vlastný jedinečný štítok RFID. Mechanizmus použitý na označenie úlohy ako dokončenej bude výber úlohy a prejdenie ich štítkom po čítačke
  • 16x2 LCD displej - slúži na poskytovanie užívateľského rozhrania systému. Použitím dosky, ktorá má integrovaný batoh PCF8574A, môže byť doska pripojená cez rozhranie I2C k Arduinu, čo výrazne zjednodušuje zapojenie.
  • Rotačný kodér - bude hlavným ovládacím gombíkom, pomocou ktorého budú používatelia vyberať rôzne dostupné úlohy
  • Konektory Wago - tieto rýchlospojkové konektory predstavujú pohodlný spôsob prepojenia komponentov dohromady alebo vytvorenia jednoduchých zberníc pre niekoľko modulov, z ktorých každý vyžaduje spoločné uzemnenie alebo napájanie 5V.

Krok 2: Zapojenie

Elektrické vedenie
Elektrické vedenie

LCD displej 16x2 a DS1307 RTC používajú rozhranie I2C, ktoré je praktické, pretože výrazne zjednodušuje zapojenie a vyžaduje iba dvojicu vodičov, ktoré vedú k pinom Arduino A4 (SDA) a A5 (SCL)

Čítačka RFID MFRC-522 používa rozhranie SPI, ktoré používa pevné hardvérové piny 11 (MOSI), 12 (MISO) a 13 (SCK). Vyžaduje to tiež riadok na výber a reset podriadeného zariadenia, ktorý som priradil pinom 10 a 9

Rotačný kodér vyžaduje dvojicu pinov. Pre optimálny výkon je najlepšie, ak tieto piny zvládnu externé prerušenia, preto používam digitálne piny 2 a 3. Kodér môžete tiež prepnúť ako prepínač a zapojil som ho do kolíka 4. Aj keď nie je V súčasnosti sa používa v kóde a môže byť užitočné pri pridávaní ďalších funkcií

Pre pohodlie používam konektorové bloky série WAGO 222. Jedná sa o rýchlospojkové konektory, ktoré poskytujú robustný a ľahký spôsob pripojenia kdekoľvek medzi 2 až 8 vodičmi, a sú veľmi vhodné pre projekty Arduino, ktoré vyžadujú zdieľanie uzemňovacieho alebo 5V vedenia niekoľkými modulmi alebo kde máte viac zariadení povedzme rovnaká zbernica I2C alebo SPI

Diagram ukazuje, ako je všetko prepojené.

Krok 3: Konštrukcia

Vytvoril som veľmi základné 3D tlačené puzdro na umiestnenie elektroniky. Na zadnú stranu som umiestnil niekoľko magnetov, aby bolo možné jednotku pripevniť na bočnú stranu chladničky, rovnako ako v predchádzajúcom vytlačenom zozname. Nechal som vystavený aj konektor USB, pretože ten by sa používal, ak by bolo potrebné do systému pridať nové úlohy alebo sa prihlásiť a stiahnuť sadu údajov zobrazujúcich dokončené úlohy atď.

Súbory STL som po vytlačení neuložil, ale podobných (a pravdepodobne ešte lepších!) Prípadov je na thingiverse.com k dispozícii veľa. Alternatívne môžete postaviť peknú drevenú škatuľu alebo na uloženie elektroniky použiť iba starú kartónovú škatuľu alebo nádobu z tupperwaru.

Krok 4: Kód

Kód
Kód

Úplne komentovaný kód je priložený k stiahnutiu nižšie. Tu je niekoľko dôležitejších bodov, ktoré je potrebné poznamenať:

Vytvoril som vlastnú štruktúru „task“, čo je jednotka údajov, ktorá zapuzdruje všetky vlastnosti úlohy do jednej entity. Úlohy pozostávajú z názvu, ktorým bude ich vzhľad na LCD displeji (a teda obmedzený na 16 znakov), frekvencia, s ktorou ich treba vykonávať a kedy a kto ich naposledy dokončil

štruktúrovaná úloha {

char taskName [16]; // Krátky „priateľský“názov tejto úlohy, ktorý sa zobrazí na displeji int repeatEachXDays; // Pravidelnosť, v dňoch, s ktorou sa táto úloha opakuje. 1 = denne, 7 = týždenne atď. Bez znamienka dlhé lastCompletedTime; // Časová pečiatka, kedy bola táto úloha naposledy dokončená int lastCompletedBy; // ID osoby, ktorá naposledy dokončila túto úlohu};

Hlavná štruktúra údajov sa nazýva „taskList“, čo je jednoducho pole samostatných úloh. Tu môžete definovať ľubovoľné úlohy, ktoré chcete inicializovať s hodnotou 0 pre čas, kedy boli naposledy dokončené, a -1 pre ID používateľa, ktorý ich naposledy vykonal

task taskList [numTasks] = {

V časti s konštantami v hornej časti kódu je jedna bajtová hodnota s názvom „eepromSignature“. Táto hodnota sa používa na určenie, či sú údaje uložené v EEPROM platné. Ak zmeníte štruktúru položky taskList pridaním alebo odstránením úloh alebo pridaním ďalších polí, povedzme, túto hodnotu by ste mali zvýšiť. Môžete si to predstaviť ako základný systém číslovania verzií údajov

const byte eepromSignature = 1;

Pri spustení sa program pokúsi načítať údaje uložené v pamäti EEPROM iba vtedy, ak sa zhodujú s podpisom údajov definovaných v kóde.

void restoreFromEEPROM () {

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

LCD displej a modul RTC používajú na komunikáciu s Arduino rozhranie I2C. To vyžaduje, aby každé zariadenie malo jedinečnú adresu I2C. Skúsil som niekoľko rôznych zobrazovacích dosiek 16x2 a niektoré zrejme používajú adresu 0x27, zatiaľ čo iné zdanlivo identické dosky používajú 0x3f. Ak zistíte, že váš displej zobrazuje iba sériu štvorcov a žiadny text, skúste zmeniť hodnotu adresy definovanú v kóde tu:

LiquidCrystal_PCF8574 lcd (0x27);

Keď je detekovaný štítok RFID, kód načíta 4-bajtový identifikátor a použije sa na to, aby sa pokúsil vyhľadať zodpovedajúceho používateľa z tabuľky známych používateľov. Ak značka nie je rozpoznaná, 4 -bajtový identifikátor bude odoslaný do konzoly sériového monitora:

int GetUserFromRFIDTag (byte 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 ("Zistená neznáma karta RFID:")); for (byte i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serial.print (RFID , HEX); } návrat -1; }

Ak chcete priradiť značku používateľovi, skopírujte zobrazené ID a vložte 4-bajtovú hodnotu do poľa užívateľov v hornej časti kódu vedľa zodpovedajúceho používateľa:

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

Krok 5: Použitie

Použitie
Použitie
Použitie
Použitie

Ak ste sa dostali až sem, používanie systému by malo byť z kódu dosť implicitné; kedykoľvek môžu užívatelia otočením otočného gombíka listovať v zozname dostupných úloh. Práce, ktoré sú po lehote splatnosti, sú za názvom označené hviezdičkou.

Po zvolení úlohy, ktorú je potrebné vykonať, môžu potom užívatelia skenovať svoj vlastný jedinečný RFID fob cez čítačku a označiť úlohu za dokončenú. Ich ID a aktuálny čas budú zaznamenané a uložené do EEPROM Arduina.

Aby ste mohli najskôr nastaviť správne tagy RFID, mali by ste skicu spustiť s pripojeným sériovým monitorom Arduino. Naskenujte každú značku a všimnite si 4-bajtovú hexadecimálnu hodnotu UID zobrazenú na sériovom monitore. Potom upravte zoznam používateľov uvedený v hornej časti kódu tak, aby priradil toto ID značky príslušnému používateľovi.

Uvažoval som o doplnení funkcií o vytlačenie správy zobrazujúcej všetky úlohy, ktoré používateľ vykonal počas minulého týždňa, aby som každý týždeň pridelil príslušnú odmenu vo vreckovom. Ako sa však stáva, moje deti sú zrejme spokojné s novinkou používania systému, že na odmeny vo vreckovom úplne zabudla! Toto by však bolo celkom jednoduché doplnenie a je ponechané ako cvičenie pre čitateľa:)

Odporúča: