Tartalomjegyzék:

Feladatkezelő - háztartási feladatkezelő rendszer: 5 lépés (képekkel)
Feladatkezelő - háztartási feladatkezelő rendszer: 5 lépés (képekkel)

Videó: Feladatkezelő - háztartási feladatkezelő rendszer: 5 lépés (képekkel)

Videó: Feladatkezelő - háztartási feladatkezelő rendszer: 5 lépés (képekkel)
Videó: 🟡 POCO X5 PRO – LEGRÉSZLETESEBB ÁTTEKINTÉS és TESZTEK 2024, Július
Anonim
Feladatkezelő - háztartási házimunkát kezelő rendszer
Feladatkezelő - háztartási házimunkát kezelő rendszer
Feladatkezelő - háztartási házimunkát kezelő rendszer
Feladatkezelő - háztartási házimunkát kezelő rendszer

Meg akartam próbálni megoldani egy valódi problémát, amellyel a háztartásunkban (és gondolom, sok más olvasóval is) szembesülünk, azaz hogyan kell elosztani, motiválni és jutalmazni gyermekeimet, akik segítenek a házimunkában.

Eddig egy laminált A4 -es papírlapot ragasztottunk a hűtőszekrény oldalára. Feladatrács van nyomtatva, és a hozzá tartozó összegű zsebpénz, amelyet a feladat elvégzésével lehet keresni. Az ötlet az, hogy valahányszor az egyik gyerekünk segít egy házimunkában, bejelöli a négyzetet, és minden hét végén összeadjuk a megszerzett pénzt, töröljük a táblát, és kezdjük elölről. A feladatok listája azonban elavult és nehezen változtatható, néha nem emlékszünk arra, hogy hetente tisztítsuk meg a táblát, és bizonyos feladatokat különböző gyakorisággal kell elvégezni-néhányat ideális esetben naponta, míg mások csak havonta egyszer. Ezért elkezdtem egy Arduino -alapú eszköz létrehozását ezeknek a problémáknak a megoldására - szándékomban állt valami olyat létrehozni, amely lehetővé tette a feladatok egyszerű hozzáadását/eltávolítását/frissítését, ésszerűsített mechanizmust a feladat elvégzésének rögzítéséhez és a kredit hozzárendeléséhez. megfelelő személy, és hogyan lehet nyomon követni a különböző ütemterveket és gyakoriságokat, amelyekkel a különböző feladatokat el kell végezni, és kiemelni a lejárt feladatokat. Ez az oktatható pedig megmutatja, hogyan jött ki a kapott "Feladatkezelő" eszköz.

1. lépés: Hardver

Hardver
Hardver
Hardver
Hardver

A projekt számos jól használt és dokumentált hardverkomponenst használ:

  • Arduino UNO/Nano - ez a rendszer "agya". A beépített EEPROM memória a feladatok állapotának mentésére szolgál, még akkor is, ha a rendszer ki van kapcsolva. A kábelezés megkönnyítése érdekében a Nano -t csavarvédőre szereltem, de ha úgy tetszik, forraszthat vagy használhat krimpelt csatlakozókat a GPIO csapokhoz.
  • Valós idejű óra (RTC) modul - rögzíti az időbélyeget, amelyen a feladatokat elvégezték, és összehasonlítva az utolsó időt az aktuális idővel, határozza meg, hogy mely feladatok vannak késve. Ne feledje, hogy az általam kapott egységet újratölthető LiPo akkumulátorral (LIR2032) való használatra tervezték. Mindazonáltal nem újratölthető CR2032 akkumulátort használok, ezért néhány módosítást kellett végrehajtanom a töltőáramkör letiltásához (nem szeretne újratölthető akkumulátort feltölteni, különben robbanás érheti….). Pontosabban eltávolítottam az R4, R5 és R6 ellenállásokat, valamint a D1 jelzésű diódát. Ezután létrehoztam egy forrasztóhidat, amely rövidre zárja az R6 -ot. Ezeket a változásokat az alábbi fotó szemlélteti.
  • ISO14443 RFID olvasó + felhasználónként egy címke- a rendszer "játékra" való alkalmasságaként minden gyermekem saját egyedi RFID-címkével rendelkezik. A feladat befejezettként történő megjelölésére egy feladat kiválasztása, majd a címkék végigcsúsztatása az olvasón keresztül történik
  • 16x2 LCD kijelző - a rendszer felhasználói felületének biztosítására szolgál. A beépített PCF8574A hátizsákkal rendelkező tábla használatával az I2C interfészen keresztül csatlakoztatható az Arduino -hoz, ami jelentősen leegyszerűsíti a huzalozást.
  • Rotary Encoder - ez lesz a fő vezérlőgomb, amelyet a felhasználók elfordítanak a különböző elérhető feladatok kiválasztásához
  • Wago csatlakozók - ezek a zárható csatlakozók kényelmes módja az alkatrészek összekötéséhez, vagy egyszerű buszok létrehozásához több modulhoz, amelyek mindegyike közös földet vagy 5 V -os tápellátást igényel.

2. lépés: Kábelezés

Vezeték
Vezeték

A 16x2 LCD kijelző és a DS1307 RTC egyaránt I2C interfészt használ, ami kényelmes, mivel sokkal egyszerűbbé teszi a huzalozást, csak egy pár vezeték szükséges az Arduino A4 (SDA) és A5 (SCL) csapjaihoz

Az MFRC-522 RFID olvasó SPI interfészt használ, amely rögzített 11 (MOSI), 12 (MISO) és 13 (SCK) hardvertűket használ. Szükséges továbbá egy slave select és reset vonal, amelyet a 10 -es és a 9 -es csapokhoz rendeltem

A forgó jeladóhoz pár csap szükséges. Az optimális teljesítmény érdekében az a legjobb, ha ezek a csapok képesek kezelni a külső megszakításokat, ezért a 2. és 3. digitális tűket használom. Kapcsolóként is be lehet kattintani a kódolóba, és ezt bekötöttem a 4. tüskébe. jelenleg a kódban használatos, hasznos lehet további funkciók hozzáadásához

A kényelem érdekében a WAGO 222 sorozatú csatlakozóblokkokat használom. Ezek egy pillanatra lezárható csatlakozók, amelyek robusztus, egyszerű módot biztosítanak a 2 és 8 vezeték közötti összekötéshez, és nagyon kényelmesek olyan Arduino projektekhez, amelyek több modult igényelnek a földelés vagy az 5 V-os vezeték megosztásához, vagy ahol több eszköz van a készüléken. mondjuk ugyanaz az I2C vagy SPI busz

Az ábra szemlélteti, hogyan kell mindent összekötni.

3. lépés: Építés

Létrehoztam egy nagyon egyszerű 3D nyomtatott tokot az elektronika elhelyezésére. Néhány mágnest helyeztem a hátlapra, hogy az egységet a hűtőszekrény oldalára lehessen rögzíteni, ugyanúgy, mint az előző nyomtatott listát. Az USB aljzatot is szabadon hagytam, mivel ezt használnák, ha új feladatokat kell hozzáadni a rendszerhez, vagy bejelentkezni és letölteni egy adatkészletet, amely bemutatja a befejezett feladatokat stb.

Nyomtatás után nem mentettem az STL fájlokat, de rengeteg hasonló (és valószínűleg jobb!) Tok elérhető a thingiverse.com webhelyen. Alternatív megoldásként építhet egy szép fadobozt, vagy csak használhat egy régi kartondobozt vagy tupperware edényt az elektronika elhelyezésére.

4. lépés: Kód

Kód
Kód

A teljesen kommentált kódot letöltésként mellékeljük az alábbiakban. Íme néhány fontosabb megjegyzés:

Létrehoztam egy egyedi struktúrát, a "feladatot", amely egy olyan adategység, amely a feladat összes tulajdonságát egyetlen entitásba foglalja. A feladatok egy névből állnak, és így fognak megjelenni az LCD kijelzőn (és ezért csak 16 karakterre korlátozódnak), milyen gyakorisággal kell elvégezni őket, és mikor és ki végezte utoljára

struktura feladat {

char taskName [16]; // Ennek a feladatnak a rövid, "barátságos" neve, amely megjelenik a kijelzőn int RepeEEXXDays; // Rendszeresség, napokban, amellyel ez a feladat megismétlődik. 1 = Napi, 7 = Heti stb. // Időbélyeg, amikor a feladatot utoljára befejezték int lastCompletedBy; // annak a személynek az azonosítója, aki utoljára elvégezte ezt a feladatot};

A fő adatstruktúrát "taskList" -nek hívják, ami egyszerűen egy sor különálló feladat. Itt definiálhatja a kívánt feladatokat, amelyek inicializálása 0 értékkel történik a legutóbbi befejezésük időpontjában, és -1 értékkel annak a felhasználónak az azonosítója, aki utoljára végrehajtotta azokat

feladat taskList [numTasks] = {

A konstans szakaszban a kód tetején egyetlen bájt van, az úgynevezett "eepromSignature". Ez az érték határozza meg, hogy az EEPROM -on tárolt adatok érvényesek -e. Ha módosítja a taskList elem szerkezetét, például feladatok hozzáadásával vagy eltávolításával, vagy további mezők hozzáadásával, akkor ezt az értéket növelnie kell. Gondolhat rá úgy, mint az adatok alapvető verziószámozási rendszerére

const bájt eepromSignature = 1;

Indításkor a program csak akkor próbálja meg betölteni az EEPROM -ban tárolt adatokat, ha megegyezik a kódban meghatározott adatok aláírásával.

void restoreFromEEPROM () {

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

Az LCD kijelző és az RTC modul I2C interfészt használ az Arduino -val való kommunikációhoz. Ehhez minden eszköznek egyedi I2C -címmel kell rendelkeznie. Próbáltam néhány különböző 16x2 -es kijelzőtáblát, és úgy tűnik, hogy néhányan a 0x27 címet használják, míg a többi látszólag azonos tábla 0x3f -et. Ha úgy találja, hogy a kijelzőn csak egy négyzetsor jelenik meg, és nincs szöveg, próbálja meg megváltoztatni az itt található kódban megadott címértéket:

LiquidCrystal_PCF8574 lcd (0x27);

RFID-címke észlelésekor a kód beolvassa a 4 bájtos azonosítót, és arra használja, hogy megkísérelje megkeresni a megfelelő felhasználót az ismert felhasználók táblázatából. Ha a címkét nem ismeri fel, a 4 bájtos azonosítót elküldi a soros monitor konzolra:

int GetUserFromRFIDTag (bájt RFID ) {

for (int i = 0; i <numusers; i ++) = "" {<számFelhasználók; i ++) {if (memcmp (userList .rfidUID, RFID, useroflist size .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Ismeretlen RFID -kártya észlelve:")); for (byte i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Sorozatnyomat (RFID , HEX); } visszatérés -1; }

Ahhoz, hogy címkét rendelhessen a felhasználóhoz, másolja ki a megjelenített azonosítót, és illessze be a 4 bájtos értéket a felhasználók tömbjébe a kód tetején, a megfelelő felhasználó mellett:

const user userList [számUsers] = {{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}},};

5. lépés: Használat

Használat
Használat
Használat
Használat

Ha idáig eljutott, a rendszer használatának meglehetősen implicitnek kell lennie a kódból; a felhasználók bármikor elforgathatják a forgatógombot az elérhető feladatok listájának görgetéséhez. A lejárt feladatokat a cím után csillaggal jelölik.

Miután kiválasztotta az elvégzendő feladatot, a felhasználók ezután beolvashatják saját egyedi RFID -fobjukat az olvasóban, hogy befejezettként jelöljék meg a feladatot. Az azonosítójukat és a pontos időt rögzítik, és az Arduino EEPROM -ba mentik.

A megfelelő RFID -címkék első beállításához futtassa le a vázlatot a mellékelt Arduino soros monitorral. Olvassa be az egyes címkéket, és vegye figyelembe a soros monitoron megjelenő 4 bájtos hexadecimális UID-értéket. Ezután módosítsa a kód tetején deklarált felhasználói listát, hogy hozzárendelje ezt a címkeazonosítót a megfelelő felhasználóhoz.

Fontolóra vettem, hogy hozzáadok egy funkciót, hogy kinyomtassam a jelentést, amely bemutatja az elmúlt héten elvégzett összes feladatot felhasználó szerint, hogy minden héten kioszthassam a megfelelő zsebpénzjutalmat. Azonban, ahogy ez megtörténik, úgy tűnik, gyermekeim elégedettek azzal az újdonsággal, hogy a rendszert teljesen elfelejtették a zsebpénzes jutalmakról! Ez azonban meglehetősen egyszerű kiegészítés lenne, és gyakorlásként marad az olvasó számára:)

Ajánlott: