Projekt Digitala system Rörelsekänsligt Larmsystem
Sammanfattning Innehållet i denna rapport beskriver ett projekt där målet var att skapa en fungerande prototyp av ett larmsystem som styrs med hjälp av rörelse. Arbetet utfördes i en grupp med 4 medlemmar över en period på 8 veckor och avslutades med en redovisning och demonstration av projektet. Kärnan i projektet var processorn AT Mega 1284 och övriga komponenter styrdes genom denna. Resultatet av projektet var en fungerande prototyp som vid upptäckt rörelse kunde skicka ett larm i form av en ljudsignal. Larmet kunde slås av och sättas på med hjälp av en kontroll som användaren höll i handen då rätt rörelse utfördes. Rörelsen som används för att låsa upp larmet kan bestämmas själv av användaren och kan ändras vid behov. Information som behövs visas för användaren visas på en alfanumerisk display. 1
Abstract The contents of this report describe a project where the goal was to create a functioning prototype of an alarm system that is controlled by means of movement. The work was carried out in a group of 4 members over a period of 8 weeks and ended with a presentation and a demonstration of the project. The core of the project was the processor ATMega 1284 and the other components were all controlled by this. The result of the project was a working prototype which, when detected, could send an alarm in the form of an audio signal. The alarm could be switched off and switched on by means of a control which the user held in the hand when the correct movement was performed. The movement used to unlock the alarm can be determined by the user himself and can be changed if necessary. Information required for the user is displayed on an alphanumeric display. 2
Innehållsförteckning Sammanfattning 1 Innehållsförteckning 3 1.Inledning 3 1.1 Bakgrund 4 1.2 Syfte 4 1.3 Målformulering 4 1.4 Motivering av projektet 5 1.5 Avgränsningar 5 2.Teknisk bakgrund 5 3.Metod 6 3.1Källkritik 8 4.Analys 9 5 Resultat 9 6 Slutsats 13 6.1 Framtida utvecklingsmöjligheter 13 8.Källförteckning 14 9.Appendix 14 3
1.Inledning Detta projektet går ut på att skapa en prototyp av ett larmsystem där användaren skall kunna spara en specifik rörelse som en sorts nyckel till larmet. Rörelsen skall kunna användas för att både starta samt stänga av larmet och rörelsemönstret skall kunnas ändras av användaren när detta önskas. Prototypen skall byggas upp med med mikroprocessorn AT Mega 1284 som kärnan i projektet. Projektet slutförs när prototypen når den funktion som är beskriven i projektbeskrivningen och kravspecifikationen och när prototyp med tillhörande dokumentation presenteras samt godkänns av projektansvarig lärare. 1.1 Bakgrund Detta projektarbetet är en del av kursen Digitala System och är en obligatorisk del av högskoleingenjörsprogrammen för elektroteknik och datateknik. Projektansvarig är Bertil Lindvall som är ansvarig för kursen Digitala System. Handledarna för projektet är Bertil Lindvall och Lars-Göran Larsson. 1.2 Syfte Projektarbetet skall omfatta samtliga delar som har ingått i kursen digitala system samt vidareutveckla de praktiska kunskaperna som krävs för att utföra ett projekt. Det förväntade resultatet av projektet är att en prototyp av ett larmsystem skall kunna utvecklas med hjälp av en kombination av de kunskaper vi fått under årets gång tillsammans med lite hjälp från handledarna för projektet. 4
1.3 Målformulering Målet med projektet är att framställa en prototyp av ett larmsystem där man använder en accelerometer för att med hjälp av en rörelse kunna både larma av och sätta igång larmet. Larmet ska bestå av minst en sensor som skall kunna detektera rörelse och ge ifrån sig en ljudsignal om rörelse har detekterats. Information som behövs för att manövrera larmet ska finnas tillgänglig på en lcd-skärm. 1.4 Motivering av projektet Motiveringen till detta examensarbetet var att kunna skapa ett larmsystem som skiljer sig från andra system på marknaden. Motiveringen var att kombinera funktionerna från ett vanligt larmsystem med en smidigare upplåsningsfunktion, vilket blev genom rörelse från en accelerometer. 1.5 Avgränsningar Under projektets gång skall en fullständig produkt inte framställas utan endast en prototyp av en produkt. Därav är sensorns räckvidd ej optimal för verklig användning och accelerometern är ej trådlös. 5
2.Teknisk bakgrund Övervaknings-sensorn som används till prototypen är en IR-Sensor som konstant mäter förändring i sin omgivning och returnerar en 1:a om förändring detekteras. En uppvärmningstid på cirka 30 sekunder är nödvändig för att sensorn ska kunna analysera sin omgivning och kunna få ett referensvärde att jämföra emot vid senare skede. Sensorn ansluts till processorn med hjälp av 3 pinnar, 2 för strömförsörjning och 1 för dataöverföring. För att visa information som är nödvändig för användaren används en alfanumerisk display. Displayen består av ett rutnät på 16x2 rutor där en karaktär kan visas i varje ruta. Displayen ansluts till kortet med hjälp av 16 pinnar varav 5 av dem ansluts till strömkällan. De resterande pinnarna används till dataöverföring mellan processor och display. De olika karaktärerna som kan skrivas på displayen skapas av ASCII-tabellen. Sensorn som används till att analysera rörelse är en accelerometer som mäter gravitationen som påverkar den i tre olika riktningar(x,y & z). När accelerometern ligger stilla så ger den mätvärdet 1 g neråt p.g.a. Jordens tyngdkraft där g är gravitationen som påverkar den. Accelerometern skickar värdena på x,y & z ut på vars en pin som kopplas till processorn. Sensorns mätvärden som skickas in till processorn är analoga och via den inbyggda AD-omvandlaren i processorn så blir de digitala. 6
3.Metod Projektet innefattar ett antal abstrakta faser som kan beskrivas enligt följande lista: 1. Gruppindelning och brainstorming 1 2. Grunddesign och val av komponenter 3. Konstruktion av prototypen 4. Programmering av prototypen 5. Rapportskrivning 6. Redovsningsförberedning samt redovisning. Nedan följer en mer utförlig beskrivning av hur detta projekt utfördes. Projektet började med att projektgrupper skapades och idéer brainstormades. Nästa steg var att bestämma vilka komponenter som skulle användas vid utvecklingen av prototypen för att få den funktionalitet 2 som önskades. Ett kopplingsschema konstruerades och ritades upp samt förberedelser för konstruktionen av prototypen gjordes. När samtliga komponenter utom accelerometern hade förvärvats så kunde konstruktionen påbörjas. Kopplingarna utfördes på ett kopplingsdäck och fästes med hjälp av virrning. När accelerometer sedan skulle kopplas in så skedde en del ändringar och ett uppdaterat kopplingsschema skapades där nu alla komponenter kunde fungera samtidigt. 1 Grunddesignen kan hittas i 9. Appendix 2 Kopplingsschema för prototypen kan hittas i 9. Appendix 7
Programmeringen av prototypen utfördes i väldigt distinkta steg där varje vecka hade ett tydligt mål. Första veckan så programmerades Ir-sensorn så att den kunde detektera rörelse samt utlösa ett larm via en högtalare. Andra veckan så programmerades den alfanumeriska displayen till den grad att meningar enkelt kunde skrivas ut med hjälp av en del implementerade metoder. Tredje veckan så påbörjades programmeringen av accelerometern och nådde en nivå där värdena som utvanns av accelerometern kunde skrivas ut på displayen i realtid. Under den fjärde veckan så fortsatte arbetet med accelerometern och fortskred så långt att värdena som accelerometern gav ut vid en viss rörelse kunde jämföras mot en annan rörelse. Sista arbetsveckan färdigställdes prototypen tillsammans med all tillhörande kod. Prototypen kan nu larmas av och larmas på med hjälp av en rörelse som spelas in av användaren. Arbetet som utfördes under projektets gång utfördes i princip enbart i skolan under mötena. Samtliga gruppmedlemmar var närvarande vid alla mötestillfällen och alla bidrog till samtliga etapper under projektets gång. Kommunikation utanför mötena skedde med hjälp av Facebook Messenger och användes till största del för att bestämma tid för mötena. 8
3.1Källkritik Källorna som använts under projektets gång är datablad för all hårdvara. Dessa datablad är företagens som tillverkat hårdvaran egna skrifter/artiklar och är därav förstahandskällor. Dessa källor är även länkade av LTH:s egna lärare vilket ökar pålitligheten. 4.Analys Det första valet som gjordes under detta projektet var vad projektet skulle handla om. Gruppmedlemmarna hade olika idéer om vad projektet skulle innefatta, däribland dessa fanns ett larmsystem samt en typ av rörelsestyrd kontroll liknande en nintendo wii-kontroll. Det beslutades att dessa två idéer skulle kombineras och definierades vidare till detta projekt. 3 Kravspecifikationen utformades därefter för att dels tillfredsställa kraven som kursen digitala system krävde men också för att prototypen skulle nå en tillfredsställande nivå. Val av komponenter gjordes i största del av handledarna då de var ansvariga för att ta fram material till samtliga grupper. 3 Kravspecifikationen kan hittas i Appendix 9 9
5 Resultat Resultatet av arbetet blev en fullständigt fungerande prototyp där samtliga av kraven som ställdes i början av projektet blev uppfyllda. Nedan finns 4 kodexempel på de viktigaste delarna ur den kompletta koden. Denna koden lagrar värdena från accelerometern i en matris och även hur lång tid det tar att spela in rörelsen. while (((PIND & 0b10000000)!= 0) &&!code) { _delay_ms(10); PORTD = 0b00100000; ADOV(); *(arraypoint+(count*3)) = xvek; *(arraypoint+(count*3+1)) = yvek; *(arraypoint+(count*3+2)) = zvek; count++; write = 1; 4 Hela koden kan hittas i medföljande filer. 10
Denna koden omvandlar de analoga värdena från accelerometern till digitala värden via den inbyggda ad-omvandlaren i processorn. void ADOV(){ ADCSRA = 0b11000111; ADMUX = 0b00000101; //while((adcsra &= 0b01000000)!= 0); _delay_ms(4); volatile uint16_t xtemp = ADC; xvek = xtemp; ADCSRA = 0b11000111; ADMUX = 0b00000110; //while((adcsra &= 0b01000000)!= 0); _delay_ms(2); volatile uint16_t ytemp = ADC; yvek = ytemp; ADCSRA = 0b11000111; ADMUX = 0b00000111; //while((adcsra &= 0b01000000)!= 0); _delay_ms(2); volatile uint16_t ztemp = ADC; zvek = ztemp; 11
Koden nedan är den långa och ganska komplicerade jämförelsesatsen mellan den sparade rörelsen och den rörelsen som precis gjordes. Här jämförs varje värde för varje axel vid en viss tidpunkt emot ett visst offset-värde som bestämdes under ett antal tester. Om ett värde ligger utanför offsetvärdet så räknas variabeln fail upp. Om fail är mindre än 10 och tiden rörelsen tog stämmer överens med referensvärdet så anses rörelsen vara samma som referensrörelsen. while (!write && ((PIND & 0b10000000)!= 0)){ _delay_ms(10); ADOV(); if(!(*(arraypoint+(count3*3))<(xvek+offset) && *(arraypoint+(count3*3))>(xvek-offset))){ if (count3<=temp) fail++; else if(!(*(arraypoint+(count3*3+1))<(yvek+offset) &&*(arraypoint+(count3*3+1))>(yvek-offset))){ if (count3<=temp) fail++; else if(!(*(arraypoint+(count3*3+2))<(zvek+offset) &&*(arraypoint+(count3*3+2))>(zvek-offset))){ if (count3<=temp) fail++; else{ PORTD = 0b00000001; count3++; if(fail>10){ PORTD = 0b00100000; PORTC = 0b10000000; _delay_ms(100); PORTC = 0b00000000; write = 1; Clear(); char string7[10] = "Alert1!"; ToText(string7); 12
if(((count3<temp+10) && (count3>temp-10)) && fail<=10){ Clear(); char string6[10] = "welcome"; ToText(string6); _delay_ms(2000); armed = 0; write = 1; write3=1; trigger = 0; fail = 0; count3 = 0; else if((count3<=temp-10) && count3!= 0){ PORTD = 0b00100000; if(beep<3){ PORTC = 0b10000000; _delay_ms(100); PORTC = 0b00000000; Clear(); char string7[10] = "Alert!"; ToText(string7); beep++; write = 1; 13
6 Slutsats Samtliga gruppmedlemmar har fått en djupare förståelse för hårdvaru-hantering och programmering i programspråket C. Då syftet och målet med projektet var att framställa en fungerande prototyp så uppfyllde resultatet detta. Resultatet kan komma att användas till framtida projekt under utbildningens gång och möjligtvis som inspiration för framtida larmsystem eller liknande. 6.1 Framtida utvecklingsmöjligheter För att upprätthålla en hållbar utveckling kan solceller användas som strömförsörjning för att driva larmet. Smidigheten av systemet kan förbättras genom att accelerometern kopplas trådlöst via bluetooth. Designen kan förbättras och optimalt ska all hårdvara ej sitta sammankopplat på samma plats för att minska risken av att systemet kan kopplas ur. Rörelsesensorn ska optimalt sättas antingen på en dörr eller på en tillkopplad kamera. Hela systemet skall kunna uppgraderas med kameror och fler sensorer. Systemet hade optimalt kontrollerats via en applikation i mobiltelefoner, där man hade kunnat justera inställningar bl.a sensorernas känslighet och byte av kod/rörelse. 14
8.Källförteckning Datablad för produkterna: ATmega1284: http://ww1.microchip.com/downloads/en/devicedoc/atmel-42718-atmega12 84_datasheet.pdf 2019-05-17 Alphanumeric display GDM1602K: https://www.sparkfun.com/datasheets/lcd/gdm1602k-extended.pdf 2019-05-17 Accelerometer ADXL335: https://www.analog.com/media/en/technical-documentation/data-sheets/ad XL335.pdf 2019-05-17 PIR Sensor 555-28027: https://www.parallax.com/sites/default/files/downloads/555-28027-pir-sen sor-product-guide-v2.3.pdf 2019-05-17 Startbild: https://www.vectorstock.com/royalty-free-vector/alarm-icon-on-red-vector-4 681887 2019-05-17 15
9.Appendix 1. Den första ritningen av hur komponenterna skulle kommunicera med processorn. 16
2. Slutgiltigt Kopplingsschema för prototypen 17
3. Kravspecifikation för prototypen 18