Witam, ostatnio zrobiłem pewien prosty projekt do mojego repertuaru. Jest to zabezpieczenie gniazda 220 V za pomocą hasła na Arduino Nano.
Lista częsci oraz linki do sklepu:
- Obudowa Z 77
- Przekaźnik 10A 5V
- Dioda prostownicza
- Zasilacz 12V 2,1A
- Arduino Nano
- Klawiatura membranowa 4X3
- Dioda RGB wspólna anoda
- Rezystor 220 Ohm
- Rezystor 470 Ohm
- Przewody żeńsko męskie
- Przedłużacz np. Ten
A teraz budowa krok po kroku:
Zacząłem od zamontowania klawiatury na obudowie, otwór wykonałem za pomocą wiertła i noża do tapet, wymierzyłem wszystko na oko:
Potem zamontowałem przekaźnik w obudowie, za pomocą (jak większość rzeczy) kleju termotopliwego:
Potem podłączyłem Arduino Nano do klawiatury zaczynając od pinu D2 a kończąc na pinie D8:
Następnie założyłem diodę RGB poprzez wywiercenie otworu o średnicy diody tuz przy tym poszerzeniu na podstawie, potem po prostu ją wcisnąłem i trzymała się doskonale. Połączyłem kolor zielony przez rezystor 220 Ohm do pinu 13 (w kodzie: Unlock), a kolor czerwony przez rezystor 470 Ohm do pinu 11 (w kodzie: Lock). Pewnie myślicie: Po co ta różnica rezystorów? Odpowiedz brzmi: Ponieważ struktura czerwona świeci mocniej od zielonej, a chciałem żeby świeciły w miarę równo. Efekt zewnętrzny montażu widać na poniższym zdjęciu:
Potem rozmontowałem zasilacz tak ze wyjąłem go z obudowy, odłączyłem oryginalny przewód z wtykiem i wlutowałem dwa krótkie przewody z końcówkami żeńskimi oraz potem wywierciłem w obudowie otwory o średnicy około 5 mm, wcisnąłem przewód 220 V i podłączyłem zasilacz na stale do 220 V, i Arduino na stale poprzez pin VIN do zasilacza, oraz masy zasilacza. Potem podłączyłem przekaźnik przez diodę krzemową do arduino (masa) oraz drugim pinem do 5V. Potem na pozycji normalnie rozwartej połączyłem Fazę, zera połączyłem ze sobą. Wszystko widać na poniższym zdjęciu:
Potem skręciłem wszystko na cztery śrubki i oto rezultat:
A teraz czas na Kod Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
/* Zabezpieczenie gniazda 220V to projekt polegajacy na zabezpieczaniu gniazda przekaznikiem ktory zalacza zasilanie po wpisaniu hasla. Dioda Unlock swieci na zielono, dioda Lock na czerwono. */ //dołączanie bibliotek #include <Keypad.h> //Klawiatura #include <Password.h> //Haslo Password password = Password( "1579" ); //ustalanie hasła //klawiatura const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'*','0','#'}, {'7','8','9'}, {'4','5','6'}, {'1','2','3'} }; byte rowPins[ROWS] = {5,4,3,2}; //piny klawiatury byte colPins[COLS]= {6,7,8}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int Wyl = HIGH; int Wl = LOW; int Unlock = 13; int Lock = 11; int Przekaznik = 12; void setup(){ keypad.addEventListener(keypadEvent); pinMode(Unlock, OUTPUT); //dioda Unlock pinMode(Lock, OUTPUT); //dioda Lock digitalWrite(Unlock, Wyl); digitalWrite(Lock, Wyl); pinMode(Przekaznik, OUTPUT); //Przekaznik digitalWrite(Przekaznik, Wyl); //Przekaznik jest wylaczony } void checkPassword(){ //sprawdzanie hasla if (password.evaluate()){ //jeśli haslo się zgadza digitalWrite(Przekaznik, Wl); //wlacz przekaznik digitalWrite(Unlock, Wl); //zamigaj dioda Unlock delay(1000); digitalWrite(Unlock, Wyl); delay(100); digitalWrite(Unlock, Wl); delay(100); digitalWrite(Unlock, Wyl); //Odblokowano!!! }else{//w przeciwnym razie digitalWrite(Przekaznik, Wyl); //Wylacz przekaznik digitalWrite(Lock, Wl); //Zamigaj dioda Lock delay(1000); digitalWrite(Lock, Wyl); delay(1000); digitalWrite(Lock, Wl); delay(1000); digitalWrite(Lock, Wyl); delay(1000); password.reset(); //Automatyczny Reset hasla } } void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED: //jakikolwiek przycisk jest wcisniety digitalWrite(Unlock, Wl); //Mrugnij dioda Unlock delay(100); digitalWrite(Unlock, Wyl); switch (eKey){ case '*': checkPassword(); //Sprawdzanie hasla break; case '#': password.reset(); //Reset hasla digitalWrite(Przekaznik, Wyl); //Wylacz Przekaznik digitalWrite(Lock, Wl); //Zamrugaj dioda Lock delay(1000); digitalWrite(Lock, Wyl); delay(1000); break; default: password.append(eKey); } } } void loop(){ keypad.getKey(); } |
Działanie:
- Po wpisaniu odpowiedniego hasła (1579), dioda zielona mrugnie na sekundę, a potem na 100 ms, przekaźnik zostanie zwarty (włączony).
- Po wpisaniu nieprawidłowego hasła (np. 1234) dioda czerwona 2 razy zamruga na sekundę. Przekaźnik nadal będzie wyłączony.
- Po naciśnięciu “#” Hasło się zresetuje, a przekaźnik zostanie rozwarty (wyłączony).
Czekam na komentarze i pomysly na ulepszenie tego projektu .
Chyba żona za mocno Ci koszule prasuje, że musisz hasła na gniazdka zakładać :) A tak na poważnie całkiem fajny pomysł szczególnie gdy w domu są małe dzieci i pchają ręce wszędzie, gdzie nie trzeba.
Twoje zabezpieczenie ma jedynie charakter edukacyjny. Gniazda nie zabezpiecza, bo można podłączyć odbiornik bezpośrednio do gniazda.
Co do charakteru edukacyjnego tego zabezpieczenia to chcialem zrobic to na scianie, i z gniazdem na obudowie, tyle ze uznalem ze nie chce wprowadzac zmian w instalacji w mieszkaniu.
Tak, tyle ze w wieku 13 lat nie mam jeszcze zony :D
fesst… tylko tak dalej :) kiedyś było to normą, że się majsterkowało od młodego .. bo nie było innego zajęcia a teraz to jest fenomen :)
Pozdrawiam
Za pomysł daję 5. Jeżeli faktycznie masz 13 lat to gratuluje zapału i chęci do majsterkowania. Ćwicz dalej i kombinuj.
Osobiście dla bezpieczeństwa zastosowałbym 2 przekaźniki na fazę i zero bo robiąc to na jednym pinie właściwie ryzykujesz że ktoś odwróci ci wtyczkę o 180st i nie będzie to już wtedy bezpieczne :).
Dodatkowo jako zabezpieczenie Arduino użyłbym transoptor w celu odizolowania go od przekaźnika, który w tej formie, bez układu gasikowego przy obciążeniu indukcyjnym, może ci resetować procesor. W takim przypadku lepiej stosować gotowe układy przekaźnikowe dla arduino lub też przez moduły SSR.
Pozdrawiam
Jeśli ma ktoś gniazda bez uziomu w postaci bolca, to jest możliwe odwrócenie wtyczki, ale na polskim gnieździe jest to niemożliwe. Co do resetowania procesora, jest to całkiem możliwe, w czasie budowy urządzenia wystąpił taki problem, ale dioda pozwoliła mi o nim zapomnieć :)
Zamiast arduino za 100zł użyłbym chociażby nodemcu z esp8266 za 40zł (a od Chińczyków nawet za 10zł). Można go programować tak samo jak arduino. Dodatkowo ma interfejs wifi, co pozwalałoby sterować zabezpieczeniem np z telefonu.
arduino nano kosztuje 13 złotych na aledrogo. do esp8266 nie podłączysz ośmiopinowej klawiatury bez ekspandera (darmo nie dają).
ethanak Racja :)
Zawsze pozostaje pytanie z której strony majster podłączał fazę a to zależy w dużej mierze od jego fazy
Masz rację, ale niestety nie dałem drugiego przekaźnika ze względu na małą ilość miejsca.
Zamierzam zrobic aktualizacje urzadzenia.
Ćwiczenie z elektronika na 6.
Bezoieczeństwo na 1 z podkresleniem.
Chodzi Ci o grzebanie z instalacją elektryczną? O to się nie bój. W swoim życiu zmontowałem samodzielnie trzy instalacje elektryczne w budynkach, i wiem co nieco na temat prądu :)
Na temat prądu to może wiesz co nieco, ale na temat bezpieczeństwa w instalacjach 230VAC to najwidoczniej nie wiesz za wiele… Wystarczy spojrzeć na wykonane przez Ciebie urządzenie… Przewody 230VAC niemal stykają się z przewodami niskiego napięcia (5VDC ?) . Kolejno wystarczy pociągnąć za kabel (biały) to ciekawe co będzie…
W budynkach nie jedna osoba już coś grzebała przy instalacji, ale jest jedno ALE. Zrobić coś bo się coś tam wie to jedno ale zrobić coś zgodnie z sztuką i bezpiecznie dla drugiej osoby to drugie.