Sisällysluettelo:
Video: Tehtävienhallinta - kotitalousasioiden hallintajärjestelmä: 5 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Halusin yrittää käsitellä todellista kotitalouksessamme (ja kuvittelen, että monien muiden lukijoiden ongelmaa) esiintyvää ongelmaa, eli kuinka jakaa, motivoida ja palkita lapseni kotitöissä auttamisesta.
Tähän asti olemme pitäneet laminoidun A4 -paperiarkin kiinni jääkaapin kyljessä. Siihen on painettu tehtävien ruudukko ja siihen liittyvät taskurahat, jotka voitaisiin ansaita tehtävän suorittamisesta. Ajatuksena on, että joka kerta, kun yksi lapsistamme auttaa työssä, he saavat rastiin tähän ruutuun ja laskemme joka viikon lopussa ansaitut rahat yhteen, pyyhimme taulun ja aloitamme alusta. Tehtävälista on kuitenkin vanhentunut ja sitä on vaikea muuttaa, toisinaan emme muista pyyhkiä taulua puhtaaksi joka viikko, ja jotkut tehtävät on suoritettava eri taajuuksilla-jotkut olisi parasta tehdä päivittäin, kun taas toiset voivat olla vain kerran kuukaudessa. Joten ryhdyin luomaan Arduino -pohjaisen laitteen näiden ongelmien ratkaisemiseksi - tarkoitukseni oli luoda jotain, joka mahdollistaa tehtävien helpon lisäämisen/poistamisen/päivittämisen, virtaviivaisen mekanismin tehtävän suorittamisen tallentamiseen ja luoton myöntämiseen sopiva tapa ja tapa seurata eri aikatauluja ja taajuuksia, joilla eri tehtävät on suoritettava, ja korostaa myöhässä olevia tehtäviä. Ja tämä opettavainen näyttää, miten tuloksena oleva "Tehtävienhallinta" -laite tuli ulos.
Vaihe 1: Laitteisto
Projektissa hyödynnetään useita hyvin käytettyjä ja dokumentoituja laitteistokomponentteja:
- Arduino UNO/Nano - tämä on järjestelmän "aivot". Sisäänrakennettua EEPROM -muistia käytetään tehtävien tilan tallentamiseen, vaikka järjestelmä olisi sammutettu. Johdotuksen helpottamiseksi olen asentanut Nanon ruuvisuojaan, mutta voit halutessasi juottaa tai käyttää puristettuja liitäntöjä GPIO -nastoihin.
- Real -Time Clock (RTC) -moduuli - käytetään tehtävien suorittamisen aikaleiman tallentamiseen ja viimeisten aikojen vertaamiseen nykyiseen aikaan. Huomaa, että vastaanottamani yksikkö on suunniteltu käytettäväksi ladattavan LiPo -akun (LIR2032) kanssa. Käytän kuitenkin ei-ladattavaa CR2032-akkua, joten minun piti tehdä muutamia muutoksia latauspiirin poistamiseksi käytöstä (et halua yrittää ladata ei-ladattavaa akkua, tai saatat kohdata räjähdyksen …).). Erityisesti poistin vastukset R4, R5 ja R6 ja diodin, joka oli merkitty D1. Sitten loin juotosillan oikosulkuun, missä R6 oli ollut. Nämä muutokset on kuvattu alla olevassa kuvassa.
- ISO14443 RFID-lukija + yksi tunniste käyttäjää kohti- tapa "pelata" järjestelmää, jokaisella lapsellani on oma ainutlaatuinen RFID-tunniste. Tehtävän valitsemiseksi ja sen pyyhkäisemiseksi lukijan poikki on mekanismi, jolla tehtävää merkitään valmiiksi
- 16x2 LCD -näyttö - käytetään käyttöliittymän tarjoamiseen järjestelmään. Käyttämällä korttia, jossa on kiinteä PCF8574A -reppu, levy voidaan liittää I2C -liitännän kautta Arduinoon, mikä yksinkertaistaa johdotusta merkittävästi.
- Rotary Encoder - on tärkein säätönuppi, jota käyttäjät kääntävät valitakseen erilaisia käytettävissä olevia tehtäviä
- Wago -liittimet - nämä pikaliittimet ovat kätevä tapa kytkeä komponentit yhteen tai luoda yksinkertaisia väyliä useille moduuleille, jotka kumpikin vaativat yhteisen maadoituksen tai 5 V: n jännitteen.
Vaihe 2: Johdotus
16x2 LCD -näyttö ja DS1307 RTC käyttävät kumpikin I2C -liitäntää, mikä on kätevää, koska se tekee johdotuksesta paljon yksinkertaisempaa
MFRC-522 RFID -lukija käyttää SPI-rajapintaa, joka käyttää kiinteitä laitteistotappeja 11 (MOSI), 12 (MISO) ja 13 (SCK). Se vaatii myös orjavalinta- ja nollauslinjan, jotka olen määrittänyt nastoille 10 ja 9
Pyörivä anturi vaatii parin tappeja. Optimaalisen suorituskyvyn saavuttamiseksi on parasta, jos nämä nastat voivat käsitellä ulkoisia keskeytyksiä, joten käytän digitaalisia nastoja 2 ja 3. Voit myös napsauttaa kooderia sisään kytkimenä, ja olen kytkenyt tämän nastaan 4. Vaikka se ei ole jota käytetään tällä hetkellä koodissa, se saattaa olla hyödyllistä lisäominaisuuksien lisäämisessä
Käytän mukavuuden vuoksi WAGO 222-sarjan liitinlohkoja. Nämä ovat pikakiinnitteisiä liittimiä, jotka tarjoavat vankan ja helpon tavan yhdistää 2-8 johtoa yhteen, ja ne ovat erittäin käteviä Arduino-projekteille, jotka vaativat useita moduuleja maadoitus- tai 5 V-linjan jakamiseen, tai joissa sinulla on useita laitteita sama I2C- tai SPI -väylä
Kaavio kuvaa kuinka kaikki on kytketty yhteen.
Vaihe 3: Rakentaminen
Tein hyvin yksinkertaisen 3D -tulostetun kotelon elektroniikan tallentamiseksi. Laitoin taakse magneetteja, jotta yksikkö voidaan kiinnittää jääkaapin sivulle, aivan kuten edellinen painettu luettelo. Jätin myös USB -liitännän näkyviin, koska tätä käytetään, jos järjestelmään on lisättävä uusia tehtäviä tai kirjauduttava sisään ja ladattava tietosarja, joka näyttää valmiit tehtävät jne.
En tallentanut STL -tiedostoja tulostuksen jälkeen, mutta osoitteessa thingiverse.com on paljon vastaavia (ja luultavasti parempia!) Tapauksia. Vaihtoehtoisesti voit rakentaa mukavan puulaatikon tai käyttää vain vanhaa pahvilaatikkoa tai tupperware -astiaa elektroniikan sijoittamiseen.
Vaihe 4: Koodi
Täysin kommentoitu koodi on alla ladattavana. Tässä muutamia tärkeitä huomioitavia kohtia:
Olen luonut mukautetun rakenteen, "task", joka on tietoyksikkö, joka kiteyttää kaikki tehtävän ominaisuudet yhteen entiteettiin. Tehtävät koostuvat nimestä, jonka mukaan ne näkyvät nestekidenäytössä (ja siten vain 16 merkkiä), niiden suorittamisen taajuudesta ja siitä, milloin ja kuka viimeksi suoritti ne
strukturointitehtävä {
char taskName [16]; // Tämän tehtävän lyhyt, "ystävällinen" nimi, joka näkyy näytössä int RepeEEXXDays; // Säännöllisyys päivinä, joilla tämä tehtävä toistetaan. 1 = päivittäinen, 7 = viikoittainen jne. Unsigned long lastCompletedTime; // Aikaleima, jolloin tämä tehtävä viimeksi suoritettiin int lastCompletedBy; // Tämän tehtävän viimeksi suorittaneen henkilön tunnus};
Päätietorakenne on nimeltään "taskList", joka on yksinkertaisesti joukko erillisiä tehtäviä. Tässä voit määrittää haluamasi tehtävät, jotka alustetaan arvolla 0 viimeisimmän suoritusajankohdan osalta ja -1 viimeksi suorittaneen käyttäjän tunnukselle
tehtävä taskList [numTasks] = {
Koodin yläosan vakio -osiossa on yksi tavuarvo nimeltä "eepromSignature". Tätä arvoa käytetään määrittämään, ovatko EEPROMiin tallennetut tiedot kelvollisia. Jos muutat taskList -kohteen rakennetta lisäämällä tai poistamalla tehtäviä tai lisäämällä kenttiä, sinun pitäisi esimerkiksi lisätä tätä arvoa. Voit ajatella sitä kuin tietojen perusversioiden numerointijärjestelmää
const tavu eepromSignature = 1;
Käynnistyksen yhteydessä ohjelma yrittää ladata EEPROMiin tallennettuja tietoja vain, jos se vastaa koodissa määritettyjen tietojen allekirjoitusta.
void restoreFromEEPROM () {
int checkByte = EEPROM.read (0); if (checkByte == eepromSignature) {EEPROM.get (1, taskList); }}
LCD -näyttö ja RTC -moduuli käyttävät I2C -rajapintaa kommunikoidakseen Arduinon kanssa. Tämä edellyttää, että jokaisella laitteella on yksilöllinen I2C -osoite. Olen kokeillut paria erilaista 16x2 -näyttötaulua, ja jotkut näyttävät käyttävän osoitetta 0x27, kun taas muut näennäisesti identtiset levyt käyttävät 0x3f. Jos huomaat, että näyttösi näyttää vain sarjan neliöitä eikä tekstiä, yritä muuttaa koodissa määritettyä osoitearvoa täällä:
LiquidCrystal_PCF8574 lcd (0x27);
Kun RFID-tunniste havaitaan, koodi lukee 4-tavun tunnisteen ja yrittää sen avulla etsiä vastaavan käyttäjän tunnettujen käyttäjien taulukosta. Jos tunnistetta ei tunnisteta, 4 tavun tunniste lähetetään sarjamonitorikonsoliin:
int GetUserFromRFIDTag (tavu RFID ) {
for (int i = 0; i <numusers; i ++) = "" {<numUsers; i ++) {if (memcmp (userList .rfidUID, RFID, useroflist .rfidUID) == 0) {return userList .userID; }} Serial.print (F ("Tuntematon RFID -kortti havaittu:")); for (tavu i = 0; i <4; i ++) {Serial.print (RFID <0x10? "0": ""); Sarjajälki (RFID , HEX); } paluu -1; }
Jos haluat liittää tunnisteen käyttäjälle, sinun on kopioitava näytetty tunnus ja lisättävä 4 tavun arvo käyttäjäryhmään koodin yläosassa vastaavan käyttäjän vieressä:
const user userList [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}},};
Vaihe 5: Käyttö
Jos olet päässyt tähän asti, järjestelmän käytön pitäisi olla melko epäsuoraa koodista; käyttäjät voivat milloin tahansa kääntää kiertonuppia selatakseen käytettävissä olevien tehtävien luetteloa. Myöhästyneet työt on merkitty otsikolla tähdellä.
Kun käyttäjät ovat valinneet suoritettavat tehtävät, he voivat skannata oman ainutlaatuisen RFID -tunnistimensa lukijan yli merkitäkseen tehtävän valmiiksi. Heidän henkilöllisyytensä ja nykyinen aika tallennetaan ja tallennetaan Arduinon EEPROMiin.
Jotta voit ensin asettaa oikeat RFID -tunnisteet, sinun on suoritettava luonnos Arduino -sarjamonitorin ollessa liitettynä. Skannaa jokainen tunniste ja ota huomioon sarjamonitorissa näkyvä 4-tavuinen heksadesimaali-UID-arvo. Muokkaa sitten koodin yläosassa ilmoitettua käyttäjäluetteloa ja määritä tämä tunnistetunnus sopivalle käyttäjälle.
Harkitsin toiminnallisuuden lisäämistä raportin tulostamiseksi, jossa näkyvät kaikki käyttäjän viimeisen viikon aikana suorittamat tehtävät, jotta voisin jakaa sopivan taskurahapalkkion joka viikko. Kuitenkin, kuten tapahtuu, lapseni näyttävät olevan tyytyväisiä järjestelmän käyttämisen uutuuteen, koska he ovat unohtaneet taskurahapalkinnot kokonaan! Tämä olisi kuitenkin melko yksinkertainen lisäys, ja se jätetään lukijan harjoitukseksi:)
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
Älykäs roskakorin hallintajärjestelmä: 23 vaihetta
Älykäs roskakorin hallintajärjestelmä: JOHDANTO Nykyinen ongelma tai tähän projektiin liittyvä ongelma Nykyisen yhteiskuntamme suurin ongelma on kiinteän jätteen kertyminen. Sillä on suurempi vaikutus yhteiskuntamme terveyteen ja ympäristöön. Tunnistus, valvonta