Vergelijking en implementatie van digitale signaalbewerkingstechnieken bij communicatie via leds Dejan Borota en Bart Jansen
Technische Universiteit Delft Faculteit Electrical Engineering, Mathematics and Computer Science 14 juni 2011
THESIS
ingediend ter parti¨ele vervulling van de vereisten ten aanzien van de graad BACHELOR OF SCIENCE in Electrical Engineering
LEDSpeak Dejan Borota Pieter de Buck Pascal ’t Hart Stephen van ’t Hof Bart Jansen Thijs Wensveen
-
1527347 1447292 1505203 1511882 1540580 1505351
BAP coo ¨rdinator: Dr.ir. I.E. Lager Thesisbegeleider: Dr.ir. G.J.T. Leus Assistentbegeleider: Dr.ir. T.J.M. van Waterschoot
Voorwoord Dit rapport is een onderdeel van het bachelorafstudeerproject van de groep LEDSpeak. Het project richt zich op communicatie via light emitting diodes, kortweg leds. Omwille van de uitvoerbaarheid van het afstudeerproject is het aangekaarte onderwerp opgedeeld in drie onderdelen: de zender, de ontvanger en de signaalbewerking. Deze thesis is geconcentreerd op alle signaalbewerking binnen een visible light communicatiesysteem dat middels leds gerealiseerd wordt. Dit rapport is geschreven door Dejan Borota en Bart Jansen, een subgroep in de LEDspeak afstudeergroep. LEDspeak bestaat uit een zestal derdejaars Electrical Engineering studenten aan de TU Delft. Lezers die meer willen weten over het belang van het onderzoek worden verwezen naar hoofdstuk 2. Hoofdstuk 3 en 4 richten zich op het ontwerpcyclus en de ontwikkeling van het LEDSpeak communicatiesysteem. In hoofdstuk 5 en 6 wordt dieper ingegaan op de keuzemogelijkheden in modulatie- en coderingstechnieken. Voor de daadwerkelijke implementatie en de resultaten wordt de lezer doorverwezen naar hoofdstuk 8 en verder. Dankwoord We willen graag onze begeleider Dr.ir. G.J.T. Leus bedanken voor het verschaffen van de opdracht. Hij en onze andere begeleider Dr.ir. T.J.M. van Waterschoot hebben ons altijd goed op weg weten te houden en wisten ons constructief te motiveren. Toon wordt expliciet bedankt voor zijn toegewijde hulp bij het schrijven van de thesis, iets wat voor ons allen een nieuw leerproces was. We danken Dr. Cheng Guo voor zijn interesse in ons project en zijn begeleiding bij een onderdeel van het onderzoek, dat uiteindelijk helaas maar voor klein deel in deze thesis wordt genoemd. Verder danken we Dr. Jaap Hoekstra voor het arrangeren van een gepaste werkruimte voor ons gehele groepje en voor het regelmatig geleverde advies, dat vaak erg nuttig bleek. Ook K.L.M. Bertels wordt bedankt voor de begeleiding bij het opstellen van het businessplan en zijn aanzienlijke bijdrage voor het op gang brengen van het LED-pricing idee.
Delft, 14 juni 2011 Dejan Borota Bart Jansen
Samenvatting De eigenschappen die leds superieur maken tegenover andere typen verlichting, zoals effici¨entie, een lange levensduur, lichtvermogen en schakelvermogen hebben het mogelijk gemaakt dat het kleine halfgeleidercomponent een grote bijdrage heeft gehad op het gebied van communicatie via het zichtbare licht in het afgelopen decennuim. Dit onderzoek houdt zich bezig met de vraag hoe de elektronische signaalbewerking gerealiseerd en gereguleerd kan worden bij het integreren van de communicatietechnologie via leds in een systeem voor automatische prijsaanduidingen, genaamd LED-pricing. Het concept bestaat uit ledverlichting als zender, die gelijktijdig licht en uniforme data uitzendt, en meerdere prijskaartjes die de informatie uniek per prijskaartje ontvangen en op een display weergeven. Om tot een ontwerp te komen is een programma van eisen opgesteld, waarna bestudering van gedane onderzoeken heeft geleidt tot het maken van afgewogen ontwerpkeuzes. Toetsing aan het programma van eisen is finale stap van het onderzoek. Het ontwikkelde bewijs voor dit concept bestaat uit drie Atmel ATmega16 microcontrollers, waarbij ´e´en microcontroller verantwoordelijk is voor het moduleren van het licht aan de hand van een dataprotocol en middels On-off keying modulatie. De twee andere microcontrollers demoduleren het door een zonnepaneel ontvangen licht, decoderen het bericht en bepalen de authenticiteit van het bericht middels een CRC-verificatie. Elke demodulatiecontroller stuurt een apart LCD-scherm aan. Het onderzoek en het ontwerp van het bewijs van de conceptoplossing hebben geleid tot het behalen van de doelstelling. Een uni-directionele communicatie is via een draadloze lichtkanaal opgezet. Onderscheid in de unieke informatie per ontvanger is gerealiseerd, net als het detecteren van foutief overgestuurde data. De dataverbinding is werkend tot op een afstand van 42 centimeter in de testopstelling, met een datasnelheid van 10 kbit/s. De regeling van de signaalbewerking binnen het systeem is gerealiseerd en gedocumenteerd in het gehele rapport. Aspecten als het gebruik van licht als energiebron, en het regelen van de lichtintensiteit zijn niet volledig uitgewerkt in het onderzoek, net als het integreren van het systeem in het huidige lichtnet. Aanbevelingen zijn: verder onderzoek doen naar de omgang met energie, het volledig onzichtbaar maken van de communicatie, eveneens als het robuuster maken ervan. Verdere testen van het gemaakte prototype moeten uitwijzen welke factoren de meeste invloed hebben op de dataverbinding en wat de belangrijkste maatstaven zijn in het bepalen van de prestaties van het systeem. Aan de hand van deze resultaten kunnen nieuwe ontwerpafwegingen worden gemaakt, waardoor een optimaler ontwerp gerealiseerd kan worden. Dit leidt tot ontwikkeling en toepassing van het eerste commerci¨ele prototype, als een automatisch prijskaartjessysteem in het warenhuis, werkend via ledverlichting.
Inhoudsopgave Voorwoord
2
Samenvatting
3
1 Inleiding
7
I
8
Deel I: Achtergrond
2 Belang van het onderzoek 2.1 Gerelateerd onderzoek . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Led-gebaseerde VLC-systemen . . . . . . . . . . . . . . . . 2.1.2 Signaalbewerking en modulaties binnen VLC . . . . . . . . 2.2 Belang van de ontwikkeling van een VLC-systeem voor LEDSpeak 2.3 Belang van het signaalbewerkingsaspect in VLC-systeem . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
9 9 9 11 11 12
3 Programma van eisen 3.1 Systeemspecificaties . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Eisen vanuit het beoogde gebruik . . . . . . . . . . . . . . . . . . . . 3.3 Eisen vanuit de ecologische situering van het systeem in de omgeving 3.4 Eisen met betrekking tot de productie en ingebruikstelling . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
14 14 15 15 15
II
Deel II: Ontwikkeling en ontwerp
16
4 Concept van het ontwerp 4.1 Top-level systeembeschrijving . . . 4.2 Opdeling in functieblokken . . . . 4.3 Verbinding van de deelblokken . . 4.4 Voorstel van een proof of principle 4.4.1 Cruciale eigenschappen . . 4.4.2 Prioriteiten van eisen . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
17 17 18 20 22 22 22
5 Dataprotocol 5.1 Transmissieprotocol . . . . . . 5.2 Signaallayout . . . . . . . . . . 5.3 Datasnelheid . . . . . . . . . . 5.3.1 Frequentie bepalen . . . 5.3.2 Data rate . . . . . . . . 5.4 Errorchecking . . . . . . . . . . 5.4.1 Types errordetectie . . . 5.4.2 Lengte CRC-polynoom . 5.4.3 Type CRC-16-polynoom
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
23 23 24 25 25 26 27 27 28 29
. . . . . . . . .
. . . . . . . . .
Inhoudsopgave
Inhoudsopgave
6 Modulatietechnieken 6.1 Fysische toestandsbeschrijving . . . . . 6.1.1 Analyse van het kanaaltype: licht 6.1.2 Ruisbijdrage in een lichtkanaal . 6.2 Mogelijkheden . . . . . . . . . . . . . . . 6.3 Afweging van de modulatietechnieken .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
30 30 30 31 31 34
7 Microcontroller 7.1 Type microcontrollers 7.2 Specificaties . . . . . . 7.2.1 Timers . . . . . 7.2.2 AD-omzetter . 7.2.3 Geheugen . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
36 36 38 38 38 38
III
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Deel III: Resultaten
8 Implementatie 8.1 Modulatie . . . . . . . . . 8.1.1 Initialisatie . . . . 8.1.2 Timers . . . . . . . 8.1.3 Transmissie . . . . 8.2 Demodulatie . . . . . . . 8.2.1 Initialisatie . . . . 8.2.2 ADC-initialisatie . 8.2.3 Timer-initialisatie 8.2.4 AD-detectie . . . . 8.2.5 ADC-sampling . . 8.2.6 Verificatie . . . . .
39 . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
40 40 40 40 41 42 42 42 43 43 43 44
9 Evaluatie 9.1 Toetsing aan de hand van testopstelling . . . . . . . . . . . . . . . 9.1.1 Variatie in afstand . . . . . . . . . . . . . . . . . . . . . . . 9.1.2 Line-of-sight onderbreken . . . . . . . . . . . . . . . . . . . 9.2 Toetsing aan het programma van eisen . . . . . . . . . . . . . . . . 9.2.1 Proof of principle als voorganger van LED-pricing systeem 9.2.2 Aanpassing aan het programma van eisen en/of ontwerp . . 9.3 Vergelijking met methodes in voorgestelde VLC-systemen . . . . . 9.3.1 Modulatietechniek . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Detectie en demodulatie . . . . . . . . . . . . . . . . . . . . 9.3.3 Mogelijke uitbreiding ruismodellen . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
45 45 46 46 47 47 48 48 48 49 50
10 Conclusies en aanbevelingen 10.1 Conclusies . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Aanbevelingen . . . . . . . . . . . . . . . . . . . . . . . . 10.2.1 Aanbevelingen ten aanzien van ontwerp . . . . . . 10.2.2 Aanbevelingen ten aanzien van gekozen werkwijze
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
52 52 52 53 53
IV
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
Deel IV: Appendices
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . .
. . . . . . . . . . .
. . . .
. . . . . . . . . . .
. . . .
. . . . . . . . . . .
. . . .
. . . .
54
Lijst van afkortingen
55
Lijst van figuren
57
Lijst van tabellen
58
5
Inhoudsopgave
Inhoudsopgave
Bibliografie Appendices Appendix A: Programma van eisen . . . . Appendix B: ASCII conversietabel . . . . Appendix C: Code voor modulatie in C . Appendix D: Code voor demodulatie in C Appendix E: Gantt Chart . . . . . . . . .
59
. . . . .
. . . . .
. . . . .
. . . . .
6
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
62 62 65 66 70 73
Hoofdstuk 1
Inleiding In een wereld waarin de behoefte om gemakkelijk te kunnen communiceren blijft groeien, gaat deze behoefte tegenwoordig samen met een andere: zuinig en effici¨ent gebruik maken van energie. Een overlap in het voorzien van deze twee behoeften op elektrotechnisch vakgebied is communicatie via het licht. Parallel aan deze ontwikkeling vindt er een revolutie plaats in de wereld van de verlichtingstechnologie. Recentelijke ontwikkelingen in de vaste-stoffysica hebben ertoe geleid dat leds steeds geschikter blijken te zijn bij elektrotechnische toepassingen. Naar aanleiding van deze twee trends in het ontwikkelen van technologische oplossingen, doen baanbrekende ontwikkelingen zich voor op het gebied van draadloze optische communicatie die gebruik maakt van leds. De opdracht om van deze ontwikkeling deel uit te maken door een commerci¨ele toepassing van de technologie te ontwerpen, kreeg pas vorm bij het ontstaan van het idee dat leidend is voor de opbouw van het businessplan van LEDSpeak[1]: een intelligent prijskaartjessysteem dat opereert middels communicatie via leds. Dit rapport beschrijft de realisatie en regulatie van de elektronische signaalbewerking bij het ontwerpen van een dergelijk systeem. Het rapport beschrijft het doorlopen van een ontwerpcyclus: het opstellen van eisen voor een systeem, het maken van keuzes voor het ontwerp en het daadwerkelijk ontwerpen en toetsen van een prototype, dat moet dienen als het bewijs voor de werking van het idee. Middels literatuuranalyses worden eerst de vorderingen in de wereld van elektrotechniek op het gebied van optische communicatie uiteengezet, met de focus op enerzijds modulaties van lichtsignaal en coderingen van berichten en anderzijds het gebruik en de aansturing van geschikte hardware voor een realisatie. Aansluitend daarop vindt de ontwerpcyclus plaats. Deze thesis kent de volgende opbouw. In hoofdstuk 2 wordt na een samenvatting van gerelateerd onderzoek op gebied van optische communicatie, het belang van het onderzoek aangekaart. Hoofdstuk 3 volgt met een opstelling van eisen voor het te ontwerpen systeem tijdens dit onderzoek. In hoofdstuk 4 wordt een concept van het ontwerp aangeboden, waarna een ontwerpcyclus doorlopen kan worden. In de daarop volgende hoofdstukken worden het onderzoek en de ontwerpkeuzes beschreven per onderdeel, in hoofdstuk 5 voor het dataprotocol, hoofdstuk 6 voor de modulatietechnieken en hoofdstuk 7 voor de microcontroller. Hoofdstuk 8 omvat de daadwerkelijke implementatie in de hardware. Aan de hand van de implementatie vindt in hoofdstuk 9 een analyse van de resultaten plaats en wordt het hele proces, onderzoek en ontwerp ge¨evalueerd. Ten slotte zet hoofdstuk 10 de conclusies uiteen over de werking van het ontwerp en worden enkele aanbevelingen aangeboden waar bij verder onderzoek aandacht aan besteed dient te worden.
Deel I
Deel I: Achtergrond
Hoofdstuk 2
Belang van het onderzoek Dit hoofdstuk zal in drie stappen de motivatie van het uit te voeren onderzoek presenteren. In de paragraaf 2.1 wordt een blik geworpen op het gerelateerde onderzoek op dit onderzoeksgebied. Werken van grote betekenis worden opgenoemd en kort toegelicht. Daarop aansluitend zal in paragraaf 2.2 behandeld worden hoe ons werk gekoppeld is aan het bestudeerde literatuuronderzoek. Ook wordt genoemd waarom ons onderzoek op dit gebied van belang is. Tevens wordt in 2.3 beschreven waarom het essentieel is om de signaalbewerkingskant van een optisch communicatiesysteem te analyseren.
2.1
Gerelateerd onderzoek
Visible light communication (VLC) is in de laatste tien jaar een interessant en snel vorderend onderzoeksgebied geworden. Leds verlenen zich als prima middel om het doel te bereiken vanwege de recente ontwikkelingen in eigenschappen, die beschreven zijn in [2]. Vaak theoretisch uitgewerkt, soms onderbouwd met een demonstrator, worden verschillende werken gepresenteerd met communicatielink vari¨erend van 100 kbit/s [3] oplopend tot voorstellen van 1 Gbit/s [4]. Naargelang de beschrijving van gerelateerde onderzoeken wordt ook de opdeling in de analyse van de literatuurstudie gemaakt. Een overzicht van de gepresenteerde VLC-systemen gebaseerd op leds gaat daarbij voorop. Sterk gekoppeld daaraan zijn de evaluaties en analyses van de werking over deze systemen die in veel artikelen besproken worden. Wat onafhankelijker zijn besprekingen van signaalbewerkingstechnieken en modulaties binnen een VLC; deze studies zijn meer gekoppeld aan enkel deze thesis in het bijzonder, en worden besproken in paragraaf 2.1.2.
2.1.1
Led-gebaseerde VLC-systemen
´ en van de eerste wetenschappelijke artikelen in een lange reeks van publicaties waar leds worden toeE´ gepast voor het uitzenden van informatie is [3]. Centraal in dit werk staat de overstap van optische IR-communicatie naar het gebruik van ledverlichting als medium voor draadloze communicatie op korte afstand. Een communicatieprotocol, gebruikmakend van witte leds, wordt voorgesteld in [5] als de indoor communicatie van de toekomst, waar ledverlichting verantwoordelijk is voor zowel de datatransmissie als verlichting van een ruimte. Het werk wordt beschouwd als een basisonderzoek voor verdere ontwikkeling op VLC-gebied met leds. Een goede inleidende en nauwkeurige analyse van alle vereisten voor het systeem leidt tot een hoge waardering van het onderzoek. Van het voorgestelde systeem wordt een analyse van de prestaties beschreven in [6]. Het gebruik van meerdere licht/zendbronnen in VLC leidt tot reflecties en intersymbol inferentie (ISI), wat in [5] en [7] beschouwd wordt. Dit is ook het hoofdpunt in [4], waar een adaptieve equalizer wordt gepresenteerd als een mogelijke onderdrukking van de ISI. Deze wordt gerealiseerd middels het afschatten van het kanaal, wat goed staat beschreven en wat een optie is voor het signaalbewerkingsaspect aan de ontvangerkant, zoals later ook duidelijk zal worden. Met het gebruik van een ‘standaardopstelling’ voor het communicatieprotocol, wordt in [4] aangetoond dat de data rates met deze toepassing hoog kunnen oplopen.
2. Belang van het onderzoek
2.1. Gerelateerd onderzoek
De manifestatie van ISI wordt deels veroorzaakt door de invalhoeken van het licht binnen een VLCsysteem. De invloed van invalshoeken vanuit verschillende bronnen op de prestatie van het systeem komen naar voren in [8]. Hier wordt tevens een haalbaar VLC-systeemontwerp voorgesteld, dat gebruikt maakt van OFDM en dat opgebouwd is uit een tiental simpele off-the-shelf componenten. Een toepassing van CDMA in combinatie met een modulatieschema leidt in [9] tot de ontwikkeling van het communicatieprotocol CTDMA-PPM. Aan de hand van dit protocol willen de onderzoekers in dit artikel twee dingen bereiken. Enerzijds de lichtintensiteit per led kunnen controleren en aansturen. Anderzijds een volledige orthogonaliteit mogelijk maken tussen de verschillende uitzendende lichtbronnen, die onafhankelijke informatie uitsturen. Het integreren van een VLC-systeem binnen een huishouden of een kantoorgebouw zou problemen kunnen scheppen in de opmars van VLC met leds. In [10] wordt een bedradingssysteem (powerline communication, PLC) hiervoor voorgesteld dat eenvoudig via het lichtnet functioneert. Het werkend aangetoonde protocol maakt de optie om leds te implementeren en deze te gebruiken als verlichting ´en communicatiesysteem simpeler en aantrekkelijker. De concentratie van dit artikel ligt vooral op de lichtnetcommunicatie. Het aspect van optische communicatie wordt bij benadering beschreven, waarbij veel wordt afgeleid uit vorige studies. Een optie van integratie van de VLC- en PLC-systemen wordt nauwkeuriger onderzocht in [11]. Omdat de meeste ruisbijdrage volgens dit werk in de PLC zit, wordt daarvoor een turbo-coded OFDM modulatieschema voorgesteld. Ook wordt gekeken naar de mogelijkheid van meerdere paden van datapropagatie binnen het PLC. Het voorgestelde ge¨ıntegreerde systeem, dat middels parallelle coderingen (PCCC) werkt, leidt tot een relatief lage BER zelfs in het geval van een slechte SNR, voor het gehele communicatiesysteem. Het gebruik van OFDM brengt echter nadelen met zich mee in de vorm van niet-lineaire distorsie wanneer het signaal van de PLC bij de leds aankomt en nogmaals gemoduleerd moet worden. In [12] wordt een methode aangeboden om de distorsie te onderdrukken en een hoger uitzendingsvermogen te realiseren, en daarmee de prestatie van het voorgestelde OFDM-gebaseerd VLC-systeem te verbeteren. Het artikel [13] beschrijft een systeemontwerp van een simpel line-of-sight (LOS) VLC-systeem. Het werk beslaat een ontwerp van een zender, een analyse van het kanaal en de implementatie van een ontvanger, op alle fronten erg vergelijkbaar met het door ons in hoofdstuk 4 genoemde prototype. Anders dan witte leds kunnen ook RGB-leds gebruikt worden voor transmissie van data. In [14] wordt een zodanig prototype gedemonstreerd dat indoor ge¨ımplementeerd en getest is. Sterke punten aan deze beide artikelen zijn de simpliciteit van zowel het ontwerp als de werkwijze. Theoretisch niet al te toegespitst, maar een goed voorbeeld van een simpele implementatie van een led-gebaseerd VLC-systeem. In meeste tot nu toe genoemde VLCs is sprake van een uni-directionele communicatie tussen leds en ontvanger. Elke led kan echter ook als een tweeweg communicatiepoort beschouwd worden [15]. Het systeem dat in [15] wordt aangeboden, maakt gebruikt van zowel het transmissie- als detectievermogen van een led om dusdanig met twee leds een bi-directionele communicatie op te zetten. Deze eigenschap levert wel in op de prestaties van het systeem die, in termen van datarate en communicatie-afstand, beduidend minder zijn dan die van uni-directionele VLCs. Enkele onderzoeken die niet VLC-systemen beslaan, kunnen toch als verwant benaderd worden. Dit is het geval wanneer de hierin toegepaste redeneringen en methodes teruggekoppeld kunnen worden naar gelijkenissen met VLC-systemen, en bevindingen tot dezelfde conclusies kunnen leiden. Zo is de infrarode draadloze communicatie de voorganger van VLC via leds. Het gebruik van een infraroodsysteem in korte-afstand draadloze digitale communicatie wordt uitbundig besproken in [16], en vergeleken met radio- en microgolfcommunicatie. Veel van de gebruikte modellen voor het kanaal, de ruis, de verliezen en andere manifestaties kunnen samen met de analyses van modulatietechnieken direct gekoppeld worden aan VLC-systemen. Het werk dient dan ook als een referentiepunt voor veel van de opgezette onderzoeken voor VLCs. Verder zijn er free-space optical communicatiesystemen. Dit zijn in feite outdoor VLC-systemen voor grotere afstanden. In [17] wordt een FSO voorgesteld waar een interessant ‘signal dependant gaussian noise’ model wordt gebruikt. Deze benadering voor het modeleren van ruis in een optisch kanaal kan ook toegepast worden op VLC. Daarnaast presenteren de auteurs een uitgebreide analyse van de effici¨entie van een OOK-modulatie.
10
2. Belang van het onderzoek
2.1.2
2.2. Belang van de ontwikkeling van een VLC-systeem voor LEDSpeak
Signaalbewerking en modulaties binnen VLC
Analoog aan de verdeling binnen onze afstudeergroep is de verdeling er ook binnen het opzetten van een VLC-systeem. Onderdeel daarvan is het analyseren van het communicatiekanaal, waarbij signaalbewerking en modulatietechnieken aan bod komen. Zijnde het doel van deze thesis, worden daarom een aantal relevante werken hierover aan verbonden. Vanwege het bredere spectrum van leds, kunnen smalbandige modellen voor het kanaal, zoals gebruikt in infraroodtechnologie, niet worden overgenomen [18]. Een analyse van de karakteristieken van het ‘multipath’ lichtkanaal wordt gepresenteerd, samen met de afleiding voor het model van dit kanaal. Het in [19] beschreven onderzoek richt zich juist op het kanaal in een VLC-communicatiesysteem. Het doel om een hoge datarate maar lage foutmarge te genereren, van een systeem in staat om video uit te zenden, wordt bemiddeld door afwegingen in de gebruikte modulaties en bi-directionele communicatieprotocollen. De keuze van de modulatie heeft grote invloed op de dimming van het licht, waar het in [20] doel is om controle over deze dimming te hebben. In een vergelijking van meerdere methoden wordt aangetoond hoe dit bereikt wordt met het effici¨ente multiple pulse position modulation (M-PPM). In [21] wordt een techniek voorgesteld waarbij een PPM-signaal, verantwoordelijk voor de representatie van de data, bovenop een PWM-signaal gemoduleerd wordt. Hierbij verschaft PWM controle over de intensiteit van het licht (dimming). De communicatie verloopt succesvol tot op een afstand van 20 centimeter. Zoals eerder genoemd wordt het probleem van ISI - veroorzaakt door meerdere mogelijke paden van data via het licht - een groot punt bij hoge data rates. Twee benaderingen om het probleem op te lossen worden ge¨ıntroduceerd in [7]. Beide benaderingen maken slim gebruik van een modulatietechniek, in dit geval OOK-RZ en OFDM. De twee meest gebruikte modulatietechnieken voor VLC systemen zijn OOK en PPM. Een uitvoerige prestatieanalyse van de twee technieken wordt gegeven door [22], waarin naar voren komt dat OOK pas slechter presteert wanneer een hoge orde van PPM wordt toegepast.
2.2
Belang van de ontwikkeling van een VLC-systeem voor LEDSpeak
Witte leds zijn sinds hun ontdekking onderworpen aan uitgebreid onderzoek en worden gebruikt in veel verschillende toepassingen [4]. Voordelig is dat het gebruik van witte leds kan concurreren met twee hedendaagse gebruikelijke principes: verlichting en draadloze datacommunicatie, omdat ze van beide de eigenschappen combineren. Zaken als laag stroomverbruik, snellere responsie op schakelingen, hoge effici¨entie, lange levensduur, makkelijke manipulatie van helderheid en kleur et cetera worden in meerdere studies [5],[10] aangeduid als redenen waarom leds een toekomst hebben in de integratie van verlichting en VLC. De bekwaamheid van het systeemontwerp van LEDSpeak worden duidelijk weergeven in het businessplan [1]. De functionele vereisten worden verder toegespitst in hoofdstuk 3. Het is echter van belang toe te lichten hoe dit systeem binnen de bestudeerde en besproken VLC-communicatie past. Het LEDSpeak systeem deelt het ideaal van een combinatie van verlichting van een ruimte en het bewerkstelligen van een betrouwbare datacommunicatiemogelijkheid hierbinnen, zoals dat in bijna alle studies het geval is. Ook de opdeling van het geheel is equivalent aan voorgaande gevallen, weergeven in figuur 2.1. Enkel de vervanging van de huidige verlichting moet drempel zijn voor de overstap naar het systeem. Dat betekent dat datatransmissie voor VLC middels het aangelegde lichtnet moet verlopen, zoals de PLCsystemen van [10],[11]. Het onderdeel van de zender omvat deze technologie, samen met een ontwerp van de zendelektronica en analyse van de zendprotocollen. De ontvangerskant is verantwoordelijk voor het ontwerpen van een ontvangstmechanisme, welke vergelijkbaar is met ontvangersaspecten in [3],[16], en de weergave van de informatie. Het verbindende element tussen de twee onderdelen beschouwt het kanaal, waarover meer vermeld in paragraaf 2.3. Technisch gezien oogt het vereiste systeem minder geavanceerd dan de beschreven systemen in para-
11
2. Belang van het onderzoek
2.3. Belang van het signaalbewerkingsaspect in VLC-systeem
graaf 2.1.1. Een relatief lage benodigde data rate in vergelijking met de studies leidt tot simpelere randvoorwaarden voor het systeem. ISI is een probleem dat zich pas significant manifesteert op grote datasnelheden. Dit maakt dat de keuze van modulatietechniek en leds met de goede eigenschappen minder gebonden zijn aan strenge afwegingen. Deze vrijheid schept ruimte voor het realiseren van een relatief simpel systeem. Het onderzoek voegt technologisch wel degelijk toe op gebied van VLC. De grootste technologische winst ligt in het realiseren van een derde functie van het licht: energievoorziening. Aan het ideaal van een samensmelting van licht en data wordt het ideaal toegevoegd, om met het licht ook alle ontvangers van genoeg vermogen te voorzien. Een ander aspect dat verder niet uitvoerig behandeld lijkt, is het introduceren van een groot aantal ontvangers aangestuurd door een groot aantal bronnen. Onderscheid van ontvangers is van groot belang voor een werkend LEDSpeak systeem. Tot slot onderscheidt dit onderzoek zich van andere middels de doelstelling. In meeste geraadpleegde studies wordt vooral theoretisch onderzoek gepresenteerd. Vaak wordt een prototype ontworpen dat dient om de werking van het voorgestelde systeem aan te tonen en bestuderen, zie [13],[14]. Hoewel duidelijk wordt dat deze werkwijze vergelijkbaar is met de onze, ligt het doel van de ontwikkeling van een commercieel product voor ons. In de literatuur is nog niet sprake van een product, gebaseerd op ledcommunicatie, dat ge¨ıntegreerd is in het dagelijks leven; dit zal zeker nog gebeuren. Maar tot op dan is het systeemontwerp van LEDSpeak het eerste dat bedoeld is als een commercieel product de markt op te gaan, gebruikmakend van de ledverlichting in een VLC-instelling.
Figuur 2.1: Opdeling van het LEDSpeak systeem
2.3
Belang van het signaalbewerkingsaspect in VLC-systeem
Het onderdeel dat de zender en ontvanger in een communicatiesysteem verbindt is het kanaal. Omdat dit in het geval van een draadloos optisch communicatiesysteem lucht is, wordt hier eigenlijk bedoeld: alle moduleringen en coderingen die deel uit maken van de uit te voeren signaalbewerkingsoperaties opdat de gewenste informatie van de zender naar de ontvanger getransporteerd kan worden. Resultaten van de analyse en modelleringen van het kanaal kunnen grote invloeden hebben op de pres-
12
2. Belang van het onderzoek
2.3. Belang van het signaalbewerkingsaspect in VLC-systeem
taties van het te ontwerpen VLC-systeem. Deze analyse wordt net als in de in paragraaf 2.1.2 genoemde werken onderverdeeld in een aantal aspecten: kanaalmodellen, ruismodellen, modulaties en koppeling tussen de zender- en ontvanger-protocollen. Kanaalmodellen in verschillende artikelen zijn gelijkvormig [5],[6],[10],[18], en kunnen gekoppeld worden aan dit werk. Ook benaderingen van ruis kunnen uit voorgaande werken [3],[4],[16] veelvoudig toegepast worden, hierbij moet slechts oppervlakkig aandacht besteed worden aan ISI [7],[8]. Gelijksoortige afwegingen als in [19] en andere worden gemaakt bij het kiezen van de geschikte modulatietechnieken en andere keuzes. De minder strenge voorwaarden, die gekoppeld zijn aan de systeemeisen, maken het mogelijk om in dit werk vrijer te zijn in keuzes voor bepaalde methoden en protocollen dan in meeste besproken studies. Bij afwegingen tussen opties wordt daarom in eerste instantie voor simpliciteit gekozen en niet zozeer voor technologische diepgang. Dit wordt bewust gedaan en heeft ertoe geleid dat meer tijd werd besteed aan het implementeren in hardware. Een software-technische beschrijving van de signaalbewerking in een VLC is hiervoor niet vaak gegeven. Ten tweede maakt simpliciteit mogelijk dat de concentratie gevestigd kan worden op de gehele systeemontwikkeling, opdat een prototype verkregen zou worden.
13
Hoofdstuk 3
Programma van eisen Dit hoofdstuk bevat het zogenaamde programma van eisen. Dit zijn de functionele eisen die verbonden zijn aan de ontwikkeling van de signaalbewerking binnen het led-communicatiesysteem. Deze eisen vloeien voort uit de specificaties die voor het gehele protocol zijn opgesteld. De systeemspecificaties van het gehele communicatiesysteem worden daarom ten eerste besproken in paragraaf 3.1. Daarna volgt een opdeling van de eisen aan de hand van hun kenmerken in de daarop volgende paragrafen. De complete lijst met eisen voor het gehele communicatiesysteem zijn terug te vinden in appendix A. Hier beperken wij ons tot de eisen die zich aan het signaalbewerking gedeelte lenen. Aan communiceren via licht is al enige tijd onderzoek gedaan [5],[16],[23], echter niet met oog op de multifunctionele aspecten van leds waar LEDSpeak waarde aan hecht, waar in de systeemspecificatie meer toegelicht over gaat worden. In eerste instantie blijven de ontwikkelingen van de codes alleen intern verbonden aan het gehele LED-pricing systeem van de LEDSpeak groep. De ontwikkelde methodieken kunnen eventueel vrijgegeven worden aan een professionele markt, waar ze in soortgelijke systemen kunnen worden geimplementeerd.
3.1
Systeemspecificaties
Het led-communicatiesysteem is onderworpen aan een reeks harde randvoorwaarden, die tot stand zijn gekomen door de idee¨en van LEDSpeak en de keuzes in technologie. De keuze om een data-light emitting diode (D-LED) technologie te ontwikkelen en gebruiken, waarbij licht en data gepaard worden verzonden vanaf dezelfde bron, realiseert het idee van een multifunctioneel gebruik van leds. Zoals het businessplan ook verder noemt, wordt ook getracht om de ontvanger te voeden met energie die ook geleverd wordt via het licht[1]. Een dergelijke specificatie, het gelijktijdig leveren van data, energie en licht met leds, maakt mogelijk dat doelen als het ontwerpen van duurzame systemen en bijdragen aan een maatschappelijke en technologische evolutie benaderd worden. De kenmerken van het led-communicatiesysteem kunnen op het hoogste hi¨erarchische niveau zodanig gekarakteriseerd worden: • • • • • • • • • •
systeem verlicht de ruimte op niveau van normale verlichting systeem verstuurt data gemoduleerd in het licht communicatie is onzichtbaar voor de mens zuiniger dan huidige lichtsystemen, voornamelijk TL compleet systeem, end-to-end gemakkelijke overstap vanaf huidige systeem makkelijke inbouwmogelijkheden, geen extra infrastructuur centrale aansturing van het systeem zenders bestaan uit een reeks ledbuizen ontvangers bestaan uit een reeks digitale prijskaartjes die data en energie ontvangen via een fotovolta¨ısche cel • elektronica in ontvangers wordt aangestuurd door energie uit het licht
3. Programma van eisen
3.2. Eisen vanuit het beoogde gebruik
De eisen met betrekking tot de signaalbewerking binnen het communicatiesysteem worden aan de hand van deze lijst en andere eigenschappen opgesteld in de komende paragrafen.
3.2
Eisen vanuit het beoogde gebruik
3.2.1 Het systeem moet evenveel lichtopbrengst hebben als de huidige verlichting in een warenhuis. 3.2.2 Het verzenden van de data via de witte leds gebeurt op een onzichtbare manier voor het blote oog. 3.2.3 Als er een fout optreedt tijdens het verzenden van de data mag het licht in de ruimte niet uitgaan. 3.2.7 Alle informatie die op het display moet verschijnen, wordt via het licht verzonden. 3.2.8 De productnaam, prijs en prijs per eenheid moeten kunnen afgebeeld worden op het display. 3.2.9 De totale hoeveelheid data moet verzonden kunnen worden over de beschikbare verlichting in een tijdspanne van ´e´en uur. 3.2.11 Prijskaartjes moeten individueel en onafhankelijk aangestuurd kunnen worden. 3.2.13 De optische overdracht moet robuust zijn ten aanzien van interferentie met daglicht. 3.2.16 Er mag geen foutieve informatie afgebeeld worden op het prijskaartje. 3.2.19 De consument wordt gewaarschuwd als er ongeldige informatie op het display afgebeeld wordt.
3.3
Eisen vanuit de ecologische situering van het systeem in de omgeving
3.3.5 Het systeem is in het geheel energiezuiniger dan een equivalente opstelling met TL-verlichting.
3.4
Eisen met betrekking tot de productie en ingebruikstelling
3.4.8 Het display van elk prijskaartje bevat twee rijen van 16 ASCII karakters. 3.4.9 De communicatie met het prijskaartje is uni-directioneel. 3.4.10 Data worden verzonden met controlebits en een header. 3.4.12 Een prijskaartje kan alleen de data op het display afbeelden die voor hem bestemd is. 3.4.22 Als de ledbuizen geen data verzenden, zijn ze in een niet-communicatieve toestand waarbij het licht normaal brandt. 3.4.32 Alle communicatie vindt simultaan plaats door alle ge¨ınstalleerde LED-pricing verlichting.
15
Deel II
Deel II: Ontwikkeling en ontwerp
Hoofdstuk 4
Concept van het ontwerp Het opstellen van een PvE is het begin van een ontwerpcyclus dat middels het uitwerken van een theoretisch concept tot een prototype dient te leiden. In dit hoofdstuk wordt het ontwikkelen van het concept behandeld. Daartoe is een diepgaande systeemanalyse nodig. Eerst wordt in paragraaf 4.1 een top-level design beschreven. De functies binnen het systeem kunnen opgedeeld worden in deelblokken, die besproken worden in paragraaf 4.2. De verbinding tussen die blokken wordt gegeven in paragraaf 4.3. Ten slotte worden in paragraaf 4.4 de eisen voor de conceptoplossing voorgesteld.
4.1
Top-level systeembeschrijving
Om tot een goed ontwerp te komen moet het systeem op een top-to-down manier benaderd worden. Voorafgaand het opdelen in deelblokken is daarom een top-level beschrijving van de functies nodig. Het signaalbewerkingsonderdeel van het systeem zit ge¨ımplementeerd aan beide kanten van een communicatiesysteem, in zowel de zender als de ontvanger. Aan de zenderkant zorgt het enerzijds voor een codering van het bericht opdat het gewenste dataprotocol opgezet kan worden. Anderzijds moet het licht gemoduleerd worden, opdat het als drager van de informatie kan fungeren. Bij de ontvanger moet uit het ontvangen signaal informatie teruggewonnen worden. Dit gebeurt middels een demodulatie van het signaal en het toepassen van het dataprotocol om het originele bericht te reconstrueren. Een verificatie moet uitwijzen of dit daadwerkelijk gelukt is. Ten slotte is het signaalbewerkingssysteem in staat de microcontrollers, nodig voor de gehele communicatie, aan te sturen. Aan de hand van deze functionele beschrijving ziet het top-level systeem dat ontwikkeld dient te worden eruit zoals in figuur 4.1.
4. Concept van het ontwerp
4.2. Opdeling in functieblokken
Figuur 4.1: Top-level systeemontwerp
4.2
Opdeling in functieblokken
De opdeling in subblokken is logischerwijs af te leiden uit figuur 4.1, elk deel daarin representeert namelijk een subblok. Elk van deze onderdelen heeft naast specifieke kenmerken ook randvoorwaarden die analoog zijn aan die van het gehele systeem; nu echter opgesplitst in delen. Bij het ontwerpen drukken sommige eisen dusdanig door op het ontwerpproces dat deze tot op zekere hoogte overgaan in kenmerken van de deelblokken. De komende vier figuren geven een functieblokdiagram per deel aan. Een functieblokdiagram heeft als ingang de eisen per deelontwerp. Het blok zelf representeert een onderzoek naar en een afweging van de mogelijkheden. Als uitgang dient de juiste functie te zijn ontworpen. In zodanige zin stelt een functieblokdiagram dus eigenlijk een ontwerpcyclus per deelontwerp.
18
4. Concept van het ontwerp
4.2. Opdeling in functieblokken
Figuur 4.2: Functieblokschema van het dataprotocol
Figuur 4.3: Functieblokschema van de verificatiemethode
Figuur 4.4: Functieblokschema van de modulatietechniek
19
4. Concept van het ontwerp
4.3. Verbinding van de deelblokken
Figuur 4.5: Functieblokschema van de microcontroller Elk van de subblokken wordt apart in ´e´en van de hoofdstukken van dit rapport behandeld, als een losstaand ontwerponderdeel. De mogelijkheden worden per onderdeel besproken. De afwegingen komen overeen met de eisen, waarbij prioriteiten van eisen leidend zijn voor het ontwerp van het prototype. Er is echter veel verband tussen de blokken, wat ook duidelijk wordt gemaakt in figuur 4.6 in paragraaf 4.3. De overwegingen hangen vaak met elkaar samen en keuzes voor de ene methode zullen de keuze voor iets anders be¨ınvloeden.
4.3
Verbinding van de deelblokken
Voor het ontwerpen van de deelonderdelen is het nuttig te kijken naar de onderlinge koppeling binnen het systeem. Dit vergemakkelijkt het samenvoegen van de onderdelen en het opstellen van het systeem na het doorlopen van de ontwerpcycli voor afzonderlijke blokken. De overdracht van het signaal binnen het systeem, die de onderlinge koppeling representeert, wordt weergeven in figuur 4.6.
20
4.3. Verbinding van de deelblokken
Figuur 4.6: Schema van de dataflow binnen het systeem
4. Concept van het ontwerp
21
4. Concept van het ontwerp
4.4
4.4. Voorstel van een proof of principle
Voorstel van een proof of principle
Hoewel voor het ontwerp van het systeem een aantal strenge randvoorwaarden zijn opgesteld, is er zeker een prioriteitsindeling op te stellen binnen deze eisen. Zeker voor het werkende prototype, dat enkel dient als proof of principle om enkele cruciale aspecten van de werking van het systeem en gebruikte technologie aan te tonen, zijn niet alle eisen van (even groot) belang.
4.4.1
Cruciale eigenschappen
Vanwege een korte tijdspanne en het gebruik van simpele, snel toegankelijke technologie stond het ontwerpen van het werkende prototype als belangrijkste eis op de lijst. De cruciale eigenschappen die dit prototype moet aantonen zijn de volgende: • Prototype moet laten zien dat het overzenden van data als prijsinformatie via led verlichting mogelijk is. • Interferentie moet dusdanig onderdrukt worden, dat data (nagenoeg) foutloos wordt overgedragen. Fouten moeten gedetecteerd worden. • Met ´e´en voldoende verlichtende lichtbron moeten meerdere ontvangers aangestuurd kunnen worden, die beide enkel hun specifieke data ontvangen en op correcte wijze weergeven. • Aannemelijk moet worden gemaakt dat onzichtbaarheid van de communicatie behaald kan worden.
4.4.2
Prioriteiten van eisen
Sommige eisen krijgen een hogere prioriteit bij het ontwikkelen van het prototype; dit is gekoppeld aan een snelle realiseerbaarheid van het concept. Voor het verkrijgen van een werkend prototype zijn eisen als een hoge datasnelheid, om een hele winkel vol prijskaartjes binnen ´e´en uur te updaten, niet erg belangrijk. De lichtintensiteit hangt samen met de onderdrukking van knipperingen, en dus de onzichtbaarheid van het communicatieprotocol. Hoewel de voorkeur ligt bij het onzichtbaar blijven van het protocol, wordt dit pas essentieel wanneer een communicatie daadwerkelijk is gerealiseerd. Een goede onderdrukking van de interferentie zorgt voor een makkelijker gebruik van het lichtkanaal en simpelere detectie van het signaal, daar deze eis hoger in het vaandel staat. Simpliciteit van het ontwerp is een zaak waar de nadruk op ligt. Prioriteit voor dit soort eisen maakt het realiseren van een werkend communicatiekanaal gemakkelijker.
Voldoen aan: Simpliciteit Goede omgang met interferentie Letten op: Onzichtbaarheid Lichtintensiteit Errorchecking Klein belang: Datasnelheid Figuur 4.7: Prioriteiten prototype
22
Hoofdstuk 5
Dataprotocol Gezien het feit dat de zender en ontvanger alleen met elkaar kunnen communiceren indien zij dezelfde ‘taal spreken’, dienen er een aantal regels opgesteld te worden. Dit is de reden dat we een dataprotocol opstellen waarin we een aantal afspraken defini¨eren. In het dataprotocol spreken we een standaard af hoe we de verschillende karakters op het prijskaartje representeren, gezien we enkel binaire waardes over kunnen sturen. Ook staan hier een aantal zaken zoals datagrootte, datasnelheid, dataverificatie en een start/stop-‘teken’ in besproken. We beginnen dit hoofdstuk in paragraaf 5.1 met het vaststellen van een transmissieprotocol waarin we aangeven hoe we de data gaan versturen. In paragraaf 5.2 zal het ontwerp van het signaal uitgelegd worden en in paragraaf 5.3 zal aan de hand van deze kennis een datasnelheid bepaald worden. Tot slot zullen we in paragraaf 5.4 een aantal methodes van dataverificatie met elkaar vergelijken en hier uiteindelijk een afgewogen keuze tussen maken.
5.1
Transmissieprotocol
Het versturen van de data zal gebeuren volgens een vast transmissieprotocol. Aangezien het demoduleren niet ten alle tijde plaats moet vinden, maar alleen indien er een signaal verstuurd wordt, spreken we een bepaalde ‘startcode’ af waarmee de microcontroller aan de demodulatie-zijde op gang gebracht kan worden tot demoduleren. Naast een startcode kiezen we er ook voor om de data per prijskaartje in verschillende pakketten over te sturen. Startcode De datacommunicatie vindt plaats via het licht. Gezien het licht in ruststand aan is zal het spanningsniveau bij de modulatie in ‘idle’-toestand liggen op 5V. In dit geval zal de demodulatie ook niks hoeven doen. We spreken af dat de demodulatie geactiveerd wordt bij het (kort) uitzetten van het licht, deze microcontroller zal bij het spanningsniveau van 0V uit ‘idle’ gaan en gaan demoduleren. Pakketgrootte Het versturen van alle data per prijskaartje in ´e´en keer zal snel leiden tot synchronisatieproblemen, waarbij een enkele bitfout zal leiden tot corrupte data. Om deze reden kiezen wij ervoor om de data te versturen in verschillende pakketten. Elk pakket zal voorzien worden van de eerder besproken startbit en eindigen met een idlebit. Aan de hand van deze idlebit kan opnieuw gesynchroniseerd worden voor het volgende pakket. Via interne tellers kan worden bijgehouden hoeveel pakketten (en dus hoeveel % van de data) al verstuurd zijn. Meer hierover in hoofdstuk 8. Gezien het feit dat onze kleinst mogelijke data zal bestaan uit het versturen van een karakter die we representeren met ASCII, zal de kleinste data 8 bits lang zijn. Dit is de reden dat we ervoor kiezen om alle pakketten 1 startbit + 8 databits + 1 idlebit lang te maken. Een grotere pakketgrootte zal sneller leiden tot synchronisatieproblemen, vandaar dat we de pakketgrootte tot op een zekere hoogte geminimaliseerd hebben. In figuur 5.1 is op de oscilloscoop te zien hoe ´e´en zo’n pakket eruit ziet.
5. Dataprotocol
5.2. Signaallayout
Figuur 5.1: Datapakket bestaande uit 1 startbit, 8 databits en 1 idlebit, overeenkomend met ‘U’
5.2
Signaallayout
Zoals eerder gezegd zal er een uniform signaal moeten worden gedefinieerd. In de vorige paragraaf hebben we vastgesteld dat de data verstuurd zal worden in pakketten van 8 bits, oftewel een byte. In de komende subparagrafen zullen we het complete signaal opbouwen aan de hand van het product ID en de prijsinformatie. Bovendien zullen we aan dit signaal enige vorm van dataverificatie toevoegen. Product ID Het uiteindelijke doel is om verschillende prijskaartjes aan te sturen. Aangezien prijskaartjes moeten kunnen onderscheiden welke prijsinformatie voor hen bedoeld is, moet de verstuurde data een uniek ID bevatten voor elk apart prijskaartje. Gezien we pakketten versturen van 8 bits leek ´e´en pakket ons voldoende om zodoende 28 = 256 verschillende producten aan te sturen. Dit is meer dan voldoende voor het prototype en kan met een simpele wijziging uitgebreid worden naar een groter aantal producten. Paragraaf 5.3.2 vergelijkt de verschillende productaantallen. Prijsinformatie Om de verschillende karakters te realiseren maken we gebruik van de ASCII tekenset, waarbij we met behulp van 8 bits elk karakter kunnen genereren. Een compleet overzicht van alle ASCII conversies is te vinden in Appendix B. Het LCD-scherm [24] dat aangestuurd wordt heeft twee regels waarin op elke regel 16 karakters geplaatst kunnen worden. Een simpel rekensommetje leert ons al snel dat de data aan productinformatie die we kunnen sturen gelijk is aan 8 · 2 · 16 = 256 bits. Dit komt overeen met 32 bytes. Verificatie Om zeker te zijn dat de data goed is aangekomen en zo corrupte data te verwerpen, voegen we een 16 controlebits toe aan de data. In paragraaf 5.4 wordt hier dieper op ingegaan. In figuur 5.2 zijn de bovenstaande onderdelen samengevoegd om zo tot een representatie te komen van de data van ´e´en prijskaartje.
24
5. Dataprotocol
5.3. Datasnelheid
Figuur 5.2: Signaallayout per prijskaartje
5.3
Datasnelheid
Met het bepalen van ons datasignaal dienen we nog een frequentie te bepalen waarmee we uiteindelijk de data moduleren. Enerzijds willen we deze frequentie zo hoog mogelijk instellen om zo weinig mogelijk lichtflikkering te genereren. Anderzijds zijn we enigszins beperkt door het feit dat de AD-conversie binnen een bepaald tijdsbestek gerealiseerd moet worden (paragraaf 8.2.2). In paragraaf 5.3.1 bepalen we de frequentie waarmee we data zullen moduleren. Vervolgens zullen we in paragraaf 5.3.2 de bitsnelheid bepalen aan de hand van deze frequentie en het eerder bepaalde transmissieprotocol.
5.3.1
Frequentie bepalen
Een AD-conversie duurt 25 ADC clock cycles [25] en we willen vier van deze samples per bit realiseren en met de overige speling de sampling rate van de AD-conversie maximaliseren. Middels ADC-registers kan een AD-sampletijd worden ingesteld (zie paragraaf 8.2.2). Wij kiezen ervoor om vier keer een AD sample te nemen en deze vier waardes te middelen. De tijd dat deze samples genomen worden proberen we enigszins te maximaliseren, maar wel binnen de sampletijd te houden inclusief ruimte voor de nodige signaalbewerkingoperaties. De 12MHz klok aanwezig op de microcontroller wordt dus al opgedeeld in 25 ADC clock cycles en vier samples, waarmee we een 120kHz klok overhouden. Met deze 120kHz kunnen we vrij kiezen tussen de AD-sampletijd en de modulatiefrequentie. We kiezen ervoor om onze prioriteit te leggen op het voorkomen van lichtflikkeringen. Hierom zullen we de bits op 10kHz uitzenden, waarmee er een factor 12 ‘over’ is voor ADC-sampling en overige signaalbewerking iteraties. In paragraaf 8.2.2 zullen we dieper ingaan op het instellen van de AD-converter. ´ en bit wordt vier keer gesampled In figuur 5.3 wordt duidelijk aangeven hoe we een bit samplen. E´ en binnen die sampleperiode wordt een AD-conversie uitgevoerd (lichtgrijs gearceerd). Bovendien is er ruimte voor signaalbewerkingoperaties (donkergrijs gearceerd).
25
5. Dataprotocol
5.3. Datasnelheid
Figuur 5.3: Sampling procedure per bit
5.3.2
Data rate
Nu we een transmissieprotocol (paragraaf 5.1) en een frequentie hebben bepaald, kunnen we ook de datasnelheid afleiden. Het versturen van bits gaat met een frequentie van 10kHz en het versturen van ´e´en bit kost ´e´en kloksignaal, zoals ook te zien is in figuur 5.4. De tijd dat het duurt om 1 bit te versturen is daarmee 1/10kHz = 0,1 ms. Aan de hand van het transmissieprotocol hebben we bepaald dat we pakketten van 10 bits versturen, waarin 8 databits Figuur 5.4: Klok boven, versturen bits beneden worden verstuurd en een start - en idlebit. In ´e´en milliseconde versturen we dus 8 bits aan data, per seconde is dit: 8000bits/sec, oftewel 8kbits/sec. Een prijskaartje is 280 bits groot, dus we versturen data voor ∼28,6 prijskaartjes per seconde. Nu zijn we benieuwd naar de tijd die het zal kosten om in een complete winkel de prijzen te wijzigen. Gezien het aantal prijskaartjes in een winkel nogal kan vari¨eren, stellen we tabel 5.1 op. Met de huidige signaallayout is het slechts mogelijk om 256 verschillende prijskaartjes aan te sturen, daarom is het toevoegen van extra bits (en dus ook start - en idlebits) noodzakelijk, in de tabel aangegeven met ‘*’. In de tabel wordt duidelijk dat het toevoegen van een bit niet veel effect heeft op de snelheid, maar wel het aantal prijskaartjes sterk laat toenemen. Tabel 5.1: Vergelijkingstabel updatetijd Prijskaartjes Datagrootte Snelheid Update tijd 250 280 bits 28,6 PK/sec 8,8 seconden 1.000 284 bits* 28,2 PK/sec 35,5 seconden 10.000 288 bits* 27,8 PK/sec 6,0 minuten 50.000 290 bits* 27,6 PK/sec 30,2 minuten 150.000 294 bits* 27,2 PK/sec 1,53 uur
26
5. Dataprotocol
5.4
5.4. Errorchecking
Errorchecking
Een foute prijs op een prijskaartje zou cruciaal zijn en mag zich onder geen omstandigheid voordoen. Stelt u zich maar eens voor dat bananen door een fout in het systeem opeens 0.99 e per kilo zouden kosten in plaats van 1.99 e per kilo. Mensen zouden heel veel bananen kopen en hierdoor zou enorme chaos ontstaan in de winkel. Wij willen het bovenstaande probleem ten alle tijde proberen te voorkomen. Vandaar dat een vorm van verificatie wordt ge¨ımplementeerd, waarmee we corrupte signalen en bovenstaand probleem kunnen voorkomen.
5.4.1
Types errordetectie
Zoals in paragraaf 5.2 is gedefinieerd hebben we 264 bits aan data waar zich bitfouten in kunnen ontwikkelen. Om dit te controleren voegen we extra data toe, data die puur dienen om het signaal aan de ontvangerzijde te verifi¨eren. We zullen in deze paragraaf verschillende types van errorchecking behandelen. Hier zal duidelijk worden dat errordetectie vaak een trade-off is tussen fout-opsporend vermogen en snelheid. Signaalrepetitie ´ en van de simpelste methodes van errordetectie is signaalrepetitie. Met deze techniek stuurt men E´ hetzelfde signaal een X aantal keer naar de ontvanger. De ontvanger kijkt vervolgens of deze X ontvangen signalen aan elkaar gelijk zijn. Als hier enig verschil tussen zit, dan is het signaal corrupt. Het nadeel van deze methode is dat het X keer zoveel bandbreedte kost om hetzelfde signaal over te sturen. Een ander nadeel is dat deze methode zeer vatbaar is voor bitfouten die telkens op dezelfde plek optreden. Indien dit het geval is, zal X keer hetzelfde corrupte signaal binnenkomen, en aangezien de signalen aan elkaar gelijk zijn, zal dit alsnog als een geldig signaal worden gezien. Parity bit Een andere simpele vorm van error checking is verificatie middels een parity bit. De parity bit neemt maar ´e´en bit in beslag en geeft met een ‘1’ of een ‘0’ aan of het aantal enen respectievelijk even of oneven is. De parity bit is alleen in staat om fouten op te sporen en niet om deze te repareren. Bij een incorrecte parity check zal de data dus verworpen en opnieuw verzonden moeten worden. Het voordeel van verificatie middels een parity bit is dat het weinig ruimte in beslag neemt. Het nadeel is het fout-opsporend vermogen; deze errordetectiemethode zal alleen een ‘oneven aantal bitfouten’ kunnen detecteren. Indien er bijvoorbeeld zes bitfouten optreden dan zal het aantal even/oneven enen niet veranderen, wat resulteert in een ‘geverifieerd signaal’, wat bij zes bitfouten natuurlijk helemaal niet van toepassing is. Indien er bitfouten optreden zal deze errordetectiemethode dus maar in 50% van de gevallen aan het juiste eind trekken. Cyclic redundancy check Met een parity bit is enige foutdetectie mogelijk, als we in plaats van een parity bit een aantal bits nemen als checksum, dan neemt het fout-opsporend vermogen aanzienlijk toe. Hiermee belanden we bij de cyclic redundancy check. Het idee is vrijwel hetzelfde; de data wordt genomen als ´e´en groot binair getal. Dit getal deel je door een vast binair getal, de restwaarde die je bij deze deling overhoudt is de checksum. Aan de ontvanger-zijde deel je de data door ditzelfde vaste binaire getal en vergelijk je de uitkomst met de meegegeven checksum. Errordetectie keuze In tabel 5.2 vergelijken we de drie hierboven gespecificeerde errordetectiesignalen. Als vanuit wordt gegaan dat bij signaalrepetitie het signaal drie keer wordt herhaald, dan zal deze data 3 · 264 bits = 792 bits bedragen ten opzichte van 265 bits en 280 bits voor respectievelijk parity bit en CRC. Het foutopsporend vermogen en daarmee ook de betrouwbaarheid is van CRC bij uitstek de beste. Het enige nadeel van CRC is dat deze techniek het meest complex zal zijn om te implementeren en dat deze techniek de meeste rekenkracht zal vergen van de processor [26]. Ondanks het feit dat CRC het meest complex te implementeren is, kiezen wij hier toch voor. Dit komt
27
5. Dataprotocol
5.4. Errorchecking
omdat onze prioriteit ligt bij het fout-opsporend vermogen, waarbij CRC verreweg de beste keuze is. We kunnen de complexiteit enigszins versimpelen bij het kiezen van het CRC-polynoom, zie ook paragraaf 5.4.2. Tabel 5.2: Vergelijkingstabel types errordetectie Signal repetition Parity bit Toename datagrootte + Fout-opsporend vermogen 0 Simplicitieit + 0
5.4.2
CRC 0 + -
Lengte CRC-polynoom
Met het kiezen voor een CRC-oplossing zijn we er nog niet. Binnen de cyclic redundancy check moeten we namelijk nog bepalen welk polynoom we kiezen. De verschillende CRC-polynomen hebben namelijk een verschillende bekwaamheid in het opsporen van fouten. Een goede CRC-polynoom keuze is daarom cruciaal. We maken in deze paragraaf een CRC-polynoom keuze aan de hand van [27]. De belangrijkste eigenschap waarmee verschillende CRCs met elkaar vergeleken kunnen worden is de Hamming distance (HD)[27], dit is het minimum aantal bitfouten dat moet optreden in de data waarbij CRC de fout niet detecteert. Een CRC-polynoom met HD=4 zal met nul tot vier bitfouten 100% goed functioneren en fouten detecteren indien dit het geval is. Bij vier bitfouten is er echter minimaal ´e´en foutencombinatie waarbij de fout ongedetecteerd blijft. Ons doel is hiermee het vinden van een CRCpolynoom met een zo groot mogelijke HD. De HD van een CRC-polynoom is geheel afhankelijk van de grootte van de data; hoe groter de data hoe slechter het CRC-polynoom zal presteren en dus hoe lager de HD zal zijn. Onze datagrootte staat vast en is 264 bits (paragraaf 5.2). Om een goed onderscheid te maken tussen de verschillende CRCs vergelijken we de data ook met andere datagroottes om zo een beter beeld te krijgen van de invloed hiervan. Nu kunnen we aan de hand van [27] een tabel opstellen met hierin een relatie tussen de grootte van het optimale CRC-polynoom en de grootte van de data, zie tabel 5.3. De kolom 264 bits is hierbij het belangrijkst en daarom schuingedrukt. In de kolommen is het maximaal mogelijk aantal bitfouten te vinden dat bij deze CRC optreed bij de HD die correspondeert met de kleur van de tabelcel. Met deze tabel zijn de verschillende CRC-polynomen te rangschikken. Allereerst is een hogere HD beter en bij een gelijke HD is een zo laag mogelijk aantal bitfouten gewenst. Aan de hand van tabel 5.3 en een 264 bits datasignaal kunnen we concluderen dat we minimaal een 9 bits CRC-polynoom nodig hebben om in 100% van de gevallen twee bitfouten te detecteren. Vanaf een 10 bits CRC-polynoom kunnen we altijd drie bitfouten detecteren en we zullen een 16+ bits CRCpolynoom moeten implementeren als we voor een nog robuustere errordetectie willen gaan. Bij vier bitfouten zijn er 2077 bitfout combinaties waarbij het optimale 16 bits CRC-polynoom de fout in gaat. Dit lijkt misschien veel, maar de kans dat ´e´en van die combinaties optreedt bij vier bitfouten is gelijk aan (2077/2264 ) · 100% = 7,007 · 10−75 %. De kans dat een fout ongedetecteerd blijft bij vier bitfouten is dus vrijwel verwaarloosbaar.
28
5. Dataprotocol
5.4. Errorchecking
Tabel 5.3: Hamming distance grootte CRC vs datagrootte hhhh hhDatagrootte 72 bits 136 bits 264 bits 392 bits hhh Grootte CRC hh h 3 bits CRC 365 1311 4959 10948 4 bits CRC 155 585 2261 5031) 5 bits CRC 61 254 1036 2346) 6 bits CRC 15 95 450 1065 7 bits CRC 568 16 161 435 8 bits CRC 12608 1883 17 145 9 bits CRC 5167 57267 5825 20804 10 bits CRC 1739 28730 372466 2105694 11 bits CRC 723 10218 186638 874725 12 bits CRC 288 4331 93650 438981 13 bits CRC 92 1896 30047 218642 14 bits CRC 2044 729 13350 67485 15 bits CRC 31540 21291 5653 29958 16 bits CRC 15578 9214 2077 13235
hhh
Hamming distance legenda
HD2
HD3
HD4
HD5
520 bits 19277 8891 4184 1940 838 291 48178 20948 2657096 1332402 662973 209008 97678 45289 HD6
We kiezen voor een CRC-polynoom van 16 bits, gezien het feit dat we pakketjes versturen van 8 bits en een 8 bits CRC-polynoom simpelweg niet voldoet. In paragraaf 5.4.3 zullen we een keuze maken welk 16 bits CRC-polynoom we zullen gebruiken.
5.4.3
Type CRC-16-polynoom
Met de keuze voor een 16 bits CRC-polynoom zijn we er nog lang niet, er zijn veel verschillende 16 bits polynomen die we in tabel 5.4 met elkaar vergelijken [27]. Als we naar deze tabel kijken valt de keuze tussen twee CRC-polynomen; ´ of het 0xBAAD polynoom die de laagste Hamming weight heeft bij vier bitfouten ´ of het 0x8FDB CRC-polynoom die ongeveer twee keer zoveel fouten maakt bij vier bitfouten, maar bij vijf bitfouten elk mogelijke bitfout zal detecteren.
CRC-16 0x8810 0xADC9 0xD0FB 0xC002 0xA001 0xD3E9 0xBAAD 0xAC9A 0x968B 0x8FDB
Tabel 5.4: Vergelijking Hamming weights verschillende CRC-16-polynomen Hamming weights voor aantal bitfouten polynoom HD 1 2 3 4 5 4 0 0 0 7310 0 2 0 26 0 4 0 0 0 7619 0 4 0 0 0 21624 0 4 0 0 0 21624 0 4 0 0 0 3973 200180 4 0 0 0 3454 200491 2 0 23 0 4 0 0 0 3881 204661 4 0 0 0 6966 0
Met bovenstaande vergelijking kiezen wij voor het 0x8FDB CRC-polynoom, dit omdat hierbij bij een oneven aantal bitfouten (5,7,9..) het aantal ongedetecteerde bitfouten aanzienlijk laag of zelfs nul is [28]. Bij het het 0xBAAD polynoom neemt het fout-opsporend vermogen aanzienlijk af bij een toename in bitfouten [29]. Een implementatie van het 0x8FDB CRC-polynoom is te vinden in hoofdstuk 8. Het CRC-polynoom ziet er als volgt uit: x16 + x12 + x11 + x10 + x9 + x8 + x7 + x5 + x4 + x2 + x + 1 29
(5.1)
Hoofdstuk 6
Modulatietechnieken Het versturen van informatie via optische communicatie is te realiseren door het toepassen van een modulatietechniek op licht. Op basis van de uit te zenden data wordt een stroomsignaal zodanig gemoduleerd dat deze de knipperingen van leds aanstuurt. In onder andere [30] worden enkele algemene modulatietechnieken beschreven. Paragraaf 6.1 geeft een korte fysische beschrijving van het lichtkanaal waarin gewerkt wordt. Vervolgens wordt in paragraaf 6.2 beschreven hoe modulatietechnieken hieraan verbonden zijn en welke tot de mogelijkheden behoren. Tot slot wordt in paragraaf 6.3 toegelicht welke keuzes kunnen worden gemaakt.
6.1 6.1.1
Fysische toestandsbeschrijving Analyse van het kanaaltype: licht
Het uitgestuurde gemoduleerde licht dient als het kanaal van de communicatie via leds. De lichtsterkte afkomstig van een led wordt als volgt uitgedrukt: I(φ) = I(0) cosm (φ)
(6.1)
Een detector neemt de horizontale lichtsterkte in het vlak loodrecht op de normaal van de lichtbron waar, deze is: I(0) cosm (φ)cos(ψ) (6.2) Ihor = Dd2 I(0) stelt de lichtsterkte in het centrum van de lichtbundel voor, φ de stralingshoek, ψ de invalshoek, m ln2 en Dd de afstand tussen de led en het oppervlak is de Lambertiaanse emissie, gegeven via m = ln(cosφ 1/2 ) van een detector. Tussen deze twee grootheden zit het lichtkanaal dat op meerdere manieren beschreven kan worden. Het kanaal in termen van een frequentie responsie [16] heeft de vorm: Z ∞ H(f ) = h(t)e−j2πf t dt. (6.3) −∞
Dit komt overeen met het in [5] gebruikte model: Z
∞
H(0) =
h(t)dt,
(6.4)
−∞
wanneer het kanaal distorsievrij wordt aangenomen. Dan is de overdracht van het kanaal H(f) gelijk aan H(0) voor alle relevante frequenties. De overdracht die het kanaal realiseert is af te leiden uit de relatie tussen het verzonden en ontvangen signaalvermogen, gegeven door Pr = H(0) · Pt .
(6.5)
6. Modulatietechnieken
6.2. Mogelijkheden
Het ontvangen optisch vermogen is verder een oneindige som van alle mogelijke reflecties: Pr =
∞ X
Prn ,
(6.6)
n=0
waarin n het aantal reflecties voorstelt. In een veel toegepaste testopstelling blijkt dat het vermogen uit de eerste reflectie nog slechts 0,5 dB toevoegt aan het vermogen uit de line-of-sight ontvangst [4],[5],[6]. Het vermogen ontvangen uit het directe LOS hangt af van n leds die een bijdrage leveren: Pr =
n X
Pti Hi (0).
(6.7)
i=1
Signaalverlies door ‘multipath fading’ (het deels wegvallen van gereflecteerde signalen) kan verwaarloosd worden, omdat de data verstuurd wordt via een lichtgolf met een frequentie van 1014 Hz met golflengtes tussen 380 en 590 nm. De afmetingen van een detector zijn van die grootte dat ze zorgen voor spectral diversity en bijgevolg multipath fading tegengaan [11]. De bijdrage aan de overdracht van het gehele kanaal, gegeven in vergelijking 6.5 kan gezien worden als de DC-versterking in het optische kanaal [4], dat beschreven wordt middels: ( (m+1)A cosm (φ) Ts (ψ) g(ψ) cos(ψ), 0 ≤ ψ ≤ Ψc 2πDd2 H(0) = 0, ψ ≥ Ψc . Hierin is Ts (ψ) de versterking van het optisch filter in de detector en g(ψ) de versterking door de lens van de detector. A is het fysieke detectoroppervlakte en Ψc duidt de grootte van de hoekselectiviteit aan.
6.1.2
Ruisbijdrage in een lichtkanaal
De kanaalversterking wordt sterk be¨ınvloed door de ruisbijdrage in het kanaal. In het geval van een optische transmissie, waar de ruis gemodelleerd kan worden als: 2 2 2 σtotaal = σAW GN + σhagel ,
(6.8)
domineert hagelruis de kwaliteit van de informatieoverdracht [16]. In situaties met veel daglicht gedraagt de hagelruis zich als tijdsinvariant en kan alle ruis bij benadering vervangen worden door een vorm van ‘Additive white gaussian noise’ (AWGN) [5]. In situaties met weinig daglicht is de overheersende bron van ruis de voorversterker in het detector circuit; een thermische ruis, die ook benaderd kan worden door een vorm van AWGN. Samenvattend kan het optische kanaalmodel worden gegeven door [5]: Y (t) = ηX(t) ∗ h(t) + N (t).
(6.9)
Hierin representeert Y (t) de ontvangen signaalstroom, een convolutie tussen de verzonden optische puls X(t) en h(t), de impuls responsie van het kanaal. η is effici¨entiefactor die de optisch-elektrische omzetting van de detector weergeeft. N (t) geeft de ruisbijdrage, AWGN, weer.
6.2
Mogelijkheden
De keuze van een modulatietechniek draagt significant bij aan de prestatie van het systeem [8], omdat deze direct invloed heeft op de eigenschappen van het kanaal en diens prestaties. Een modulatietechniek is namelijk als volgt gebonden aan de BER van een kanaal: p BER = Q( Eb /N0 ), (6.10) waarin Eb de bitenergie is en N0 het spectrale ruisvermogensdichtheid. Voor Q geldt: Z ∞ −y 2 1 Q(x) = √ e 2 dy. 2π x
(6.11)
Verschillende technieken worden in literatuur geanalyseerd en toegepast, om reden gebonden aan systeemspecifieke eisen. De meest gebruikte en meest geschikt ogende voor het LEDSpeak systeem zullen worden toegelicht. 31
6. Modulatietechnieken
6.2. Mogelijkheden
On-off keying Van alle modulatietechnieken die geschikt zijn in optische link is OOK, door de eenvoud van de werking, het simpelst te implementeren [14],[16]. De karakteristieken van een basaal OOK-signaal worden besproken in [30]. Abstract gezien komt OOK neer op het uit en aan zetten van een signaal voor twee mogelijke waarden. De mogelijke verschillen in keuzes voor dit signaal, zoals het veranderen van eigenschappen als sterkte of frequentie, bieden een goede trade-off mogelijkheid tussen de benodigde bandbreedte en vermogen [16], waarbij het ene direct voor het andere kan worden ingeruild. Eb met Voor de SNR (= PPrt ) van OOK geldt dat deze gelijk is aan N 0 Eb = Dit resulteert in een bitfoutenkans van
A2 T . 4 s
Pe = Q(
A2 T ), 4N0
(6.12)
(6.13)
met A de waarde van het signaal, en T de tijd dat deze waarde geldig is [30]. Voor stabiele communicatie is nodig dat BER = 10−6 , wat gepaard gaat met een SNR van 13, 6 dB [5]. Problemen die op kunnen treden bij bepaalde OOK-modulaties zijn knipperingen en dimming. De knipperingen veroorzaakt door de draaggolf zijn door de frequentie hoog genoeg te kiezen onzichtbaar te maken voor het oog. De oscillatie tussen de ‘On’ en ‘Off’ modes, is echter niet afhankelijk van die frequentie. Dit heeft te maken met de bittijd. Wanneer een bittijd klein genoeg wordt gekozen kan deze oscillatie ook onzichtbaar worden. Echter ontstaat dan het probleem van dimming. Bovendien maakt een korte bittijd het systeem gevoeliger voor ruis. Dimmingen hebben met de in hoofdstuk 5 behandelde codering te maken. Twee verschillende ASCII karakters hebben namelijk per byte verschillende gemiddelde energiewaardes ten opzichte van elkaar en ten opzicht van de ‘idle’ modus (alleen maar binaire 1’s). Dit is weergeven in figuur 6.1. Het wisselen tussen codes met veel of weinig nullen dan wel enen zorgt voor verschil in de gemiddelde waarden van bytes, opdat verschillende lichtintensiteiten veroorzaakt worden. Deze afwisselingen op hoge frequentie tussen verschillende dimmingniveaus van het licht zorgen voor een perceptie van knipperingen, waargenomen door het blote oog.
Figuur 6.1: Gemiddelde waarde van een bitreeks in OOK Pulse position modulation PPM is populair voor het gebruik van VLC via witte leds [11]. PPM maakt gebruikt van het opdelen van symbolen in L tijdslots. Tijdens ´e´en van deze tijdslots wordt een constant vermogen uitgezonden Pt , tijdens de overige slots 0. Wanneer Pt gekoppeld wordt aan een aantal tijdslots: LPt , leidt dit ertoe dat per L tijdslots Log2 L bits gecodeerd kunnen worden. Dit wordt aangeduid met L-PPM [16]. Een simpele vorm van PPM zoals 1-PPM of 2-PPM heeft een BER slechter of vergelijkbaar met OOK. In [22] worden de prestaties van OOK en PPM uitvoerig berekend en vergeleken, waar geconcludeerd wordt dat OOK qua BER karakteristieken pas achterblijft voor hogere orde ordes van PPM (8-PPM). PPM heeft de voorkeur wanneer het optische vermogen van belang is [11], PPM heeft namelijk lagere vermogensbenodigdheden dan OOK. Echter gaat dat wel gepaard met de behoefte voor een grotere bandbreedte [30], een factor logL2 L meer dan OOK. Een overweging voor het gebruik van PPM voor het LEDSpeak systeem ligt bij de mogelijkheid om meerdere verschillende tijdslots een verschillend signaal toe te wijzen. Dit maakt het mogelijk om een positie toe te kennen aan het ‘idle’ signaal, te zien in figuur 6.2, wat een vorm van multilevelcoding
32
6. Modulatietechnieken
6.2. Mogelijkheden
is. Hiermee kan ook in plaats van Log2 L bits een reeks van Log2 L bits worden gerepresenteerd door L tijdslots op een specifieke positie.
Figuur 6.2: Meerdere coderingsmogelijkheden met PPM Verder zorgt de verhoogde vermogenseffici¨entie van PPM voor een gemakkelijkere detectie dan bij OOK [11]. Knipperingen veroorzaakt door dimmingen komen theoretisch gezien bij PPM niet voor, indien de pulsen kort genoeg gekozen worden. De gemiddelde signaalwaarde van een bit blijft immers hetzelfde, omdat er altijd eenzelfde aantal pulsen binnen een bittijd t zijn, ook te zien in figuur 6.2. Pulse width modulation PWM werkt soortgelijk als PPM, enkel is nu niet de positie van de tijdslot L in kwestie, maar het aantal tijdslots L waarbij geteld wordt vanaf het begin van een symbool. PWM werkt dus aan de hand van duty cycles. In combinatie met PPM dat verantwoordelijk is voor datacodering, kan PWM goed gebruikt worden als controle over de dimming [21]. Een andere mogelijkheid die middels PWM gerealiseerd kan worden, is multilevelcoding zoals behandeld in PPM, en voor PWM weergegeven in figuur 6.3. Een grotere hoeveelheid aan verschillende duty cycles resulteert in mogelijke codering van langere bitreeksen met ´e´en puls. Met multilevelcoding kan een hogere datarate bewerkstelligd worden.
Figuur 6.3: Multilevelcoding en gemiddelde waarden in PWM De keuze voor de instelling van de duty cycle biedt trade-off tussen dimming en bitfoutenkans, waar een goede keuze kan resulteren in het ondersteunen van de eisen van een systeem. Wanneer voor een groot verschil wordt gekozen, resulteert dat in betere robuustheid van de overdracht. Immers hoe groter het verschil tussen mogelijke signalen, hoe makkelijker deze uit elkaar te houden zijn. Echter leidt een groter verschil wel tot een groter verschil in dimmingen van de lichtsterkte. Dit gebeurt op dezelfde manier als beschreven bij OOK, maar al op bitniveau in plaats van byteniveau. De verschillende gemiddelde waarden per bit zijn in het rood weergeven in 6.3. Afwisseling hiertussen zorgt voor een perceptie van knipperingen.
33
6. Modulatietechnieken
6.3. Afweging van de modulatietechnieken
BPSK en QPSK Net als PPM is binary phase shift keying (BPSK) een populaire modulatie bij het werken van witte leds ge¨ıntegreerd in een VLC-systeem. Dit heeft alles te maken met een hoge effici¨entie van de bandbreedte [11], hoewel deze techniek wel twee keer zoveel bandbreedte nodig heeft als OOK [30]. Gekoppeld hieraan is echter wel een zwakke vermogenseffici¨entie van een BPSK-modulatie. QPSK heeft de helft van de bandbreedte nodig van OOK, maar vraagt daar wel meer vermogen om [11]. Een reden om toch QPSK te gebruiken is de goede verhouding tussen de transmissierate en de fouten die voor de modulatie kenmerkend is. De BER van beide modulatietechnieken is gunstiger dan die voor OOK. De bitfoutenkans berekend in [30] is gelijk aan: r Eb (6.14) Pe = Q( 2( ), N0 wat resulteert in een SNR van 3dB hoger dan OOK. Het nadeel is echter dat implementatie van beide modulatietechnieken voor een simpel ontwerp wat ingewikkelder is dan het gebruik van ´e´en van de eerdergenoemde modulatietechnieken. Van belang is het gedrag van de fase van een signaal, wat een coherente detectie vereist, wat een stukje complexiteit met zich meebrengt.
6.3
Afweging van de modulatietechnieken
Aan de hand van de bovenstaande analyse is in combinatie met de eisen en prioriteiten voor het systeem een afweging te maken tussen de modulatietechnieken aan de hand van hun kenmerken. Eisen voor het systeem zijn uitgeschreven in hoofdstuk 3. Enkele prioriteiten komen voort uit hoofdstuk 4. De aspecten van de modulaties die van belang zijn bij het maken van een afweging zijn weergeven in tabel 6.1. Op elk onderdeel wordt middels een rangorde (+ en −) weergegeven hoe goed de methode scoort ten opzichte van de andere methodieken. Tabel 6.1: Vergelijkingstabel modulatietechnieken Weegfactor OOK PWM Simpliciteit 10 + 0 Ruisgevoeligheid 9 + 0 Lichtintensiteit 8 0 0 Knippering door frequentie 7 − 0 Knippering door dimming 7 − 0 Datarate 3 − 0 Energieverbruik 6 − 0 Totaal 50 2 0
PPM − +/− + + + + + 5
Uit de tabel is af te leiden dat PPM het meest geschikt is voor het voldoen aan de eisen van het LEDSpeak systeem. De prioriteiten voor het prototype liggen echter anders dan de prioriteiten voor het ontwerp van het gehele systeem, voornamelijk vanwege het op tijd af krijgen van een prototype dat als zogenaamd ‘proof of principle’ kan dienen. Een goede implementatie van BPSK en QPSK vereist een diepere vorm van bestudering en experimentatie voor een goede implementatie, vandaar dat deze twee methoden uit de vergelijkingstabel zijn weggelaten. Het ontwerpen van een prototype is gebaseerd op het snel werkend krijgen van een demonstrator door simpel te beginnen en later uit te breiden. Deze werkwijze is gekozen met met oog op de beperkte tijdspanne en het idee dat makkelijk beginnen sneller tot succes leidt, waarna uitbreiding minder complex is. Daarom is gekozen om het kenmerk simpliciteit de grootste prioriteit te geven, waarna ruisgevoeligheid van een simpel ontwerp de voorkeur krijgt. Dit heeft ertoe geleid dat OOK de uiteindelijke keuze is voor de implementatie van een modulatietechniek. De vorm van OOK die door ons gebruikt zal worden, is een directe toepassing van de naam: een ‘1’ wordt gekoppeld met het aan zijn van het licht, ‘0’ met het uit staan. De implementatie van dit systeem is veruit het makkelijkst, in feite wordt het licht direct met de data gemoduleerd. Deze vorm
34
6. Modulatietechnieken
6.3. Afweging van de modulatietechnieken
van OOK komt overeen met een bijzondere vorm van PWM: die met duty cycles van δ = 0% en δ = 100%. Uit de beschrijving van PWM is af te leiden dat zo’n verdeling van duty cycles leidt tot de beste robuustheid onder mogelijke PWM modulaties. Verder is bekend dat OOK een betere BER prestatie heeft dan PPM of PWM wanneer voor een makkelijk implementatie wordt gekozen. De detectie van een zodanig OOK-signaal is vrij gemakkelijk uit te voeren op de manier beschreven in hoofdstuk 8. De keuze voldoet dus aan de twee hoogste prioriteiten. De keuze van OOK is echter wel gebonden aan het mogelijk niet kunnen wegwerken van knipperingen die veroorzaakt worden door dimmingen. Ook kan het vermogen effici¨enter gebruikt worden met een andere modulatietechniek.
35
Hoofdstuk 7
Microcontroller Een microcontroller is een kleine computer op een ge¨ıntegreerd circuit met een microprocessor, geheugen en programmeerbare ingang- en uitgangpoorten. In het hedendaagse leven zijn er weinig apparaten die geen microcontroller bevatten, denk aan: rekenmachines, wasmachines, mobiele telefoons, enzovoort. Elk stukje elektronica waar enige vorm van signaalbewerking plaatsvindt, maakt gebruik van een microcontroller. Zo ook bij het moduleren en demoduleren van een binair signaal. In paragraaf 7.1 zullen we ingaan op verschillende microcontrollers en hier uiteindelijk een keuze uit maken. In paragraaf 7.2 zullen we de nodige specificaties van de desbetreffende microcontroller uiteenzetten.
7.1
Type microcontrollers
Het implementeren van een demodulatie en modulatie vereist het gebruik van een microcontroller. Aangezien er veel eisen zijn bij zowel het moduleren als het demoduleren, is het noodzakelijk om zorgvuldig een keuze te maken tussen verschillende microcontrollers. Een zorgvuldige keus is noodzakelijk zodat we tijdens het programmeren niet tegen problemen aanlopen als: te weinig geheugen, te lage kloksnelheid en andere essenti¨ele kenmerken die een rol spelen bij de modulatie en demodulatie. In deze paragraaf zullen we dieper ingaan op drie microcontrollers. Na uitgebreid in te gaan op de verschillende microcontrollers zullen we ´e´en van deze microcontrollers kiezen op basis van een vergelijkingstabel. Intel 8051 microcontroller Vorig jaar hebben we met het practicum Computerarchitectuur en Organisatie kennisgemaakt met de Intel 8051 microcontroller (zie figuur 7.1a). We zijn destijds met behulp van assembly machinecode bekend geraakt met de verschillende mogelijkheden van deze microcontroller. De microcontroller biedt met zijn 8-bit 12 MHz processor zeker voldoende rekenkracht om de gewenste modulatie en demodulatie uit te voeren. In paragraaf 5.2 hebben we vastgesteld dat we op 10 kHz willen werken, waarbij we elk bitje nog vier keer willen samplen bij de demodulatie. Uitgaande van deze systeemeisen zal een kloksnelheid van 40 kHz al voldoende zijn, 12 MHz geeft ons dus voldoende marge. Het grote nadeel van deze microcontroller is echter dat deze geen AD-omzetter bevat. Een ADomzetter is noodzakelijk aangezien we bij het demoduleren een analoog signaal binnen zullen krijgen afkomstig van het zonnepaneel [24]. Dit zou betekenen dat we dit signaal elders moeten digitaliseren.
7. Microcontroller
7.1. Type microcontrollers
(a) Intel 8051 microcontroller
(b) MSP430F1611 microcontroller
(c) ATmega16 microcontroller
Figuur 7.1: Type microcontrollers MSP430F1611 microcontroller Toen we met dit project van start gingen zijn we via onze begeleider in contact gekomen met Dr. Cheng Guo, werkzaam bij DIMES, die zelf zeer actief en gedreven is in het gebruik van microcontrollers. De modules die hij gebruikt zijn ‘Tmote Sky’ modules [31] met de microcontroller MSP430F1611 (zie figuur 7.1b). Dit is een 16-bit 8 MHz microcontroller die evenals de Intel 8051 in staat zou zijn voor het door ons gewenste doeleinde. Op de MSP430F1611 is wel een AD-omzetter aanwezig, wat een groot voordeel met zich meebrengt ten opzichte van de Intel 8051. Verder beschikt de microcontroller over enorm veel mogelijkheden. Zo is er een temperatuursensor aanwezig, een lichtsensor en zelfs een RF-radio module. Deze mogelijkheden zijn misschien handig voor andere doeleindes, maar vallen buiten het bereik van wat wij hier willen bereiken. Nadelig aan deze microcontroller is de programmeertaal en het besturingssysteem waar mee gewerkt moet worden. De microcontroller zal op Linux geprogrammeerd moeten worden aan de hand van TinyOS in de programmeertaal nesC [32]. Dit is een hardwarematige variant van het albekende C. Aangezien we niet bekend zijn met zowel het besturingssysteem Linux, als de programmeertaal nesC is de learning curve van deze optie een stuk hoger. Het voordeel ervan is echter wel dat we begeleiding krijgen van Dr. Cheng Guo. ATmega16 microcontroller Tot slot hebben we nog een ATmega16 microcontroller (zie figuur 7.1c) tot onze beschikking. Deze microcontroller wordt dit jaar bij het Computerarchitectuur en Organisatie practicum gebruikt. Het voordeel hiervan, ten opzichte van de 8051, is dat deze microcontroller wel een AD-omzetter bevat, wat cruciaal is voor de demodulatie. Verder zijn de specificaties vrijwel hetzelfde, plus dat er via een USB port geprogrammeerd kan worden, waarmee een computer met seri¨ele poort geen vereiste meer is. Vergelijking van de microcontrollers In de onderstaande vergelijkingstabel (zie tabel 7.1) worden de verschillende microcontrollers op tien aspecten met elkaar vergeleken.
37
7. Microcontroller
7.2. Specificaties
Tabel 7.1: Vergelijkingstabel type microcontrollers 89V51RD2[33] MSP430F1611[34] Atmel ATmega16[25] Instructiegrootte 8-bit 16-bit 8-bit Kloksnelheid 12 MHz 8 MHz 12 MHz Interne flash 64 kb 48 kb+256 b 16 kb RAM 512 b 10 kb 1 kb Timer resolutie 2x 8 bits 2x 16 bits 2x 8 bits, 1x 16 bits ADC-resolutie n.v.t. 12 bits 8 bits Programmeren via Seri¨ele poort USB USB Programeertaal Assembly of C nesC Assembly of C Learning curve + + Begeleiding + -
Op basis van deze tabel hebben we voor de ATmega16 microcontroller gekozen. Ondanks het feit dat we met de MSP430 begeleiding zouden krijgen van Dr. Cheng Guo, kwamen we er al snel achter dat het bekend raken met het programmeren binnen een TinyOS omgeving veel tijd zou vergen, een aspect waar we al genoeg problemen in voorzien. In paragraaf 7.2 zullen we dieper ingaan op de specificaties van de ATmega16.
7.2
Specificaties
Met de keuze van de Atmel ATmega 16 microcontroller is het noodzakelijk om wat dieper in te gaan op de specificaties, alvorens het implementeren van een modulatie en demodulatie. We zullen in de komende subparagrafen wat dieper ingaan op de timers, de aanwezige AD-omzetter en het geheugen.
7.2.1
Timers
Een groot voordeel van de ATmega16 ten opzichte van de Intel 8051 is dat de ATmega16 uitgerust is met een 16-bit timer, waarmee veel specifiekere frequenties ingesteld kunnen worden. Bij een 16-bit timer kan de timer immers met een resolutie van 216 = 65536 ingesteld worden, bij een 8-bit timer is deze resolutie gelimiteerd tot 28 = 256. Tevens kan er met behulp van het juist instellen van het TCCR1B register een klok deler worden ingesteld van 1, 8, 64, 256 of 1024. Gezien het feit dat we doelen op een hoge frequentie, zal dit zeker van pas komen. In hoofdstuk 8 zullen we wat dieper ingaan op het juist instellen van de timers.
7.2.2
AD-omzetter
De ATmega16 is uitgerust met acht verschillende ADC-kanalen. Hiervan is ´e´en kanaal voldoende om het inkomende ruissignaal te demoduleren. De AD-omzetter heeft een resolutie van 8 bits, waarmee 28 = 256 verschillende energieniveaus kunnen worden onderscheiden. Op ons werkgebied van 0-5V zijn we hiermee in staat om afwijkingen van 19,5mV te meten.
7.2.3
Geheugen
Er is ´e´en kilobyte aan RAM aanwezig op de microcontroller. De data van ´e´en prijskaartje neemt 280 bits in beslag (zie paragraaf 5.2). Dit zorgt er in principe voor dat we maximaal 29 prijskaartjes kunnen opslaan in het geheugen. Als we ervoor kiezen om per prijskaartje de data door te sturen dan levert dit geen problemen en kunnen we in principe oneindig veel prijskaartjes aansturen. Bovendien houden we zo RAM over om eventuele errorchecking toe te passen. Meer hierover is terug te vinden in de implementatie in hoofdstuk 8.
38
Deel III
Deel III: Resultaten
Hoofdstuk 8
Implementatie Aan de hand van de keuzes die gemaakt zijn bij het kiezen van een dataprotocol (hoofdstuk 5), een modulatietechniek (hoofdstuk 6) en een microcontroller (hoofdstuk 7) kunnen we beginnen met het implementeren van de gemaakte keuzes. In paragraaf 8.1 bespreken we de implementatie van de modulatie middels een microcontroller. In paragraaf 8.2 zullen we hetzelfde doen, alleen dan voor de demodulatie.
8.1
Modulatie
Zoals besproken implementeren we de modulatie aan de hand van een ATmega16 microcontroller middels C. We zullen in de komende paragrafen dieper ingaan op de modulatie. In paragraaf 8.1.1 gaan we in op het initialiseren van de poorten. In paragraaf 8.1.2 leggen we uit hoe we de registers van de timers instellen. En tot slot zullen we in paragraaf 8.1.3 uitleggen hoe we de transmissie implementeren. In appendix C kan de complete C-code van de modulatie gevonden worden.
8.1.1
Initialisatie
´ en van de vooraf gedefinieerde libraries waar we gebruik van maken is de I/O-library. Hierin staan E´ alle variabelen gedefinieerd die verwijzen naar de daadwerkelijke pins. Ook maken we gebruik van de interrupt library om met een paar simpele commando’s het gebruik van interrupts te realiseren. Ook implementeren we een CRC-functie aan de hand van het gekozen 0x8FDB CRC-polynoom (zie paragraaf 5.4.3). Deze functie heeft als ingangparameter het datasignaal en geeft vervolgens een 16 bits CRC checksum terug. Voor de modulatie maken we gebruik van twee verschillende poorten. PORTD als input, om aan de hand van de ‘test’-knop de modulatie te starten en PORTC als output om het gemoduleerde signaal over te sturen. Het DDRD register zetten we daarom op 0x00 als input en DDRC zetten we op 0xFF voor output. Het drukken op de ‘test’-knop start de modulatie middels de timer (paragraaf 8.1.2) en houdt via interne variabelen bij hoe ver de modulatie gevorderd is. Als de modulatie klaar is, zal de timer gereset worden (paragraaf 8.1.2) en kan de modulatie opnieuw gestart worden middels de ‘test’-knop.
8.1.2
Timers
Zoals in paragraaf 7.2.1 al duidelijk is geworden, maken we gebruik van de 16 bits timer aanwezig op het bordje. Om hier efficient gebruik van te maken, zetten we de WMG12 waarde op ‘1’ in het TCCR1B register; hiermee stellen we de timer in op Clear Timer on Compare mode (CTC mode). In deze mode telt de timer standaard tot 216 = 65536, waarbij elke tel ´e´en klokslag in beslag neemt. Met behulp van het OCRA1 register kan de CTC-vergelijkingswaarde veranderd worden met een bereik van 0-65536. Als de gewenste waarde is bereikt dan wordt een statusregister gevlagd en de timer opnieuw gestart. Naast deze ‘klokdeler’ is het vooraf ook nog mogelijk om de klok te delen met het instellen van CS10, CS11 en CS12 in het TCCR1B register, door deze waardes in te stellen, kan ook de klok gestart worden. Ook zetten we OCIE1A op ‘1’ in het TIMSK register om zo CTC interrupts in te schakelen. Als de in register OCRA1 ingestelde waarde wordt bereikt, dan zal de microcontroller de code in het zogenaamde
8. Implementatie
8.1. Modulatie
Interrupt Service Routine (ISR) uitvoeren. Meer over de werking binnen de interrupt in paragraaf 8.1.3. Nu duidelijk is hoe we de timer instellen, is het nog de zaak om de timer op de gewenste frequentie in te stellen. De binnenkomende clkIO op de timers is 12 MHz. Gezien het feit dat we een zo hoog mogelijke frequentie willen realiseren stellen we CS12:CS10 in op ‘001’, waarmee we een prescaler van ‘1’ realiseren en de klok dus niet verder delen. De klok heeft hiermee immers al een bereik van ongeveer 90 Hz - 12 MHz met de vrijheid in het kiezen van een CTC-vergelijkingswaarde. Als we de CTC-vergelijkingswaarde op ‘1200’ zetten realiseren we een frequentie van 10 kHz (paragraaf 5.3.1). Dit is een frequentie die enerzijds gemaximaliseerd is door deze zo hoog mogelijk te kiezen, om zo dicht mogelijk te komen bij de eis van ‘onzichtbare lichtcommunicatie’. Anderzijds een frequentie die de demodulatie voldoende speling geeft in het berekenen van de verscheidene AD-conversies, zie paragraaf 8.2.2. Een frequentie van 10 kHz komt overeen met het tellen op een frequentie van 12 MHz tot 1200. In tabel 8.1 wordt duidelijk aangegeven hoe we de timer per register initialiseren. Tabel 8.1: Instellen timer1 registers TCCR1B, ingesteld op clkIO /1 (start timer) en CTC-mode ICNC1
ICES1
-
WGM13
WGM12
CS12
CS11
CS10
TICIE1
OCIE1A
OCIE1B
TOIE1
OCIE0
TOIE0
OCR1A11 OCR1A3
OCR1A10 OCR1A2
OCR1A9 OCR1A1
OCR1A8 OCR1A0
TIMSK, interrupts enabled OCIE2
TOIE2
OCR1A, ingesteld op ‘1200’ = 0000010010110000 OCR1A15 OCR1A7
OCR1A14 OCR1A6
OCR1A13 OCR1A5
OCR1A12 OCR1A4
Nadat een volledige transmissie heeft plaatsgevonden moet de timer gereset worden. Dit kan middels de reset routine die in tabel 8.2 is weergeven. Door CS12:CS10 op ‘000’ te zetten wordt de interne timer gestopt. Verder is het ook noodzakelijk om TCNT1 te resetten aangezien hier de huidige timerstand in is opgeslagen. We willen immers dat de teller opnieuw begint met tellen als een volgende transmissie plaatsvindt.
Tabel 8.2: Resetten timer OCR1A, CTC-vergelijkingswaarde op 0 OCR1A15 OCR1A7
OCR1A14 OCR1A6
OCR1A13 OCR1A5
OCR1A12 OCR1A4
OCR1A11 OCR1A3
OCR1A10 OCR1A2
OCR1A9 OCR1A1
OCR1A8 OCR1A0
WGM12
CS12
CS11
CS10
TCNT111 TCNT13
TCNT110 TCNT12
TCNT19 TCNT11
TCNT18 TCNT10
TCCR1B, CS12:CS10 op 000, zodat de klok stopt ICNC1
ICES1
-
WGM13
TCNT1, reset timerwaardes; TCNT1 = 0 TCNT115 TCNT17
8.1.3
TCNT114 TCNT16
TCNT113 TCNT15
TCNT112 TCNT14
Transmissie
Bij het optreden van een interrupt zal de daadwerkelijke datatransmissie van start gaan. Via interne variabelen zal bijgehouden worden bij welke bit, welk pakket (zie paragraaf 5.2) en welk product de microcontroller is. Elk pakket bestaat uit 1 startbit, 8 opeenvolgende databits en een idlebit. Een product bestaat uit 35 pakketten en een transmissie uit een X aantal producten. Er wordt per pakket eerst altijd een ‘0’ bit verstuurd waarmee de demodulatie kan detecteren dat er een pakket doorkomt (zie paragraaf 8.2). Bij alle pakketten worden de 8 bits aan data bit per bit verstuurd. Nadat de data is verstuurd wordt nog een extra ‘1’ verstuurd als idlebit (zie paragraaf 5.1). Na het versturen van deze 10 bits, kan de volgende transmissie starten. Er zijn per product een viertal gevallen te onderscheiden: 41
8. Implementatie
• • • •
Pakket Pakket Pakket Pakket
= = = =
8.2. Demodulatie
1, versturen product ID 2 t/m 33, versturen data naar prijskaartje 34 t/m 35, versturen CRC 36, reset timer en pakket = 1.
Pakket 1 bestaat uit het 8 bits product ID. Bij pakket 2 t/m 33 wordt 32 keer een ASCII karakter verstuurd, waarbij elk karakter uit 8 bits bestaat. Vervolgens implementeren we in pakket 34 en 35 gezamenlijk een CRC checksum, zoals bepaald in paragraaf 5.4.3. Als de timer vervolgens voor de 36ste keer in de interrupt routine terecht komt, kan het volgende product verstuurd worden. Nadat alle producten verstuurd zijn zal de timer gereset worden, zoals beschreven in tabel 8.2. Tevens zal het datasignaal overgaan naar ‘idle’, net zolang totdat opnieuw op de ‘test’-knop gedrukt wordt, waarmee de transmissie wordt herhaald. In Appendix C is de complete code in C van de modulatie te vinden.
8.2
Demodulatie
Naast het implementeren van de modulatie en CRC aan de transmitter-zijde, implementeren we ook de demodulatie van het ontvangen signaal aan de ontvanger-zijde. Dit doen we aan de hand van eenzelfde ATmega16 microcontroller. Hier programmeren we middels C de verschillende stappen van de demodulatie in, om uiteindelijk de originele bitcode te reconstrueren en dit door te sturen naar het LCD-scherm [24]. De demodulatie gebeurt in verschillende stappen, we zullen eerst in paragraaf 8.2.1 de poorten en een aantal variabelen defini¨eren. Vervolgens zal in paragraaf 8.2.2 de A/D-omzetter ingesteld worden. Ook bij de demodulatie maken we gebruik van timers. In paragraaf 8.2.3 zullen we deze timer, evenals aanwezig bij de modulatie, op een soortgelijke wijzen instellen. In paragraaf 8.2.4 zal besproken worden hoe de ‘startbit’ gedetecteerd kan worden. Het samplen van de desbetreffende bits zal besproken worden in paragraaf 8.2.5. Tot slot zal in paragraaf 8.2.6 het product ID en de CRC-verificatie worden besproken. In Appendix D kan de complete C-code van de demodulatie bekeken worden.
8.2.1
Initialisatie
Evenals bij de modulatie (paragraaf 8.1.1) dienen de input- en outputpoorten ingesteld te worden. Op poort ADC1 komt het gemoduleerde signaal inclusief ruis via het zonnepaneel binnen [24]. Vervolgens demoduleren we dit signaal en sturen het gereconstrueerde bitsignaal via een outputpoort door naar het LCD-scherm. Naast het instellen van de gewenste I/O-poorten, defini¨eren we ook een aantal globale variabelen die een aantal tijdelijke waardes opslaan. Zo defini¨eren we een array met lengte ‘4’ waarin we vier keer een AD-conversie uitvoeren en aan de hand van dit gemiddelde de bitwaarde bepalen, in paragraaf 8.2.5 gaan we hier dieper op in. Ook deze achtereenvolgende bitwaardes slaan we tijdelijk op in een array, ditmaal 9 bits lang (1 startbit + 8 databits). Uit deze array bepalen we vervolgens het product ID, ASCII karakter of de CRC checksum, afhankelijk van de huidige ‘pakket-variabele’, een pakket-counter die na elk pakket de waarde ‘1’ bij zichzelf optelt.
8.2.2
ADC-initialisatie
Een AD-conversie duurt 25 ADC clock cycles [25]. Met behulp van de 3 bits ADPS2:ADPS0 in het ADCSRA register kan een ADC prescaler ingesteld worden waarmee de binnenkomende klok gedeeld kan worden. Aan de ene kant wilt men de AD-conversietijd maximaliseren door een grote prescaler te kiezen, waarmee we een hogere sample rate, en dus een preciezere digitale schatting realiseren. Aan de andere kant willen we de AD-conversie tijd minimaliseren zodat de AD-conversie binnen de interrupt afgehandeld kan worden en er geen synchronisatieproblemen optreden. Het is dus zaak om hier de juiste tussenweg in te vinden. ´ en bitlengte duurt 0,1ms (zie paragraaf 5.3.1), we willen een bit vier keer samplen dus binnen 0,025ms E´ moet een AD-conversie maximaal afgehandeld zijn. 0,025ms komt overeen met een frequentie van 40 kHz. Gezien het feit dat een AD-conversie 25 clock cycles duurt dienen we minimaal 1 MHz toe te voeren als ADC clock. Met een prescaler van ‘8’ behalen we de maximaal haalbare sample rate, een prescaler van
42
8. Implementatie
8.2. Demodulatie
‘16’ zou immers resulteren in 750 kHz. Daarom zetten we ADPS2:ADPS0 op ‘011’. Naast het instellen van de prescaler zetten we in ditzelfde ADCSRA register de bit ADEN op ‘1’ waarmee de AD-conversies worden ingeschakeld. Verder kan met behulp van het ADSC -bit in dit register een AD-conversie gestart worden, meer hierover in paragraaf 8.2.4. Het laatste register om AD-conversies werkend te krijgen is het ADMUX register. In dit registeren zetten we ADLAR, REFS0 en MUX0 op ‘1’. Hiermee realiseren we respectievelijk een 8 bits AD-conversie, een ADV cc referentiespanning van 5V en pin ADC1 als input voor de gehele AD-conversie. In tabel 8.3 zijn bovenstaande registers en de ingestelde bits nog eens weergegeven. Het ADC dataregister is het register waar na een AD-conversie de omgezette data in terug te vinden is, meer hierover in paragraaf 8.2.4. Tabel 8.3: ADC-initialisatie ADC Multiplexer Selection Register, ADC-referentie = AV cc = 5V, 8 bit ADC en ADC1 input REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ADMUX ADC Control and Status Register A, Enable ADC en ADC input clk = clk/4 ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 ADCSRA ADC Data Register, 8 bit AD-waarde in ADCH. Conditie: ADLAR = 1 ADC9 ADC1
8.2.3
ADC8 ADC0
ADC7 -
ADC6 -
ADC5 -
ADC4 -
ADC3 -
ADC2 -
ADCH ADCL
Timer-initialisatie
Het instellen van de timerregisters en het resetten hiervan is uitvoerig besproken bij de modulatie in paragraaf 8.1.2. Bij de demodulatie maken we van ditzelfde principe gebruik, alleen dan een timer die vier keer zo snel loopt, zodat we 1 bit vier keer kunnen samplen. Hierom zetten we de CTC-vergelijkingswaarde op: ‘300’, waarmee we het OCR1A register instellen als weergeven in tabel 8.4. Tabel 8.4: Instellen demodulatie CTC compare timer1 register OCR1A, ingesteld op ’300’ = 0000000100101100 OCR1A15 OCR1A7
8.2.4
OCR1A14 OCR1A6
OCR1A13 OCR1A5
OCR1A12 OCR1A4
OCR1A11 OCR1A3
OCR1A10 OCR1A2
OCR1A9 OCR1A1
OCR1A8 OCR1A0
AD-detectie
Met het voorbereidende werk achter de rug kan over worden gegaan naar het stukje code dat het modulatiesignaal detecteert. Als er niet gedemoduleerd wordt, dan vinden er constant AD-conversies plaats, totdat een startbit gedetecteerd wordt. Een conversie vindt plaats door het setten van de ADSC bit in het ADCRSA register. Als deze waarde vervolgens weer ‘0’ is, dan is de conversie klaar en kan worden gecontroleerd of een startbit gedetecteerd is. Deze detecties gebeuren niet op de timerfrequentie zoals beschreven in paragraaf 8.2.2, maar op de interne klok en daarmee dus 300 keer zo snel, waardoor een startbit altijd gedetecteerd zal worden. Wel is er een verificatie ingebouwd om te verifi¨eren dat de startbit wel daadwerkelijk lang genoeg ‘0’ blijft, om zo eventuele ruis te onderdrukken. Bij het detecteren van een startbit wordt de in paragraaf 8.2.3 besproken timer gestart en zal de interrupt routine van deze timer het werk overnemen, hierover meer in de volgende paragraaf.
8.2.5
ADC-sampling
Als het geverifieerde startbit is ontvangen zal het daadwerkelijke bit-samplen van start gaan. Per ontvangen bit worden de eerste vier interrupt routines alleen AD-conversies opgeslagen. Nadat er vier samples zijn opgeslagen, worden deze samples gemiddeld en wordt bepaald of dit gemiddelde groter of kleiner is dan een halve bitwaarde. Deze uiteindelijke bitwaarde wordt vervolgens tijdelijk opgeslagen. 43
8. Implementatie
8.2. Demodulatie
Het bovenstaande proces wordt herhaald, net zolang tot er 8 bitwaardes zijn zodat deze byte kan worden doorgestuurd naar het LCD-scherm. Als er 8 bits zijn ontvangen dan wordt de timer gereset en begint de microcontroller weer van voor af aan met AD-detectie, terwijl de microcontroller intern bijhoudt hoeveel karakters zijn verstuurd. Het resetten van de timer geeft de microcontroller de tijd om te synchroniseren, zoals eerder besproken in hoofdstuk 5.1. Nadat het product ID, de data en de checksum van ´e´en product zijn ontvangen, reset de microcontroller zijn interne pakket-counter en begint de microcontroller meteen met het detecteren van een nieuwe startbit.
8.2.6
Verificatie
De demodulatie microcontroller richt zich alleen op data die bedoeld zijn voor zijn specifieke product ID. Elk microcontroller bordje heeft een ander product ID en nadat een compleet product is ontvangen, wordt middels een product ID match gecontroleerd of de data voor dit bordje bedoelt is. Als dit niet het geval is dan wordt er niks met deze data gedaan en kan de microcontroller beginnen aan de volgende demodulatie. Als het product ID wel overeen komt, dan zal middels een CRC-check eerst gecontroleerd worden of de data geen foutieve informatie bevat. Deze check gebeurt middels dezelfde CRC-functie als bij de modulatie. Het datasignaal (pakket 2 t/m 33) wordt door deze functie heengehaald en er wordt geverifieerd of deze checksum gelijk is aan de checksum die meegestuurd is. Als dit gelijk is, dan wordt de prijsinformatie doorgestuurd naar het LCD-scherm. Als de checksum niet overeenkomt dan zal het LCD-scherm leeg blijven en er zal een statusled branden.
44
Hoofdstuk 9
Evaluatie De evaluatie van het onderzoek is opgebouwd uit drie pijlers, die samengevoegd een reflectie vormen op de uitgevoerde werkwijze en het ontwikkelde ontwerp. Ten eerste wordt in paragraaf 9.1 toegelicht hoe ons prototype is onderworpen aan een serie tests en welke prestaties hieruit voortkwamen. Vervolgens wordt in paragraaf 9.2 geanalyseerd in hoeverre aan de eisen van het in hoofdstuk 3 opgestelde programma van eisen wordt voldaan. Ten slotte worden in het laatste onderdeel, paragraaf 9.3, de gekozen methodes tijdens de werkwijze vergeleken met andere mogelijke benaderingen, die voorgesteld zijn in gerelateerde studies.
9.1
Toetsing aan de hand van testopstelling
Met het implementeren van zowel de modulatie (zie paragraaf 8.1) als de demodulatie (zie paragraaf 8.2) en het maken van de juiste keuzes, kan het prototype gebouwd worden. Gebruik wordt gemaakt van ´e´en modulatiemicrocontroller. Die stuurt het gemoduleerde signaal naar de ledbuis [35]. Het zonnepaneel vangt dit signaal op (zie figuur 9.1a) en versterkt het signaal [24]. Dit versterkte signaal komt bij twee identieke demodulatiemicrocontrollers aan, die allebei zijn verbonden met een afzonderlijk LCD-scherm (zie figuur 9.1b). Het verschil tussen beide microcontrollers zit in het product ID waar zij op reageren. Als het juiste product ID door de demodulatiemicrocontroller gedetecteerd wordt, dan start de CRCverificatie. De karakters worden doorgestuurd naar het LCD-scherm indien de CRC-verificatie succesvol is; als dit niet het geval is, gaat een ‘statusled’ branden en worden de karakters verworpen. We zullen het prototype aan twee type tests onderwerpen. Allereerst zullen we in paragraaf 9.1.1 de maximaal haalbare afstand van het zonnepaneel tot de ledbuis bepalen. Vervolgens zullen we in paragraaf 9.1.2 het line-of-sight onderbreken en de reactie van de microcontroller hierop bestuderen.
(a) ledbuis - zonnepaneel datatransmissie
(b) 2 verschillend aangestuurde LCD-schermen
Figuur 9.1: Testopstelling prototype
9. Evaluatie
9.1.1
9.1. Toetsing aan de hand van testopstelling
Variatie in afstand
Aan de hand van de bovenstaand beschreven testopstelling zijn we begonnen met testen, waarbij we de afstand tussen de ledbuis en het zonnepaneel vari¨eren. We hebben de modulatie zo aangepast dat er continu data wordt verstuurd, en na elke complete transmissie wordt 250ms gepauzeerd in ‘idle’-modus. We hebben de afstand met stappen van ´e´en centimeter verhoogd en ervoor gezorgd dat de ledbuis stabiel vastzit. Uit deze testresultaten kunnen we de volgende conclusies trekken: • Afstand ≤ 42 cm; geen fouten • 42 cm < afstand < 46 cm; regelmatig fouten • Afstand ≥ 46 cm; startbit wordt gemist, geen demodulatiedetectie We zijn er achter gekomen dat het prototype vlekkeloos werkt indien de afstand tussen het zonnepaneel en de ledbuis kleiner of gelijk is aan 42 centimeter. Tussen de 42 centimeter en 46 centimeter komen verschillende signalen door, maar er treden regelmatig CRC-fouten op. Bij een afstand van 46 centimeter en groter wordt het signaal niet meer opgepikt door het zonnepaneel. De beperking in afstand is aan meerdere zaken te wijten, waarvan de grootste het ontvangend vermogen van de detector. In [24] is bewezen dat deze tot meer dan ´e´en meter een goede peak-to-peak waarde kan waarnemen. In de ontvangerschakeling is echter een comperator ingesteld, die waarden boven een bepaalde drempelwaarde forceert naar de hoogst mogelijke signaalwaarde (5V) en waarden onder de drempelwaarde forceert naar het minimum (0V). Dit is gedaan om detectie robuuster te maken en minder gevoelig voor ruis. Wanneer de afstand echter dusdanig vergroot wordt, uit tests blijkt dat 46 centimeter te zijn, valt het gehele signaal boven de ingestelde drempelwaarde. Het hele signaal wordt dan naar 5V geforceerd, ook al is er onderscheid te zien tussen de peak-to-peak waarden. Dit verschijnsel wordt afgebeeldt in figuur 9.2c. Hiermee wordt geen detectie gestart, het signaal ligt immers altijd boven de 2,5V. In figuur 9.2b is de situatie die optreedt bij een afstand van 42 tot 46 centimeter afgebeeld; de bits worden niet altijd goed doorgestuurd. In figuur 9.2a is de ideale situatie afgebeeld, die bij ons optreedt met een afstand kleiner dan 42 centimeter. Een mogelijke oplossing voor het probleem in figuur 9.2c wordt gegeven in paragraaf 9.3.3.
(a) afstand ≤ 42 cm
(b) 42cm < afstand < 46cm;
(c) afstand ≥ 46cm;
Figuur 9.2: Versterker met drempelwaarde 2.5V bij verschillende afstanden
9.1.2
Line-of-sight onderbreken
Nu de maximaal haalbare afstand bepaald is, kunnen we kijken hoe de demodulatie be¨ınvloed wordt bij het tijdelijk onderbreken van het line-of-sight. Hiervoor zetten we de afstand van het zonnepaneel en de ledbuis op 35 centimeter; een afstand waarbij de datatransmissie naar behoren verloopt. Het verbreken van het line-of-sight wordt gerealiseerd door het zonnepaneel voor een variabele tijd te bedekken met een hand. Met het verbreken van het line-of-sight treedt zoals verwacht een CRC-fout op. Ook raken de interne timers van de demodulatiemicrocontroller verstoord. Als bijvoorbeeld bij het versturen van pakket 16 het line-of-sight verstoord wordt, dan zullen niet alleen de bits in pakket 16 corrupt raken. Het gebeurt vaak dat het line-of-sight dermate lang verbroken wordt waardoor ´e´en of meerdere pakketten compleet gemist worden door de demodulatiedetectie. Dit heeft te maken met het feit dat er continu ‘0’-en worden ontvangen bij het blokkeren van het line-of-sight, er valt immers minder of geen
46
9. Evaluatie
9.2. Toetsing aan het programma van eisen
licht op het zonnepaneel. Als het line-of-sight vervolgens hersteld is, dan zijn de waardes van de interne timers verstoord. Bovenstaand probleem lost zichzelf op na het herstellen van het line-of-sight. Het signaal dient echter een aantal keer opnieuw gestuurd te worden, voordat de demodulatiemicrocontroller opnieuw gesynchroniseerd is. Wij hebben veel verschillende tests uitgevoerd met het verstoren van het line-of-sight. In het worst case scenario dient het signaal zo’n 32 keer opnieuw verstuurd te worden. In het best case scenario is ´e´en retransmissie voldoende. Wij vermoeden dat bovenstaand verschijnsel te maken heeft met de tijd die de demodulatiemicrocontroller nodig heeft om opnieuw te synchroniseren. Wij hebben geen hersynchronisatie procedure ge¨ımplementeerd, maar we weten wel dat als het line-of-sight verbroken wordt, dat het zonnepaneel dit ziet als ‘0’-en. Als de demodulatiecontroller een ‘0’ ontvangt dan gaat deze over tot het starten van de demodulatie. Dit resulteert in het feit dat de demodulatiemicrocontroller geen idlebit meer ontvangt en daarom meteen overgaat tot het demoduleren van een nieuw pakket na 9 bits, in plaats van de gewenste 10 bits. Hierdoor raakt de bitcount variable out-of-sync en deze variabele zal daarom ‘0’-en uit ASCII karakters interpreteren als startbits, net zolang totdat ‘1’-en uit ASCII karakters de demodulatie dermate lang genoeg in idle houden totdat de demodulatiemicrocontroller weer gesynchroniseerd is. Deze conclusie duidt er dus op dat het product ID, de ASCII karakters en de CRC-databits bepalen wanneer de demodulatiemicrocontroller opnieuw gesynchroniseerd wordt. Na de hersynchronisatie is de CRC-verificatie wederom succesvol en verlopen de transmissies stuk voor stuk naar behoren. Bi-directionele communicatie biedt een andere oplossing voor het beschreven synchronisatieprobleem. Bij het ontvangen van een CRC-fout zou dan immers een signaal teruggestuurd kunnen worden naar de modulatiemicrocontroller met de boodschap om het signaal opnieuw te versturen. Zo kunnen de interne variabelen hersteld worden en zal het synchroniseren een stuk minder lang duren en niet variabel zijn.
9.2
Toetsing aan het programma van eisen
De resultaten uit de vorige sectie en de vastgestelde kenmerken van het prototype worden samen naast het programma van eisen gelegd. Uit deze vergelijking moet geconcludeerd worden in hoeverre het prototype dan wel het PvE aangepast dient te worden, opdat de twee overeenkomen met elkaar en het daadwerkelijk bedachte systeem ontworpen kan worden in plaats van alleen het proof of principle (PoP).
9.2.1
Proof of principle als voorganger van LED-pricing systeem
Het PoP, als handreiking richting het ware systeemontwerp, is ontwikkeld opdat de pijlers genoemd in paragraaf 4.4 gewaarborgd worden. Een simpele implementatie is geslaagd, evenals het dusdanig onderdrukken van interferentie opdat overdracht van informatie goed tussen zender en ontvanger verloop; echter op een beperkte afstand. Echter blijkt na het doorlopen van de ontwikkeling van het PoP, onder andere aan de hand van de uitgevoerde tests in paragraaf 9.1, dat een zekere knippering van het licht aanwezig is. Sprake is van de knippering zoals beschreven in paragraaf 6.2, namelijk door dimming veroorzaakt door codering van bepaalde stukken informatie, waardoor het licht op verschillende momenten een verschillende gemiddelde waarde heeft. Het gevolg: de verandering in lichtintensiteit neemt het menselijk oog als knipperen waar. Zelfs wanneer datasnelheden van 10kbit/s seconde worden benaderd, blijft deze dimming een knippereffect veroorzaken. De reguliere lichtintensiteit van leds is in het algemeen goed genoeg om te verlichten: het wordt reeds jaren toegepast in kantoren en ruimtes. Echter moet er op gelet worden dat de zojuist besproken dimmingen de gemiddelde lichtintensiteit niet verlagen. Dit zou het geval kunnen zijn wanneer getracht wordt het knipperprobleem op te lossen met het verhogen van de schakelsnelheid (verlagen van bittijden) van de leds, indien de detector hierop ingesteld kan worden. Figuur 9.3 licht toe hoe de lichtintensiteit vanaf het maximum kan terugvallen door het verhogen van frequentie en veroorzaken van verschillen in gemiddelde waardeniveaus.
47
9. Evaluatie
9.3. Vergelijking met methodes in voorgestelde VLC-systemen
Figuur 9.3: Terugval lichtintensiteit De groene streep stelt het maximale mogelijke vermogen voor. Blauw is de gemiddelde waarde van de afzonderlijke bits. Rood is de het gemiddelde vermogen van de gehele bitreeks wanneer de bittijd klein genoeg is ofwel de frequentie hoog genoeg. Dit is het vermogen dat door de led wordt uitgezonden. De snelheid van het overdragen van data lijkt met het kiezen van de korte bittijd echter wel in orde te zijn. Het resultaat kan zelfs ´e´en op ´e´en overgenomen worden voor het LED-pricing systeem. Vanuit tabel 5.1 kan afgeleid worden dat 100.000 prijskaartjes - een waarde die uit een interview uit [1] naar voren komt als een re¨ele schatting voor het aantal prijskaartjes in een warenhuis - binnen circa een uur ge-update kunnen worden.
9.2.2
Aanpassing aan het programma van eisen en/of ontwerp
Tekortkomingen om overeenkomst te cre¨eren tussen het PvE en het prototype hebben vooral te maken met gemaakte concessies om het prototype snel te kunnen ontwikkelen. Uit onderzoek naar de mogelijkheden en de daaruit voorgevloeide ontwikkeling van het PoP kan niet gezegd worden, dat eisen in het PvE onhaalbaar zijn. Voorgestelde aanpassingen zullen daarom enkel aan de kant van het ontwerp zitten. Die aanpassingen hebben betrekking tot de volgende aspecten: • wegwerken knippering: middels het aanpassen/veranderen van de ingebouwde modulatietechniek, • afstand vergroten van de communicatie: middels betere detectiemethodes (demodulatie) en onderdrukking van interferentie, • energievoorziening van ontvanger via leds realiseren, • inbouwen PLC-onderdeel, opdat data via het lichtnet naar de ledverlichting verstuurd kan worden. De laatste twee punten zijn achtergebleven wegens tijdsrestricties. Onderzoek gevoerd in de twee gerelateerde thesissen, [24] en [35], leidt tot de conclusie dat mogelijkheden bestaan voor het realiseren van deze ontwerpseisen. De eerste twee punten zijn voornamelijk gedoeld op het signaalbewerkingsaspect. Mogelijke oplossingen worden in het volgende onderdeel besproken.
9.3 9.3.1
Vergelijking met methodes in voorgestelde VLC-systemen Modulatietechniek
De gebruikte modulatietechniek, OOK of PWM met δ = 0% en δ = 100%, is gekozen om de simpliciteit van de implementatie, zoals beredeneerd in hoofdstuk 6. Dit is gedaan omdat eenvoud in combinatie met een korte tijdspanne een sterk argument was. Een andere modulatietechniek kan echter om meerdere redenen worden ge¨ımplementeerd. In tabel 6.1 worden criteria voor de modulatietechniek opgelegd, waaruit PPM naar voren komt als de modulatietechniek die op alle fronten het beste presteert. Het wegwerken van knipperingen is echter al te realiseren door een andere manier van OOK toe te passen. Het signaal zoals beschreven in [30] wordt getoond in figuur 9.4. Toevoeging van een DC offset van 2, 5V betekent dat het signaal op ‘aan’-stand constant schommelt tussen 0 en 5V, de minimale en maximale uitsturing van de spanning voor een led. Wanneer de frequentie van die schommeling hoog genoeg is, neemt het menselijk ook alleen de gemiddelde waarde van 2, 5V waar. Dit komt overeen met de waarde in ‘uit’-stand; ofwel alle knippering is verdwenen.
48
9. Evaluatie
9.3. Vergelijking met methodes in voorgestelde VLC-systemen
Figuur 9.4: Representatie OOK-signaal [36] ´ en is dat de leds maximaal branden op de helft van het vermogen, Nadelen van deze methode zijn er ook. E´ omdat de gemiddelde waarde op 2, 5V zit in plaats van het maximale 5V-niveau. Tweede is dat het continu schakelen in de ‘uit’-stand tussen de twee uiterste spanningsniveaus niet erg zuinig is. Schakelen kost energie. Als derde nadeel complexificeert deze methode de implementatie van de demodulatie. In [37] wordt deze methode toegepast als middel om lichtintensiteit te controleren, echter in combinatie met positieverandering van de pulsentrein binnen een bittijd, waardoor het een PPM-signaal wordt. Figuur 9.5 laat zien hoe dit leidt tot een combinatie van de OOK uit figuur 9.4, en de multilevelcoding mogelijkheid van PPM, afgebeeld in figuur 6.2.
Figuur 9.5: Modulatie middels een OOK-lijkend PPM-signaal [37] Zoals uit meerdere studies en ook dit onderzoek (tabel 6.1) blijkt, is PPM uiterst geschikt voor coderingen in een VLC-systeem. In combinatie met PWM- [21] of PPM-signaalvormen [37] kan het leiden tot controles over dimmingen. Zowel schakelfrequentieknipperingen als knipperingen door dimmingen zijn te verwaarlozen dankzij dezelfde gemiddelde signaalwaardes voor elke gecodeerde bit. Dit maakt de datatransmissie volledig onzichtbaar. Zoals vermeld in paragraaf 6.2 zorgt de effici¨ente omgang met het vermogen van PPM (door het betrekkelijk weinig schakelen) tot een goede energiezuinigheid, wat tevens een eis is voor het LED-pricing systeem. Wanneer een hogere orde van PPM wordt gekozen, leidt dit tot betere BER-prestaties van deze modulatie ten opzichte van OOK [22]. Samen in combinatie met de mogelijkheid om meerdere bits in een bittijd te coderen [37], resulteert dat in zowel een snellere als betrouwbaardere communicatieverbinding.
9.3.2
Detectie en demodulatie
De methodes van detecteren en demoduleren van het optische signaal zijn bindend aan de prestaties van een VLC-systeem. De gebruikte manier in dit onderzoek van het berekenen van een gemiddelde waarde en het instellen van een drempelwaarde die definieert of het signaal een binaire ‘1’ of ‘0’ is, beschreven in hoofdstuk 8, laat te wensen over. Het beschreven probleem in paragraaf 9.1.1 is dat het ontvangen signaal op grote afstand onder de drempelwaarde ligt. Een oplossing is het ontwerpen van een dynamische drempelwaardecalculator. Deze 49
9. Evaluatie
9.3. Vergelijking met methodes in voorgestelde VLC-systemen
zou elke keer, aan de hand van een X aantal eerste binnengekomen bits, de maximale en minimale signaalwaarde bepalen, en aan de hand hiervan een drempelwaarde instellen voor de specifieke ontvanger. Dit maakt mogelijk dat elke ontvanger, ongeacht zijn positie ten opzichte van het licht en onafhankelijk van een verandering van diens positie, steeds in een signaal weet te onderscheiden wanneer een ‘0’ of ‘1’ bit wordt verzonden. De afstand blijft dan beperkt tot wat de fysische eigenschappen van de ontvanger toestaan. Een manier van het wegdrukken van achtergrondruis, voornamelijk bestaand uit ISI, wordt voorgesteld in [4]: kanaalafschatting. Voorkennis van het te ontvangen signaal, opgedaan door het al ontvangen signaal, wordt gebruikt om de detector zo af te schatten, dat deze alleen het stukje kanaal analyseert waar relevante data waarschijnlijk zal liggen. Zo worden signalen die ontvangen dienen te worden ge¨ısoleerd van bijvoorbeeld reflecties. In figuur 9.6 is een schematische schakeling van de werking van de Decision feeback equalizer [4] gegeven. De feedforward filters (FF) onderdrukken de meeste ISI in het kanaal. De comperator bepaalt de signaalwaarden, en middels de feedback filter (FB) worden deze teruggevoerd naar de ingang van de comperator, waarop de laatstgenoemde wordt aangepast.
Figuur 9.6: Schematische beschrijving werking DFE [38] Een ontvangen signaal wordt door ons systeem doorgestuurd naar een ADC, waar het signaal geconverteerd wordt, gesampled en gedecodeerd. Op pagina 215 − 217 van [30] wordt gesuggereerd dat voor het detecteren van een PWM- of PPM-signaal geen ADC nodig is. Integratoren die gesynchroniseerd worden met de pulsen van het binnenkomende signaal, kunnen hetzelfde resultaat leveren als de ADC, maar met een minder complex (en goedkoper) circuit. De gebruikte schakeling van [30] is te zien in figuur 9.7.
Figuur 9.7: Detecie van PWM/PPM-signalen, zonder ADC [30]
9.3.3
Mogelijke uitbreiding ruismodellen
In deze studie is de enige bekeken vorm van ruisbijdrage voor het modelleren van de te verwachten prestaties van het systeem, het ruis dat zich vormt in het kanaal. Naar beschreven studies in [5],[6],[10] kan dit model in optische communicatie aangenomen worden als een AWGN-model. Om een betere verwachting te kunnen opstellen, dient de aandacht op een andere zaken gevestigd te worden, die ook van invloed zijn op de prestaties. Een eerste stap is het nader onderzoeken van de ruisbijdrage van de ontvangerelektronica. Modellen hiervan worden gegeven in [4],[16]. De elektrische SNR (in de ontvanger) wordt daar benaderd door SN R =
2 σhagel
(RPr )2 , 2 + σthermisch
50
(9.1)
9. Evaluatie
9.3. Vergelijking met methodes in voorgestelde VLC-systemen
waarin R het responsievermogen van de detector is, Pr het eerder gedefinieerde ontvangen optische ver2 2 mogen, en zowel σhagel als σthermisch zijn uitvoerig behandeld in de genoemde artikelen, aan de hand van de gebruikte testopstellingen. Een stap verder is de analyse van gereflecteerde signalen, die ISI tot gevolg hebben. ISI is in dit onderzoek verwaarloosd gebleven, omdat de bijdrage pas aanzienlijk wordt bij datasnelheden van enkele Mbits/s. Het is echter wel aanwezig op onze snelheden. ISI is verder namelijk ook verbonden aan het gezichtsveld van de detector en de hoeken die licht en ontvangers met elkaar maken, wat ook bij ons invloeden uitoefent. In onder andere [7],[18] leidt een uitgebreide analyse van al deze factoren, tot aanpassingen van het in [5] voorgestelde kanaalmodel, dat door ons ook gebruikt is. Het laatste punt staat los van de overige, omdat het nog niet van toepassing is in het prototype: ruismodellen in het PLC-systeem, volgens [10] de grootste ruisbijdrage in een PLC-VLC gecombineerd systeem. Wanneer de integratie van het systeem in het bestaande verlichtingssysteem en lichtnet wordt gerealiseerd, moet de ruisbijdrage hiervan zeer goed afgewerkt worden, zoals in de gerelateerde thesis [35] al een begin wordt gemaakt middels onderzoek, en in [10] verder uitgewerkt.
51
Hoofdstuk 10
Conclusies en aanbevelingen Het afsluitende hoofdstuk van dit werk bevat in paragraaf 10.1 een opsomming van de belangrijkst behaalde doelen en de conclusies die uit het gedane onderzoek getrokken kunnen worden. Tot slot wordt een reeks aanbevelingen gegeven in paragraaf 10.2, van belang voor onderzoek dat voortborduurt op deze.
10.1
Conclusies
In het rapport wordt een systeem voorgesteld dat prijsinformatie vanaf een ledbalk naar een prijskaartje (SSL) kan overbrengen. Met succes is een uni-directionele dataverbinding opgezet, die volledig functioneert via het zichtbare licht. Het prototype voldoet aan de gestelde eisen van datasnelheid en robuustheid ten opzichte van interfererend daglicht. SSL’s kunnen van elkaar onderscheiden worden en geven enkel informatie weer die zowel volledig correct als enkel voor hen bedoeld is. Gebruik van controlebits en een header liggen ten grondslag hiervan. Een foutive communicatie wordt opgemerkt en aangegeven aan de gebruiker. Wanneer communicatie niet plaatsvindt, verzorgen ledbuizen continu licht; ten tijde van de communicatie vindt een kleine knippering plaats. In dit werk, dat deel uitmaakt van een drietal samenhorende thesissen, is expliciet onderzoek gedaan naar de signaalbewerking binnen het voogestelde systeem. Vastgesteld is dat een OOK-modulatie geschikt is voor het moduleren van licht opdat deze als drager van informatie kan dienen. Deze modulatie wordt middels het besproken dataprotocol ge¨ımplementeerd in een simpele microcontroller: de Atmel ATmega16. Implementatie van de modulatietechniek faalt echter in het volledig onzichtbaar maken van de informatie-uitwisseling. De genoemde microcontroller is tevens geschikt voor het uitvoeren van demodulatie van het opgevangen gemoduleerde licht. Middels het doorlopen van het ‘omgekeerde’ dataprotocol, kan bitinformatie uit het licht ge¨extraheerd worden en het verstuurde bericht achterhaald worden. Een fout in de VLC-transmissie wordt geconstanteerd middels de uitvoering van een cyclic redundancy check. Foutieve informatie wordt afgekeurd en niet getoond. Bij een herstelde dataverbinding kan de data opnieuw verstuurd worden. De afstand waarop de dataverbinding standhoudt is beperkt: de overgang naar veelvoudige foutdetectie is vastgesteld op 42 centimeter in de beschreven testopstelling. Aan de hand van bovengenoemde conclusies kan bepaald worden dat de doelstelling is behaald. Een onderzoek naar de elektronische signaalbewerking in een communicatiesysteem dat opereert via leds heeft als resultaat de beschrijving van een implementatie van de signaalbewerkingsaspecten en regulatie van de dataflow binnen een VLC-systeem. Het ontworpen prototype is een demonstratie van het systeem dat voor LEDSpeak ontworpen dient te worden en een bewijs voor de werking van de gebruikte technieken en technologi¨en.
10.2
Aanbevelingen
Wanneer tijd en eenvoud niet het sterkste argument zijn voor het maken van keuzes, is diepgaander onderzoek makkelijk te verwezelijken. Dit kan leiden tot optimalere keuzes en optimalere ontwerpen dan
10. Conclusies en aanbevelingen
10.2. Aanbevelingen
gerealiseerd in dit onderzoek. Enkele mogelijkheden worden meegegeven als aanbeveling voor het verdere onderzoek.
10.2.1
Aanbevelingen ten aanzien van ontwerp
In het ontwerp zijn eisen tegemoet gekomen aan de hand van hun prioriteiten. Voor het ontwerp van het daadwerkelijke LED-pricing systeem, dienen alle aspecten en eisen evenredig afgewogen te worden opdat een optimaal ontwerp gerealiseerd kan worden. Vier onderdelen worden daarbij benadrukt. Een eerste aanbeveling is het concentreren op de robuustheid van het ontwerp. Dit kan middels een betere ruisgevoeligheidsanalyse (daglicht/ISI/LOS-onderbrekingen) en dientergevolge betere ruisonderdrukking. Ook dient daarvoor een betere methode van detectie en demodulatie van het licht ontwikkeld te worden ten opzichte van de ge¨ımplementeerde reeks. Het is dan nuttig aandacht te schenken aan het adaptieve vermogen van een ontwerp, het afschatten van het kanaal en iteratief bepalen van drempelwaarden voor het inkomende signaal. Een tweede aanbeveling richt zicht op de continue lichtvoorziening. Zowel in rust- als in communicatiefase moet het licht eenzelfde intensiteit hebben, zonder knipperingen. Daarbij moet er gedacht worden aan het aanpassen/uitbreiden van de mogelijkheden van de modulatietechniek, toegepast op het licht. De derde aanbeveling betreft het ontwerp van de integratie in het PLC-systeem zoals bedoeld voor het LED-pricing systeem, en de vierde en laatste ontwerptechnische aanbeveling is om onderzoek te doen naar de optie om SSL’s via het licht van energie te voorzien.
10.2.2
Aanbevelingen ten aanzien van gekozen werkwijze
Gekozen werkwijzen zijn nooit perfect, een thesis en onderzoek kunnen altijd beter, of er kan gekozen worden voor een andere benadering. In dit stuk worden enkele werkwijzen voorgesteld, die een positieve uitkomst kunnen hebben in nader onderzoek. In totaal worden twee suggesties vermeld. Ten eerste wordt aanbevolen een werkwijze te kiezen waarbij een uitgebreidere opstelling gebruikt wordt om tests uit te voeren. Daarmee wordt bedoeld: een groter aantal aan zowel zenders als ontvangers. Hiermee kan een re¨elere situatie nagebootst worden. Ook kan de field-of-view- en invalshoekafhankelijkheid beter onderzocht worden. De tests zelf zouden ook uitgebreider gedaan kunnen worden. Een veelvuldige testuitvoering, van boven de 1000 transmissies per keer, kan uitgevoerd worden, waarbij steeds ´e´en van de factoren die invloed hebben op resultaten gevarieerd kan worden (afstand, hoek, daglicht, reflectie, snelheid, etc. . . ). Zo kan aan de ene kant een kansvoorspelling worden gegeven over hoe vaak de verbinding fouen maakt. Anderzijds kan worden bepaald wat de belangrijkste maatstaven zijn in het bepalen van de prestaties van het VLC-systeem.
53
Deel IV
Deel IV: Appendices
Lijst van afkortingen AD-conversie
Analoog-digitaal-conversie
ADC
Analog to digital converter
ADCSRA
ADC control and status register A
ADEN
ADC enable
ADLAR
ADC left adjust result
ADMUX
ADC multiplexer selection register
ADPS
ADC prescaler selection bits
ADSC
ADC start conversion
ASCII
American standard code for information interchange
AWGN
Additive white gaussian noise
BER
Bit error rate
BPSK
Binary phase shift keying
CDMA
Code devision multiple access
CLK
Clock
CRC
Cyclic redundancy check
CS1X
Clock select
CTC
Clear timer on compare
CTDMA-PPM
Code time division multiple access - Pulse position modulation
DDR
Double data rate
DFE
Decision feedback equalizer
DIMES
Delft institute of Microsystems and Nanoelectronics
EN-Normen
Europese normen
HD
Hamming distance
I/O
Input/output
IR
Infrarood
ISI
Intersymbool inteferentie
ISR
Interrupt service routine
LCD
Liquid crystal display
Led
Light emitting diode
LOS
Line of sight
M-PPM
Multiple pulse position modulation
MUX4:X
Analog channel and gain selection bits
nesC
Network embedded systems C
NRZ
Non return to zero
OCRA1
Output compare register 1 A
OFDM
Orthogonal frequency division multiplexing
OOK
On-off keying
PCM
Powerline carrier modem
PK
Prijskaartje
PLC
Powerline communication
PoP
Proof of principle
PPM
Pulse position modulation
PvE
Programma van eisen
PWM
Pulse width modulation
QPSK
Quadrature phase shift keying
RAM
Random access memory
REFS
Reference selection bits
RF
Radio frequency
RGB
Red green blue
RoHS
Restriction of hazardous substances
SNR
Signal to noise ratio
TCCR1B
Timer/counter1 control register B
TCNT1
Timer/counter1
TIMSK
Timer/counter interrupt mask register
USB
Universal service bus
VLC
Visible light communication
WGM
Waveform generation mode
Lijst van figuren 2.1
Opdeling van het LEDSpeak systeem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
4.1 4.2 4.3 4.4 4.5 4.6 4.7
Top-level systeemontwerp . . . . . . . . . . . Functieblokschema van het dataprotocol . . . Functieblokschema van de verificatiemethode Functieblokschema van de modulatietechniek Functieblokschema van de microcontroller . . Schema van de dataflow binnen het systeem . Prioriteiten prototype . . . . . . . . . . . . .
5.1 5.2 5.3 5.4
Datapakket bestaande uit 1 startbit, 8 databits en 1 idlebit, Signaallayout per prijskaartje . . . . . . . . . . . . . . . . . Sampling procedure per bit . . . . . . . . . . . . . . . . . . Klok boven, versturen bits beneden . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
18 19 19 19 20 21 22
met ‘U’ . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
24 25 26 26
6.1 6.2 6.3
Gemiddelde waarde van een bitreeks in OOK . . . . . . . . . . . . . . . . . . . . . . . . . Meerdere coderingsmogelijkheden met PPM . . . . . . . . . . . . . . . . . . . . . . . . . . Multilevelcoding en gemiddelde waarden in PWM . . . . . . . . . . . . . . . . . . . . . .
32 33 33
7.1
Type microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
9.1 9.2 9.3 9.4 9.5 9.6 9.7
Testopstelling prototype . . . . . . . . . . . . . . . . . . . . . . Versterker met drempelwaarde 2.5V bij verschillende afstanden Terugval lichtintensiteit . . . . . . . . . . . . . . . . . . . . . . Representatie OOK-signaal [36] . . . . . . . . . . . . . . . . . . Modulatie middels een OOK-lijkend PPM-signaal [37] . . . . . Schematische beschrijving werking DFE [38] . . . . . . . . . . . Detecie van PWM/PPM-signalen, zonder ADC [30] . . . . . . .
. . . . . . .
45 46 48 49 49 50 50
1
Gantt chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
overeenkomend . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
Lijst van tabellen 5.1 5.2 5.3 5.4
Vergelijkingstabel updatetijd . . . . . . . . . . . . . . . . . . . . Vergelijkingstabel types errordetectie . . . . . . . . . . . . . . . . Hamming distance grootte CRC vs datagrootte . . . . . . . . . . Vergelijking Hamming weights verschillende CRC-16-polynomen
. . . .
26 28 29 29
6.1
Vergelijkingstabel modulatietechnieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
7.1
Vergelijkingstabel type microcontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
8.1 8.2 8.3 8.4
Instellen timer1 registers . . . . . . . . . . . . . . . . Resetten timer . . . . . . . . . . . . . . . . . . . . . ADC-initialisatie . . . . . . . . . . . . . . . . . . . . Instellen demodulatie CTC compare timer1 register .
. . . .
41 41 43 43
1
ASCII tekenset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Bibliografie [1] LEDSpeak, “Ledspeak businessplan,” juni 2011. [2] E. F. Schubert and J. K. Kim, “Solid-state light sources getting smart,” Science, vol. 308, pp. 1274–1278, 2005. [3] G. Pang, T. Kwan, H. Liu, and C. Chan, “Optical wireless based on high brightness visible leds,” in Industry Applications Conference., oct 1999, pp. 1693–1699. [4] T. Komine, J. H. Lee, S. Haruyama, and M. Nakagawa, “Adaptive equalization system for visible light wireless communication utilizing multiple white led lighting equipment,” IEEE Transactions on wireless communications, vol. 8, juni 2009. [5] T. Komine and M. Nakagawa, “Fundamental analysis for visible-light communication system using led lights,” IEEE Transactions on Consumer Electronics, vol. 50, pp. 100–107, februari 2004. [6] ——, “Performance evaluation of visible-light wireless communication system using white led lightings,” in Ninth International Symposium on Computers and Communications, juni-juli 2004, pp. 258–263. [7] J. H. Choi, S. W. Koo, and J. Y. Kim, “Influence of optical path difference on visible light communication systems,” in 9th International Symposium on Communications and Information Technology, 2009, pp. 1247–1251. [8] H. Elgala, R. Meshleh, and H. Haas, “Indoor broadcasting via white leds and ofdm,” IEEE Transactions on Consumer Electronics, vol. 55, pp. 1127–1134, augustus 2009. [9] J.-P. M. G. Linnartz, L. Feri, and et al., “Communications and sensing of illumination contributions in a power led lighting system,” Journal of lightwave technology, vol. LT-5, pp. 5396–5400, januari 2008. [10] T. Komine and M. Nakagawa, “Integrated system of white led visible-light communcation and powerline communication,” IEEE Transactions on Consumer Electronics, vol. 49, pp. 71–79, 2003. [11] A. Rajesh and R. Nakkeeran, “Performance analysis of integrated system under impulse noise and multipath channel using turbo coded ofdm,” in 16th International Conference on Advanced Computing and Communications, 2008, pp. 254–259. [12] S.-B. Ryu, J.-H. Choi, J. Bok, H. Lee, and H.-G. Ryu, “High power efficiency and low nonlinear distortion for wireless visible light communication,” in 4th IFIP International Conference on New Technologies, Mobility and Security (NTMS), 2011, pp. 1–5. [13] K. Cui, G. Chen, Z. Xu, and R. D. Roberts, “Line-of-sight visible light communication system design and demonstration,” in 7th International Symposium on Communication Systems Networks and Digital Signal Processing (CSNDSP), 2010, pp. 621 – 625. [14] N. Shrestha and et al., “Demonstration of visible light communications using rgb leds in an indoor environment,” in International Conference on Electrical Engineering/Electronics Computer Telecommunications and Information Technology (ECTI-CON), mei 2010, pp. 1159–1163.
[15] P. Dietz, W. Yerazunis, and D. Leigh, “Very low-cost sensing and communication using bidirectional leds,” Mitsubishi electric research laboratories, vol. TR2003-35, juli 2003. [16] J. M. Kahn and J. R. Barry, “Wireless infrared communications,” Proceedings of the IEEE, vol. 85, pp. 265–298, februari 1997. [17] M. N. Khan and W. G. Cowley, “Signal dependent gaussian noise model for fso communications,” in Australian Communications Theory Workshop (AusCTW), 2011, pp. 142–147. [18] K. Lee, H. Park, and J. R. Barry, “Indoor channel characteristics for visible light communications,” IEEE Communications Letters, vol. 15, pp. 217–219, februari 2011. [19] J. Rufo, C. Quintana, F. Delgado, and et al., “Considerations on modulation and protocols suitable for visible light communications (vlc) channels,” in 2nd IEEE CCNC Research Student Workshop, 2011. [20] K. Lee and H. Park, “Modulations for visible light communications with dimming control,” IEEE Photonics Technology Letters, not available yet 2011. [21] J. ho Choi, E. byeol Cho, T.-G. Kang, and C. G. Lee, “Pulse width modulation based signal format for visible light communications,” in 15th OptoElectronics and Communication Conference Technical Digest, Sapporo Convention Center, Japan, juli 2010, pp. 276–277. [22] T. Amin and S. Majumder, “Performance evaluation of m-ary pulse position modulation and on off keying in a direct detection optical wireless communication system in the presence of atmospheric effects,” in International Symposium on High Capacity Optical Networks and Enabling Technologies, HONET 2007., november 2007, pp. 1–9. [23] Z. Xu and B. M. Sadler, “Ultraviolet communication: Potential and state-of-the-art,” IEEE Communications Magazine, vol. 85, pp. 67–73, mei 2008. [24] S. van ’t Hof and T. Wensveen, “Het ontwerp van smart shelf labels voor ledspeak,” in Bachelorthesis TU Delft, juni 2011. [25] “Atmega16 datasheet,” http://www.atmel.com/atmel/acrobat/doc2466.pdf, mei 2011. [26] J. Ray and P. Koopman, “Efficient high hamming distance crcs for embedded networks,” in Dependable Systems and Networks, Philadelphia, PA, juni 2006. [27] P. Koopman and T. Chakravarty, “Cyclic redundancy code (crc) polynomial selection for embedded networks,” in The International Conference on Dependable Systems and Networks, Pittsburgh, PA, 2004. [28] ——, “Crc-16 0x8fdb hamming distance test data,” http://www.ece.cmu.edu/∼koopman/crc/ 0x8fdb.txt, juni 2011. [29] ——, “Crc-16 0xbaad hamming distance test data,” http://www.ece.cmu.edu/∼koopman/crc/ 0xbaad.txt, juni 2011. [30] L. Couch, Digital and Analog Communication Systems. 2001.
Upper Saddle River, NJ: Prentice-Hall,
[31] “Tmote sky datasheet,” http://www.bandwavetech.com/download/tmote-sky-datasheet.pdf, mei 2011. [32] (2011, mei) Tinyos website. http://www.tinyos.net. [33] “P89v51rd2 datasheet,” http://www.netmedia.com/siteplayer/telnet/documents/p89v51rb2. p89v51rc2.p89v51rd2.pdf, mei 2011. [34] “Msp430f1611 datasheet,” http://focus.ti.com/lit/ds/symlink/msp430f1611.pdf, mei 2011. [35] P. de Buck and P. ’t Hart, “Het ontwerp van een optisch draadloos zendsysteem gebruikmakend van witte leds,” juni 2011.
[36] (2011, juni) Tutorial: Radio basics for uhf rfid–part iii. http://www.cevx.com/bbs/htm/board30/ topic14222.htm. [37] H. Sugiyama, S. Haruyama, and M. Nakagawa, “Brightness control methods for illumination and visible-light communication systems,” in Third International Conference on Wireless and Mobile Communications, ICWMC ’07., maart 2007, p. 78. [38] (2011, juni) A multivariable decision feedback equalizer operating on the correlator outputs. http: //www.signal.uu.se/Research/rmultiuser.html.
Appendices Appendix A: Programma van eisen Eisen vanuit het beoogde gebruik 3.2.1 Het systeem moet evenveel lichtopbrengst hebben als de huidige verlichting in een warenhuis. 3.2.2 Het verzenden van de data via de witte leds gebeurt op een onzichtbare manier voor het blote oog. 3.2.3 Als er een fout optreedt tijdens het verzenden van de data mag het licht in de ruimte niet uitgaan. 3.2.4 Het licht van de leds moet genoeg energie bevatten om alle digitale prijskaartjes van energie te voorzien. 3.2.5 Elk individueel prijskaartje moet genoeg licht kunnen ontvangen om zichzelf van voldoende energie te voorzien die alle elektronica moet voeden. 3.2.6 Als het licht op een prijskaartje wegvalt, moet het kaartje in staat zijn minstens 12 uur lang z’n informatie op het display te houden. 3.2.7 Alle informatie die op het display moet verschijnen, wordt via het licht verzonden. 3.2.8 De productnaam, prijs en prijs per eenheid moeten kunnen afgebeeld worden op het display. 3.2.9 De totale hoeveelheid data moet verzonden kunnen worden over de beschikbare verlichting in een tijdspanne van ´e´en uur. 3.2.10 Vanuit ´e´en centrale PC moeten alle prijskaartjes voor ´e´en warenhuis aangestuurd kunnen worden. 3.2.11 Prijskaartjes moeten individueel en onafhankelijk aangestuurd kunnen worden. 3.2.12 Het systeem moet te bedienen zijn door een warenhuismanager. 3.2.13 De optische overdracht moet robuust zijn ten aanzien van interferentie met daglicht. 3.2.14 Het systeem moet gemakkelijk te integreren zijn in een huidige winkelinfrastructuur. 3.2.15 Het LED-pricing systeem is een end-to-end systeem. Het is een sluitend pakket dat reikt van software op de centrale PC tot en met de installatie van het prijskaartje. 3.2.16 Er mag geen foutieve informatie afgebeeld worden op het prijskaartje. 3.2.17 Het LED-pricing systeem moet toegepast kunnen worden in de koelafdeling van een warenhuis. 3.2.18 De persoon die prijskaartjes moet invoeren wordt gewaarschuwd wanneer een ongeldig ID of ongeldige informatie voor het display wordt ingevuld. 3.2.19 De consument wordt gewaarschuwd als er ongeldige informatie op het display afgebeeld wordt.
Eisen vanuit de ecologische situering van het systeem in de omgeving 3.3.1 De lichtintensiteit uit de witte leds valt binnen klasse 1 van de EN-Normen. 3.3.2 Alle materialen zijn RoHS-compliant. 3.3.3 Het systeem moeten voldoen aan internationale voorschriften van veiligheid en gezondheid. 3.3.4 Bij defect moet het mogelijk zijn om het betreffende onderdeel in het hele systeem te vervangen. Hiervoor wordt het LED-pricing systeem modulair opgebouwd. 3.3.5 Het systeem is in het geheel energiezuiniger dan een equivalente opstelling met TL-verlichting. 3.3.6 Het productieproces moet zo weinig mogelijk belastend zijn voor het milieu.
Eisen met betrekking tot de productie en ingebruikstelling 3.4.1 De verlichtingsmodule bestaat uit buizen gevuld met witte leds, compatibel met de vorm van een TL-buis en moeten geleverd kunnen worden in alle standaardafmetingen waarin ook TL-buizen beschikbaar zijn. 3.4.2 De elektronica die nodig is voor het verzenden van de data moet ge¨ıntegreerd worden in de ledbuis. 3.4.3 De aansluitpunten van de ledbuizen werken op 230V AC, 50 - 60Hz. 3.4.4 Alle prijskaartjes worden geleverd met montagesysteem. 3.4.5 Bij het verzenden van data moet de gemiddelde lichtopbrengst in een warenhuis gelijk zijn aan die voor het LED-pricing systeem geinstalleerd is, of voldoen aan de normen die gelden binnen warenhuizen. 3.4.6 Alle elektronica van het digitale prijskaartje wordt gevoed met stroom afkomstig van een zonnecel die op het prijskaartje aanwezig is. 3.4.7 Het prijskaartje is conform aan afmetingen van gelijkwaardige digitale varianten. 3.4.8 Het display van elk prijskaartje bevat twee rijen van 16 ASCII karakters. 3.4.9 De communicatie met het prijskaartje is uni-directioneel. 3.4.10 Data worden verzonden met controlebits en een header. 3.4.11 Alle data worden verzonden door alle aanwezige ledbuizen. 3.4.12 Een prijskaartje kan alleen de data op het display afbeelden die voor hem bestemd is. 3.4.13 Bij het starten van verzenden kan een centrale database in ´e´en keer gesynchroniseerd worden met alle prijskaartjes. 3.4.14 De software van het systeem op de centrale terminal moet compatibel zijn met Windows en Linux systemen. 3.4.15 Het datasignaal wordt vanaf de centrale terminal via ‘powerline communication’ naar de ledbuizen verstuurd. 3.4.16 Het onderhoud van het systeem is beperkt tot het vervangen van prijskaartjes en ledbuizen. 3.4.17 Het signaal van de terminal naar de power line carrier modem voldoet aan de eisen van een gestandaardiseerd kanaal met voldoende capaciteit. 3.4.18 De werking van de software op de centrale terminal moet duidelijk zijn voor de gebruiker, maar algoritmes zijn afgeschermd. 3.4.19 Prijskaartjes moeten manueel aangepast kunnen worden.
3.4.20 Een prijskaartje moet uit de database kunnen opgezocht worden. Bij het invullen van een ID moet de verzonden informatie opgevraagd kunnen worden. 3.4.21 De data die via de PCM verstuurd wordt mag niet interfereren met andere signalen zoals communicatie tussen rookmelders die ook over het lichtnet communiceren. 3.4.22 Als de ledbuizen geen data verzenden, zijn ze in een niet-communicatieve toestand waarbij het licht normaal brandt. 3.4.23 Indien een fout optreedt in de firmware van de ledbuizen, wordt de buis gereset. 3.4.24 Als een ledbuis niet goed functioneert, wordt dit teruggekoppeld naar de centrale terminal. 3.4.25 De software op de centrale terminal bevat de interface van LED-pricing voor de gebruiker. 3.4.26 De kwaliteits-prijsverhouding moet minstens even groot zijn als die van alternatieve digitale prijskaartsystemen. 3.4.27 De interface moet beschikbaar zijn in alle offici¨ele talen die binnen de Europese Unie gesproken worden. 3.4.28 Er moet communicatie mogelijk zijn die interferentie van daglicht kan weerstaan die kleiner is dan 300 lux (gemiddelde lichtsterkte van indirect licht in een kantoor). 3.4.29 Het systeem moet ge¨ınstalleerd worden door een technisch bevoegd persoon. 3.4.30 De minimum afstand waarover correcte transmissie moet plaatsvinden is de grootste afstand tussen een SSL en de meest nabije ledbuis. 3.4.31 Het systeem moet robuust zijn ten aanzien van het klimaat in de koelafdeling van een warenhuis. 3.4.32 Alle communicatie vindt simultaan plaats door alle ge¨ınstalleerde LED-pricing verlichting.
Eisen met betrekking tot liquidatie van het systeem 3.5.1 Het systeem moet verwijderbaar zijn. 3.5.2 Het afvalverwerkingsproces moet zo weinig mogelijk belastend zijn voor het milieu. 3.5.3 Het systeem is na afvloeiing bruikbaar als normale winkelverlichting. 3.5.4 Het systeem kan teruggeleverd worden aan LEDSpeak. 3.5.5 Als batterijen gebruikt worden in het ontwerp dan moeten die gemakkelijk verwijderbaar zijn.
Eisen vanuit bedrijfstrategische, marketing- en verkooptechnische omstandigheden 3.6.1 Het systeem is gemaakt voor een maximum aantal prijskaartjes. Bij uitbreiding van het aantal prijskaartjes moet een nieuw systeem aangekocht worden. 3.6.2 LEDSpeak heeft een afzetmarkt in een business-to-businessmodel. Het LED-pricing systeem zal ook volgens dit model verkocht worden.
Appendix B: ASCII conversietabel Dec 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
Hex 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
Binair 0100000 0100001 0100010 0100011 0100100 0100101 0100110 0100111 0101000 0101001 0101010 0101011 0101100 0101101 0101110 0101111 0110000 0110001 0110010 0110011 0110100 0110101 0110110 0110111 0111000 0111001 0111010 0111011 0111100 0111101 0111110 0111111
Code SP ! ” # $ % & ’ ( ) * + , – . \ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
Dec 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
Hex 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
Binair 1000000 1000001 1000010 1000011 1000100 1000101 1000110 1000111 1001000 1001001 1001010 1001011 1001100 1001101 1001110 1001111 1010000 1010001 1010010 1010011 1010100 1010101 1010110 1010111 1011000 1011001 1011010 1011011 1011100 1011101 1011110 1011111
Code @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ / ] ˆ
Tabel 1: ASCII tekenset
Dec 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
Binair 1100000 1100001 1100010 1100011 1100100 1100101 1100110 1100111 1101000 1101001 1101010 1101011 1101100 1101101 1101110 1101111 1110000 1110001 1110010 1110011 1110100 1110101 1110110 1110111 1111000 1111001 1111010 1111011 1111100 1111101 1111110 1111111
Code ‘ a b c d e f g h i j k l m n o p q r s t u v w x y z { — } ∼ DEL
Appendix C: Code voor modulatie in C Listing 1: Modulation code in C 1 2 3
#i n c l u d e
// l i b r a r y f o r i n t e r r u p t s #i n c l u d e // l i b r a r y f o r I /O p o r t s #i n c l u d e < u t i l / d e l a y . h> // u t i l i t y g e n e r a t i n g d e l a y s
4 5 6 7 8 9 10 11 12
/∗ D e f i n i n g g l o b a l v a r i a b l e s ∗/ // v a r i a b l e used f o r g e n e r a t i n g i d l e b i t volatile int wait bit = 0; v ol at il e int bit count = 0; // b i t count v a r i a b l e v o l a t i l e i n t c h a r c o u n t = 0 ; // c h a r count v a r i a b l e v o l a t i l e i n t p r o d u c t c o u n t = 0 ; // p r o d u c t count v a r i a b l e v o l a t i l e i n t s e n d s i g n a l = 0 ; // v a r i a b l e used f o r s e n d i n g i d l e s i g n a l when i d l e // g l o b a l v a r i a b l e t o d i s t i n g u i s h h e a d e r / data / c r c v o l a t i l e i n t msg type ; unsigned char i ;
13 14 15 16
17
/∗ D e f i n i n g msg ∗/ u n s i g n e d c h a r h e a d e r = 0 b11111110 ; // p r o d u c t ID = 254 u n s i g n e d c h a r msg [ 3 2 ] = ” C h i q u i t a BananenEUR 1 , 9 9 p e r kg ” ; // 2 l i n e s with p r i c e t a g info u i n t 1 6 t c r c 1 6 = 0 x0000 ; // i n i t i a l i z e CRC16 f o r p r o d u c t 254
18 19 20 21
22
/∗ D e f i n i n g msg2 ∗/ u n s i g n e d c h a r h e a d e r 2 = 0 b11111111 ; // p r o d u c t ID = 255 u n s i g n e d c h a r msg2 [ 3 2 ] = ” V e r s e a a r d b e i e n EUR 2 , 4 9 p e r bak ” ; // 2 l i n e s with p r i c e t a g info u i n t 1 6 t c r c 1 6 2 = 0 x0000 ; // i n i t i a l i z e CRC16 f o r p r o d u c t 255
23 24 25 26
/∗ D e f i n i n g 2 f u n c t i o n s used f o r s e t t i n g b i t s l a t e r on ∗/ #d e f i n e b i t g e t ( p ,m) ( ( p ) & (m) ) #d e f i n e BIT ( x ) ( 0 x01 << ( x ) )
27 28 29 30 31
/∗ Port i n i t i a l i z a t i o n ∗/ void p o r t i n i t ( void ) { DDRD=0x00 ; // p o r t d = i n p u t f o r t e s t b ut to n a c t i v a t i o n PORTD=0xFF ; // p u l l up r e s i s t o r a c t i v a t i o n
32
DDRC = 0xFF ; PORTC = 0 x01 ;
33 34 35
//PORTC = ou tp ut //SET PC0 ’ h i g h ’ => i d l e s i t u a t i o n = l i g h t on
}
36 37 38 39 40
/∗ Timer1 i n i t i a l i z a t i o n ∗/ void t i m e r 1 i n i t ( void ) { TCCR1B |= ( 1 << WGM12) ; // C o n f i g u r e t i m e r 1 f o r CTC mode TIMSK |= ( 1 << OCIE1A) ; // Enable CTC i n t e r r u p t
41 42
}
43 44 45 46
/∗ R e s e t t i m e r 1 ∗/ void r e s e t t i m e r 1 ( void ) { OCR1A = 0 ; // s e t CTC v a l u e = 0
47
TCNT1 = 0 x00 ; // c l e a r t i m e r c o u n t e r TCCR1B &= 0 B11111000 ; // s t o p t i m e r 1
48 49 50
PORTC = ( 1 << PC0) ; // s e t o ut pu t h i g h −> i d l e send signal = 0; // go back t o i d l e mode
51 52 53
}
54 55 56 57 58
/∗ F u n c t i o n c a l c u l a t i n g CRC u s i n g 0x8FDB p o l y n o m i a l ∗/ u i n t 1 6 t c r c 1 6 8 f d b ( u i n t 1 6 t c r c , u i n t 8 t data ) { int i ;
59 60 61 62 63 64
c r c = c r c ˆ ( ( u i n t 1 6 t ) data << 8 ) ; f o r ( i =0; i <8; i ++) { i f ( c r c & 0 x8000 ) c r c = ( c r c << 1 ) ˆ 0x1FB7 ;
else
65
c r c <<= 1 ;
66
}
67 68
return crc ;
69 70
}
71 72 73 74 75 76 77 78 79
/∗ Timer1 i n t e r r u p t o c c u r e n c e p r o c e d u r e ∗/ ISR ( TIMER1 COMPA vect ) { i f ( w a i t b i t == 0 ) { //when b i t i s not i d l e b i t i f ( b i t c o u n t == 9 ) { // r e s e t p r o c e d u r e a f t e r 9 b i t s PORTC = ( 1 << PC0) ; // go t o i d l e wait bit = 1; //make s u r e n e x t i n t e r r u p t = i d l i n g bit count = 0; c h a r c o u n t ++;
80
i f ( c h a r c o u n t == 3 5 ) { // r e s e t p r o c e d u r e a f t e r 35 c h a r s char count = 0; PORTC = ( 1 << PC0) ; p r o d u c t c o u n t ++;
81 82 83 84 85
i f ( p r o d u c t c o u n t == 2 ) { product count = 0; }
86 87 88 89
delay ms (120) ; reset timer1 () ;
90 91
}
92 93
}
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
else { i f ( b i t c o u n t == 0 ) { // i f s t a r t b i t PORTC = ( 0 << PC0) ; // e s t a b l i s h s t a r t b i t } else { i f ( p r o d u c t c o u n t == 0 ) { // send f i r s t p r o d u c t v a r i a b l e s s w i t c h ( msg type ) { // s w i t c h t h a t d i s t i n g u i s h e s between header , data and CRC case 0 : // p r o c e d u r e i f h e a d e r i f ( b i t g e t ( header , BIT(8− b i t c o u n t ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
109 110 111 112
i f ( b i t c o u n t == 8 ) { msg type++; }
113 114 115 116 117 118 119 120 121
break ; c a s e 1 : // p r o c e d u r e i f p r i c e t a g data i f ( b i t g e t ( msg [ c h a r c o u n t − 1 ] , BIT(8− b i t c o u n t ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
122 123 124 125
i f ( b i t c o u n t == 8 && c h a r c o u n t == 3 2 ) { msg type++; }
126 127 128 129 130 131 132 133 134
break ; c a s e 2 : // p r o c e d u r e i f checksum i f ( b i t g e t ( c r c 1 6 , BIT(16− b i t c o u n t −(8∗( c h a r c o u n t −33) ) ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
135
i f ( b i t c o u n t == 8 && c h a r c o u n t == 3 4 ) { msg type = 0 ;
136 137 138
}
139 140
break ;
141
}
142
} e l s e { // send s e c o n d p r o d u c t v a r i a b l e s s w i t c h ( msg type ) { // s w i t c h t h a t d i s t i n g u i s h e s between header , data and CRC case 0 : // p r o c e d u r e i f h e a d e r i f ( b i t g e t ( header2 , BIT(8− b i t c o u n t ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
143 144 145 146 147 148 149 150 151 152 153
i f ( b i t c o u n t == 8 ) { msg type++; }
154 155 156 157
break ; c a s e 1 : // p r o c e d u r e i f p r i c e t a g data i f ( b i t g e t ( msg2 [ c h a r c o u n t − 1 ] , BIT(8− b i t c o u n t ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
158 159 160 161 162 163 164 165 166
i f ( b i t c o u n t == 8 && c h a r c o u n t == 3 2 ) { msg type++; }
167 168 169 170
break ; c a s e 2 : // p r o c e d u r e i f checksum i f ( b i t g e t ( c r c 1 6 2 , BIT(16− b i t c o u n t −(8∗( c h a r c o u n t −33) ) ) ) ) { PORTC = ( 1 << PC0) ; } else { PORTC = ( 0 << PC0) ; }
171 172 173 174 175 176 177 178 179
i f ( b i t c o u n t == 8 && c h a r c o u n t == 3 4 ) { msg type = 0 ;
180 181 182
}
183 184
break ;
185
}
186
}
187
}
188 189
b i t c o u n t ++;
190
}
191
} else { /∗ t h e s t a t e m e n t s below make s u r e t h a t an i d l e b i t o c c u r s a f t e r s e n d i n g 9 b i t s ∗/ w a i t b i t ++; wait bit = 0; }
192 193 194 195 196 197 198
}
199 200 201 202
i n t main ( v o i d ) { port init () ; // i n i t i a l i z e p o r t s timer1 init () ; // i n i t i a l i z e t i m e r 1
203 204
sei () ;
// Enable G l o b a l I n t e r r u p t s
205
f o r ( i =0; i <32; i ++) { // c a l c u l a t e CRC16 f o r p r o d u c t 254 c r c 1 6 = c r c 1 6 8 f d b ( c r c 1 6 , msg [ i ] ) ; }
206 207 208 209
f o r ( i =0; i <32; i ++) { // c a l c u l a t e CRC16 f o r p r o d u c t 255 c r c 1 6 2 = c r c 1 6 8 f d b ( c r c 1 6 2 , msg2 [ i ] ) ; }
210 211 212 213
f o r ( ; ; ) // Loop F o r e v e r { i = PIND ; // r e a d t e s t bu tt on i f ( i == 251 && s e n d s i g n a l == 0 ) { send signal = 1;
214 215 216 217 218
// i f
t e s t bu tt on i s p r e s s e d
219 220
OCR1A = 1 2 0 0 ; // S e t CTC compare v a l u e t o 10kHz a t 12MHz AVR c l o c k TCCR1B |= ( ( 1 << CS10 ) | ( 0 << CS11 ) ) ; // S t a r t t i m e r with p r e s c a l e r = 1
221 222
}
223 224
i f ( s e n d s i g n a l == 0 ) { // i d l e mode => send h i g h s i g n a l PORTC = 0 x01 ; }
225 226 227
}
228 229
}
Appendix D: Code voor demodulatie in C Listing 2: Demodulation code in C 1 2 3
#i n c l u d e // l i b r a r y f o r i n t e r r u p t s #i n c l u d e // l i b r a r y f o r I /O p o r t s #i n c l u d e ” hd44780 . h” //LCD l i b r a r y ( l i b r a r y used by d i f f e r e n t t h e s i s group )
4 5 6 7 8
unsigned unsigned unsigned unsigned
int i = 0; char samples [ 4 ] ; // a r r a y t h a t temporary h o l d s 4 d i f f e r e n t ADC s a m p l e s char b i t s [ 9 ] ; // a r r a y h o l d i n g 1 s t a r t b i t + 8 d a t a b i t s c h a r msg [ 3 4 ] ; // a r r a y h o l d i n g 32∗8 c h a r a c t e r b i t s + 16CRC b i t s
volatile volatile volatile volatile
int int int int
9 10 11 12 13
// v a r i a b l e used t o sample a t 4 ∗ c l o c k f r e q u e n c y clk delay ; // v a r i a b l e f l a g g e d when ADC i n p u t < 1 , 2 5V sense signal ; a m o u n t b i t s ; // i n t e r n a l v a r i a b l e k e e p i n g t r a c k o f b i t number // v a r i a b l e k e e p i n g t r a c k o f p a c k e t nr amount chars ;
14 15 16 17
/∗ D e f i n i n g 2 f u n c t i o n s used f o r s e t t i n g b i t s l a t e r on ∗/ #d e f i n e b i t s e t ( p ,m) ( ( p ) |= (m) ) #d e f i n e BIT ( x ) ( 0 x01 << ( x ) )
18 19 20 21
/∗ F u n c t i o n implemented by LCD group t o p l a c e t h e c u r s o r ∗/ void p l a a t s c u r s o r ( i n t y , i n t x ) { i n t pos ;
22
i f ( y == 1 ) { pos = ( x−1) ; } else{ pos = (64+( x−1) ) ; }
23 24 25 26 27 28 29
l c d g o t o ( pos ) ;
30 31
return ;
32 33
}
34 35 36 37
38
/∗ I n i t i a l i z i n g AD c o n v e r t e r ∗/ void a d c i n i t ( void ) { ADCSRA |= ( 0 << ADPS2) | ( 1 << ADPS1) | ( 0 << ADPS0) ; // S e t ADC p r e s c a l a r t o 4 − 2 . 5 kHz sample r a t e @ 10kHz ADCSRA |= ( 1 << ADEN) ; // Enable ADC
39
ADMUX |= ( 1 << REFS0) ; // S e t ADC r e f e r e n c e t o AVCC = 5V ADMUX |= ( 1 << ADLAR) ; // L e f t a d j u s t ADC r e s u l t t o a l l o w e a s y 8 b i t r e a d i n g ADMUX |= ( 1 << MUX0) ; // Use ADC1 a s ADC i n p u t
40 41 42 43
}
44 45 46 47 48 49
/∗ I n i t i a l i z i n g t i m e r 1 ∗/ void t i m e r 1 i n i t ( void ) { TCCR1B |= ( 1 << WGM12) ; // C o n f i g u r e t i m e r 1 f o r CTC mode TIMSK |= ( 1 << OCIE1A) ; // Enable CTC i n t e r r u p t }
50 51 52 53
/∗ R e s e t t i n g t i m e r 1 , c a l l e d a f t e r c o m p l e t e t r a n s m i s s i o n ∗/ void r e s e t t i m e r 1 ( void ) { OCR1A = 0 ; // s e t CTC v a l u e = 0
54
TCNT1 = 0 x00 ; // c l e a r t i m e r c o u n t e r TCCR1B &= 0 B11111000 ; // s t o p t i m e r 1
55 56 57
amount bits = 0 ; sense signal = 0;
58 59 60
// t r a n s m i s s i o n = c o m p l e t e => r e s e t amount b i t s // s t a r t ’ l o o k i n g ’ f o r a s i g n a l a g a i n
}
61 62 63
/∗ F u n c t i o n t h a t g e t s one s i n g l e AD sample ∗/ unsigned char get single A2D sample ( void ) {
64 65
ADCSRA |= ( 1 << ADSC) ;
// S t a r t A2D c o n v e r s i o n
w h i l e (ADCSRA & 0 x40 ) ; r e t u r n (ADCH) ;
66 67 68
// Wait f o r A2D t o c o m p l e t e // Return ADCH v a l u e
}
69 70 71 72 73
/∗ F u n c t i o n c a l c u l a t i n g CRC u s i n g 0x8FDB p o l y n o m i a l ∗/ u i n t 1 6 t c r c 1 6 8 f d b ( u i n t 1 6 t c r c , u i n t 8 t data ) { int i ;
74
c r c = c r c ˆ ( ( u i n t 1 6 t ) data << 8 ) ; f o r ( i =0; i <8; i ++) { i f ( c r c & 0 x8000 ) c r c = ( c r c << 1 ) ˆ 0x1FB7 ; else c r c <<= 1 ; }
75 76 77 78 79 80 81 82 83
return crc ;
84 85
}
86 87 88 89 90
/∗ Timer1 i n t e r r u p t o c c u r e n c e p r o c e d u r e ∗/ ISR ( TIMER1 COMPA vect ) { samples [ c l k d e l a y ] = get single A2D sample ( ) ; c l k d e l a y ++;
91 92 93 94
i f ( c l k d e l a y == 4 ) { // d i v i d e s e t c l o c k by 4 u n s i g n e d i n t t o t s u m = 0 ; // v a r i a b l e used f o r a v e r a g i n g sample v a l u e s clk delay = 0; // r e s e t sample c l o c k v a r i a b l e
95 96 97 98
f o r ( i = 0 ; i <4; i ++) { t o t s u m += s a m p l e s [ i ] ; }
// summing up v a l u e s i n t o v a r i a b l e
t o t s u m = ( tot sum>> 2 ) ;
// d i v i d e sum by 4 and f l o o r
99 100 101
// i f a v e r a g e > 2 . 5V => b i n a r y i f ( t o t s u m >= 1 2 8 ) { b i t s [ amount bits ] = 1 ; } else { b i t s [ amount bits ] = 0 ; }
102 103 104 105 106 107 108
’1 ’ , e l s e binary
’0 ’
109
a m o u n t b i t s ++;
110
// i n c r e a s e b i t c o u n t e r
111 112
i f ( a m o u n t b i t s == 1 ) { // i f f i r s t b i t , c h e c k i f v a l i d i f ( s a m p l e s [ 2 ] > 128 | | s a m p l e s [ 3 ] > 1 2 8 ) { r e s e t t i m e r 1 ( ) ; // not a r e a l s t a r t b i t ! s t o p t i m e r and s t a r t s e n s i n g } }
113 114 115 116 117 118
}
119 120
i f ( a m o u n t b i t s == 9 ) { // d i s p l a y c h a r a c t e r a f t e r 1 s t a r t b i t and 8 d a t a b i t s
121 122 123 124 125 126 127 128
i f ( amount chars > 0) { f o r ( i = 1 ; i <9; i ++) { // i g n o r e b i t [ 0 ] = s t a r t b i t , and s e t b i t s were n e c e s a r y i f ( b i t s [ i ] & 1) { b i t s e t ( msg [ amount chars − 1 ] , BIT(8− i ) ) ; } } }
129 130
a m o u n t c h a r s++; // i n c r e a s e c h a r a c t e r c o u n t e r
131 132
133
i f ( a m o u n t c h a r s == 3 5 ) { // t r a n s m i s s i o n o f t h e p r o d u c t i s f i n i s h e d , s t a r t checking i f ( msg [ 0 ] == 0 b11111111 ) { // i f p r o d u c t ID = 255 −> then respond , e l s e i g n o r e product
u i n t 1 6 t c r c 1 6 = 0 x0000 ;
134 135
f o r ( i =0; i <32; i ++) { // c a l c u l a t e CRC o f r e c e i v e d data c r c 1 6 = c r c 1 6 8 f d b ( c r c 1 6 , msg [ i ] ) ; }
136 137 138 139
u i n t 1 6 t crc16msg = msg [ 3 3 ] + ( msg [ 3 2 ] << 8 ) ; //make 16 b i t v a r i a b l e o f r e c e i v e d CRC
140
141
i f ( c r c 1 6 == crc16msg ) { //CRC c h e c k match
142 143
PORTD = 0 x00 ;
144
// t u r n o f f s t a t u s LED
145
f o r ( i = 0 ; i <32; i ++) { // f o r s e q u e n c e s e t t i n g c h a r a c t e r s on LCD d i s p l a y l c d p u t c ( msg [ i ] ) ;
146 147 148
i f ( i == 1 5 ) { // n e x t row a f t e r 16 c h a r a c t e r s plaats cursor (2 ,1) ; }
149 150 151
} } e l s e { //CRC c h e c k didn ’ t match PORTD = 0 x01 ; // t u r n on s t a t u s LED l c d c l r s c r ( ) ; // c l e a r LCD s c r e e n }
152 153 154 155 156 157
}
158 159
amount chars = 0 ; // r e s e t a m o u n t c h a r s f o r n e x t t r a n s m i s s i o n plaats cursor (1 ,1) ; // p l a c e c u r s o r on f i r s t l i n e , f i r s t c h a r a c t e r
160 161 162
f o r ( i = 0 ; i <34; i ++) { // r e s e t msg v a r i a b l e f o r n e x t t r a n s m i s s i o n msg [ i ] = 0 ; }
163 164 165
}
166 167
r e s e t t i m e r 1 ( ) ; // r e s e t t i m e r 1 and s t a r t s e n s i n g f o r n e x t b y t e .
168
}
169 170
}
171 172 173 174 175
i n t main ( v o i d ) { l c d i n i t () ; // c a l l l c d i n i t ( ) ; adc init () ; // c a l l a d c i n i t ( ) ; timer1 init () ; // c a l l t i m e r 1 i n i t ( ) ;
176
DDRD = 0xFF ; PORTD = 0 x00 ;
177 178
//PORTD = s t a t u s LED o ut pu t //SET CRC l e d o f f
179
s e i ( ) ; // Enable G l o b a l I n t e r r u p t s
180 181
f o r ( ; ; ) { // Loop F o r e v e r
182 183
i f ( s e n s e s i g n a l == 1 ) { /∗ l e t i n t e r r u p t take care of everything do n o t h i n g u n t i l s e n s e s i g n a l i s s e t 0 a g a i n ∗/ } else { ADCSRA |= ( 1 << ADSC) ; // S t a r t A2D C o n v e r s i o n s w h i l e (ADCSRA & 0 x40 ) ; // Wait f o r A2D t o c o m p l e t e
184 185 186 187 188 189 190 191 192 193
i f (ADCH < 1 2 8 ) { // i f s e n s e d c o n v e r s i o n < 2 . 5V sense signal = 1; // l e t i n t e r r u p t t a k e c a r e o f e v e r t h i n g
194 195 196
OCR1A = 300; // S e t CTC compare v a l u e t o 40KHz a t 12MHz AVR c l o c k TCCR1B |= ( ( 1 << CS10 ) | ( 0 << CS11 ) ) ; // S t a r t t i m e r with p r e s c a l e r = 1
197 198
}
199
}
200
}
201 202
}
Appendix E: Gantt Chart In onderstaand figuur is onze bijgestelde planning afgebeeld middels een Gantt chart. Halverwege het project realiseerde wij ons dat we niet voldoende literatuuronderzoek hadden verricht om bepaalde conclusies te trekken. Daarom hebben wij halverwege ons literatuuronderzoek hervat en hiermee onder andere de theorie achter de modulatietechnieken en het proof of principle aangepast.
Figuur 1: Gantt chart