Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Podobne dokumenty
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Programowanie mikrokontrolerów AVR

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

PRZEDWZMACNIACZ PASYWNY Z SELEKTOREM WEJŚĆ. dokumentacja. (wersja 1.1

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Instytut Teleinformatyki

Instytut Teleinformatyki

Płytka ewaluacyjna z ATmega16/ATmega32 ARE0021/ARE0024

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

Moduł prototypowy X3-DIL64 z procesorem ATxmega128A3U-AU

SYSTEMY MIKROPROCESOROWE W AUTOMATYCE. Projekt bariery świetlnej.

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

LITEcomp. Zestaw uruchomieniowy z mikrokontrolerem ST7FLITE19

Mikrokontrolery AVR Wprowadzenie

Programowanie mikrokontrolerów AVR z rodziny ATmega.

ZL8AVR. Płyta bazowa dla modułów dipavr

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Schemat blokowy architektury AVR

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

ISP ADAPTER. Instrukcja obsługi rev.1.1. Copyright 2009 SIBIT

Moduł uruchomieniowy AVR ATMEGA-16 wersja 2

Klawiatura matrycowa

Płytka uruchomieniowa XM32

INSTRUKCJA OBSŁUGI KROSOWNICY WIDEO KV-12/4

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

MOD Xmega explore z ATXmega256A3BU. sklep.modulowo.pl akademia.modulowo.pl zestawy.modulowo.pl app.modulowo.pl blog.modulowo.

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

LOW ENERGY TIMER, BURTC

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

Płytka uruchomieniowa AVR oparta o układ ATMega16/ATMega32. Instrukcja Obsługi. SKN Chip Kacper Cyrocki Page 1

1 Badanie aplikacji timera 555

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

ZAMEK KODOWY 100 KODÓW REF. 6991

SML3 październik

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

ATNEL. Programator USBASP. Instrukcja obsługi. Instrukcja programatora USBASP firmy Atnel. Mirosław Kardaś

Mateusz Skiba Jakub Szymaczek. LINEFOLLOWER WiX

Sterownik diod RGB. Robert Budzioski

Touch button module. Moduł przycisku dotykowy z podświetleniem LED

Płytka uruchomieniowa XM64

Instytut Teleinformatyki

E-TRONIX Sterownik Uniwersalny SU 1.2

DEKODER FUNKCJI SPECJALNYCH

MJOY ENCODERS v1 ZASADA DZIAŁANIA

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Centrala alarmowa ALOCK-1

Płyta ewaluacyjna z mikrokontrolerem Atmega32. Autor Dariusz Wika

Instrukcja użytkownika

Programator procesorów rodziny AVR AVR-T910

INSTRUKCJA OBSŁUGI Zestaw uruchomieniowy EvB 5.1 v5

Wyniki (prawie)końcowe - Elektroniczne warcaby

Mikroprocesorowy Przełącznik Antenowy

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

4 Adres procesora Zworkami A0, A1 i A2 umieszczonymi pod złączem Z7 ustalamy adres (numer) procesora. Na rysunku powyżej przedstawiono układ zworek dl

A-100WP ELEKTRONICZNY WANDALOODPORNY ZEWNĘTRZNY ZAMEK SZYFROWY DO MONTAŻU NADTYNKOWEGO

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Politechnika Białostocka

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

DOKUMENTACJA TECHNICZNA WSKAŹNIKA ŁADOWANIA BATERII WSK-2 / 24V

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

AN ON OFF TEMPERATURE CONTROLLER WITH A MOBILE APPLICATION

Programowany, 16-kanałowy sterownik 230 V

eldrim Uniwersalny odbiornik radiowy zgodny ze standardem transmisji KEELOQ Basic Pulse Element Rev.1.2

Moduł Tablicy Synoptycznej MTS42 do systemu AFS42

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

KLAWIATURA Z CZYTNIKIEM KART WANDALOODPORNA AUTONOMICZNA Z PODŚWIETLENIEM MODEL: YK-568L

Instrukcja użytkownika

Uniwersalna klawiatura ELITE z wyświetlaczem LCD

Odbiornik Systemu Radiowego RXI4N8

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

INSTRUKCJA OBSŁUGI IMMOBILIZERA TRANSPONDEROWEGO

Instrukcja użytkownika

Raport z realizacji projektu: Projekt stanowiska sterowania komorą podciśnieniową

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

MultiTool instrukcja użytkownika 2010 SFAR

Sterownik Spid Pant 8 i Ant 8. Podręcznik użytkowania

DOKUMENTACJA. dot. Budowy i przebiegu konstrukcji linefollower-a. Data: MCHT2 Jakub Tomczyk Łukasz Pawelec Mateusz Wróbel

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

KAmduino UNO. Płytka rozwojowa z mikrokontrolerem ATmega328P, kompatybilna z Arduino UNO

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

NARZĘDZIA WYMAGANE: Aby zainstalować UNI-IR potrzebny jest woltomierz o zakresie 20 woltów (Najlepszy będzie przyrząd automatyczny)

Elektrolityczny kondensator filtrujący zasilanie stabilizatora U12 po stronie sterującej

Mikrokontrolery AVR techniczne aspekty programowania

Politechnika Wrocławska

CZYTNIK KART ZBLIŻENIOWYCH AUTONOMICZNA KONTROLA DOSTĘPU REF. 6992

SOLAR Basic. Instrukcja obsługi elektronicznego zamka o wysokim poziomie bezpieczeństwa

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

AKTUATOR DO SYSTEMU DUO Q

Ilość cyfr liczby naturalnej

Nazwa implementacji: Pamięć i zręczność - zapamiętaj kolejność. Autor: Krzysztof Bytow

DS-2440A z zasilaczem 230/12V 2A - bez zasilania rezerwowego do zamontowania w obudowie tripodu, szlabanu. Na płytce kontrolera są zamontowane:

Uniwersalne zdalne sterowanie magnetowidem IR Nr art

Transkrypt:

Uniwersytet Warszawski Wydział Fizyki sierpień 2015 Projekt Zaliczeniowy przedmiotu Programowanie Mikrokontrolerów Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy. Autor: Marcin Cybulski nr albumu 335690 Prowadzący zajęcia: Marcin Polkowski Opisany poniżej projekt to immobilizer samochodowy, który po wpisaniu poprawnej pięcioelementowej kombinacji czterech znaków (realizowanej przez 4 przyciski) wysyła dowolny sygnał elektryczny. W projekcie płytki PCB zostały użyte dwa tranzystory, z czego tylko jeden został wykorzystany. Po wciśnięciu poprawnej kombinacji przycisków mikrokontroler zmienia stan na wyjściu odpowiedniej nóżki połączonej z tranzystorem, który to z kolei przepuszcza prąd do stycznika. Ów stycznik dostając sygnał z tranzystora (mały prąd) przepuszcza oddzielny (większy) prąd uruchamiający pompę paliwa w samochodzie. Drugi, niewykorzystany tranzystor może służyć np. do odcinania stacyjki, ryglowania zamków w drzwiach lub innych zabezpieczeń wg. woli użytkownika. Zabezpieczenie na tym poziomie jest wystarczające, gdyż mamy cztery przyciski i dokonujemy pięciu wciśnięć, co - jak łatwo policzyć - daje nam 4 5 =1024 kombinacji. Zwiększenie ilości kombinacji sprowadza się do prostej modyfikacji kodu źródłowego programu. STRONA ) 1 Z ) 9

Do zbudowania układu wykorzystano następujące elementy przedstawione na zdjęciu: mikroprocesor ATMEGA 16A dwa kondensatory 100nF do filtrowania zasilania dwa kondensatory 22uF do filtrowania zasilania pięć przycisków typu Tact Switch dwa Goldpiny zworka dwupinowa rezystor 330Ohm dioda świecąca czerwona gniazdo do złącza typu KANDA dwa tranzystory bipolarne BC560C buzzer zasilacz sieciowy (230V -> 12V) stabilizator napięcia L7805A (12V->5V) STRONA ) 2 Z ) 9

adapter wtyczki zasilacza do płytki PCB z diodą kontrolną przekaźnik 5V 10A załączany stanem LOW lub HIGH trzy kabelki połączeniowe Cztery przyciski tworzą klawiaturę do wpisywania kodu, piąty zaś służy jako RESET. Cztery kondensatory służą do filtrowania zasilania. Prąd jest pobierany z sieci i transformowany przez zasilacz do napięcia 12V. Docelowo takie właśnie napięcie zasila układ z akumulatora samochodowego. Następnie napięcie 12V jest transformowane na 5V dzięki stabilizatorowi L7805A. Wejście zasilania do płytki jest na standardową wtyczkę dzięki czemu istnieje możliwość wygodnego demontażu urządzenia z samochodu. Dioda świecąca mruga po każdym wciśnięciu przycisku, a po wczytaniu prawidłowego kodu mruga trzy razy. Analogicznie działa buzzer, wydając charakterystyczny dźwięk po odczytaniu kodu. Buzzer jest podłączony przez zworkę, dzięki czemu w dowolnej chwili może zostać odłączony - zależnie od preferencji użytkownika. Schemat układu przedstawiono poniżej: STRONA ) 3 Z ) 9

Do zaprogramowania układu użyto uniwersalnego programatora USBasp. Kod źródłowy został skompilowany przez program WinAVR. Schemat układu oraz poniżej przedstawiony projekt płytki wykonano w programie CadSoft Eagle: Wykonana już płytka PCB wygląda jak poniżej: STRONA ) 4 Z ) 9

Program został napisany w programie Programmers Notepad z pakietu WinAVR: Kod źródłowy, który udostępniam do kopiowania jest przedstawiony poniżej: #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #define jeden PA0 //jeden jako wejscie PA0 #define dwa PA1 //i dwa jako wejscie PA1 #define trzy PA2 //i trzy jako wejscie PA2 #define cztery PA3 //i cztery jako wejscie PA3 #define ledpin PB1 //dioda na wyjsciu PA4 #define Buzzer PB0 //buzzer na wyjsciu PA5 #define stan(portt,bit) (!(_SFR_BYTE(portt) & _BV(bit))) //----------------------------------konfiguracja przyciskow------------------ void configure_pins(void) DDRB = 1 << ledpin 1 << Buzzer; //wyjscie na diodzie i buzzerze, czyli stan 1 DDRA &= ~( 1 << jeden ); //wejscie na kolejnych przyciskach czyli stan zero DDRA &= ~( 1 << dwa ); DDRA &= ~( 1 << trzy ); DDRA &= ~( 1 << cztery ); PORTA = (1 << jeden ); //stan wysoki na wejsciach (przyciskach) - domyslnie PORTA = ( 1 << dwa ); PORTA = ( 1 << trzy ); PORTA = ( 1 << cztery ); //----------------------------------zmienne globalne------------------------------------- uint8_t i=0; //zmienna okreslajaca stan przyciskow //----------------------------------------obsluga buzzera---------------------------------- void wydajdzwiek(void) PORTB = 1 << Buzzer; _delay_ms(100); PORTB &= ~( 1 << Buzzer ); PORTB = 1 << ledpin; _delay_ms(200); PORTB &= ~( 1 << ledpin ); void wydajdzwiek2(void) PORTB = 1 << Buzzer; _delay_ms(900); PORTB &= ~( 1 << Buzzer ); //----------------------------------------obsluga diody------------------------------------------- void zapaldiode(void) PORTB = 1 << ledpin; _delay_ms(200); PORTB &= ~( 1 << ledpin ); //----------------------------------okreslmy funkcje funkcja_wlasciwa-------------------------- void funkcja_wlasciwa(void) //-------------------------------------------wcisniecie1----------------------------------------- while(i==0) if (stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=1; //wciskamy pierwszy przycisk, jesli jest to ten zgodny z kodem to przechodzimy dalej else if (stan(pina,jeden) stan(pina,dwa) stan(pina,cztery) ) //jesli przycisk jest niezgodny to i tak wydaj dzwiek STRONA ) 5 Z ) 9

while(i==1) if (stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery) ) i=1; //jesli przycisk nadal jest przytrzymywany to nie dzieje sie nic else if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery) ) i=2; //jesli puszczamy przycisk to przechodzimy dalej, w kolejnej petli //dla 'wciesniecie2' wszystko powtarza sie analogicznie else i=0; //gdy wcisniemy inny (zly) przycisk to kod sie resetuje //-----------------------------------------wcisniecie2-------------------------- while(i==2) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=2; else if (!stan(pina,trzy) && stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery ) ) i=3; else i=0; while(i==3) if (!stan(pina,trzy) && stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery) ) i=3; else if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=4; else i=0; //----------------------------------------wcisniecie3------------------------------------- while(i==4) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=4; else if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) && stan(pina,cztery ) ) i=5; else i=0; while(i==5) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) && stan(pina,cztery) ) i=5; else if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=6; else i=0; //----------------------------------------wcisniecie4--------------------------------------- while(i==6) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=6; else if (!stan(pina,trzy) &&!stan(pina,jeden) && stan(pina,dwa) &&!stan(pina,cztery )) i=7; else i=0; while(i==7) if (!stan(pina,trzy) &&!stan(pina,jeden) && stan(pina,dwa) &&!stan(pina,cztery) ) i=7; else if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=8; else i=0; //----------------------------------------wcisniecie5----------------------------------------- while(i==8) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery) ) i=8; else if (stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=9; else i=0; while(i==9) if (!stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) //jest dostep zapalmy diode PORTB = 1 << ledpin; wydajdzwiek2(); i=0; //resetujemy zmienna kontrolna STRONA ) 6 Z ) 9

else if (stan(pina,trzy) &&!stan(pina,jeden) &&!stan(pina,dwa) &&!stan(pina,cztery)) i=9; else i=0; //zamykam ostatniego whilea //zamykam ostatniego ifa //zamykam funkcja_wlasciwa //----------------------------------glowna czesc programu - main-------------------------------- int main(void) configure_pins(); //przypisz przyciski while (1) return 0; funkcja_wlasciwa(); //wykonuj funkcje funkcja_wlasciwa, ktora jest okreslona ponizej Zdjęcia zlutowanego układu wraz z wyprowadzonym na zewnątrz stycznikiem są przedstawione poniżej: STRONA ) 7 Z ) 9

STRONA ) 8 Z ) 9

Działanie mikrokontrolera można obejrzeć na krótkim filmiku znajdującym się pod adresem: https://www.youtube.com/watch?v=28buit2jqyq STRONA ) 9 Z ) 9