logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zamek szyfrowy v.1.0 made by PTH

Pth 22 Sie 2006 15:31 17244 42
REKLAMA
  • Zamek szyfrowy v.1.0 made by PTH
    Przedstawiam mój zamek szyfrowy.
    Pomysł zrodził się już klika miesięcy temu kiedy to wpadłem że taki zamek można zrobić na tyrystorach ale układ byłby wtedy zbyt skomplikowany.
    Wiec od razu jak nauczyłem się obsługi procesorów skończyłem mój projekt.

    Zamek ten otwiera np. zamek elektromagnetyczny po wpisaniu odpowiedniego 4-syfrowego kodu. Główną jednostką miał być tańszy i poostrzy Attiny2313 ale planuję w przyszłości zrobić obsługę LCD do zamka tak więc w swojej konstrukcji użyłem mikrokontroler AVR ATmega8535, który posiada więcej wyjsć/wejść i posiada 4 razy większa pamięć flash.

    Układ składa się z dwóch części : manipulatora (klawiatury) i układu sterującego.

    Manipulator :
    Składa się z 12 przycisków od 0 do 12 + * i #. Umieściłem tam też dwukolorową diodę normalnie świecąca na czerwono a po podaniu stanu wysokiego na bazę jednego z tranzystorów zawarty w manipulatorze zmienia ona kolor na zielony.
    Wszystkie przyciski zwierają do masy.

    Układ sterujący :
    Jak już wcześniej wspomniałem użyłem procesor Atmega8353. W układzie sterującym znajduje się także programator i zasilacz stabilizowany +5V/1,5A
    W skład zasilacza wchodzi mostek kondensatory i stabilizator LM7812

    Cały program napisałem w BASCOMIE.

    Na razie wpisałem do niego 4 dostępne kody które otwierają zamek. Teoretycznie można wpisać dowolną liczbę.

    Do pisania i kompilacji programu użyłem programu BASCOM AVR DEMO 11.8.3

    W tytule napisałem, że to wersja 1.0 ponieważ będą następne, chociażby wersja rozszerzona o wyświetlacz alfanumeryczny LCD. :)

    A koszty? Hm...


    
    
    
    Procesor	15
    podstawka	0,3
    stabilizator	1
    gniazda	4
    obudowa	3
    przyciski	8,4
    kondesatory	3
    rezystory	0,5
    mostek	0,5
    kable	3
    diody	1,2
    tranzystory	0,4
    potencjometr	0,8
    piezo	1
    kwarc	0,4
    RAZEM : 	42,5
    
    [/url]


    potem jeszcze postaram się schamt namalowac na komputerze bo narazie mam go na kartce.

    Czekam na Waszeopinie! :D

    AHA : no i jeszcze sam program :

    ' CODE LOCK
       ' Ports confuguration, konfiguracja portów
    
          ' A ports, porty A
    Config Porta.0 = Input                                      ' 1
    Config Porta.1 = Input                                      ' 2
    Config Porta.2 = Input                                      ' 3
    Config Porta.3 = Input                                      ' 4
    Config Porta.4 = Input                                      ' 5
    Config Porta.5 = Input                                      ' 6
    Config Porta.6 = Input                                      ' 7
    Config Porta.7 = Input                                      ' 8
    
    Porta.0 = 1                                                 ' 1
    Porta.1 = 1                                                 ' 2
    Porta.2 = 1                                                 ' 3
    Porta.3 = 1                                                 ' 4
    Porta.4 = 1                                                 ' 5
    Porta.5 = 1                                                 ' 6
    Porta.6 = 1                                                 ' 7
    Porta.7 = 1                                                 ' 8
    
          ' C ports, porty C
    Config Portc.0 = Input                                      ' 9
    Config Portc.1 = Input                                      ' *
    Config Portc.2 = Input                                      ' 0
    Config Portc.3 = Input                                      ' #
    Config Portc.4 = Output                                     ' LED output, wyjscie sterujace LED
    Config Portc.5 = Output                                     ' Speaker Output , Wyjscie Glosnikowe
    Config Portc.6 = Output                                     ' transistor output, wyjście sterujące tranzystorem
    Config Portc.7 = Output                                     ' LCD_led, podswietlenie LCD
    
    Portc.0 = 1                                                 ' 9
    Portc.1 = 1                                                 ' *
    Portc.2 = 1                                                 ' 0
    Portc.3 = 1                                                 ' #
    Portc.4 = 0                                                 ' LED output, wyjscie sterujace LED : wylączany / czerwony
    Portc.5 = 0                                                 ' Speaker Output , Wyjscie Glosnikowe : wylączany
    Portc.6 = 0                                                 ' transistor output, wyjście sterujące tranzystorem : wylączany
    Portc.7 = 0                                                 ' LCD_led, podswietlenie LCD  : wyłączone
    
    
       ' Variables , zmienne
    Dim A As Integer                                            ' help variable no.1, zmienna pomocnicza nr.1
    Dim B As Byte                                               ' code digit no., numer cyfr z kodu
    Dim Code1 As Integer                                        ' code1, kod
    Dim Code2 As Integer                                        ' code2, kod
    Dim Code3 As Integer                                        ' code3, kod
    Dim Code4 As Integer                                        ' code4, kod
    Dim T1 As Integer                                           ' time 1, czas 1
    Dim T2 As Integer                                           ' opening time, czas otwarcia zamka
    
    Dim Dur As Integer                                          ' time 1, czas 1
    Dim Fra As Integer
    
    Begin:
    
    A = 0
    B = 0
    
    Code1 = 1234                                                ' 
    Code2 = 2345                                                ' 
    Code3 = 3456                                                ' 
    Code4 = 4567                                                ' 
    
    T1 = 60                                                     ' debounce
    T2 = 1                                                      ' seconds, sekundy
    Dur = 30
    Fra = 400
    
    
       ' Main program, glowny program
    
    
    Do
    
       If Pina.0 = 0 Then                                       '1
    
         If B = 0 Then A = A + 1000
         If B = 1 Then A = A + 100
         If B = 2 Then A = A + 10
         If B = 3 Then A = A + 1
         Sound Pinc.5 , Dur , Fra
         P1:
         Waitms T1
         If Pina.0 = 0 Then Goto P1
         Incr B
       End If
    
       If Pina.1 = 0 Then                                       '2
    
         If B = 0 Then A = A + 2000
         If B = 1 Then A = A + 200
         If B = 2 Then A = A + 20
         If B = 3 Then A = A + 2
         Sound Pinc.5 , Dur , Fra
         P2:
         Waitms T1
         If Pina.1 = 0 Then Goto P2
         Incr B
       End If
    
       If Pina.2 = 0 Then                                       '3
    
         If B = 0 Then A = A + 3000
         If B = 1 Then A = A + 300
         If B = 2 Then A = A + 30
         If B = 3 Then A = A + 3
         Sound Pinc.5 , Dur , Fra
         P3:
         Waitms T1
         If Pina.2 = 0 Then Goto P3
         Incr B
       End If
    
       If Pina.3 = 0 Then                                       '4
    
         If B = 0 Then A = A + 4000
         If B = 1 Then A = A + 400
         If B = 2 Then A = A + 40
         If B = 3 Then A = A + 4
         Sound Pinc.5 , Dur , Fra
         P4:
         Waitms T1
         If Pina.3 = 0 Then Goto P4
         Incr B
       End If
    
       If Pina.4 = 0 Then                                       '5
    
         If B = 0 Then A = A + 5000
         If B = 1 Then A = A + 500
         If B = 2 Then A = A + 50
         If B = 3 Then A = A + 5
         Sound Pinc.5 , Dur , Fra
         P5:
         Waitms T1
         If Pina.4 = 0 Then Goto P5
         Incr B
       End If
    
       If Pina.5 = 0 Then                                       '6
    
         If B = 0 Then A = A + 6000
         If B = 1 Then A = A + 600
         If B = 2 Then A = A + 60
         If B = 3 Then A = A + 6
         Sound Pinc.5 , Dur , Fra
         P6:
         Waitms T1
         If Pina.5 = 0 Then Goto P6
         Incr B
       End If
    
       If Pina.6 = 0 Then                                       '7
    
         If B = 0 Then A = A + 7000
         If B = 1 Then A = A + 700
         If B = 2 Then A = A + 70
         If B = 3 Then A = A + 7
         Sound Pinc.5 , Dur , Fra
         P7:
         Waitms T1
         If Pina.6 = 0 Then Goto P7
         Incr B
       End If
    
       If Pina.7 = 0 Then                                       '8
    
         If B = 0 Then A = A + 8000
         If B = 1 Then A = A + 800
         If B = 2 Then A = A + 80
         If B = 3 Then A = A + 8
         Sound Pinc.5 , Dur , Fra
         P8:
         Waitms T1
         If Pina.7 = 0 Then Goto P8
         Incr B
       End If
    
       If Pinc.0 = 0 Then                                       '9
    
         If B = 0 Then A = A + 9000
         If B = 1 Then A = A + 900
         If B = 2 Then A = A + 90
         If B = 3 Then A = A + 9
         Sound Pinc.5 , Dur , Fra
         P9:
         Waitms T1
         If Pinc.0 = 0 Then Goto P9
         Incr B
       End If
    
       If Pinc.1 = 0 Then                                       '*
          Waitms 25
         Sound Pinc.5 , 200 , 500
         Waitms 100
         Sound Pinc.5 , 200 , 500
         Goto Begin
    
       End If
    
       If Pinc.2 = 0 Then                                       '0
          Sound Pinc.5 , Dur , Fra
         P11:
         Waitms T1
         If Pinc.2 = 0 Then Goto P11
         Incr B
       End If
    
    
       If Pinc.3 = 0 Then                                       '#
    
         Goto Check
       End If
    Loop
    
    Check:
    
       If Code1 = A Or Code2 = A Or Code3 = A Or Code4 = A Then
         Sound Pinc.5 , 100 , 300
         Sound Pinc.5 , 100 , 200
    
         P12:
          Portc.4 = 1
          Portc.6 = 1
          Waitms T1
         If Pinc.3 = 0 Then Goto P12
         Wait T2
         Portc.4 = 0
         Portc.6 = 0
         Goto Begin
       End If
    
       If Code1 <> A Then
         Portc.4 = 0
         Portc.6 = 0
         Sound Pinc.5 , 100 , 200
         Sound Pinc.5 , 100 , 300
         P13:
         Waitms T1
         If Pinc.3 = 0 Then Goto P13
         Goto Begin
       End If
    
    End                                                         ' End program


    program nie jest idealny, ma liczne błędy ale ważne, że sie nie da złamać kodu :)
    Załączniki:
    • Zamek szyfrowy v.1.0 made by PTH manipulator_out.jpg (57.02 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Zamek szyfrowy v.1.0 made by PTH sterownik_top.jpg (81.04 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    Pth
    Poziom 26  
    Offline 
    Pth napisał 1080 postów o ocenie 39, pomógł 9 razy. Mieszka w mieście Kraków. Jest z nami od 2005 roku.
  • REKLAMA
  • #2 2941521
    RaideR_87
    Poziom 14  
    Posty: 166
    Pomógł: 2
    Ocena: 8
    Z czego jest on zasilany?
  • #3 2941632
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    Jesli zasilacz jest 5V i 1,4 A to w jego wskład wchodzi LM 7805..ale to literówka. Na drgajace styki bascom ma komende debounce...(ale osobiscie nie polecam bo czasem jaja robi). Podczas wpisywania kodu mozna zrobic inazej(mniej kombiinowania). Kod zrobic jako string i np po wcisnieciu 1 a=a+"1" dla 2 a=a+"2" itd....czyli wciskajac 1 pozniej 2 otrzymujemy
    a ="12" .... jesli nadal chcialbys ulepszac ten program to bascom ma funkcje do klawiatury(cos jak macierz i dla klaw. 16 przyciskowej uzywasz bodajze 8 wejsc uP). Ja osobiscie wole uP MEGA8 chociazby dlatego ze kosztuje 4 zł brutto.... ogólnie fajna konstrkcja pozdrawiam.
  • #4 2941657
    Krzysztof33
    Poziom 16  
    Posty: 187
    Ocena: 3
    Na pewno sporo się musiałeś nagłówkować nie tylko nad samą konstrukcją, ale nad kombinacjami kodu, jeśli się nie mylę, mam jedno zastrzerzenie co do wyglądu tej klawiatury, ale ogólnjie jest dobrze. 4+/6. Czy ta płytka jest zainstalowana wewnątrz klawiatury, czy masz do tego inną skrzynkę??
  • REKLAMA
  • #5 2941687
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Procesor jak i caly ukłąd steryjący nie moga byc zamontowane w manipulatorze bo takto ktoś z zewnątrz móglby otworzyć zamek...
  • #6 2941758
    bishop
    Poziom 16  
    Posty: 232
    Pomógł: 17
    Ocena: 27
    aha. i co do bezpieczenstwa..... mozna zczytac z uP flesh i kod jest miecy offsetem 154-157.... :D ae to taka dygresja......
  • REKLAMA
  • #7 2941779
    jam_es
    Poziom 24  
    Posty: 491
    Pomógł: 75
    Ocena: 93
    Witam

    Proponowałbym zastosowanie klawiatury matrycowej. Ta sama ilość klawiszy wykorzytuje nie 3x4=12 pinów portów, ale 3+4=7.
    Jesli planujesz w przyszłości podpięcie LCD, to oczywiście w konfiguracji 4-bitowej - też ograniczysz wymaganą ilość użytych pinów.
    Polecam też zainteresowanie się mikrokontrolerem ATMega8. Bardzo fajny sprzęt - peryferia i cena (6,90zł) :D

    Pozdrawiam
  • #8 2941791
    elektryk1e
    Poziom 22  
    Posty: 709
    Pomógł: 38
    Ocena: 34
    ladny ladny, ale tylko do uzytku wewnetrznego chyba bo ta klawiaturka nie zbyt bezpiecznie wyglada. na zewnatrz musialbys miec taka z automatu telefonicznego. tam klawisze sa z cisnieniowo wtryskiwanego aluminium.
  • #9 2941983
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    Sterownik jest po jednej a manimulator jest bo drugiej stronie sciany wiec nie ma jak zczytać kodu... własnie dlatego nie montowałem sterownika w manimulatorze...

    pierwsze zdjecie pzredstawia manimulator zamonowany na ścianie przed moim pokojem :D
  • #10 2942091
    kamiljus
    Poziom 15  
    Posty: 140
    Pomógł: 3
    Ocena: 1
    Projekt całkiem całkiem. Ja bym jednak proponował zastosować klawiaturę membranową. Koszt 10zł. Ładnie wygląda, można przylepić do ściany. Oczywiście zależy gdzie ma być to montowane. Bo jeśli jest z góry zdane na niszczycielskie ręce wandali to membranowa odpada. Ale jeśli w domu czy coś takiego to membranowa będzie lux.
  • #11 2942166
    Konto nie istnieje
    Konto nie istnieje  
  • #12 2942275
    vankej
    Poziom 16  
    Posty: 198
    Pomógł: 14
    Ocena: 33
    bardzo mi sie podoba ten pomysl bardzo ladnie jest wykonana plytak nieco gorzej wykonana jest obudowa pomysl cos nad jakas matryca

    pozdrawiam
  • #14 2942530
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    nie mam pojęcia jak sterowac z matrycowej klawiaturki :D ale ja wpadłem na lepszy pomysł. W klawiaturce bedzie jakiś procek - powiedz attiny2313 normalnie podłaczony do każdego przucisku. i teraz z tego procka będa szły tylko 2 kable zamiast 12 wysyłające sygnały go głównego procesora (np drugi attiny). jednym kablem bedzie przsyłana informacja o nadchodzącym kodzie a drugi kabel to będzie kod w postaci taktów o danej ilośći np. dla 1 bedzie jeden takt , dla 2 bedą dwa takty i tak dalej... Tak wiec już przy wersji zamka z LCD zredukuje ilosc kabelków z 12 do 2 :)
    gdybym teraz chciał dołożyć LCdD'ka to było by 6 dodatkowych żył (EN, RW , data 4-7)... Tylko narazie ten zamek nic nie otwiera bo nie kupiłem jeszcze zamka elektromagnetycznego... Problemem jest to czy uda mi się załatwić w miare cichy zamek, który nie bedzie buczyeć bardzo przy otwieraniu :)
    Nie wiecie w jakiej cenie mogą być takie zamki?
  • #15 2942644
    vankej
    Poziom 16  
    Posty: 198
    Pomógł: 14
    Ocena: 33
    widzialem kidys w nomi zamki za 24V i kosztowaly okolo 20 zl nie wiem czy byly one takie dobre ale cena nei najgorsza a co do gornej granicy cenowej to...
    znalazlem taki jeden zamek podobny do tego co widzielm a nomi
    http://my.aukcje24.pl/accdb/viewItem.asp?IDI=...tingType=0&ListingSort=1&PageNum=1&Catg=18935

    pozdrawiam
    Załączniki:
    • Zamek szyfrowy v.1.0 made by PTH zamek.jpg (57.24 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #16 2942881
    zupik15
    Poziom 12  
    Posty: 25
    Ocena: 2
    albo klawiaturka od jakiegos domofonu mozesz sie pokusic o zamek na karte np.z bankomatu
  • #17 2942917
    KaW
    Poziom 34  
    Posty: 2616
    Pomógł: 170
    Ocena: 306
    ja na taki ostatnio pokazany mowie -Zaczep -typ poznanski duzy-
    jest odporny na ciezka prace -kiedys mial jezyk z mosiadzu -a od pewnego czasu -roznica w cenie klkulowanego moaiadzu a aluminium-czy cynku -jest duza -to teraz ktos to robi z alu i maluje zlotkiem na mosiaż/.../.
    Mysla ,ze ja takich kantow nie znam -oczywiscie -dzika reka rynku tego nie wie i kupuje jak leci... sa rozne wykonania zaczepow .
    Co do tego elektronicznego zamka kodowego to dac mu dobra klawiature -od ap wrzutowych-trudna do rozwalenia i juz stanowi zagrozenie dla leniwych producentow podobnych wyrobow stosujacych
    jakies dziecinne klawiatury z gumy silikonowej z cyferkami .koszt takiej
    -komplet -nowy ok 120-130 zl plus troche blachy -cala elektronika-jest w jednym malym pudelku...
    Duze dzieci -wyrywaja te gumy z cyframi i rysuja gwosdziem po matrycy klawiatury -.............. tak sie maja mikroprocesory pod strzechami ......
    Klawisze cyferek w ap wrzut sa odlewane z cynku -potem miedziowane i chromowane ..........na aluminium nie da sie zrobic tanio tej sztuki...
  • #18 2942940
    kamiljus
    Poziom 15  
    Posty: 140
    Pomógł: 3
    Ocena: 1
    http://www.lcel.com.pl/strona.php?p=63&item=312 Może to kryptoreklama, ale chcę pomóc.
    Cyframi oznaczyłem numery pinów na klawiaturce.
    Sterowanie taką klawiaturą nie jest trudne. Już wyjaśniam o co chodzi. Mamy 12 przycisków , podłączamy do wejść mikrokontrolera pierwsze 4 (1,2,3,4) żyły i do wyjść pozostałe 3 (5,6,7) . Do 5,6 i 7 po kolei podajemy stan wysoki z uC i sprawdzamy stany na 1,2,3,4. I teraz powiedzmy. ustawiliśmy +vcc na pin 5 i zczytujemy po kolei piny 1,2,3,4, okazuje się , że +vcc jest na pinie 2. Wniosek taki, że został wciśnięty przycisk nr [4]. (Ponieważ na pinie piątym i pinie drugim możemy zauważyć podłączenie do przycisku nr [4])
    Mam nadzieję, że pomogłem. Choć 7 żył to jeszcze nie jest satysfakcjonujące. PS. W swojej klawiaturce możesz również użyć 1wire to będziesz miał tylko jeden kabel (Oprócz zasilania).
    Pozdrawiam
  • #19 2943729
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    A moze tak schemacikiem zucisz ?
    I jak zaprogramowac kod ?

    p.s. Dalbys rade przepisac kod na innego procka ? Ten jest dosydz drogi :(
  • REKLAMA
  • #20 2943823
    szrapnel
    Poziom 11  
    Posty: 12
    Ocena: 1
    Witam!
    Podoba mi się, że pomysł zrealizowany samodzielnie do początku do końca. Sam na czymś podobnym myślałem do drzwi do mieszkania w bloku ale słabym punktem jest stosowanie elektrozaczepu, który nadaje się chyba tylko do domofonu albo do wewnątrz mieszkania. A może ktoś wie czy można dostać zamki elektromagnetyczne z prawdziwego zdarzenia?
    Pozdrówka :)
  • #21 2943859
    sysio10
    Poziom 16  
    Posty: 110
    Pomógł: 13
    Ocena: 14
    Projekt dla mnie dziwny, zrobiłem coś podobnego na atmega8 i atmega16. Zamek od lipca obsługuje domofon w bloku 36 lokali. Przyjąłem zupełnie inną zasadę. Kod zaczyna się numerem lokalu a następnie 4 cyframi. Istotne jest to że taki kod może być zmieniany w dowolnym momencie. Poza programatorem może być zmieniona również liczba obsługiwanych lokali, na podczepianym zewnętrznym LCD wyświetlane są obecne kody i opcje ustawiania parametrów zamka. Program zamka zawiera pin master umożliwiający zmianę pinu dowolnego lokalu. To zmieściło sie do atmega8. Ponieważ chciałem obsłużyć otwieranie rygla przez pastylki dallasa, program rozrósł sie do atmega16 plus pamięci szeregowej 24c64. Skorzystałem z wewnętrznego oscylatora, więc udało się zrezygnować z kwarcu.

    Projekt ten był również moim pierwszym projektem w Bascomie na AVR

    co do odgłosów przy otwieraniu rygla, to wyciszyłem odgłosy poprzez wstawienie mostka diodowego przed samym ryglem (opcję zastosowałem w innym domofonie niż zamek szyfrowy, tam lokatorzy parteru mieli małe dziecko które budził odgłos otwieranego rygla)
  • #22 2944001
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    tu napisałem mały programik obsługi całej klawiatury z dwóch kabli gdzie jeden byłby sygnałem rozpoczynającym sekwencje kodu klawiszy i ten sygnał byłby obecny do czasu kiedy sekwencja zostanie zakończona. drugim kablem byłby sam sygnał sekwencji danego klawisza. każdy klawisz to określona ilosć taktów. Tylko, że teraz w klawiaturce musiałby byc jeden procek który by nadawał sygnał do drugiego procka po drugiej stronie sciany
    Drugi procek byłby odbiornikiem i dekodował by sygnał z procka nadajacego i potem wykonywał by juz całą robotę z szyfrem etc... Dlatego musi być po drugiej stronie bo wtedy nikt z zewnątrz nawet ingerując w klawiatuke nie otworzy zamka niemając dostepu do procka wewnątrz pomieszczenia.

    tu juz napisałem ais programik:

    co Wy na to?

    nadajnik :

    
    
    Dim B As Integer
    Dim A As Integer
    
    checkkbd:
       b=0
       do
          if portb.0 = 0 then
             Sound , Pind.5 , 100 , 200
             b=0
             p1:
                if portb.0 = 0 then
                   Waitms 60
                   Goto P1
                End If
             goto sequence:
          end if
    
          if portb.1 = 0 then
             Sound , Pind.5 , 100 , 200
             b=1
             p2:
                if portb.1 = 0 then
                   Waitms 60
                   Goto P2
                End If
             goto sequence:
          end if
         ' ...
         ' itd wsyztkie klawisze sprawdza...
        loop
    sequence:
       porta.0=1
       for a=0 to B
          porta.1 = 1
          waitus 1000
          porta.1 = 0
    Next A
    
    


    i odbiornik:

    
    
    Dim A As Integer
    Dim B As Integer
    
    
    Startbit:
       do
          if porta.0 = 1 then goto seq
       loop
    seq:
       a = 0
       do
          If Porta.0 = 0 Then Goto Decode
          if porta.1 = 1 then
             incr a
             p1:
                If Porta.1 = 1 Then Goto P1
          End If
        loop
    decode:
        ' tu juz przyporządkowanie liczbom odebranym z nadajnika liczb do kodu i sprawdzanie poprawności kodu.
    
    
  • #23 2944072
    Jectiv
    Poziom 17  
    Posty: 183
    Pomógł: 22
    Ocena: 15
    Witam

    Pomysł dobry do nauki programowania i wykorzystywania mikrokontrolerów.
    Daje możliwość poznania specyfiki tematu przed zajęciem się trudniejszymi konstrukcjami. Proponuję zastanowić się nad możliwością programowania kodów z klawiatury, żeby nie trzeba było za każdym razem podłączać komputera.

    Natomiast typowo takie zamki buduje się z gotowych tanich układów scalonych. Potrzebują tylko kilku elementów zewnętrznych.
    Mogą posiadać od jednego do kilkudziesięciu kodów o różnych poziomach i kilka wyjść.
    Kody i funkcje może użytkownik sam przeprogramować z klawiatury.

    Pozdrowienia
  • #24 2944199
    kamiljus
    Poziom 15  
    Posty: 140
    Pomógł: 3
    Ocena: 1
    Zrobiłem taki schemacik klawiaturki matrycowej 3x4 (Takiej jak Twoja). Kodu Ci nie napiszę bo nie znam bascoma. Ale sądzę, że po wyjaśnieniach, bez problemu sam sobie z tym poradzisz. Na schemacie dałem opcjonalnie pin do podłączenia przerwania. Służy on temu, żeby nie pętlić cały czas programu i oczekiwać na wciśnięcie klawisza, tylko po prostu gdy ktoś wciśnie to wywołuje przerwanie no i wtedy sprawdzasz co zostało wciśnięte. Jeśli będziesz używał przerwania to robisz tak: Na początku ustawiasz wszystkie wyjścia (te 3 piny) na stan wysoki. Gdy ktoś wciśnie jakiś klawisz to wtedy na IRQ pojawi się narastające zbocze i wywoła przerwanie (które z kolei przejdzie do funkcji):
    Funkcja ma wyglądać następująco:
    wchodzisz w pętle for od jednego do 3 //potrójne wykonanie pętli
    {Instrukcje wykonane w pętli:
    ustawiasz na pinach po kolei stan wysoki. Czyli żeby po kolei na wyjściach pojawiły się jedynki.
    po ustawieniu na którymś pinie jedynki
    wchodzisz w pętle for od 1 do 4 (4 wywołania)
    i wtedy po kolei na każdym wejściu sprawdzasz stan.
    }
    W praktyce funkcja ma działać w ten sposób. Na pierwszym pinie wyjścia ustawiasz stan wysoki i zczytujesz wszystkie 4 wejścia i tak po kolei wykonujesz to 3 razy.
    Wiem, że trochę pomotałem, ale cięzko tak mi kod tłumaczyć na język polski.
    a gdybyś to robił bez przerwań (wtedy usuwasz te diody również ze schematu) to tą funkcję zapuszczasz w pętlę nieskończoną i wychodzisz dopiero wtedy jak zostanie wciśnięty jakiś przycisk.
    Rozumiesz już o co chodzi??
    Mogę pomóc napisać tę funkcję, ale w C bo bascoma nie znam.
    Pozdrawiam
    Kamil
    Załączniki:
    • Zamek szyfrowy v.1.0 made by PTH keyboardmatrix.jpg (28.24 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #25 2944750
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    No a mógłbyś opisac sposób bez przerwania?

    Jeśli chodzi o możliwośc zmiany kodu z klawiatury manipulatora to będzie ja zamontuje LCD'ka i naucze sie obsługiiwac eeprom. :)
  • #26 2944879
    kamiljus
    Poziom 15  
    Posty: 140
    Pomógł: 3
    Ocena: 1
    Cytat:
    gdybyś to robił bez przerwań (wtedy usuwasz te diody również ze schematu) to tą funkcję zapuszczasz w pętlę nieskończoną i wychodzisz dopiero wtedy jak zostanie wciśnięty jakiś przycisk.

    Przecież napisałem. Tylko tyle, że na początku nie ustawiasz wszystkich pinów na stan wysoki tylko cały czas po kolei je ustawiasz.
  • #27 2945298
    Marcin_126
    Poziom 16  
    Posty: 266
    Ocena: 6
    Pth,
    W najprostszym przypadku możesz poprotsu w pętli sprawdzać stany klawiszy.
    Co do eeproma czy chodzi ci o wewnętrzny?
    zapis: WRITEEEPROM wartosc , adres
    odczyt: READEEPROM wartosc , adres
    Nie jetem pewien czy 8535 ma taki.
    Jeżeli po IC2, 24CXX to:

    Odczyt:
    I2cstart
    I2cwbyte 164
    I2cwbyte Adres_epr_hi
    I2cwbyte Adres_epr_lo
    I2cstart
    I2cwbyte 165
    I2crbyte Dana_epr , Nack
    I2cstop

    Zapis:
    I2cstart
    I2cwbyte 164
    I2cwbyte Adres_epr_hi
    I2cwbyte Adres_epr_lo
    I2cwbyte Dana_epr
    I2cstop
  • #28 2947850
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    8535 ma 512 bajtów wewnętrznego eeproma.
  • #29 2949065
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Pth napisał:
    8535 ma 512 bajtów wewnętrznego eeproma.


    To troszke przymalo :|
  • #30 2949103
    Pth
    Poziom 26  
    Posty: 1080
    Pomógł: 9
    Ocena: 39
    512 bajtów to mało na kilka 4-cyfrowych liczb?!

Podsumowanie tematu

✨ Przedstawiono projekt zamka szyfrowego opartego na mikrokontrolerze AVR ATmega8535, który steruje elektromagnetycznym zamkiem po wpisaniu 4-cyfrowego kodu. Układ składa się z manipulatora (klawiatury) z 12 przyciskami oraz jednostki sterującej umieszczonej po drugiej stronie ściany dla zwiększenia bezpieczeństwa. Dyskutowano o różnych typach klawiatur: matrycowej 3x4, membranowej oraz klawiaturze z telefonów automatycznych, podkreślając zalety redukcji liczby przewodów i trwałość przycisków. Zaproponowano zastosowanie dodatkowego mikrokontrolera (np. Attiny2313) w manipulatorze do kodowania sygnału i przesyłania go dwoma przewodami do głównego procesora, co zmniejsza liczbę połączeń. Poruszono kwestie programowania obsługi klawiatury, wykorzystania przerwań, debouncingu oraz zapisu i odczytu kodów z wewnętrznego EEPROM (512 bajtów w ATmega8535) z możliwością rozszerzenia pamięci zewnętrznej. Wskazano na potrzebę zabezpieczenia kabli i obudowy przed uszkodzeniami mechanicznymi i ingerencją osób niepowołanych. Dyskusja obejmowała także wybór odpowiedniego zamka elektromagnetycznego, jego cenę oraz sposoby wyciszenia dźwięków pracy rygla. Autor planuje dalszy rozwój projektu, w tym dodanie wyświetlacza LCD i programowanie kodów bez konieczności podłączania programatora.
Wygenerowane przez model językowy.
REKLAMA