De school voor Wetenschap, Techniek en Technologie
Camerabeveiliging Jaimy Schateman 6 IICT VTI-lokeren Hoof Luc, Wim Baert, Van Crombrugge Izaak
0
inhoud Voorwoord ............................................................................................................................................. 3 Doel ........................................................................................................................................................ 4 Werking .................................................................................................................................................. 4 Benodigdheden ...................................................................................................................................... 4 Camera (Arecont Vision AV2100) ........................................................................................................... 5 Specificaties............................................................................................................................................ 5 Arduino UNO Rev3 ................................................................................................................................. 6 Overzicht ................................................................................................................................................ 6 Eigenschappen ....................................................................................................................................... 6 Keypad ................................................................................................................................................... 8 Verbinding pinnen .................................................................................................................................. 8 Schema Tina ........................................................................................................................................... 9 Schema keypad zonder diode ................................................................................................................ 9 Schema keypad met diode ..................................................................................................................... 9 Gebruikte componenten met keypad .................................................................................................. 10 Componenten ...................................................................................................................................... 10 Weerstand ............................................................................................................................................ 10 Werking ............................................................................................................................................ 10 Eigenschap ....................................................................................................................................... 10 Tolerantie ......................................................................................................................................... 10 Kleurcode weerstand ....................................................................................................................... 11 Diode .................................................................................................................................................... 12 Werking ............................................................................................................................................ 12 Doorlaatrichting ............................................................................................................................... 12 Sperrichting ...................................................................................................................................... 12 LED ....................................................................................................................................................... 13 Bedrading ............................................................................................................................................. 13 potentiometer ...................................................................................................................................... 14 Arduino Uno schema ............................................................................................................................ 15 Code ..................................................................................................................................................... 16 1
Naar voorblad
Arduino code voor keypad ................................................................................................................... 17 Declaratie van globale variabelen ........................................................................................................ 17 Instellingen voor LCD, baudrate, input en output ............................................................................... 17 Hoofdprogramma ................................................................................................................................. 18 Paswoorden instellen ....................................................................................................................... 18 Invoer testen .................................................................................................................................... 19 C# programma...................................................................................................................................... 34 Algemeen ............................................................................................................................................. 34 Bespreking per blok .............................................................................................................................. 35 Ontwerp van de form ....................................................................................................................... 35 Declaratie van variabelen in het begin van het programma............................................................. 37 Laden bij opstarten .......................................................................................................................... 38 Foto ophalen .................................................................................................................................... 40 Foto’s vergelijken/opslaan ............................................................................................................... 41 1)
Foto downloaden en opslaan ............................................................................................... 41
2)
Foto’s vergelijken ................................................................................................................. 42
Timer 1 ............................................................................................................................................. 45 Timer 2 ............................................................................................................................................. 45 Startknop .......................................................................................................................................... 46 Extra’s............................................................................................................................................... 47 Scrolbars ........................................................................................................................................... 48
2
Naar voorblad
Voorwoord Wij zijn leerlingen van 6IICT uit het VTI-Lokeren. We realiseerden dit jaar onze Geïntegreerde Proef. Onze gip gaat over camerabeveiliging. We beveiligen een kamer door middel van foto’s die we laten verwerken door een programma. Deze beveiliging kan worden aangestuurd door een toetsenbord. We willen graag onze vakleerkrachten de heer Baeyens, de heer Hoof, de heer Baert en de heer Van Crombrughe bedanken. Ook willen wij de school bedanken voor al het materiaal dat ter beschikking was. Jaimy Schatteman Yannick Vermeiren Stef De Brabander,
juni 2014
3
Naar voorblad
Doel Om een kamer te beveiligen met behulp van een camera en keypad. Met het gebruik van de keypad en de microcontroller( Arduino ) kan je de camera van buitenaf in-/uitschakelen zodat de eigenaars de kamer kunnen betreden.
Werking De camera neemt voortdurend foto’s van de kamer die hij zal beveiligen. Die foto’s worden opgehaald door een computer en worden door een programma vergeleken. Als er een te groot verschil op zit, zal er een signaal naar de microcontroller gestuurd worden en zal dit aangegeven worden door rode markeringen. Als de microcontroller dat signaal binnenkrijgt zal er een alarm gegeven worden. Via de keypad kun je de beveiliging in-/uitschakelen of een wachtwoord veranderen.
Benodigdheden
-
camera (Arecont Vision AV2100) C# programma om foto’s op te slaan en te vergelijken apparaat voor een alarmsignaal Arduino Uno Rev3 numerieke keypad 3 x 4 code Arduino voor de keypad
4
Naar voorblad
Camera (Arecont Vision AV2100)
Specificaties -
IP-camera (100Base-T Ethernet Netwerk Interface) resolutie: 796x596 voeding: 15 V - 48 V pixeldichtheid: 2 MP
5
Naar voorblad
Arduino UNO Rev3
Overzicht De Arduino UNO Rev3 is een opensource-computerplatform gebaseerd op de ATmega328 (d a ta s h e e t ).
Eigenschappen -Microcontroller
ATmega328
-Operating Voltage
5V
-Input Voltage Plug (recommended)
7-12V
-Input Voltage Plug (limits)
6-20V
-Input Voltage PoE (limits)
36-57V
-Digital I/O Pins
14 (of which 4 provide PWM output)
-Arduino Pins reserved:
10 to 13 used for SPI 4 used for SD card 2 W5100 interrupt (when bridged)
-Analog Input Pins
6
-DC Current per I/O Pin
40 mA
-DC Current for 3.3V Pin
50 mA
-Flash Memory
32 KB (ATmega328) of which 0.5 KB used by
6
Naar voorblad
bootloader -SRAM
2 KB (ATmega328)
-EEPROM
1 KB (ATmega328)
-Clock Speed
16 MHz
-W5100 TCP/IP Embedded Ethernet Controller -Power Over Ethernet ready Magnetic Jack -Micro SD card, with active voltage translators -Prijs
Price: €39.90
7
Naar voorblad
Keypad
Verbinding pinnen 1 verbinding tussen Y1 en X1 2 verbinding tussen Y1 en X2 3 verbinding tussen Y2 en X3 4 verbinding tussen Y2 en X1 5 verbinding tussen Y2 en X2 6 verbinding tussen Y2 en X3 7 verbinding tussen Y3 en X1 8 verbinding tussen Y3 en X2 9 verbinding tussen Y3 en X3 * verbinding tussen Y4 en X1 0 verbinding tussen Y4 en X2 # verbinding tussen Y4 en X3
http://mosaic.cnfolio.com/B202Coursework2011TeamJournalD104
8
Naar voorblad
Schema Tina Schema keypad zonder diode
Schema keypad met diode
9
Naar voorblad
Gebruikte componenten met keypad Componenten -
weerstand diode LED keypad bedrading
Weerstand
Werking Een weerstand is een elektrische component die dient om elektrische stroom beperkt door te laten. Voor zo’n comonent is er volgens de wet van Ohm een vaste verhouding tussen de aangelegde spanning en de stroom die vloeit. Deze verhouding is de weerstandswaarde.
Eigenschap Hoe groter de tolerantie hoe breder het bereik van de waarde is. De weerstand heeft de eigenschap eleketrische energie in warmte-energie om te zetten.
Tolerantie Weerstanden kunnen bij productie niet oneindig nauwkeurig op een waarde worden gemaakt, de uiteindelijke waarde wijkt een bepaald percentage af. Dit noem je de tolerantie van de weerstand. De meest gebruikelijke tolerantie voor hedendaagse weerstanden is 5 % en wordt aangegeven met een gouden ring. De laatste ring “als er vier of meer ringen zijn” geeft de tolerantie van de weerstand aan. Zijn er slechts drie ringen, dan is de tolerantie 20 %. Zulke weerstanden worden bijna niet meer gemaakt.
10
Naar voorblad
Kleurcode weerstand De kleurcodering voor elektronica is een manier om met kleuren de waarde van elektronische componenten zoals weerstanden, condensatoren en spoelen aan te geven.
11
Naar voorblad
Diode
Werking Een diode is een elektronisch onderdeel dat de elektrische stroom zeer goed in één richting geleidt, maar praktisch niet in de andere. De geleidende richting noemt men de doorlaatrichting en de andere richting de sperrichting.
Doorlaatrichting Zolang de spanning onder de 0,7 V blijft vloeit er maar een te verwaarlozen stroom die je als NUL beschouwen. Het is alsof een "open" schakelaar in de kring werd geplaatst. Vanaf die 0,7 V zien je plots een stroom opduiken. Vergroot je deze Vcc nog meer dan merk je over de klemmen van de diode een bijna constante 0,7 V, maar de stroom door de diode zal snel stijgen.
Sperrichting Zoals verwacht is er geen geleiding. Er vloeit bijna geen stroom, slechts een zeer kleine verliesstroom kan gemeten worden. De orde van grootte is microampère.
12
Naar voorblad
LED
Een LED is een elektronische component, een halfgeleidercomponent die licht uitzendt als er een elektrische stroom in de doorlaatrichting doorheen loopt.
Je gebruikt drie LED’s LED1 als je een cijfer induwt (wit) LED2 als je de correcte code invoert (groen) LED3 als je foutieve code invoert (rood)
Bedrading
-
Conductor Material: Copper Insulation Material: PVC Conductor Type: Flexible
13
Naar voorblad
potentiometer
Een potentiometer is een variabele weerstand , waarvan de weerstand wordt bepaald door de stand van een mechanisch beweegbare component
14
Naar voorblad
Arduino Uno schema
15
Naar voorblad
Code
Bij het testen van de code gebruik je de Seriële-monitor (terminal) om de ingegeven cijfers te testen en te controleren of de ingegeven code correct of fout is.
16
Naar voorblad
Arduino code voor keypad Declaratie van globale variabelen
Instellingen voor LCD, baudrate, input en output
Dan gaan we de instellingen doen in verband met de baudrate. Ook gaan we de input en output configureren. Pin 2 tot en met pin 5 stellen we in als input, pin 6 tot met pin 11 gebruiken we als output. We zetten ook 6 analoge pinnen om naar digitale pinnen. Dit doen we omdat we niet zouden moeten demuxen. We kiezen een baudrate van 9600 Baud. Baud is een eenheid die het aantal signaalwisselingen per seconde op een informatieverbinding aangeeft.
17
Naar voorblad
Hoofdprogramma Paswoorden instellen
Hier controleren we of er in de EEPROM van de Arduino al paswoorden opgeslagen zijn. Indien dit niet het geval is zal er gevraagd worden om de gewilde paswoorden in te geven. Indien er wel al paswoorden zijn opgeslagen, zal het programma die paswoorden uitlezen en opslagen in 2 variabelen.
18
Naar voorblad
Invoer testen 1: Eerst gaan we testen of er vier cijfers zijn ingegeven. Indien dit zo is word er nagegaan of er een # is ingegeven.
Als je minder dan 4 cijfers ingeeft zal het paswoord automatisch fout zijn.
19
Naar voorblad
Dan wordt er nagekeken welk paswoord je hebt ingegeven. Je kan 3 verschillende paswoorden ingeven: 1) Om de beveiliging aan te zetten 2) Om de beveiliging uit te zetten 3) Om een paswoord te wijzigen
20
Naar voorblad
Als er een fout paswoord wordt ingegeven, wordt dit ook meegedeeld aan de gebruiker
Na dit alles wordt de array, waar de invoer in opgeslagen is, leeggemaakt
21
Naar voorblad
Dit is het deel waar je in het begin van het programma de code declareert om de beveilig aan te zetten indien dit nog niet eerder gebeurt is.
22
Naar voorblad
Het zelfde doen we bij het declareren van het paswoord om de beveiliging uit te zetten.
23
Naar voorblad
Je komt bij de functie “master” terecht als je de code ingeeft om een paswoord te veranderen. In deze functie wordt er gevraagd om de mastercode in te geven. Die mastercode is uniek voor elk toestel. Na het ingeven van de mastercode zal het programma nagaan of deze mastercode juist is. Komt de ingegeven code overeen met de mastercode, dan zal het programma naar de functie “ keuze” gaan.
Komt de invoer niet overeen met de mastercode, dan wordt dit meegedeeld aan de gebruiker.
24
Naar voorblad
Als je de juiste mastercode hebt ingegeven, krijg je 3 keuzes: - Verander de code om de beveiliging aan te zetten, druk 1 - Verander de code om de beveiliging uit te zetten, druk 4 - Verander geen codes, druk 7
25
Naar voorblad
26
Naar voorblad
Als je 1 hebt ingedrukt, als je dus de code om de beveiliging uit te zetten wil veranderen, dan kom je in de functie “ Keuze1Change “. Hier word er gevraagd om de nieuwe code in te geven die daarna opgeslagen wordt in de EEPROM van de Arduino.
27
Naar voorblad
Als je een 4 hebt ingedrukt kom je in de functie “ Keuze2Change “. Hier gebeurt net hetzelfde als bij de functie “ Keuze1Change “, maar dan voor de code om de beveiliging uit te zetten.
28
Naar voorblad
De volgende functie is de belangrijkste. Deze functie wordt telkens opgeroepen als er invoer gevraagt wordt. In deze functie wordt de invoer getest. De keypad die wij gebruiken werkt met rijen en kollommen. Onze keypad heeft vier rijen en drie kollommen. Doormiddel van elke kollom afzonderlijk hoog te sturen en elke rij afzonderlijk te lezen, kunnen we nagaan welk cijfer er is ingevoerd.
29
Naar voorblad
30
Naar voorblad
31
Naar voorblad
32
Naar voorblad
33
Naar voorblad
C# programma Algemeen Het programma heeft noodzakelijke stukken code en aanvullende stukken code. Het noodzakelijk stuk kan je voorstellen d.m.v. een simpele flowchart zodat je een beter beeld krijgt van wat er gebeurt. 1. Foto downloaden 2. Foto opslagen 3. Foto’s vergelijken 4. Beweging aanduiden
Ter zijde : het programma is in C# geprogrammeerd en vraagt niet “stop ingedrukt?” maar als de knop stop ingedrukt wordt zal de methode oproepen die het download/opslagen/vergelijken gaat stoppen.
De bijkomende stukken worden apart aangeroepen en maken dus geen deel uit van de kern van het programma. In die stukken kan je bijvoorbeeld een andere plaats kiezen om je foto’s op te slaan, de snelheid van het vergelijken verhogen/verlagen, … 34
Naar voorblad
Bespreking per blok Ontwerp van de form
3 1
2
4
5 6
7
35
Naar voorblad
Nummer 1. 2.
Korte beschrijving Hier kan je instellen waar de foto’s worden opgeslagen en instellingen wijzigen van de camera zelf. Bij ‘Help’ vindt je twee hyperlinks: één naar onze website en één naar de help-file van ons programma.
3.
Dit is het ontwerp (design) van onze form.
4.
Bij ‘controls’ kan je de snelheid van het vergelijken verhogen/verlagen en de gevoeligheid aanpassen.
5.
In de statusbalk zie je of het programma aanstaat en het foutenpercentage.
6.
In de picturebox zie je de laatst genomen foto, of het opstartbeeld.
7.
Door op deze button te drukken zal je het vergelijken inschakelen/uitschakelen (hangt er van af of het al aan het vergelijken is of niet).
36
Naar voorblad
Declaratie van variabelen in het begin van het programma
Datatype + Variabele
Korte beschrijving
string fname1 en fname2 int intSnelheid
namen van de foto’s waarde die bepaald hoeveel pixels het programma per stap moet overslaan bij het vergelijken van de foto’s de waarde waarmee het verschil tussen pixels wordt vergeleken.(0-255) de waarde van hierboven omgezet in een percentage om het iets gemakkelijker voor te stellen voor de gebruiker. bepaald of de foto’s in het standaard pad of in het ‘door de gebruiker gekozen pad’ wordt opgeslagen. de foto’s worden hierin opgeslagen om er bewerkingen met uit te voeren. de ARGB-waarden van een pixel dit wordt gebruikt om een ander pad te kiezen om de foto’s op te slaan i.p.v. het standaard pad
double dblGevoeligheid double dblGevoeligheidPerc blFotoDirectory Bitmap foto1, foto2 Color color1, color2 FolderBrowserDialog folderbrowserdialog = new FolderBrowserDialog() clrRood = Color.FromArgb(255,255,0,0) double slechteTeller=0 double goedeTeller = 0 intFoutenteller
de kleur waarmee verandering wordt aangegeven (rood) aantal pixels dat teveel verschillen tegenover de andere overeenkomstige pixel aantal pixels dat niet genoeg verschillen tegenover de andere overeenkomstige pixel om meegeteld te worden Het aantal verschillende pixels bij het vergelijken
37
Naar voorblad
Laden bij opstarten
Als het programma laadt zal de progressbar onzichtbaar gezet worden omdat je die momenteel niet nodig hebt. Dan zal een afbeelding in de picturebox geladen worden dat aangeeft dat er nog geen foto’s beschikbaar zijn. Dan gaan de aanwijzers van de scrolbars op het maximum gezet worden. Dit doe ik omdat de aanwijzers normaal bovenaan de scrolbar staan.
Maximum
1
Minimum
6
38
Naar voorblad
Dit is niet echt logisch omdat je vanaf 1 start en naar 6 gaat, dus van laag naar hoog. Dit is waarom ik het zo doe:
Bij het opstarten: Maximum
Minimum
39
6
1
Naar voorblad
Foto ophalen
De functie hierboven download een foto van de website van onze camera. Dan wordt de foto via een stream doorgestuurd en krijgt de functie de foto als een object als return waarde terug. Als de foto niet gedownload kan worden, krijgt de functie ‘null’ mee als return waarde.
40
Naar voorblad
Foto’s vergelijken/opslaan
volgende deel is opgedeeld in 2 stukken : 1) functie voor het downloaden van de foto oproepen en het opslaan ervan 2) Foto’s vergelijken
1) Foto downloaden en opslaan In dit deel wordt de functie opgeroepen dat de foto download. We geven daarvoor de URL van de camera dat verwijst naar een foto. Daarna wordt er uitgemaakt of de foto moet opgeslagen in ‘het door de gebruiker gekozen pad’ of in het standaard pad. Dan wordt de foto opgeslagen en wordt de bestandsnaam van de laatst genomen foto overgeplaatst naar fname2, omdat je fname1 gaat gebruiken om een nieuwe bestandsnaam in te steken, en fname2 heb je nodig om te verwijzen naar de foto tijdens het vergelijken.
41
Naar voorblad
2) Foto’s vergelijken
42
Naar voorblad
Dit is het belangrijkste stuk van het programma hier wordt de foto die het laatst genomen is vergeleken met de voorgaande foto. Dit wordt gedaan door de waarden van een pixel in een colorstructure te zetten zodat je de ARGB-waarden eruit kan halen. Dat wordt bij beide foto’s gedaan en worden de overeenkomstige pixels met elkaar vergeleken. Met vergelijken bedoelen we het verschil nemen van de kleurwaarden van de overeenkomstige pixels van de 2 foto’s. Van het verschil gaat het programma de absolute waarde nemen en vergelijken met de waarde van de scrolbar die je naast de foto kan instellen.
Onder de scrolbar staat een percentage, dat overeen komt met een waarde tussen 0255(kleurwaarde) waarbij 0% verwijst naar de waarde 0 en 100% naar 255.
43
Naar voorblad
Vb: gegeven: foto1: pixel1(255,230,100,20) foto2: pixel2(255,200,130,99) -De getallen achter foto1/foto2 zijn de kleurwaarden van een bepaalde overeenkomstige pixel van de 2 foto’s. ( foto1(Ondoorzichtigheid, Rood, Groen, Blauw)) -De ondoorzichtigheidswaarde is bij ons altijd 255 en wordt dus niet naar gekeken. Rood: |230-200|= 30 Groen: |100-130| = 30 Blauw: |20-99| = 79 Waarde ingesteld op de scrolbar = 40 Het verschil op de blauwwaarden is te groot, de pixel zal rood worden gekleurd.
Op het einde van het blok staat er een catch. De catch zorgt ervoor dat het programma niet met 1 foto gaat vergelijken, maar de eerste foto overslaat om daarna te starten met het vergelijken. In die catch staat de lijn “btnSave_Click(this , e);”, dit zorgt ervoor dat er zeker een foto genomen wordt. Zodat het programma niet vastloopt.
44
Naar voorblad
Timer 1
Het programma gaat dit stuk code aanroepen als de timer zijn maximumtijd bereikt heeft (100 ms). Dit zal dus bijna altijd aangeroepen worden zodat, als het programma klaar is met foto’s te vergelijken, het programma direct weer een foto zal nemen. De foto die dan genomen is wordt dan opgeslagen en vergeleken met de voorgaande foto. Dan wordt de timer gereset.
Timer 2
Deze timer hebben we erin gezet om te maken dat de gebruiker niet te lang hoeft te wachten als er een fout optreedt bij het nemen van foto’s.
45
Naar voorblad
Startknop
Dit stuk code wordt opgeroepen als er op de knop ‘btnAutoOn’ klikt. Eerst zal er gekeken worden naar de tekst die op de knop staat, als daar start staat weet het programma dat hij timer1 en timer2 moet aanzetten. De uitleg over de timers vindt u hierboven. Dan wordt de mogelijkheid om een ander pad te kiezen om je foto’s op te slaan uitgezet. Omdat het programma meestal crasht als je dat wil veranderen tijdens het vergelijken/opslaan. Als laatste wordt de tekst op de button veranderd in ‘Stop’. Dit zorgt ervoor dat je niet weer je timers gaat aanzetten als je weer op de button klikt. Maar dat je in het else-deel van de iteratie, je timers gaat uitzetten, je progressbar onzichtbaar gaat maken en zijn waarde op 0 te zetten, en de mogelijkheid om je foto’s in een ander pad op te slaan terug aanzetten. En ten slotte gaat de tekst op de button weer veranderd worden zodat je terug in het if-deel van de iteratie geraakt zodat je de timers terug kan aanzetten. In het begin van de code wordt de beschikbaarheid van de camera getest. dit gebeurt door met een try-catch een foto te proberen downloaden. Als je in de catch terecht komt verschijnt er een messagebox op het scherm dat zegt dat je geen connectie hebt met de camera.
46
Naar voorblad
Extra’s
1 .
2 .
3 .
4 .
Nummer 1. 2. 3. 4.
Korte beschrijving Opent onze website als je klikt op de link in het toolstripmenu Opent het help tekstbestand Opent de website van de camera, waar je de camera instellingen kan wijzigen Geeft de mogelijkheid om je foto’s in een zelf gekozen pad op te slaan
47
Naar voorblad
Scrolbars
48
Naar voorblad
1
2
49
Naar voorblad
1 : Dit stuk code wordt aangeroepen als je de scrolbar verschuift. In dit stuk wordt er gekeken naar de waarde die de scrolbar op dat moment heeft. Daarna wordt uitgemaakt welke waarde van intSnelheid overeenkomt met de waarde van de scrolbar (d.m.v. een switch case structuur). Je kan de waarde van de scrolbar aflezen in een label onderaan de scrolbar. 2: In dit stuk wordt de waarde van de scrolbar omgerekend naar een procent zodat het gemakkelijker geïnterpreteerd kan worden door de gebruiker. Dit doen we omdat de gebruiker waarschijnlijk niet weet waarvoor de waarde van 0-255 staat (kleurwaarde). Het percentage kan je aflezen in het label onder de scrolbar net zoals hierboven.
50
Naar voorblad
51
Naar voorblad