ID.nl logo
Visualiseer data van je bluetooth-sensors
© PXimport
Zekerheid & gemak

Visualiseer data van je bluetooth-sensors

Heel wat sensors sturen gegevens via bluetooth door. Denk daarbij aan een hartslagsensor in een fitnesstracker of borstband, of een draadloze temperatuursensor. Deze sensors gebruik je vaak met een mobiele app op je smartphone, maar ook op je computer of andere apparaten kun je deze gegevens via bluetooth ontvangen. In dit artikel gaan we met data van bluetooth-sensors aan de slag.

Als je een borstband, smartwatch of fitnesstracker met hartslagsensor hebt en je hartslag met een app op je smartphone in het oog houdt, dan loopt de communicatie tussen het apparaat en je smartphone via bluetooth low-energy (BLE). Het is een laagdrempelig protocol voor draadloze communicatie op afstand omdat elke smartphone en laptop het tegenwoordig ondersteunt.

Heel wat draadloze temperatuursensors werken via BLE, zoals de RuuviTag of de plantensensor Xiaomi Mi Flora. Die sensors kun je allemaal uitlezen via apps van de producenten zelf of van andere partijen. Maar uiteindelijk gebruiken die apparaten allemaal een standaardprotocol, dus je kunt ook zelf de waardes in je eigen programma’s uitlezen.

01 Hoe werkt bluetooth low-energy?

Laten we eerst even stilstaan bij bluetooth low-energy (BLE). Er zijn twee soorten BLE-apparaten: een zogenoemde peripheral (een randapparaat zoals een sensor) en een zogenoemde central (een centrale eenheid zoals je smartphone). In deze masterclass maken we van onze laptop en van een ander apparaatje een central om de gegevens van de peripherals uit te lezen.

Er zijn nu twee manieren voor peripherals om hun gegevens uit te sturen. De gemakkelijkste manier is broadcasting. Daarbij stuurt een peripheral continu pakketjes van maximaal 31 bytes aan gegevens rond en alle centrals in de buurt kunnen deze gegevens oppikken. Een temperatuursensor zoals de RuuviTag werkt zo, maar elk BLE-apparaat zendt sowieso zijn aanwezigheid uit.

©PXimport

02 Een-op-eencommunicatie

De tweede manier voor BLE-communicatie heet Generic Attribute Profile (GATT) en werkt met een echte verbinding. De central verbindt met een peripheral en beide apparaten kunnen dan in twee richtingen met elkaar communiceren.

Belangrijk om te weten is dat een peripheral maar met één central tegelijk verbonden kan zijn. Bovendien stopt de peripheral met broadcasten zodra er een verbinding actief is. Daarom is je hartslagsensor bijvoorbeeld niet meer zichtbaar voor andere apparaten zodra je deze in de sport-app op je smartphone gebruikt.

©PXimport

03 Verken bluetooth-apparaten op je smartphone

Genoeg theorie, laten we je hartslag eens uitlezen op je smartphone, dan tonen we wat er op de achtergrond gebeurt. We gaan ervan uit dat je een apparaat hebt dat je hartslag uitleest. Zo niet, volg onze uitleg dan met een ander BLE-apparaat. Je zult dan alleen wat andere eigenschappen zien.

Een goede app die je zowel op Android als iOS kunt gebruiken om je BLE-apparaten te onderzoeken, is nRF Connect. Die is gemaakt door Nordic Semiconductor, een Noors halfgeleiderbedrijf dat draadloze chips voor onder andere BLE produceert. Open je de app, dan scant die onmiddellijk naar BLE-apparaten in je buurt en krijg je ze allemaal te zien met de naam die ze in de broadcastpakketjes adverteren, hun MAC-adres en hun signaalsterkte.

04 Verbind met je hartslagsensor

Als nRF Connect je hartslagsensor vindt (in ons voorbeeld de goedkope Chinese Xanes F15-smartwatch), druk ernaast dan op Connect. Zodra je verbonden bent, zie je in het tabblad Client een heleboel services, met namen als Device Information, Battery Service en Heart Rate. Bij elke service staat ook een UUID, een uniek (hexadecimaal) getal. Al die services zijn samen met hun UUID gedefinieerd in de bluetooth-specificatie.

Als je nu op een van die services klikt (bijvoorbeeld Heart Rate), ontvouwt er zich een lijst met karakteristieken. Elke karakteristiek heeft een naam, zoals Heart Rate Measurement of Body Sensor Location, een UUID, en eigenschappen zoals READ of NOTIFY. Elke karakteristiek stelt een waarde voor die je kunt lezen of in sommige gevallen schrijven. Fabrikanten kunnen bedrijfseigen karakteristieken definiëren of gebruikmaken van de standaardkarakteristieken die in de bluetooth-standaard zijn gedefinieerd.

Druk op de drie puntjes naast Server en dan op Read characteristics. De app leest nu de waardes van alle karakteristieken uit en toont ze. Zo zie je bij de Body Sensor Location de waarde Wrist. Je kunt ook op het downloadicoontje naast een specifieke karakteristiek drukken om alleen die karakteristiek uit te lezen.

©PXimport

05 Web bluetooth

We hebben nu met een smartphone de metingen van de hartslagsensor uitgelezen. Hoe zie je die gegevens op je laptop? Dat kan onder meer met de standaard Web bluetooth, ontwikkeld door Google en voorlopig alleen nog maar ondersteund in Chrome. Web bluetooth laat webapps met apparaten in de buurt te communiceren via bluetooth low-energy. Je hebt hiervoor minstens Chrome versie 56 nodig, en het werkt zowel op Windows, Linux als macOS. De Web Bluetooth Community Group heeft enkele leuke demo’s op zijn GitHub-pagina staan, waaronder het uitlezen van een hartslagsensor. Open de hartslagdemo in Chrome, dan toont de browser de beschikbare bluetooth-apparaten (let op: dit werkt dus alleen voor bluetooth-apparaten die niet al rechtstreeks aan een ander apparaat zijn gekoppeld). Selecteer je hartslagsensor en klik op Koppelen. Daarna krijg je je huidige hartslag op een webpagina te zien, inclusief een grafiekje van de historische gegevens eronder.

©PXimport

06 Arduino-code op een M5Stack Core

Hoe interessant Web bluetooth ook is, je gaat niet de hele tijd naar je computerscherm kijken om je hartslagmeter of een temperatuursensor in het oog te houden. We zijn daarom fan van de M5Stack Core, een ESP32-microcontroller in een behuizing van 5 bij 5 cm met een schermdiagonaal van 2 inch (ook zo’n 5 cm). Het apparaatje ondersteunt wifi en bluetooth, en je programmeert hem eenvoudig via het programma Arduino IDE.

Download Arduino IDE, open het menu Bestand / Voorkeuren en vul bij Additionele Board Beheer URLs de url https://dl.espressif.com/dl/package_esp32_index.json in. Ga dan naar Hulpmiddelen / Board / Board Beheer en installeer het pakket esp32 van Espressif Systems. Ga daarna naar Hulpmiddelen / Bibliotheken beheren en installeer de bibliotheken M5Stack en NimbLE-Arduino. Die eerste ondersteunt het scherm en de knoppen van de M5Stack, die tweede is nodig om via bluetooth low-energy te communiceren.

Selecteer vervolgens Hulpmiddelen / Board / ESP32 Arduino / M5Stack-Core-ESP32 en open het voorbeeldbestand Bestand / Voorbeelden / M5Stack / Basics / HelloWorld. Klik bovenaan links op het icoontje met het vinkje om de code te compileren. Als alles goed gaat, krijg je geen foutmelding. Sluit je M5Stack Core met een usb-kabel aan op je laptop en klik op het icoontje met het pijltje links bovenaan om de code naar het apparaat te flashen. Daarna krijg je “Hello World” op het schermpje te zien.

07 Hartslag op het scherm tonen

De bibliotheek NimBLE-Arduino heeft in zijn GitHub-repository enkele voorbeeldsketches voor Arduino staan – ‘sketch’ is de naam die Arduino IDE gebruikt voor ‘programmacode’. Wij hebben onze code gebaseerd op het voorbeeld NimBLE_Client in de map examples. Download onze aangepaste code via hier door het linkadres te kopiëren door er met je rechtermuisknop op te klikken en Linkadres kopiëren te kiezen en in een ander tabblad in de adresbalk te plakken (de code van het bestand M5Stack-Heart-Rate-Display.ino zit in een zip-bestand en moet je eerst uitpakken).

Als je een hartslagsensor bij de hand hebt, dan kun je de sketch nu gewoon zonder wijzigingen naar je M5Stack flashen. Wil je andere sensors uitlezen, dan leggen we je later in dit artikel uit hoe.

Nadat de M5Stack Core geflasht is, start het apparaatje de nieuwe firmware op. Als je hartslagmeter actief is, komt je hartslag na enkele momenten in het rood in het midden van het scherm. Zo niet (of als je gewoon wil weten wat de firmware op de achtergrond doet), dan open je in Arduino IDE via het menu Hulpmiddelen het venster Seriële monitor. Stel onderaan rechts de snelheid in op 115200 baud. In dit venster krijg je ook informatie te zien wanneer je Arduino-sketch een bluetooth-scan uitvoert, nieuwe apparaten vindt of zijn verbinding verliest.

©PXimport

08 Verbinding maken

Hoe werkt de Arduino-sketch M5Stack-Heart-Rate-Display.ino precies? In het begin geven we met twee include-opdrachten aan dat we functies van M5Stack en NimBLE-Arduino gebruiken. Daarna definiëren we de namen UUID_SERVICE en UUID_CHARACTERISTIC die respectievelijk verwijzen naar de UUID’s van de service en de specifieke karakteristiek waarin we geïnteresseerd zijn. Die gestandaardiseerde UUID’s vind je in een document van de Bluetooth SIG met alle toegekende UUID’s.

Scrol dan een heel stuk naar beneden in de code. Elke Arduino-sketch heeft een functie setup() waarin je de opdrachten plaatst die één keer moeten gebeuren, bij het opstarten van je apparaat. Hier initialiseren we de seriële verbinding die je via de seriële monitor van Arduino IDE kunt uitlezen. We initialiseren ook de hardware van de M5Stack Core en daarna NimBLE-Arduino. Daarna definiëren we welke functie wordt aangeroepen als er bluetooth-peripherals gevonden worden, geven we enkele scaninstellingen in en tot slot starten we een scan.

In de functie loop() wachten we tot er een apparaat gevonden is waarmee we willen verbinden (in dit geval een hartslagmeter). Zodra dat is gevonden, verbinden we ermee (we roepen de functie connectToServer() aan) en starten daarna een nieuwe scan. Die functie connectToServer() handelt het verbinden en herverbinden af, en vraagt ook aan de peripheral om notificaties te sturen bij veranderingen in de karakteristiek waarin we geïnteresseerd zijn (de hartslag).

©PXimport

09 Notificaties

Notificaties zijn belangrijk in bluetooth low-energy om energie te sparen. In plaats van continu een nieuwe waarde op te vragen bij een peripheral, kan de central beter de notificaties voor een specifieke karakteristiek afwachten. De peripheral stuurt dan op eigen initiatief de waarde door wanneer die veranderd is. Dat is wat ook in de functie connectServer() wordt ingesteld.

Als onze hartslagmeter een notificatie stuurt, wordt in onze sketch de functie notifyCB() aangeroepen. In tegenstelling tot de rest van de code, die nogal bewerkelijk is, ziet deze functie er vrij eenvoudig uit:

void notifyCB(NimBLERemoteCharacteristic* pRemoteCharacteristic, uint8_t* pData, size_t length, bool isNotify){

M5.Lcd.clear(BLACK);

M5.Lcd.setTextColor(RED, BLACK);

M5.Lcd.setTextSize(7);

M5.Lcd.setCursor(120, 100);

if(length) {

uint16_t heart_rate_measurement = pData[1];

if(pData[0] & 1) {

heart_rate_measurement += (pData[2] << 8);

}

M5.Lcd.printf("%d", heart_rate_measurement);

}

}

Wat gebeurt hier? We maken het scherm zwart, stellen de tekstkleur en -grootte in, plaatsen de cursor en tonen de meting die we doorkrijgen op het scherm. Voor die meting zelf moeten we de specificatie van de Heart Rate Service op de website van de Bluetooth SIG raadplegen (let op, er gaat gelijk een pdf downloaden). En wie het overzicht van alle beschikbare specificaties wil zien gaat naar www.tiny.cc/bluespecs.

De specificatie zegt dat de eerste byte van pData enkele flags met meta-informatie bevat. De belangrijkste flag voor ons is de eerste bit (dat we selecteren met pData[0] & 1): dit bepaalt of de hartslag in één of twee bytes wordt voorgesteld.

©PXimport

10 Andere informatie uitlezen

Deze Arduino-sketch kun je als basis gebruiken voor projecten die andere informatie via bluetooth moeten uitlezen. De code is zo opgebouwd dat er maar op twee plaatsen aanpassingen nodig zijn. In het begin verander je de waardes van UUID_SERVICE en UUID_CHARACTERISTIC in het UUID van de service respectievelijk de karakteristiek die je wilt uitlezen. In de functie notifyCB() verwerk je dan de gegevens die in pData zitten. De exacte structuur van de data vind je in de specificatie van de service, die je op de website van de Bluetooth SIG vindt.

Als je meerdere services en/of meerdere karakteristieken wilt uitlezen, bekijk dan de voorbeeldcode NimBLE_Client.ino waarvan we bovenstaande code hebben afgeleid. Het voornaamste verschil is dat de functie connectToServer() langer wordt: je loopt daar een voor een alle services na en schrijft je bij elke service in op alle karakteristieken waarin je geïnteresseerd bent. In de functie notifyCB() moet je dan ook controleren voor welke karakteristiek de functie is aangeroepen en afhankelijk daarvan de data decoderen en op het scherm tonen. De voorbeeldcode toont ook hoe je verbindt met een apparaat dat een pincode vereist.

©PXimport

11 Broadcastgegevens ontvangen

Zoals we in de eerste paragraaf van dit artikel uitlegden, is er nog een andere manier om bluetooth-gegevens door te sturen: via broadcasting. Een Arduino-sketch om deze gegevens te ontvangen is veel eenvoudiger, omdat je geen verbinding hoeft te maken en te onderhouden. Ook daarvoor heeft het project NimBLE-Arduino een voorbeeldsketch, BLE_Beacon_Scanner. Op basis daarvan hebben we een sketch voor de M5Stack gemaakt die de uitgezonden temperatuur van een RuuviTag-sensor leest.

Download de code door het linkadres te kopiëren door er met je rechtermuisknop op te klikken en Linkadres kopiëren te kiezen en in een ander tabblad in de adresbalk te plakken (de code van het bestand M5Stack-RuuviTag-Display.ino zit in een zip-bestand en moet je eerst uitpakken). De functie setup() initialiseert het apparaat. De functie loop() voert dan elke twee seconden een scan uit naar bluetooth-apparaten. En de methode onResult van de klasse MyAdvertisedDeviceCallbacks wordt bij het ontvangen van een broadcast uitgevoerd. Daar verwerk je dan de gegevens van de broadcast. In het begin van de code vul je bij MAC_ADDRESS het MAC-adres van je RuuviTag in.

12 Manufacturer data

In die methode onResult controleren we nu eerst of het MAC-adres van het gevonden apparaat overeenkomt met wat we in het begin van de code hebben ingesteld. Zo ja, dan controleren we of het apparaat ‘manufacturer data’ heeft, dat zijn de gegevens in een broadcast. We schrijven die gegevens ook naar Serial, zodat je ze in Arduino IDE met de seriële monitor kunt bekijken.

De manufacturer data begint altijd met twee bytes die het manufacturer ID aangeven. In het geval van Ruuvi zijn dat (hexadecimaal) 99 en 04. We controleren hier dus op en ook of de byte daarna gelijk is aan 3. Dat staat in de protocolspecificatie van de RuuviTag namelijk voor het formaat RAWv1.

©PXimport

13 Gegevens decoderen

Daarna is het een kwestie van de juiste bytes verwerken en naar een temperatuur vertalen. In de protocolspecificatie staat dat het gehele deel (dus het deel voor de komma) van de temperatuur in byte 4 staat en het deel na de komma in byte 5. Voor byte 4 controleren we eerst of de meest linkse bit 1 is, want dan is het een negatief getal. En zo tonen we uiteindelijk de temperatuur op het scherm.

Je kunt nu ook de andere sensordata van de RuuviTag decoderen, zoals de luchtvochtigheid en de spanning van de batterij. Nieuwere RuuviTags gebruiken overigens een ander formaat, namelijk RAWv2. Het is een mooie oefening om dit te proberen te decoderen. En voor andere sensors is er uiteraard ook documentatie te vinden, die je op dezelfde manier in je code kunt integreren.

©PXimport

▼ Volgende artikel
Op zoek naar het ideale Vaderdag-cadeau? Maak kans op een Ninja-airfryer!
© Ninja
Huis

Op zoek naar het ideale Vaderdag-cadeau? Maak kans op een Ninja-airfryer!

Wie regelmatig in de keuken staat, weet hoe prettig het is als een apparaat meerdere taken aankan zonder in te leveren op kwaliteit. De Ninja Foodi MAX Dual Zone Airfryer AF400EU is daar een goed voorbeeld van. Hij frituurt zonder olie, bakt zonder oven en kookt sneller dan je gewend bent. En dankzij de twee gescheiden kookzones is hij ook nog eens razend efficiënt. Speciaal voor Vaderdag mogen we bovendien vier exemplaren weggeven!

De Ninja Foodi MAX Dual Zone Airfryer AF400EU is niet zomaar een airfryer, maar een serieus keukentalent met twee volledig gescheiden kookladen van elk 4,75 liter. Dat betekent dat je moeiteloos een complete maaltijd tegelijk kunt bereiden: bijvoorbeeld een portie kippetjes aan de ene kant en frietjes aan de andere. Dankzij de Sync-functie zijn beide gerechten tegelijk klaar, dus geen lauwe friet meer terwijl het vlees nog moet garen.

En met de Match-functie zet je eenvoudig dezelfde instellingen op beide zones als je juist voor een grotere hoeveelheid van één gerecht gaat. Dat klinkt technisch, maar het komt erop neer dat je minder hoeft na te denken en toch meer op tafel zet. Zelfs vaders die normaal gesproken hun ei nog laten aanbranden krijgen hierdoor ineens vleugels in de keuken.

Lees hier onze review van de Ninja Foodi MAX Dual Zone Airfryer AF400EU

©Ninja

Veelzijdig koken met één apparaat

De meeste keukenapparaten hebben gebruiksaanwijzingen van het formaat boekwerk, maar de bediening van deze airfryer is lekker overzichtelijk. Het digitale display is intuïtief, de knoppen spreken voor zich en de zes vooraf ingestelde functies maken het kiezen makkelijk. Airfryen, bakken, roosteren, opwarmen, drogen of de Max Crisp-stand gebruiken? Alles kan, zonder gedoe met temperatuurinstellingen of baktijden opzoeken. En ja, ook voor de vader die denkt dat een quiche een soort Pokémon is, wordt koken hiermee opeens iets wat hij kan – en misschien zelfs leuk gaat vinden.

Nog een groot voordeel: de Ninja AF400EU is niet alleen sneller dan een oven, hij zorgt ook voor gezonder voedsel. Je gebruikt tot 75 procent minder vet, zonder in te leveren op smaak of crunch. Snacks blijven krokant, kip wordt sappig en groenten behouden hun bite. En als het dan eindelijk tijd is om op te ruimen, blijken ook daar geen excuses meer nodig: de kookladen en de bijbehorende roosters mogen gewoon in de vaatwasser. Geen geschrob, geen gezucht, geen smoesjes.

Vaderdagactie: win een Ninja Foodi MAX Dual Zone Airfryer AF400EU!

Speciaal voor Vaderdag mogen we vier exemplaren van de Ninja Foodi MAX Dual Zone Airfryer AF400EU weggeven. Wil jij er één winnen? Doe dan mee aan onze prijsvraag!

De vraag luidt: Wat is de totale capaciteit van de Ninja Foodi MAX Dual Zone Airfryer AF400EU?

Meedoen is eenvoudig: Stuur je antwoord vóór 10 juni 2025 naar winnen@id.nl met als onderwerp Vaderdagactie. ‼️Vergeet niet je naam en adresgegevens te vermelden‼️ De winnaars krijgen op 16 juni persoonlijk bericht.

▼ Volgende artikel
Van powerbank tot adapter: dit zijn de handigste accessoires voor je laptop
© Daisy Daisy
Huis

Van powerbank tot adapter: dit zijn de handigste accessoires voor je laptop

Wil je het maximale halen uit je laptop? Dan kom je al snel uit bij een reeks accessoires die nét dat beetje extra bieden. Natuurlijk denk je dan aan een goede tas, een losse muis of een extern scherm. Maar er zijn ook minder voor de hand liggende hulpmiddelen die het werken, reizen of ontspannen met je laptop makkelijker en handiger maken.

Meer uit je laptop halen met slimme aanvullingen

Slimme accessoires zorgen voor gemak, comfort en betere prestaties. Ze maken het verschil tussen 'gewoon' werken en écht prettig werken. Van extra aansluitmogelijkheden tot handige tools voor onderweg – er is veel mogelijk. Denk aan: 💻 Accessoires die mobiel werken makkelijker maken 💻 extra aansluitmogelijkheden voor kabels, schermen en netwerken 💻 uitbreidingen voor meer opslag of ergonomisch gemak

Lees ook: Op zoek naar een nieuwe laptop? Dit is waar je op moet letten!

Laptopstandaard: comfortabeler en koeler werken

Een laptopstandaard tilt je scherm op tot een prettig kijkniveau. Dat werkt een stuk prettiger voor je nek en schouders. Ideaal voor aan een bureau, maar ook op de bank geeft het meer stabiliteit. Sommige modellen hebben zelfs een ingebouwde ventilator om de temperatuur van je laptop omlaag te brengen. Minder warmte betekent minder slijtage en een langere levensduur van je laptop.

Powerbank: altijd stroom bij de hand

Onderweg of op reis heb je niet altijd een stopcontact in de buurt. Een krachtige powerbank is dan onmisbaar. Kies er een met voldoende capaciteit – minimaal 20.000 mAh – én voldoende vermogen. Veel laptops hebben minstens 60 watt nodig, sommige lichtere modellen kunnen met 30 watt toe. Varianten met een klein zonnepaneel laden ook op via zonlicht, al gaat dat vrij traag. Handig als extra, maar niet als hoofdbron.

©doucefleur

☀️ + 🔋= 🧑‍💻

Solar powerbanks

Wereldstekker: handig voor op reis

In het buitenland zijn stopcontacten lang niet altijd zoals in Nederland. Met een universele reisstekker (ook wel reisadapter of wereldstekker genoemd) kun je overal terecht. Ook hier is het, net als bij je keuze voor een powerbank, weer belangrijk om erop te letten dat het wattage toereikend is voor je laptop.

Usb-naar-internetadapter: stabiel bekabeld internet

Een wifi-verbinding is de standaard voor laptops, maar zo'n draadloze verbinding is helaas niet altijd stabiel. Vooral op drukke netwerken of in gebouwen met dikke muren kan een kabel betrouwbaarder zijn. Veel moderne laptops hebben geen netwerkaansluiting meer. Met een losse adapter los je dat probleem eenvoudig op. Ga op zoek naar een usb-naar-RJ45-adapter (ook wel ethernetadapter genoemd). Die zijn al te vinden voor minder dan 10 euro. Op veel adapters zitten bovendien extra usb-poorten – altijd handig!

Kaartlezer: bestanden overzetten in één keer

Draadloos bestanden overzetten of gewoon al je foto's in de cloud opslaan werkt over het algemeen prima. Maar een losse kaartlezer kan ook handig zijn. Zeker als je liever werkt met fysieke opslag dan met de cloud. Universele kaartlezers zijn goedkoop, compact en plug-and-play.. Voor een paar euro koop je al een universele kaartlezer, met aansluitingen voor bijvoorbeeld microSD, SDHC en UHS-I.

©Karter13

Een vleugje nostalgie: dvd's en blu-rays afspelen

Dvd-spelers zijn verdwenen uit bijna alle laptops. Heb je nog schijfjes met films, software of back-ups? Dan is een externe speler de oplossing. Voor weinig geld sluit je hem aan via usb en speel je alles alsnog probleemloos af.

Externe harde schijf: ruimte maken en back-ups bewaren

Als de opslagruimte op je laptop volloopt, is een externe harde schijf een logische stap. Je bewaart je bestanden fysiek én hebt een back-up bij de hand. Liever niet afhankelijk van de cloud? Dan is dit een betrouwbare manier om je data veilig te stellen.

Docking station: alles aangesloten in één keer

Met een docking station sluit je met één handeling je laptop aan op meerdere schermen, een toetsenbord, netwerk en andere randapparatuur. Alles via één centrale hub. Ideaal voor vaste werkplekken of als je regelmatig wisselt tussen kantoor en thuis. Sommige modellen hebben ook een ingebouwde laptopstandaard of oplader.