eita15 smart lås

19
Smart lås EITA15 EITA15: Digitala Systemet Israa Ali Najdat Jarkas Nawras Kanjo Muhamad Tatari Ahmad Abo Hachem Handledare: Bertil Lindvall & Lars-Göran Larsson

Upload: others

Post on 16-Oct-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EITA15 Smart lås

Smart lås

EITA15

EITA15: Digitala Systemet

Israa Ali

Najdat Jarkas

Nawras Kanjo

Muhamad Tatari

Ahmad Abo Hachem

Handledare: Bertil Lindvall & Lars-Göran Larsson

Page 2: EITA15 Smart lås

Abstract:

The project was designed to allow students to cooperate in building a prototype based on the

specifications needed. The aim of this project was to build a smart door lock of a programmable

ATmega processor and other components. To open the lock, you must enter the password. If you

forget the password you can reset it using an RFID card and the user can enter a new password for the

lock. The project grew from a simple concept to a working prototype. The components used were

Number pad, RFID card reader, microprocessor ATmega 1284, a couple of LEDs for indication and a

Servo motor. Overall, it was an educational project that taught us how to apply our knowledge of C

programming and computer science in order to build a digital prototype.

Page 3: EITA15 Smart lås

Sammanfattning :

Denna rapport ger en redogörelse av ett projekt som genomförs inom kursen Digitala

Systemet under läsperiod VT21. Målet av projektet var att bygga en elektronisk prototyp, där

mjukvara och hårdvara kommunicerar med varandra. Arbetet gick ut på att bygga ett smart

lås som är baserad på fyra huvudkomponenter enligt följande:

- Number pad.

- RFID kortläsare.

- mikroprocessorn ATmega 1284

- Servo motor.

För att öppna låset måste man ange lösenordet och ifall man glömmer lösenordet kan

återställning göras med hjälp av RFID kort, där användaren kan ange ett nytt lösenord för

låset, vilket var målet av arbetet. Vi startade projektet med att välja en lämplig idé efter

diskussion och göra en planering mellan gruppmedlemmarna, göra en köplista med lämpliga

komponenter, rita en kopplingsschema, programmera genom att skriva koden i C språket.

Projektet kom med många svårigheter och den största utmaning var att projektet genomfördes

virtuellt via datorn istället för labbsalen i LTH.

Nyckelord:

Smart lås, Krets, Kod, Databladet, AVR, Keypad, RFID, Atmega 1284p.

Smart lock, circuit, code, data sheet, AVR, Keypad, RFID, Atmega 1284p.

Page 4: EITA15 Smart lås

Abstract: 2Sammanfattning : 3Nyckelord: 3

1 Inledning 51.1 Syfte med arbetet 51.2 Problemformulering 51. 3 Motivering av projektarbetet 51.4 Avgränsningar 5Krav på anpassning av platsen 5Kod 6Minnesbegränsningar 6

Prestationskrav 6Produkt Funktion 6Användar- och hårdvarugränssnitt 6

2 Teknisk bakgrund 72:1 Hårdvara 7

2:1:1 Atmega 1248p CPU 72:1:2 AVRISP Programmeringsadapter 72:1:3 Number Pad 3 x 4 72:1:4 RFID läsare 82:1:5 Servo motor 82:1:6 Jumper wires 82:1:7 Lysdioder 82:1:8 Resistor 92:1:9 Breadboard 9

2:2 Mjukvara 9

3 Metod och arbetsformer 133:1 Planering 133:2 Felsökning 13

4 Resultat 146:1 kopplingsschema 166:2 Atmel studio simulation 166:3 Flowchart 18

7 Källförteckning 19

Page 5: EITA15 Smart lås

1 Inledning

1.1 Syfte med arbetet

Huvudmeningen med detta projekt är att fördjupa förståelsen och förmågan att bygga en krets

samt för att arbeta med de första grunderna i digitala teknik och datateknik. Projektet tillhör

grupparbete vilket innebär att öka medvetenheten om vikten av kommunikation och

samarbete. Kretsen ska byggas från mikroprocessor avr Atmega 1284, number pad förutom

många komponenter, och sen kommer att programmeras för att uppnå den önskade resultat.

Anledningen till att gruppen valde( Smart lås) som ett projek är att det är en spännande idé

och ger användaren enkelhet och säkerhet.

1.2 Problemformulering

Hur ska förbindelser mellan mikroprocessorn avr Atmega 1284 och den resterande

komponenter ske?

Hur ska komponenter placeras på prototype board?

Hur ska RFID återställa lösenordet?

Hur ska förhållandet mellan servo motorrörelse och låset tillståndet byggas?

Hur ska dörren låsas efter 10 sekunder av inaktivitet?

1. 3 Motivering av projektarbetet

En central föreställning i projektet är att skapa ett smart lås.Vi valde att bygga smart låset

eftersom vi kände att det är ett intressant projektarbete och vi tyckte det lät att konstruera

låset via att tillämpa kunskaperna och erfarenheterna vi fick under kursen.

1.4 Avgränsningar

Krav på anpassning av platsen

Allt skulle kunna passa in i en låda med 100 med 5 cm djupt, lådan𝑐𝑚2

kommer monteras ovanpå dörrens handtag, där de elektroniska

Page 6: EITA15 Smart lås

komponenterna finns bakom number pad. Lysdioder kan vara ovanpå number

pad.

Kod

Koden kommer återställs när elen kopplas av låset [1111], anledning är att vi

har ingen fysiskt dedikerat minne för att spara koden in.

Hårdvaran ska vara programmerad med C programmering språk.

Minnesbegränsningar

Minnesbegränsning kommer vara Atemgas begränsning 128 kb

Prestationskrav

Det ska vara lätt för användaren att använda systemet (inga långa väntetider).

Produkt Funktion

Låser upp, och därefter låser låset när 10 sekunder av inaktivitet har gått.

Återställer lösenordet om rätt kort används

Ange ljus feedback med grön eller röd ljus som indikerar vilken tillstånd har

låset.

Användar- och hårdvarugränssnitt

Number Pad är den huvudsakliga gränssnitten, dessutom har användaren en

tillgång till en RFID kortläsare med unika taggar och kort.

Lysdiod med antin9gen grön eller rött ljus indikerar om låset är öppet eller låst

(Öppet = grönt, låst = röd). Om man använder rätt kort för att återställa

lösenordet så kommer både Lysdioderna att tändas.

Page 7: EITA15 Smart lås

2 Teknisk bakgrund

2:1 Hårdvara

2:1:1 Atmega 1248p CPUAtmega 1248p är en AVR 8-bitars

mikrokontroller. Den har hög prestanda och

har många funktioner, till exempel 128K

byte programmerbart flashminne i systemet

med läs- och skrivfunktioner, 4K byte

EEPROM och 16K byte SRAM. Se

Datasheet för mer information.

2:1:2 AVRISP Programmeringsadapter AVR-programmeringsadaptern kan

användas för att ansluta mellan datorn och

mikrokontrollern för att skicka via kod.

C-koden sammanställs och blir maskinkod. I

nästa steg kommer denna kod att överföras

till mikrokontrollern och kompletteras av

AVR-programmeraren.

2:1:3 Number Pad 3 x 43X4-tangentbordet är anslutet till en matris,

så det har 7 stift(pins) (3 kolumner och 4

rader) och det läser knapparna man trycker

på.

Page 8: EITA15 Smart lås

2:1:4 RFID läsareRFID-modul-UART 125Khz produceras av

Seeed. Denna produkten ska användas för

säkerhet, personlig identifiering och

återställning av lås lösenord

2:1:5 Servo motorMicro servo motor är en liten motor och

enkel att använda. 180 grad vridning(90

grad på varje riktning)

2:1:6 Jumper wiresEn jumper kit various 26AWG 65PCS

tillverkad av Bud industries.

2:1:7 LysdioderEn grön och en röd LED

Page 9: EITA15 Smart lås

2:1:8 Resistor

2 st resistorer 300 Ω / 0.6 watt

2:1:9 BreadboardEn stor Breadboard, 830 knutpunkter. Bra

för små och medelstora projekt

OBS: Se hur alla ovanstående komponenter är kopplade till varandra i appendix (bild 6.1.1) !

2:2 Mjukvara

Produkten:

Vi har använt oss av C som programmeringsspråk för detta projekt. En kopia av koden med

kommentarer som förklarar vad varje del av koden gör, har bifogats med som en bilaga.

Dessutom kan man hitta koden på Github här.

Program som vi har använt är:

Atmel Studio 7 för att skriva kod och simulera number pad och LED. Figur 6.2

Proteus Professional för att simulera låset servomotor

För mer information om hur låset fungerar så hittar man Flowchart diagram i Figur 6.3.

Programmering av keypad:

Page 10: EITA15 Smart lås

För att koda vår keypad utgick vi ifrån att den ska vara 4x3 digit numbers( från 0 till 9 och

med en reset och RFID knapp. Se bild 1 nedan! För mer information kolla källa 7.2

Bild 1: keypad programmering

För att känna igen vilken knapp är nedtryckt har vi först läst den raden som är nedtryckt

genom en insignal från vår keypad matris. Därefter, har vi sparat den i minnet och läst vilken

kolumn är nedtryckt genom att inventera insignalerna till utsignaler och vice versa. På detta

sätt har vi så småningom lyckats läsa vilken knapp är intryckt och sedan tilldelat ett värde för

varje kombination av rader och kolumner. se bild 2 nedan och den bifogade programkoden

för mer detaljer!

bild 2: Om den “röda knappen” är nedtryckt så är rad-kolumn kombinationen (2-2) som står

för värdet 4

Page 11: EITA15 Smart lås

Programmering av servo motor:

Servo motor programmering med C var lite svårt, problemet var att få motorn att snurra i

både håll. Simulering av servo i Atmel var omöjligt, som gjorde att vi kan inte testa

programmet. Vi lyckades med att hitta programmet Proteus Professional som tillåt oss att

använda Hex filen och testa vad koden gör till motorn. (Se bild nedan GIF 1) Efter många

tester med att sätta PORT B som in och utsignal med resets så kunde vi äntligen öppna och

låsa motorn. För mer information kolla källa 7.3!

GIF 1: Simulation servo motor

Programmering av RFID:

För RFID så var datasheet stort hjälp. Den var den enda komponent vi inte kunde testa.

Anledningen var att varken Atmel studio eller Proteus Professional hade komponenten i test

biblioteket. Det vi gjorde var att vi har läst RFID:en datasheet och några kodexempel för

andra RFID läsare med AVR, tills vi kom upp med vår kod. Dessvärre, kunde vi inte testa

koden utan en tillgång till riktiga fysiska komponenter. Sammanfattningsvis, så har RFID:en

kodats med en utgångspunkt att varje gång Atmega 1284p processorn får emot data från

RFID:en så jämförs mottagen ID med master ID som är hårdkodad. Ifall dessa två ID är

samma så tillåter den användaren att mata in en ny kod. För mer information om RFID

läsaren vi har kolla källa 7.4.

Page 12: EITA15 Smart lås

Hemsida:

Syftet med hemsidan är att göra det enkelt att se projektet. I hemsidan kan man hitta

projektets kod, kretsschema, rapporten och gruppsmedlemmar. Hemsidan är kodad i HTML

och CSS

Page 13: EITA15 Smart lås

3 Metod och arbetsformer

3:1 Planering

Projektet inleds med en planering för att kunna klara arbetet i tid. Olika möten planerades via

Discord för att diskutera olika frågor och problem som stöttes på. Under första mötet

diskuterades ideer från olika områden där iden till att konstruera en smart lås bestämdes.

Sedan skrevs en kravspecifikation där bestämdes vilka komponenter som behövs för att

kunna konstruera prototypen. Utifrån detta studerades hur olika komponenterna fungerar.

Därefter påbörjades ritning av kopplingsschemat med hjälp av programmet Autodesk Eagle

med hjälp av information från datablad. Under andra möten diskuterades hur logiken bakom

mjukvaruutveckling skulle kunna vara och programmerades processorn med C språk. Efter

detta delades skrivning av rapporten och påbörjades skrivningen i god tid.

3:2 Felsökning

Atmel Studio simulation har varit stort hjälp för att undersöka problem som uppstår hela tiden

med koden. Genom att utnyttja Atmel Studio 7 programvarans inbyggt simulation tjänst,

kunde vi simulera och testa mata in nummer som om vi trycker på number pad. Vi kunde

också testa att alla LED lyser i rätt tid Figur 6.2, och att låset ska öppnas och därefter låsas

när vi matar in rätt kod. Vi har använt oss av ytterligare en programvara som heter Proteus

Professional Gif 1. Den lät oss att ta Hex filen från projektet och använda den som en

programkod för vår Atmega 1284p. Därmed har vi lyckats simulera servomotorn som

kontrollerar låset (öppnar eller stänger låset).

Page 14: EITA15 Smart lås

4 Resultat

Eftersom det inte fanns möjlighet att utföra en uppbyggnad av komponenterna inget direkt

påtaglig resultat kunde nås. Men enligt de olika steg som genomfördes så bör det resultera en

fungerande prototyp som uppfyller kraven av den angivna kravspecifikationen och överträffa

förväntningarna. Därmed Kunde det ses tydligt att koden fungerar rätt med hjälp av Proteus

Professional enligt förväntningar. Där olika tester av koden på servon utfördes. Koden

fungerade på så sätt att när man knäcker rätt kod kommer servon att vrida sig -90 grader där

låset öppnas.

Diskussion och slutsatsenDet fanns många motgångar som projektet stötte på. Det var några problem med C-koden och

implementationen. Det var typ många små fel i koden som inte kunde implementeras och lite

fel logik i början. kretsschema ritning var lite svår eftersom ingen bra ritnings applikation

hittades. Därefter var det lite felkoppling på kretsen. Alla dessa motgångarna var lösbara

genom att tänka om, prova på lite olika metoder samt med hjälp av projektets handledare.

Det viktigaste man har fått lära sig under projektarbete var logik tänkande på både koden och

kretskoppling, att skriva koden i bra sätt. Det var jättebra kommunikation och samarbete

mellan gruppmedlemmar. Alla gjorde sin bästa och hjälpte varandra för att få fram en bra

slutlig produkt, och ett fungerande smart lås.

Det finns ingen prototyp för det smarta låset eftersom instruktionerna har inte tillåtit

gruppmedlemmarna att träffas i en plats under korona tiden. Trots det, har flera diskussioner

mellan projektets gruppmedlemmarna ägt plats för att göra en prototyp med ganska bra, fin

och passande design.

Sammanfattningsvis tog projektet lång tid att implementera, men det var väl värt det eftersom

resultatet var mycket tillfredsställande. Arbetet var lärdom och rik på kunskaper, inte bara när

det gällde att bygga en prototyp och utveckla ett smart lås, utan också när det gäller förmågan

att genomföra projektet i samarbete mella gruppmedlemmarna. Med hjälp av vetenskapen

som vi lärde oss i laborationerna under kursen digitala system, och med våra erfarenheter

kring programmering med C-språket. Alla problem som uppstod under arbetet löstes på

relativt kort tid genom att först söka fram information, och sen diskutera problemet ur olika

Page 15: EITA15 Smart lås

perspektiv. Varje medlem i gruppen var en effektiv person i arbetet, genom diskussioner kom

vi fram till ett antal lösningar som i sin tur har lett till ett fungerande smart lås.

Page 16: EITA15 Smart lås

6 Appendix

6:1 kopplingsschema

6:2 Atmel studio simulation

Page 17: EITA15 Smart lås
Page 18: EITA15 Smart lås

6:3 Flowchart

Page 19: EITA15 Smart lås

7 Källförteckning

7.1 Timer:Explore Embedded

https://exploreembedded.com/wiki/AVR_Timer_programming (Hämtad 2021-04-20)

7.2 KeypadAdafruit Shop and Learning

https://learn.adafruit.com/matrix-keypad?view=all(Hämtad 2021-04-15)

7.3 ServoElectricWings

https://www.electronicwings.com/avr-atmega/servo-motor-interfacing-with-atmega16

(Hämtad 2021-04-15)

7.4 RFIDSeeed

https://www.seeedstudio.com/125Khz-RFID-module-UART.html (Hämtad 2021-04-20)

https://github.com/SeeedDocument/125Khz_RFID_module-UART/raw/master/res/RDM630-

Spec.pdf (Hämtad 2021-05-03)