eita15 smart lås
TRANSCRIPT
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
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.
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.
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
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
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.
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å.
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
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:
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
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.
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
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).
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
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.
6 Appendix
6:1 kopplingsschema
6:2 Atmel studio simulation
6:3 Flowchart
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)