Czujnik otwarcia okna/drzwi z ATtiny 13a i buzzerem

Czujnik otwarcia okna/drzwi z ATtiny 13a i buzzerem

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Wstęp

Jako część mojego systemu inteligentnego domu postanowiłem zbudować alarm powiadamiający mnie o otwarciu okna za pomocą pisku buzzera. Zasada działania jest prosta: gdy dwie części czujnika zostaną rozwarte, buzzer włącza się i wydaje dźwięk aż do wciśnięcia przycisku; po wciśnięciu przycisku alarm włączy się po zamknięciu albo ponownym otwarciu okna.

UWAGA! Ten projekt nie jest systemem alarmowym ani antywłamaniowym! Nie powinien być stosowany zamiennie z prawdziwymi, zabezpieczonymi systemami alarmowymi!

Co będzie potrzebne?

Części:

  1. Mikrokontroler ATtiny 13a lub jego odpowiednik
  2. Magnetyczny czujnik otwarcia okna (może być zwykły kontaktron)
  3. Przycisk
  4. Buzzer z generatorem
  5. 2x złącza śrubowe (ARK) 2-pinowe
  6. Płytka uniwersalna
  7. Programator (jednorazowo)
  8. Źródło zasilania (np. koszyczek na baterie)
  9. Obudowa (opcjonalna)

Budowa

Komponenty należy zlutować zgodnie z poniższym schematem:

Objaśnienie:

  • B1 – buzzer; jest podłączony do ATtiny przez rezystor R1 dla zabezpieczenia (bez niego moje ATtiny resetowało się zaraz po włączeniu buzzera)
  • J1 – złącze do podłączenia zasilania; przy zasilaniu widnieje napis 5V ale moje ATtiny działa bez problemów w napięciach od 3V do 7V.
  • J2 – złącze przeznaczone do podłączenia czujnika otwarcia okna
  • S1 – przycisk wyłączający alarm

Tak wygląda przykładowa płytka po lutowaniu:

Jeśli płytka jest już gotowa, należy zaprogramować mikrokontroler. Program sterujący alarmem jest bardzo prosty: gdy czujnik przestanie zwierać złącze J2, mikrokontroler uruchamia buzzer, a po wciśnięciu przycisku go wyłącza. Oto program:

#define PBUZ 4 // Pin buzzera
#define PSEN 2 // Pub sensora
#define PBUT 3 // Pin przycisku

bool sprev = LOW;
bool snow = LOW;

void setup() {
  pinMode(PBUZ, OUTPUT);
  pinMode(PSEN, INPUT_PULLUP);
  pinMode(PBUT, INPUT_PULLUP);
}

void loop() {
  sprev = snow;
  snow = digitalRead(PSEN);
  if(snow == HIGH && sprev == LOW) digitalWrite(PBUZ, HIGH);
  if(digitalRead(PBUT) == LOW) digitalWrite(PBUZ, LOW);
}

Po zaprogramowaniu przyszedł czas na ostatni, opcjonalny krok: umieszczenie całości w obudowie. Ja mój układ zamknę w małym pudełku śniadaniowym. W obudowie zależy zrobić kilka otworów: jeden do przepuszczenia kabli dla czujnika i drugi na umieszczenie przycisku. Razem z płytką w obudowie umieściłem też koszyczek z 4 bateriami typu AA, żeby zasilać układ. Oto kilka zdjęć gotowego projektu:

Tutaj projekt w pudełku.

Tutaj widać wszystkie “wnętrzności” projektu (drobna uwaga: przycisk z płytki uniwersalnej przeniosłem na ściankę obudowy).

Na tym zdjęciu po prawej widać pudełko z płytką i bateriami, a po lewej na oknie czujnik otwarcia przykleiłem czarną taśmą.

EDIT:

Poprawiłem nieco całość. Usunąłem taśmę z czujników i przykleiłem je gorącym klejem, a obudowę z układem umieściłem pod parapetem, wpadłem na ciekawy pomysł: zamiast przyklejać obudowy, umieściłem na niej i pod parapetem rzepy, które pozwolą mi wymienić baterie lub coś poprawić.

Tutaj czujniki przyklejone gorącym klejem.

Tutaj obudowa umieszczona pod parapetem. Zdjęcie jest trochę prześwietlone, bo moje okno jest umiejscowione od strony południowej, a nie mam jeszcze zasłon.

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 2.71/5 (głosów: 7)

Podobne posty

Budowa zgrzewarki Li-ion

Budowa zgrzewarki Li-ion

Witam. Dzisiaj chciałbym przedstawić Wam jak zrobiłem swoją zgrzewarkę. Głównie ma służyć do zgrzewania ogniw,…

6 komentarzy do “Czujnik otwarcia okna/drzwi z ATtiny 13a i buzzerem

  • A próbowałeś buzer podłączyć przez tranzystor?
    Podejrzewam, że procek się restartuje, bo pobierasz za duży prąd.

    I druga uwaga: w opisie ostatniego zdjęcia pomyliłeś strony ;-)

    I ja chyba jestem już stary… ale taką samą funkcjonalność dałoby się zrobić bez procesora

    Odpowiedz
  • Jak dla mnie to totalna klapa… Wybacz za takie słowa, ale projekt w 5minut zrobiony nie zasługuje na główna.
    Widać, że kuleje u Ciebie znajomość elektroniki (wiadomo każdy się uczy) i tak jak pisze kolega wyżej przydałby się tranzystor do sterowania tym buzzerem, a druga sprawa to jeśli nie wyłączasz funkcji reset procka w fusebitach to podciągnij ten pin (reset) do 5V poprzez rezystor np 10k.

    Masz tu trochę teorii może się przyda :
    http://mikrokontrolery.blogspot.com/p/spis-tresci.html#dzial_jak_zaczac

    Kolejna sprawa … czemu taka obudowa ? Toż można to upchnąć w pudełku od zapałek :)
    Powiem Ci, że ja bym takie urządzenie widział w jakimś attiny10 , zasilanym bateria cr2032, następnie usypianie uC i wybudzanie go z uśpienia poprzez przerwanie (w tym wypadku od otwarcia okna) , zaoszczędzisz miejsce i zyskasz na estetyce, a jak wszystko dorze dobrane zostanie to na tej bateryjce długo taki układ pociągnie :)

    Wiec na koniec pozdrawiam i życzę udanych konstrukcji :)

    Odpowiedz
  • Ja się zastanawiam po co tam attiny?!
    Wystarczyłoby podłączyć ten przełącznik bezpośrednio do brzęczyka i by działało.
    Poza tym taki projekt to raczej nie na główną.

    Odpowiedz
    • Alarm ma być skasowany przyciskiem bez względu na stan otwarcia okna.

      Ps.
      Zgadzam się w części z kolegami krytykującymi ten projekt. Ale weźcie pod uwagę wiek autora. Ma 13 lat i jeśli nie ma z boku wsparcia doświadczonej w elektronice osoby, to i tak sukces, że coś takiego wykonał samodzielnie.

      Autorze, proponuję zarejestrować się na forum majsterkowo i tam omówić z forumowiczami projekt przed jego publikacją. Forumowicze zapewne doradzą i podpowiedzą, więc przyszłe projekty nie będą skazane na niską ocenę.

      Odpowiedz
  • Autorze, piszesz, że (cytuję): “po wciśnięciu przycisku alarm włączy się po zamknięciu albo ponownym otwarciu okna”. Jesteś pewien, że tak to działa? Po patrząc po “programie”:
    if(snow == HIGH && sprev == LOW) digitalWrite(PBUZ, HIGH);
    Moim zdaniem oznacza to, że buzer zostanie włączony, jeśli stan kontaktronu zmieni się z LOW na HIGH (czyli czujnik był zwarty i zostanie otwarty).
    Mam rację?

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?