
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01


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


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

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 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


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:
Tuchless Switch untuk Peralatan Rumah Tangga -- Kawal Peralatan Rumah Tangga Anda Tanpa Suis: 4 Langkah

Tuchless Switch untuk Peralatan Rumah Tangga || Kawal Peralatan Rumah Tangga Anda Tanpa Suis: Ini Suis Tanpa Tuch Untuk Peralatan Rumah. Anda Boleh Menggunakannya Ke Mana-mana Tempat Umum sehingga Membantu Memerangi Virus. Litar Berdasarkan Litar Sensor Gelap Dibuat Oleh Op-Amp Dan LDR. Bahagian Penting Kedua Litar Ini SR Flip-Flop Dengan Sequencell
Kawal Peralatan Rumah Tangga Melalui LoRa - LoRa dalam Automasi Rumah - Alat kawalan jauh LoRa: 8 Langkah

Kawal Peralatan Rumah Tangga Melalui LoRa | LoRa dalam Automasi Rumah | Alat Kawalan Jauh LoRa: Kawal dan automasikan peralatan elektrik anda dari jarak jauh (Kilometer) tanpa kehadiran internet. Ini boleh dilakukan melalui LoRa! Hei, ada apa? Akarsh di sini dari CETech. PCB ini juga mempunyai paparan OLED dan 3 relay yang
Cara Mengendalikan Peralatan Rumah Tangga Dengan Jauh TV Dengan Fungsi Pemasa: 7 Langkah (dengan Gambar)

Cara Mengendalikan Peralatan Rumah Tangga Dengan TV Jauh Dengan Fungsi Pemasa: Walaupun setelah 25 tahun diperkenalkan ke pasaran pengguna, komunikasi inframerah masih sangat relevan dalam beberapa hari terakhir. Sama ada televisyen 4K 55 inci atau sistem bunyi kereta anda, semuanya memerlukan alat kawalan jauh IR untuk memberi respons kepada
Kawal Peralatan Rumah Tangga Dari Telefon Pintar Anda Dengan Aplikasi Blynk dan Raspberry Pi: 5 Langkah (dengan Gambar)

Kawal Peralatan Rumah Tangga Dari Telefon Pintar Anda Dengan Aplikasi Blynk dan Raspberry Pi: Dalam projek ini, kami akan belajar bagaimana menggunakan aplikasi Blynk dan Raspberry Pi 3 untuk mengendalikan perkakas rumah (Pembuat kopi, Lampu, tirai tingkap dan banyak lagi … Komponen perkakasan: Kabel Breadboard Lampu Relay Raspberry Pi 3 Aplikasi apl perisian: Blynk A
Tangan Ketiga ++: Tangan Bantuan Pelbagai Penggunaan untuk Elektronik dan Kerja-kerja Halus Lain: 14 Langkah (dengan Gambar)

Tangan Ketiga ++: Tangan Bantuan untuk Penggunaan Elektronik dan Halus Lain: Pada masa lalu saya telah menggunakan tangan ketiga / tangan bantuan yang terdapat di kedai elektronik rantaian dan kecewa dengan kegunaannya. Saya tidak pernah dapat mendapatkan klip tepat di tempat yang saya mahukan atau memerlukan lebih banyak masa daripada yang sepatutnya untuk mendapatkan persediaan