Jan Woolderink is docent aan de Avans Hogeschool in Breda, Wim Hendriksen en Albert Lak zijn werkzaam als lector respectievelijk docent aan de Fontys Hogeschool ICT in Eindhoven. Aan Firebee hebben verder meegewerkt Fontys-docenten Eric Dortmans en Corné van Dijk, en Fontys-student Ben Nooijens.

29 October 2013

Brandweerpersoneel moet ook kunnen communiceren binnen gebouwen waar de normale communicatiemiddelen het laten afweten. Fontys ontwikkelde op basis van het Zigbee-protocol een zelfconfigurerend en zelfherstellend draadloos spraaknetwerk.

Een spuitwagen van de brandweer heeft een bemanning van zes personen. Naast de chauffeur/pompbediende en de bevelvoerder zijn er twee teams van twee manschappen: de waterploeg zorgt voor water en de aanvalsploeg bestrijdt het vuur in het gebouw. De communicatie in zo‘n team is volledig afhankelijk van spraak via radioverbindingen. Daarvoor wordt het C2000-systeem ingezet. De zes bemanningsleden gebruiken hetzelfde radiokanaal, dus een zendende spreker wordt uitgeluisterd door vijf ontvangers.

Radioverbindingen in betonnen en stalen gebouwen zijn zeer storingsgevoelig door verzwakking van de radiosignalen in die materialen. Ook C2000 van de brandweer heeft hier problemen mee. Vooral bij inzet in diepe kelders en parkeergarages van staal is er een risico dat de verbindingen falen. Buiten weten ze dan niet meer wat er zich binnen afspeelt: een potentieel gevaarlijke situatie.

Het zelfconfigurerende en zelfherstellende vermogen van het Zigbee-protocol biedt hier een kans. Als iedere brandweerman een eigen knooppunt (node) meedraagt en onderweg in het gebouw additionele nodes worden achtergelaten – zoals in Hans en Grietje – vormt zich een robuust netwerk dat een alternatieve route zoekt als een node uitvalt. Nadeel is wel dat het neerleggen van de ’broodkruimels‘ extra werk geeft. Dit wordt echter minder als dit netwerk in de toekomst ook gebruik kan maken van staande infrastructuur, zoals Zigbee-nodes in brandmelders en deurschakelaars.

Zigbee foguur 1
Figuur 1: Topologie van Firebee

Aan de andere kant is Zigbee ontworpen voor communicatie van beperkte hoeveelheden gegevens van sensoren, met een relatief geringe snelheid over een korte afstand met gebruik van weinig energie. Het is niet bedoeld voor communicatie van streaming data, zoals voor onze spraakverbindingen. Het protocol kent bovendien geen functionaliteit voor levering van berichten bij meerdere ontvangers.

 advertorial 

The waves of Agile

Derk-Jan de Grood has created a rich source of knowledge for Agile coaches and leaders. With practical tips to create a learning organization that delivers quality solutions with business value. Order The waves of Agile here.

Toch hadden wij het vermoeden dat Zigbee wel kan worden ingezet voor een spraakverbinding, mits we creatief omgaan met beperkingen. We dienen onder meer rekening te houden met beperkte bandbreedte en beperkt zendvermogen van de radio, beperkte rekencapaciteit en buffermogelijkheden van de processoren, beperkt vermogen van batterijen, wachttijden door communicatieprotocollen en transmissiefouten tussen zenders en ontvangers.

Bij audiostreaming wordt de kwaliteit van het geluid negatief beïnvloed als pakketten met onregelmatige intervallen of helemaal niet aankomen. Zigbee kan garanderen dat berichten onverminkt aankomen door ze opnieuw te verzenden als er iets misgaat. Bij audio is een pakket dat te laat aankomt echter onbruikbaar. Wel is bij spraak een beperkt verlies van berichten acceptabel, omdat het menselijk brein de gaten goed kan invullen. Om die reden hebben we gekozen voor het eenmalig versturen zonder bevestiging (acknowledgement). Hierdoor gaat het verzenden sneller en is geen geheugen nodig om berichten een tijdje te bewaren voor het geval er een opnieuw verzonden moet worden.

Verstaanbaarheid is een belangrijk onderdeel van de gesprekskwaliteit, maar het is een tamelijk subjectief begrip. Meestal wordt deze gemeten door een panel van proefpersonen onder gecontroleerde omstandigheden naar diverse uitgesproken zinnen te laten luisteren. De eisen aan de gesprekskwaliteit zijn voor onze toepassing niet zo hoog. Het aantal mogelijke boodschappen is gering, dus de voorspelbaarheid is hoog. Verder is in ons push-to-talk-systeem steeds maximaal één persoon aan het woord (half-duplex).

Figuur 1 toont de topologie van ons Firebee-netwerk. Alle nodes (cirkels) hebben een adres waar berichten naartoe gestuurd kunnen worden. Er is één coördinator die de toegang tot het netwerk regelt en er zijn routers die berichten kunnen doorsturen. In ons netwerk kunnen alle nodes als router fungeren. Eén daarvan wordt ingesteld als coördinator.

Kanaalkeuze

De maximale bandbreedte van Zigbee is 250 kb/s. De grootte van een datapakket is door de fysieke laag beperkt tot 127 bytes. De diverse headers van de lagen van de Zigbee-stack (Mac-, netwerk- en applicatielaag) nemen 45 bytes in beslag. Het werkelijk aantal databytes per pakket is daarmee maximaal 82. De maximale effectieve bandbreedte is daardoor (82 / 127) * 250 ? 160 kb/s.

Deze snelheid wordt echter niet gehaald. In de praktijk wordt de doorvoersnelheid bepaald door de tijd die nodig is om vanuit een applicatie een bericht af te leveren. Van Mac- naar Mac-laag van twee naastliggende nodes bedraagt deze ongeveer 4,5 ms. Voor het overdragen van het datapakket van de applicatie naar de Mac-laag is ongeveer 1 ms nodig bij de zendende node. Een gelijk tijdsinterval is nodig om het datapakket aan de ontvangende kant vanuit de Mac-laag af te leveren bij de applicatie.

In een ideale situatie zou dus elke 5,5 ms een bericht met 82 bytes (656 bits) effectieve data verzonden dan wel ontvangen kunnen worden. Dat komt neer op een doorvoersnelheid van 120 kb/s. Als het bericht via tussenliggende nodes gaat (multihopping), moet iedere tussenliggende node eerst ontvangen en dan zenden, wat de doorvoersnelheid grofweg (niet alle lagen hoeven doorlopen te worden) terugbrengt tot de helft, dus 60 kb/s.

Zigbee foguur 2
Figuur 2: Nodes die niet rechtstreeks communiceren maar wel in elkaars bereik liggen, storen elkaar.

De toegang tot het communicatiekanaal wordt geregeld via het CSMA/CA-mechanisme (Carrier Sense Multiple Access met Collision Avoidance). Elke zender moet eerst toegang tot het kanaal krijgen voordat hij mag gaan zenden. Dit is een free-for-all-situatie waarbij botsingen ontstaan zodra twee of meer nodes op hetzelfde moment willen zenden. Als het kanaal te druk bezet is, schakelt de zender af voor een korte periode, om het na een willekeurig tijdsinterval nog eens te proberen. Hierdoor wordt de effectieve doorvoersnelheid bij druk verkeer al snel veel lager.

In een multihopsituatie neemt de doorvoersnelheid snel nog verder af: doordat alle nodes hetzelfde communicatiekanaal gebruiken, zullen nodes die niet rechtstreeks communiceren, maar wel in elkaars bereik liggen, elkaar storen. In Figuur 2 kunnen nodes 1 en 3 niet tegelijk zenden. Het signaal van node 3 stoort de ontvangst bij 2. 1 en 4 kunnen wel tegelijk zenden. In de realiteit is het zendbereik vaak geen nette cirkel; het kan zeer grillige vormen aannemen die ook nog in de loop van de tijd veranderen.

De werkelijke doorvoersnelheid dus lager dan 60 kb/s. Wij hebben onder verschillende omstandigheden metingen uitgevoerd om te achterhalen wat de maximaal haalbare snelheid is onder binnen ons scenario realistische omstandigheden. Die blijkt 20 kb/s te zijn. Ook hebben we vastgesteld dat de juiste kanaalkeuze storing van wifinetwerken kan voorkomen.

Herhaalde unicast

Bij de start van ons project koppelden we microfoon en luidspreker met wat eenvoudige elektronica aan twee Jennic-processoren en gebruikten we de ingebouwde ADC en DAC voor respectievelijk het samplen en reproduceren van het geluid. Er werden achtduizend samples per seconde omgezet naar een 8 bit waarde. Om deze samples zonder compressie te versturen, zou een minimale doorvoersnelheid van 64 kb/s nodig zijn. Dit is gezien de voorgaande metingen onhaalbaar. Bovendien bleken de ADC en DAC te stoppen als de processor een bericht verstuurde, met storende bromtonen tot gevolg.

Daarom zijn we op zoek gegaan naar een gespecialiseerde chip die het geluid kan bewerken en waarvoor ook een evaluatiekit leverbaar is. Dat is de CMX618 van CML Microcircuits geworden, een half-duplex vocoder. Deze verzorgt het samplen van het geluid, het wegfilteren van frequenties boven 4 kHz, compressie en decompressie van de samples en het reconstrueren van geluid uit ontvangen samples.

De CMX618 kan een foutcorrigerende code aan de gecomprimeerde samples toevoegen. Gebruikmakend van deze mogelijkheid kan een spraakfragment van 60 ms worden gecodeerd in 27 bytes. Onze software zorgt er dan voor dat drie van deze fragmenten (180 ms spraak, 81 bytes) in één Zigbee-pakket worden geplaatst. Voor het verzenden hiervan is een effectieve doorvoersnelheid van 81 byte per 180 ms oftewel 3,6 kb/s nodig, achttien procent dus van de gemeten maximale snelheid bij versturen via tussennodes. Deze waarde geldt echter alleen als er maar één luisteraar is. Om het bericht van de sprekers te laten uitluisteren door vijf luisteraars moet een oplossing binnen Zigbee worden gevonden.

Omdat het geluid 180 ms wordt opgespaard, iedere tussennode minimaal 6,5 ms nodig heeft voor het doorsturen en we ook nog te maken hebben met het CSMA/CA-mechanisme is de vertraging van het geluid aanzienlijk. Maar zolang het oorspronkelijke geluid niet hoorbaar is, is dat niet zo‘n probleem bij een half-duplex verbinding. Omgevingsgeluiden als sirenes kunnen echter storend werken en ook zijn problemen te verwachten als twee ontvangers in elkaars buurt staan.

Het Zigbee Broadcast-mechanisme is niet te gebruiken voor streaming door het passieve acknowledgement-schema, waarin een node na het zenden van een bericht wacht tot buren het datapakket ook hebben doorgestuurd. Na een time-out wordt het bericht nog een keer gestuurd. Dit levert al snel verstopping van het communicatiekanaal op. Het Zigbee Bound Transfer-mechanisme werkt wel voor het schakelen van lampen, maar niet voor streaming data.

Dus blijft nog maar één methode over, en dat is herhaalde unicast: elke 180 ms verstuurt de applicatielaag van de zender een pakket via Zigbee naar elke ontvanger. Voor communicatie met één ontvanger vergt dit een doorvoersnelheid van 3,6 kb/s. We hebben het getest met twee ontvangers en dit werkte. Bij een maximale doorvoersnelheid van 20 kb/s zouden theoretisch vijf ontvangers tegelijkertijd kunnen worden bediend.

Water en vuur

Onder gecontroleerde omstandigheden hebben we ons Firebee-systeem getest met één zender en twee ontvangers via drie tussennodes. Spraak is goed te verstaan. Verstoringen leiden niet tot dramatisch verlies van spraakkwaliteit. De vertraging (latency) van honderden milliseconden kan problemen geven als de zender de ontvanger akoestisch kan horen: dan ontstaat een onwerkbare galm. Als een node uitvalt, moet de Zigbee-coördinator nieuwe routingtabellen construeren. Dit kan enkele seconden duren, waarin geen spraakcommunicatie mogelijk is.

Bij de Firebee Workshop op 29 mei hebben we het systeem met succes gedemonstreerd voor brandweer, industrie en onderwijs. Een brandweerman is ermee het stookgebouw van het Veiligheidsoefencentrum (VOC) in Tilburg binnengegaan en heeft daar verslag gedaan van het blussen van de brand in een reallife omgeving, dus met water en vuur. De nodes waren buiten opgesteld en zorgden voor een goed verstaanbare spraakverbinding naar het publiek honderd meter verderop. Hiermee is de weg vrij om zelfherstellende communicatienetwerken te ontwerpen.

Edited by Paul van Gerven