Isi kandungan:

Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga: 5 Langkah (dengan Gambar)
Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga: 5 Langkah (dengan Gambar)

Video: Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga: 5 Langkah (dengan Gambar)

Video: Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga: 5 Langkah (dengan Gambar)
Video: TUGAS POKOK, FUNGSI, HAK, KEWENANGAN RUKUN TETANGGA ( RT ) & RUKUN WARGA ( RW ) | 2021 2024, Julai
Anonim
Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga
Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga
Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga
Pengurus Tugas - Sistem Pengurusan Kerja Rumah Tangga

Saya ingin berusaha mengatasi masalah sebenar yang dihadapi dalam rumah tangga kami (dan, saya membayangkan, banyak pembaca lain), iaitu bagaimana memperuntukkan, memotivasi, dan memberi ganjaran kepada anak-anak saya kerana membantu menyelesaikan tugas rumah tangga.

Hingga kini, kami telah meletakkan kepingan kertas A4 yang dilaminasi di tepi peti sejuk. Ia mempunyai tugas yang dicetak di atasnya, dengan sejumlah wang saku yang dapat diperoleh untuk menyelesaikan tugas itu. Ideanya adalah bahawa setiap kali salah satu anak kita membantu dengan tugas, mereka mendapat tanda centang di dalam kotak itu dan, pada akhir setiap minggu, kita menambah wang yang diperoleh, menghapus papan dan mulakan semula. Walau bagaimanapun, senarai tugas sudah ketinggalan zaman dan sukar diubah, kadang-kadang kita tidak ingat untuk membersihkan papan setiap minggu, dan beberapa tugas perlu dilakukan dengan frekuensi yang berbeza - ada yang idealnya dilakukan setiap hari, sedangkan yang lain hanya sebulan sekali. Oleh itu, saya mula membuat peranti berasaskan Arduino untuk menangani masalah ini - tujuan saya adalah untuk membuat sesuatu yang memungkinkan penambahan / penghapusan / pengemaskinian tugas dengan mudah, mekanisme yang diperkemas untuk merakam ketika tugas telah selesai dan memperuntukkan kredit kepada orang yang sesuai, dan cara untuk memantau jadual dan kekerapan yang berbeza dengan tugas yang berbeza perlu dilakukan, dan menonjolkan tugas yang tertunggak. Dan arahan ini akan menunjukkan bagaimana peranti "Task Manager" dihasilkan.

Langkah 1: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan

Projek ini menggunakan beberapa komponen perkakasan yang digunakan dengan baik dan didokumentasikan:

  • Arduino UNO / Nano - ini adalah "otak" sistem. Memori EEPROM onboard akan digunakan untuk menyelamatkan keadaan tugas walaupun sistem dimatikan. Untuk kemudahan pendawaian, saya telah memasang Nano pada penutup skru, tetapi anda boleh menyolder atau menggunakan sambungan berkerut ke pin GPIO jika anda mahu.
  • Modul Waktu Nyata (RTC) - digunakan untuk merakam cap waktu di mana tugas dilakukan, dan, dengan membandingkan waktu terakhir dengan waktu semasa, tentukan tugas yang terlambat. Perhatikan bahawa unit yang saya terima dirancang untuk digunakan dengan bateri LiPo yang boleh dicas semula (LIR2032). Walau bagaimanapun, saya menggunakan bateri CR2032 yang tidak boleh dicas semula, jadi saya perlu membuat beberapa modifikasi untuk mematikan litar pengecasan (anda tidak mahu mencas semula bateri yang tidak boleh dicas semula, atau anda mungkin menghadapi letupan….). Secara khusus, saya mengeluarkan perintang R4, R5, dan R6, dan dioda bertanda D1. Saya kemudian membuat jambatan solder untuk melintasi tempat R6 berada. Perubahan ini digambarkan dalam foto di bawah.
  • Pembaca RFID ISO14443 + satu tag bagi setiap pengguna- sebagai cara "mempermainkan" sistem, setiap anak saya mempunyai tag RFID unik mereka sendiri. Memilih tugas dan kemudian menggeser tag mereka ke pembaca akan menjadi mekanisme yang digunakan untuk menandakan tugas sebagai selesai
  • Paparan LCD 16x2 - digunakan untuk menyediakan antara muka pengguna ke sistem. Dengan menggunakan papan yang mempunyai ransel PCF8574A yang tidak terpisahkan, papan dapat disambungkan melalui antara muka I2C ke Arduino, yang memudahkan pendawaian dengan ketara.
  • Rotary Encoder - akan menjadi tombol kawalan utama yang pengguna akan beralih untuk memilih pelbagai tugas yang tersedia
  • Penyambung Wago - penyambung snap-shut ini adalah kaedah mudah untuk menyatukan komponen atau membuat bas sederhana untuk beberapa modul yang masing-masing memerlukan pembekalan sambungan biasa atau 5V.

Langkah 2: Pendawaian

Pendawaian
Pendawaian

Paparan LCD 16x2 dan DS1307 RTC kedua-duanya menggunakan antara muka I2C, yang mudah kerana membuat pendawaian lebih mudah, hanya memerlukan sepasang wayar yang menuju ke pin A4 (SDA) dan A5 (SCL) Arduino

Pembaca RFID MFRC-522 menggunakan antara muka SPI, yang menggunakan pin perkakasan tetap 11 (MOSI), 12 (MISO), dan 13 (SCK). Ia juga memerlukan hamba pilih dan set semula baris, yang masing-masing saya tetapkan pada pin 10 dan 9

Pengekod putar memerlukan sepasang pin. Untuk prestasi yang optimum, lebih baik jika pin ini dapat mengatasi gangguan luaran, jadi saya menggunakan pin digital 2 dan 3. Anda juga boleh mengklik pengekod sebagai suis, dan saya telah memasangkannya ke pin 4. Walaupun tidak kini digunakan dalam kod, anda mungkin berguna untuk menambahkan ciri tambahan

Untuk kemudahan, saya menggunakan blok penyambung siri WAGO 222. Ini adalah penyambung snap-shut yang menyediakan cara yang kuat dan mudah untuk menghubungkan antara mana-mana antara 2 dan 8 wayar bersama-sama, dan sangat sesuai untuk projek Arduino yang memerlukan beberapa modul untuk berkongsi talian atau talian 5V, atau di mana anda mempunyai banyak peranti di bas I2C atau SPI yang sama, katakan

Gambar rajah menggambarkan bagaimana semuanya disatukan.

Langkah 3: Pembinaan

Saya membuat cetakan 3D yang sangat asas untuk menempatkan elektronik. Saya meletakkan beberapa magnet di bahagian belakang supaya unit dapat dilekatkan ke sisi peti sejuk, seperti senarai cetakan sebelumnya. Saya juga membiarkan soket USB terkena, kerana ini akan digunakan jika tugas baru perlu ditambahkan ke sistem, atau untuk log masuk dan memuat turun sekumpulan data yang menunjukkan tugas selesai dll.

Saya tidak menyimpan fail STL selepas mencetak, tetapi terdapat banyak kes serupa (dan, mungkin lebih baik!) Yang terdapat di thingiverse.com. Sebagai alternatif, anda boleh membina kotak kayu yang bagus, atau hanya menggunakan kotak kadbod lama atau bekas tupperware untuk menempatkan barang elektronik.

Langkah 4: Kod

Kod
Kod

Kod yang dikomen penuh dilampirkan sebagai muat turun di bawah. Berikut adalah beberapa perkara yang lebih penting untuk diperhatikan:

Saya telah membuat struktur khusus, "tugas", yang merupakan unit data yang merangkumi semua sifat tugas dalam satu entiti. Tugas terdiri dari sebuah nama, seperti bagaimana mereka muncul di paparan LCD (dan karenanya terbatas pada 16 karakter), frekuensi yang harus dilakukan, dan kapan dan oleh siapa mereka terakhir diselesaikan

tugas struktur {

char taskName [16]; // Nama ringkas, "mesra" untuk tugas ini seperti yang akan muncul di paparan int repeatEachXDays; // Keteraturan, dalam beberapa hari, tugas ini berulang. 1 = Harian, 7 = Mingguan dll yang terakhir tidak ditandatangani Terakhir Dilengkapkan; // Cap waktu di mana tugas ini diselesaikan terakhir sehingga terakhirDilengkapkanBy; // ID orang yang terakhir menyelesaikan tugas ini};

Struktur data utama disebut "taskList", yang merupakan susunan tugas yang terpisah. Anda boleh menentukan tugas mana yang anda mahukan di sini, yang diinisialisasi dengan nilai 0 untuk saat ia terakhir diselesaikan, dan -1 untuk ID pengguna yang terakhir melaksanakannya

task taskList [numTasks] = {

Di bahagian pemalar di bahagian atas kod, terdapat nilai bait tunggal yang disebut "eepromSignature". Nilai ini digunakan untuk menentukan sama ada data yang disimpan di EEPROM adalah sah. Sekiranya anda mengubah struktur item taskList, dengan menambahkan atau membuang tugas, atau menambahkan medan tambahan, katakanlah, anda harus meningkatkan nilai ini. Anda boleh menganggapnya seperti sistem penomboran versi asas untuk data

const byte eepromSignature = 1;

Semasa memulakan, program ini hanya akan berusaha memuatkan data yang disimpan di EEPROM jika sesuai dengan tandatangan data yang ditentukan dalam kod.

batal pulihFromEEPROM () {

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

Paparan LCD dan modul RTC menggunakan antara muka I2C untuk berkomunikasi dengan Arduino. Ini memerlukan setiap peranti mempunyai alamat I2C yang unik. Saya telah mencuba beberapa papan paparan 16x2 yang berbeza, dan ada yang menggunakan alamat 0x27, sementara papan lain yang kelihatan serupa menggunakan 0x3f. Sekiranya anda melihat paparan anda hanya menunjukkan rangkaian kotak dan tiada teks, cuba ubah nilai alamat yang ditentukan dalam kod di sini:

LiquidCrystal_PCF8574 lcd (0x27);

Apabila tag RFID dikesan, kod membaca pengenal 4-byte, dan menggunakannya untuk mencari pengguna yang sesuai dari jadual pengguna yang dikenali. Sekiranya teg tidak dikenali, pengecam 4 bait akan dihantar ke konsol monitor bersiri:

int GetUserFromRFIDTag (bait RFID ) {

untuk (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, sizeof userList .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Kad RFID tidak diketahui dikesan:")); untuk (byte i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Serial.print (RFID , HEX); } kembali -1; }

Untuk menetapkan tag kepada pengguna, anda harus menyalin ID yang dipaparkan dan memasukkan nilai 4-bait ke dalam array pengguna di bahagian atas kod, di sebelah pengguna yang sesuai:

pengguna tetap penggunaList [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}},};

Langkah 5: Penggunaan

Penggunaan
Penggunaan
Penggunaan
Penggunaan

Sekiranya anda berjaya sejauh ini, penggunaan sistem semestinya tersirat dari kodnya; pada bila-bila masa, pengguna boleh memutar tombol putar untuk menelusuri senarai tugas yang tersedia. Kerja yang terlambat ditandai dengan tanda bintang selepas tajuknya.

Setelah memilih tugas untuk dilaksanakan, pengguna kemudian dapat mengimbas fob RFID unik mereka sendiri di seluruh pembaca untuk menandakan tugas selesai. ID mereka dan masa semasa akan direkodkan dan disimpan ke EEPROM Arduino.

Untuk menetapkan teg RFID yang betul terlebih dahulu, anda harus menjalankan lakaran dengan terpasang monitor bersiri Arduino. Imbas setiap teg dan perhatikan nilai UID heksida 4-byte yang dipaparkan pada monitor bersiri. Kemudian ubah senarai pengguna yang dinyatakan di bahagian atas kod untuk menetapkan ID teg ini kepada pengguna yang sesuai.

Saya mempertimbangkan untuk menambahkan fungsi untuk mencetak laporan yang menunjukkan semua tugas diselesaikan, oleh pengguna, pada minggu terakhir untuk memperuntukkan hadiah wang saku yang sesuai setiap minggu. Namun, seperti yang berlaku, anak-anak saya nampaknya berpuas hati dengan kebaharuan menggunakan sistem ini yang telah melupakan hadiah wang saku sepenuhnya! Ini akan menjadi tambahan yang cukup mudah, dan dibiarkan sebagai latihan untuk pembaca:)

Disyorkan: