Detector fereastră deschisă Arduino - pentru iarnă: 6 pași
Detector fereastră deschisă Arduino - pentru iarnă: 6 pași
Anonim
Detector fereastră deschisă Arduino - pentru iarnă
Detector fereastră deschisă Arduino - pentru iarnă

Afară se răcorește, dar uneori am nevoie de aer proaspăt în camerele mele. Așadar, deschid fereastra, ies din cameră, închid ușa și vreau să mă întorc în 5-10 minute. Și după câteva ore îmi amintesc că fereastra este deschisă … Poate știi asta sau ai copii, ceea ce îți oferă această experiență.

Soluția mea este Open Window Detector. Bateria va dura mai mult de un an, așa că puneți-o toamna și scoateți-o primăvara.

Pasul 1: Lista pieselor

Lista de componente
Lista de componente
Lista de componente
Lista de componente
Lista de componente
Lista de componente
Lista de componente
Lista de componente
  1. Digispark board de pe eBay.
  2. Căști vechi.
  3. Buton mic pentru resetare.
  4. Conectori pentru difuzor - altfel nu este posibilă reprogramarea plăcii.
  5. Sârmă.
  6. Pentru alimentarea cu energie electrică aveți nevoie de:

Carcasa bateriei AAA cu comutator pornit / oprit. Puteți folosi chiar și baterii uzate, deoarece modulul va funcționa până la 2,4 Volți

SAU

Bateria lipo veche (chiar și o capacitate de 30% este suficientă în acest scop) și dacă nu aveți deja, un încărcător pentru bateriile lipo de la eBay.

SAU

Un suport pentru celula de monedă CR2032

ȘI

1A diodă 1N4001 sau echivalent - sau orice aveți în această dimensiune - pentru protecție inversă a polarității

Pasul 2: Programarea plăcii Digispark

Programarea plăcii Digispark
Programarea plăcii Digispark
Programarea plăcii Digispark
Programarea plăcii Digispark

Instalarea driverului

Trebuie să instalați driverul Digispark înainte de a putea programa placa. Descărcați-l aici, deschideți-l și rulați „InstallDrivers.exe”.

Instalarea Arduino IDE

Instalați placa Digispark pentru Arduino IDE așa cum este descris în

Vă recomand să utilizați ca adresă URL a plăcii Digispark în fișierul / preferințele Arduino noul https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json în loc de https://digistump.com/package_digistump_index.json și să instalați Digistump AVR Boards versiunea 1.6.8.

Din moment ce dorim să economisim energie, ceasul plăcii este comutat la 1 MHz în setarea noastră () puteți alege Digispark (1mhz - Fără USB) ca placă în meniul Instrumente.

Compilați și încărcați programul pe tablă

În IDE-ul Arduino creați o schiță nouă cu Fișier / Nou și denumiți-o de ex. „OpenWindowAlarm”. Copiați codul din OpenWindowAlarm.ino

SAU

Descărcați și extrageți depozitul. Deschideți schița cu Fișier -> Deschideți… și selectați folderul „OpenWindowAlarm”.

Compilați-l și încărcați-l. Rețineți că încărcarea nu va funcționa dacă difuzorul este conectat. Dacă totul funcționează bine, LED-ul încorporat al Digispark va clipi de 5 ori (pentru întârzierea alarmei de 5 minute) și apoi va începe să clipească după 8 secunde cu un interval de 24 de secunde pentru a semnaliza fiecare citire a temperaturii.

Pasul 3: Reducerea puterii

Reducerea puterii
Reducerea puterii
Reducerea puterii
Reducerea puterii

Placa noastră Digispark folosește 5mA la 3, 0 volți. Cu 2 baterii AAA (1000mAh) va funcționa timp de 8 zile. Dar este posibil să reduceți consumul de energie până la 26 µA în 3 pași.

  1. Dezactivarea LED-ului de alimentare prin ruperea firului de cupru care conectează LED-ul de alimentare la diodă cu un cuțit sau scoaterea / dezactivarea rezistorului 102 economisește 1,3 mA.
  2. Scoaterea regulatorului de tensiune VIN economisește 1,2 mA.
  3. Deconectarea rezistorului USB Pullup (marcat 152) de la 5 Volți (VCC) salvează restul de 2,5 mA. Deconectați-l rupând firul de cupru de pe partea rezistorului care indică ATTiny. Aceasta dezactivează interfața USB și, la rândul său, posibilitatea de a programa placa Digispark prin USB. Pentru a-l activa din nou, dar pentru a economisi energie, conectați rezistorul (marcat 152) direct la USB 5 volți care este ușor disponibil în partea exterioară a diodei.

    Partea corectă a diodei poate fi găsită utilizând un tester de continuitate. O parte a acestei diode este conectată la pinul 8 al ATtiny (VCC). Cealaltă parte este conectată la USB 5 volți.

Acum rezistorul USB pullup este activat doar dacă placa Digispark este conectată la USB de ex. în timpul programării, iar placa consumă 26 µA în timpul somnului.

Dacă reprogramați siguranțele, puteți obține un consum de energie de 6 µA.

Pentru a reprograma siguranțele, aveți nevoie de un ISP (care poate fi construit cu un Arduino) și un adaptor de conectare. Pentru reprogramare puteți utiliza acest script.

Pasul 4: butonul Reset

Butonul de resetare
Butonul de resetare
Butonul de resetare
Butonul de resetare
Butonul de resetare
Butonul de resetare
Butonul de resetare
Butonul de resetare

Dacă nu doriți să scoateți alimentarea pentru a reseta alarma, conectați un buton de resetare între PB5 și masă. Am făcut acest lucru conectând suprafața de cupru VIN neconectată la PB5 și lipind butonul de resetare direct la gaura pinului VIN și la suprafața mare a solului regulatorului de tensiune VIN eliminat.

Dacă doriți să scăpați de cele 5 secunde de așteptare pentru conexiunea USB după resetare, puteți schimba nucleul de micronucleu de pe ATtiny85. Rulați scriptul „0_Burn_upgrade-t85_recommended.cmd” și apoi reîncărcați din nou aplicația OpenWindowAlarm cu ID-ul Arduino.

Pasul 5: Difuzor

Speaker
Speaker
Speaker
Speaker
Speaker
Speaker

Am dezasamblat o cască veche și am conectat conectorul tată la cablu.

Pasul 6: Funcționare

Operare
Operare
Operare
Operare
Operare
Operare

Pentru a utiliza placa, așezați-l pe un pervaz și conectați-l la o baterie. Dacă temperatura de pe pervaz este mai mică decât temperatura în care a fost amplasată inițial placa, va dura încă 5 minute pentru a adopta în mod inteligent noua valoare de pornire.

Apoi veți fi alarmat dacă lăsați fereastra deschisă mai mult de cinci minute.

Funcționare internă

  • O fereastră deschisă este detectată după TEMPERATURE_COMPARE_AMOUNT * TEMPERATURE_SAMPLE_SECONDS (48) secunde de citire a unei temperaturi cu o valoare de TEMPERATURE_DELTA_THRESHOLD_DEGREE (2) mai mică decât temperatura TEMPERATURE_COMPARE_DISTANCE * TEMPERATURE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SAMPLE_SECLE
  • Întârzierea este implementată dormind de 3 ori la `SLEEP_MODE_PWR_DOWN` pentru o perioadă de 8 secunde pentru a reduce consumul de energie.
  • Detectarea unei ferestre deschise este indicată printr-o clipire mai lungă de 20 ms și un clic scurt la fiecare 24 de secunde. Prin urmare, senzorul intern are un timp de 3 minute pentru a se adapta la temperatura exterioară pentru a capta chiar și modificări mici de temperatură. Cu cât schimbarea temperaturii este mai mare, cu atât valoarea senzorului se va modifica mai devreme și va detecta o fereastră deschisă.
  • `OPEN_WINDOW_ALARM_DELAY_MINUTES` (5) minute după detectarea ferestrei deschise, alarma este activată.

    Alarma nu va porni sau o alarmă activată se va opri dacă temperatura actuală este mai mare decât temperatura minimă măsurată (+ 1), adică fereastra a fost deja închisă.

  • Alarma inițială durează 10 minute. După aceasta, este activat pentru o perioadă de 10 secunde, cu o pauză crescândă de la 24 de secunde până la 5 minute.
  • La fiecare VCC_MONITORING_DELAY_MIN (60) minute se măsoară tensiunea bateriei. În funcție de tipul de baterie detectat la pornire (consultați VCC_VOLTAGE_LIPO_DETECTION (3,6 volți)), o tensiune a bateriei sub VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_LIPO (3550) sau VCC_VOLTAGE_LOWER_LIMIT_MILLIVOLT_STANDARD Millivolt este indicat prin aprindere și 24 de secunde. Doar bip-ul (nu blițul) este semnificativ mai lung decât bip-ul pentru detectarea unei ferestre deschise.
  • După pornire, timpul de sedimentare inactiv este de 5 minute. Dacă placa devine mai rece în timpul decantării, se adaugă 4:15 (sau 8:30) minute pentru a evita alarmele false după pornire.