ID.nl logo
USB-buttonbox bouwen met Arduino
© PXimport
Huis

USB-buttonbox bouwen met Arduino

Veel programma’s bieden handige sneltoetsen maar de toetsencombinaties zijn vaak lastig te onthouden. Games en simulators gaan nog een stap verder, en bieden hele schermen met aanpasbare bedieningsopties. Met een usb-buttonbox, die je zelf eenvoudig kunt bouwen, breng je een deel van die functies over naar fysieke toetsen met een beschrijving. Dat ziet er ook nog eens leuk uit en is wellicht de start van een nieuwe hobby.

Veel programma’s kun je via sneltoetsen bedienen, maar het valt niet mee de toetsencombinaties te onthouden. En soms is het toetsenbord niet praktisch of simpelweg niet in de buurt. Voor hedendaagse games geldt dat nog meer. Simulators als Flight Simulator 2020 en DCS World zijn zo realistisch dat je vrijwel elke functie in de cockpit kunt bedienen. Je ontkomt dan bijna niet aan accessoires, zoals een gashendel en joystick voor het vliegen, of een stuurtje om te racen. Op de accessoires vind je veel extra knoppen die je kunt toewijzen aan de gewenste functies. Maar zelfs dan moet je keuzes maken, gezien de talloze bedieningsopties. Een leuke uitbreiding en misschien wel het begin voor een levensecht(e) dashboard of cockpit is een zogenoemde usb-buttonbox, die je vrij eenvoudig zelf kunt maken. Je kunt ze ook inzetten voor bijvoorbeeld een volumeregeling of het bedienen van muziek! Ze zijn ook nog eens betrekkelijk eenvoudig en voor weinig geld te bouwen.

01 Benodigdheden

Het project vraagt om te beginnen uiteraard om een behuizing voor bijvoorbeeld nabij de pc. Van welk materiaal deze is gemaakt, maakt niet uit. Plastic is voordelig en makkelijk om mee te werken, zolang je oppast bij het solderen. Maar bijvoorbeeld aluminium kan ook. Voor de besturing zou je een zogenaamde joystick-controllerbordje met usb kunnen inzetten, maar hier kiezen we voor de flexibiliteit van een goedkope microcontroller.

We gebruiken een kloon van de Arduino Pro Micro (vanaf ongeveer 4 euro). Deze bordjes kun je zien als de kleine versie van de Arduino Leonardo. De basis is ook hier een ATmega32U4 van 8 bit die zich onderscheidt door de volledige usb-functionaliteit.

Microcontrollers op basis van de ATmega328 hebben dat overigens niet en zijn daarom niet geschikt. Voor het programmeren van de microcontroller gebruiken we de bekende Arduino-software. Met deze software worden ook meteen de vereiste drivers geïnstalleerd. Verder heb je wat aansluitkabeltjes nodig, gereedschap en natuurlijk de nodige schakelaars.

©PXimport

02 Gereedschap

Wat gereedschap betreft heb je voor het maken van de verbindingen een soldeerbout met soldeertin nodig. Gebruik je schakelaars met een ronde doorvoer, wat zeker de voorkeur heeft, dan hoef je alleen een gat in de juiste maat te boren. Gebruik een schuifmaat om de vereiste diameter gemakkelijk te bepalen. Verder heb je een boormachine en een voor het materiaal geschikte boor nodig. Een voordelige en praktische optie zijn de zogenoemde stappenboren met meerdere diameters, vooral als je door niet te dik materiaal moet. Je kunt alles met dezelfde boor afhandelen. Daarmee kun je, door deze voorzichtig iets verder te duwen, ook meteen de scherpe randjes er af slijpen. Bovendien kun je grotere diameters boren dan er mogelijk in je boor passen. Zo past een 12mm-boor lang niet altijd in de boorkop, terwijl die diameter voor sommige grotere schakelaars nodig is.

©PXimport

03 Schakelaars en regelaars

We beginnen het project met zes eenvoudige drukknoppen die je aan functies in software toe kunt kennen. Ze worden ook wel momentary pushbutton genoemd. Een kenmerk is dat ze terugveren nadat je ze hebt ingedrukt, als een toets op je toetsenbord. Afhankelijk van je project zijn er allerlei varianten. Zo heb je wipschakelaars die je twee kanten op kunt duwen en dus twee functies bedienen. Ook leuk zijn de bekende grote roodgekleurde paniekbuttons of de knoppen zoals je die op arcadekasten ziet.

Verder kun je allerlei andere soorten schakelaars en regelaars gebruiken. Een contactschakelaar met sleutel bijvoorbeeld, voor het aan- of uitzetten van de motor, of een druk- of wipschakelaar die ook de standen ‘aan’ of ‘uit’ heeft. Ook een leuke toevoeging is een draaiknop die linksom of rechtsom kan draaien, ook wel rotary encoder genoemd. Die is bijvoorbeeld inzetbaar voor een volumeregeling, zoals we verderop in dit artikel laten zien.

04 Aansluiten en configureren

We gaan in deze stap de microcontroller aansluiten op de pc, het bord configureren in Arduino en een klein demoprogramma laten draaien. Hiervoor hoef je nog niets aan te sluiten op de microcontroller. Sluit deze om te beginnen via usb aan op de pc. Als het goed is, gaat direct de rode led aan. Ga je in Windows naar Apparaatbeheer, dan zie je bij Poorten de aangesloten microcontroller, die in ons geval als Arduino Leonardo bootloader is geïdentificeerd, met daarbij de gebruikte com-poort (hier com3). Start nu Arduino. We gaan eerst een extra adres toevoegen voor borden. Ga daarvoor naar Bestand / Voorkeuren en vul achter Meer Board Managers URL’s de volgende url in:

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

Klik dan op OK. Ga naar Hulmiddelen / Board en kies Board Beheer. Je kunt nu SparkFun AVR Boards opzoeken in de lijst. Selecteer deze en kies Installeer. Hierna selecteer je de vrij universele SparkFun Pro Micro onder Hulpmiddelen / Board / SparkFun AVR Boards. Zorg daarna dat je onder Hulpmiddelen / Processor de juiste uitvoering van je bordje (meestal 5V/16 MHz) hebt gekozen!

©PXimport

05 Probeer je microcontroller

De Pro Micro heeft twee ingebouwde leds die het verzenden (TX) en ontvangen (RX) van data laten zien. Je kunt deze meestal niet gebruiken in je programma, maar bij dit bordje kan dat wél. Je programmeert deze zoals iedere digitale in- of uitgang. Voor de RX-led kan dat via pin 17. Voer het onderstaande programma in. Het programma zet de RX-led met vaste tussenpozen (0,5 seconde) aan en uit. Als je het hebt ingevoerd, kies je Schets / Upload (Ctrl+U) en de led zal beginnen te knipperen. Wil je de TX-led gebruiken? Deze bestuur je via een zogeheten macro, met de opdracht TXLED1 om deze aan te zetten en TXLED0 om de led uit te zetten. Programma’s in Arduino volgen steeds deze opzet: in het begin je definities voor bijvoorbeeld pinnummers, een functie setup() voor initialisatie en een lus loop() waarin herhaaldelijk opdrachten worden uitgevoerd.

int RXLED = 17; // Standaard pin voor RX LED

void setup()

{

pinMode(RXLED, OUTPUT); // RX LED als output gebruiken

}

void loop()

{

digitalWrite(RXLED, LOW); // RX LED aan

delay(500); // Wachten...

digitalWrite(RXLED, HIGH); // RX LED uit

delay(500); // Wachten...

}

©PXimport

Aansluitingen op de microcontroller

De Arduino Pro Micro en varianten bieden 18 I/O-pinnen die je allemaal als digitale ingang of uitgang kunt gebruiken, bijvoorbeeld voor het aanzetten van een led of lezen van een drukschakelaar. Deze zijn op de afbeelding lichtblauw gemarkeerd. Van die pinnen kun je er 9 als analoog naar digitaal converter (ADC) inzetten, voor bijvoorbeeld het uitlezen van een potentiometer. Deze zijn op de afbeelding groen gemarkeerd. Er zijn 5 pinnen die voor pulse width modulation (PWM) gebruikt kunnen worden (rood gemarkeerd), zodat je bijvoorbeeld via een pulse-trein de helderheid van een led in je programma kunt regelen. Er zijn meer uitvoermogelijkheden, bijvoorbeeld voor het aansluiten van lcd’s, maar hier beperken we ons tot de genoemde ingangen. De microcontroller krijgt zijn voeding gewoon via de usb-verbinding. Gebruik je de microcontroller voor andere toepassingen dan kun je een voeding op de VCC-pin aansluiten als de spanning precies 3,3 of 5 volt is (afhankelijk van de uitvoering van je bordje!). De RAW-pin biedt spanningsregulatie en is geschikt voor zo’n 6 tot 12 volt.

©PXimport

06 Schakelaar aansluiten

De Pro Micro kan zich dankzij de volledige usb-functionaliteit als muis of toetsenbord gedragen. We beginnen met een eenvoudig voorbeeld waarin via een drukschakelaar een toetsaanslag wordt verstuurd. Hiervoor gebruiken we de standaard Keyboard-bibliotheek van Arduino. Van de drukschakelaar gaat één aansluiting naar ground (GND) en de andere naar een digitale ingang, hier pin 4. Als je het onderstaande programma start, zul je zien dat na het indrukken van de schakelaar de a-toets wordt ontvangen in bijvoorbeeld de teksteditor die je gebruikt. We voegen eerst de bibliotheek toe en definiëren de pin:

#include <Keyboard.h>

int buttonPin = 4; // Button op pin 4

Binnen setup() stellen we daarna de button in als ingang (waar twee methodes voor zijn) en initialiseren de keyboard-emulatie:

void setup()

{

pinMode(buttonPin, INPUT); // Button als ingang instellen

digitalWrite(buttonPin, HIGH); // Zet de button op hoog

// pinMode(buttonPin, INPUT_PULLUP); // Alternatief voor bovenstaande twee regels

Keyboard.begin(); // Init keyboard-emulatie

}

In de lus reageren we op het indrukken van de button. We versturen het karakter a en bouwen een korte vertraging van 200 ms in om te voorkomen dat je scherm vol staat met deze letter.

void loop()

{

if (digitalRead(buttonPin) == 0) // Als button naar laag gaat (ground)...

{

Keyboard.write('a'); // Stuur toets a via toetsenbord

delay(200); // Korte vertraging

}

}

Je kunt het programma op vergelijkbare wijze uitbreiden met de andere drukschakelaars die je op dezelfde manier aansluit: de ene pin naar ground en de andere pin naar een eigen digitale ingang.

©PXimport

07 Speciale toetsencombinaties

Sneltoetsen vereisen in veel programma’s een combinatie met Ctrl of Shift. Ook zulke toetsen kun je programmeren. In plaats van Keyboard.write() gebruik je Keyboard.press(), dat ervoor zorgt dat een bepaalde toets wordt ingedrukt maar pas wordt losgelaten als je een ‘loslaat’-opdracht geeft. Als voorbeeld programmeren we Ctrl+B, dat bijvoorbeeld in het programma Word de optie vetgedrukt aan- of uitzet. Voor de Ctrl-toets kunnen we KEY_LEFT_CTRL invullen. Andere voorbeelden zijn KEY_LEFT_ALT, KEY_ESC, KEY_F1, KEY_TAB en KEY_RETURN. Een volledige lijst met speciale toetsen vind je via www.tiny.cc/keymod. Het programma blijft voor het merendeel gelijk als in stap 6. Je hoeft alleen beide regels in het blok if te vervangen door:

Keyboard.press(KEY_LEFT_CTRL); // Houd Crtl ingedrukt

Keyboard.press('b'); // Houd 'b' ingedrukt

delay(200); // Korte vertraging

Keyboard.releaseAll(); // Laat alle toetsen los

Hier wordt eerst de linker-Ctrl ingedrukt, daarna de toets b en na een korte vertraging worden beide toetsen losgelaten met de opdracht Keyboard.releaseAll().Als je het aangepaste programma gebruikt in Word, zie je dat met de toets de optie vetgedrukt wordt aan- en uitgezet.

©PXimport

08 Bibliotheek toevoegen

De Keyboard-bibliotheek voor Arduino ondersteunt niet alle toetsen. Hierdoor kun je bijvoorbeeld niet de standaard multimediatoetsen programmeren die veel toetsenborden hebben voor het pauzeren van nummers of regelen van het volume, of systeemtoetsen voor het starten van een programma als je browser of e-mailprogramma. In zulke situaties kun je de uitgebreidere HID-Project-bibliotheek gebruiken. Als voorbeeld gebruiken we deze bibliotheek in combinatie met een draaiknop (ofwel rotary encoder). Ze worden onder meer gebruikt om de rotatiesnelheid vast te leggen. Je kunt ze ook prima voor een volumeregeling gebruiken, wat we hier gaan doen.

De draaiknop kun je oneindig in beide richtingen draaien, waarbij linksom en rechtsom in feite aparte toetsaanslagen zijn. Je kunt de rotary encoder bovendien indrukken zoals een druktoets, wat we hier gebruiken om het volume op stil te zetten. Om de bibliotheek toe te voegen ga je in Arduino naar Schets / Bibliotheek gebruiken / Bibliotheken Beheren. Zoek de bibliotheek HID-Project op en kies Installeren.

©PXimport

09 Volumeregelaar toevoegen

We gaan pinnen 5, 6 en 7 op de microcontroller gebruiken. De draaiknop heeft aan één kant drie pinnen. De middelste sluit je aan op ground. De andere twee pinnen zijn voor de draaiactie, respectievelijk linksom en rechtsom. Die sluit je aan op pin 5 en 6. Aan de andere kant zie je twee pinnen voor de drukactie. Hiervan sluit je er weer één aan op ground en de andere op pin 7. Maak een nieuw bestand in Arduino met Bestand / Nieuw. In het programma voegen we eerst de bibliotheek toe en definiëren we de pinnen met de buttons:

#include "HID-Project.h"

#define VOLBUT_UP 6

#define VOLBUT_DOWN 5

#define VOLBUT_PUSH 7

In setup() stellen we de pinnen in als input en maken ze hoog met één commando. Daarna starten we de Consumer-API met Consumer.begin(). Deze API zorgt dat je bijvoorbeeld een mediaspeler kunt bedienen of de browser en andere speciale programma’s kunt openen.

void setup() {

pinMode(VOLBUT_UP, INPUT_PULLUP);

pinMode(VOLBUT_DOWN, INPUT_PULLUP);

pinMode(VOLBUT_PUSH, INPUT_PULLUP);

Consumer.begin();

}

In de lus reageren we op het laag zijn van een input, waarbij we afhankelijk van de button het volume verhogen, verlagen of op stil zetten. Met de vertraging (delay) zul je wat moeten experimenteren.

void loop() {

if (!digitalRead(VOLBUT_UP)) {

Consumer.write(MEDIA_VOL_UP);

delay(120);

}

if (!digitalRead(VOLBUT_DOWN)) {

Consumer.write(MEDIA_VOL_DOWN);

delay(120);

}

if (!digitalRead(VOLBUT_PUSH)) {

Consumer.write(MEDIA_VOL_MUTE);

delay(250);

}

}

©PXimport

10 Andere functies

In het voorbeeld gebruiken we de Consumer-API die we aanroepen met Consumer.begin(). Maar de bibliotheek biedt ook andere opties. Zo kun je op vergelijkbare wijze de zogeheten System-API gebruiken voor systeemfuncties als het afsluiten of laten slapen of ontwaken van je systeem. Verder heb je de Gamepad-API voor het emuleren van een spelcontroller. Ook kun je de Keyboard-API gebruiken, dat eigenlijk een verbeterde versie is van de Keyboard-bibliotheek van Arduino, die ook ongeveer hetzelfde werkt.

In Arduino kun je diverse voorbeelden ophalen via Bestand / Voorbeelden / HID-Project. Wil je een uitgebreidere gamecontroller bouwen, dan is de Arduino Joystick-bibliotheek een aanrader, deze vind je hier. Na het downloaden van het zip-bestand kun je deze aan Arduino toevoegen via Schets / Bibliotheek gebruiken / Voeg .ZIP bibliotheek toe. Open dan bijvoorbeeld Bestand / Voorbeelden / Joystick / GamepadExample of een van de andere voorbeelden. Je zult zien dat er veel overeenkomsten zijn met de in dit artikel gebruikte bibliotheken.

©PXimport

Te veel knoppen … te weinig ingangen?

Wil je een groot aantal knoppen aansluiten, dan kom je al snel ingangen te kort. Gelukkig kun je via een zogenaamde matrix veel meer toetsen aansluiten. Hierbij maak je rijen en kolommen, bijvoorbeeld 4×4 of 5×5. Heb je toch te weinig ingangen? Met een IO-expander kun je uitbreiden. Zo’n module werkt via de IC2-bus die je ook op deze microcontroller vindt. Een voorbeeld is de SX1509. Met slechts twee draden (voor de IC2-bus) krijg je er 16 digitale ingangen bij en daarmee kun je tot 64 buttons in een 8×8-matrix toevoegen!

▼ Volgende artikel
Zo zorg je ervoor dat jouw vriezer optimaal koelt
© qwartm
Huis

Zo zorg je ervoor dat jouw vriezer optimaal koelt

Een vriezer die goed en efficiënt vriest, heeft allerlei voordelen. Zo is het gunstig voor je gezondheid, omdat bacteriën in een ijskoude vriezer minder kans krijgen. Ook bespaar je energie én hoef je je vriezer minder vaak te ontdooien. Met een paar simpele stappen zorg je ervoor dat jouw vriezer optimaal koelt.

Wil je dat je diepvriesproducten zo lang mogelijk vers blijven en je je vriezer niet steeds hoeft te ontdooien? Dan is het belangrijk dat je vriezer efficiënt koelt, zodat er zo min mogelijk ijsvorming in het vriesvak ontstaat. Dit artikel vertelt je hoe je dat voor elkaar krijgt. • Het instellen van de juiste temperatuur • Slim invriezen • Goed vullen (maar niet te vol) • Regelmatig ontdooien • De condensor schoonmaken

Lees ook: Hier moet je op letten bij de aankoop van een nieuwe vriezer

De juiste temperatuur

Een goedwerkende vriezer begint met het instellen van de juiste temperatuur. Is je vriezer te warm, dan bederft voedsel sneller en zal er door het overtollige water sneller ijsvorming in het vriesvak ontstaan. In principe zijn alle temperaturen onder de -18°C goed, maar hoe kouder je je vriezer instelt, hoe meer energie hij verbruikt. Met een temperatuur van -18°C bewaar je je voedsel veilig, blijven voedingsstoffen lang behouden én ben je energiezuinig bezig. Veel vriezers beschikken over een ingebouwde thermostaat, vaak in de vorm van een draaiknop, waarop je de temperatuur kunt instellen. Heeft jouw vriezer dit niet, dan kun je een losse thermometer aanschaffen om de temperatuur in je vriezer te controleren.

Slim invriezen

Ook de manier waarop je je eten invriest, heeft veel invloed op hoe efficiënt jouw vriezer koelt. Zo laat voedsel dat nog warm is de temperatuur in je vriezer snel stijgen, waardoor voedingsmiddelen sneller bederven en je te maken kunt krijgen met ijsvorming. Het is dus verstandig om je kliekjes eerst op kamertemperatuur te laten komen voor je ze in de vriezer stopt. Om ervoor te zorgen dat het eten snel de juiste temperatuur bereikt, is het daarnaast beter om kleine porties in te vriezen. Let er daarbij op dat je luchtdichte bakjes of zakjes gebruikt, want als ingevroren eten in contact komt met lucht kan er vriesbrand op voedingsmiddelen ontstaan.

©qwartm

Een beetje overzicht in je vriezer is ook wel zo fijn. Zo weet je exact wat waar staat en hoef je de deur van de vriezer niet elke keer onnodig lang open te laten staan. Daarmee maak je het voor je vriezer een stuk makkelijker om de temperatuur vervolgens weer omlaag te krijgen. Je kunt bijvoorbeeld producten die je als eerste gebruikt voorin je vriezer zetten en overige producten meer naar achteren. Of plak labels op je bakjes met de data waarop je de producten hebt ingevroren. Ook kun je regelmatig even kijken welke producten weggegooid kunnen worden, zodat het geen rommeltje wordt in je vriezer.

Handig: invriezen in diepvriesbakjes

Dan kun je lekker stapelen!

Goed vullen (maar niet te vol)

Is jouw vriezer vaak maar voor de helft gevuld? Dat is zonde, want een halfvolle vriezer verbruikt veel onnodige energie. Misschien vind je in je keuken nog wat groente of fruit dat je niet van plan bent om op korte termijn op te eten. Mocht dat niet het geval zijn, dan kun je altijd een paar halfgevulde waterflessen in je vriezer leggen. Voor het afkoelen van producten (massa) hoeft een vriezer namelijk minder hard te werken dan voor het afkoelen van lucht. En omdat producten koude lucht goed vasthouden, gaat er bij het openen van je vriezerdeur minder kou verloren. Let op: een te volle vriezer is ook niet goed, want dit belemmert de luchtcirculatie en veroorzaakt ongelijke temperaturen in je vriezer.

Regelmatig ontdooien

IJsvorming beperkt niet alleen de ruimte in je vriezer, maar maakt ook dat het apparaat minder efficiënt gaat werken. IJs op de wanden van je vriezer werkt namelijk als een soort isolatielaag, waardoor het apparaat minder goed in staat is om warmte naar buiten af te voeren. Daar komt nog bij dat als ijsvorming zich op voedsel nestelt, vooral als dat niet luchtdicht is ingepakt, er vriesbrand op voedingsmiddelen kan ontstaan. Heeft jouw vriezer geen No Frost-functie? Dan moet je helaas zelf regelmatig aan de bak om het ijs uit je vriezer te verwijderen. Om het ontdooiingsproces te versnellen, kun je een bak met heet water in de vriezer plaatsen of het ijs met een föhn verwarmen. Als je je vriezer toch ontdooit, maak 'm dan meteen goed schoon. Ook op vuil in je vriezer kan namelijk ijs of rijp ontstaan.

©Thomas Heitz

De condensor schoonmaken

Maak tot slot, als dat mogelijk is, de condensor van je vriezer regelmatig schoon. De condensor is het zwarte rooster aan de achterkant van je vriezer dat ervoor zorgt dat warmte goed wordt afgevoerd. Zit de condensor vol met stof of vuil, dan blijft warmte in je vriezer circuleren. De condensor kun je eenvoudig schoonmaken met een zachte borstel of met een stofzuiger met borstel-opzetstuk.

▼ Volgende artikel
Android-smartphone zónder Google? Zo doe je dat
© ltyuan - stock.adobe.com
Huis

Android-smartphone zónder Google? Zo doe je dat

Op een smartphone met Android wordt standaard alles aan je Google-account gekoppeld. Daardoor weet het bedrijf heel wat over jou en niet iedereen voelt zich daar goed bij. Gelukkig zijn er ook manieren om Android te gebruiken zonder dat je Google volledige inzicht in je digitale leven geeft, bijvoorbeeld met de alternatieve firmware LineageOS met microG.

In dit artikel laten we zien hoe je een Android-smartphone in kunt stellen zonder gebruik te maken van Google:

• Installeer LineageOS for microG • Configureer microG • Zorg ervoor dat je pushnotificaties kunt ontvangen • Installeer Local GSM Location zodat apps locatiegegevens kunnen opvragen • Installeer apps via F-Droid en Aurora Store

Mag het iets minder rigoureus? Lees dan: Ontsnap aan Googles ecosysteem

Wanneer je een Android-smartphone of -tablet installeert, is aanmelden met een Google-account een van de eerste dingen die je doet. Vanaf dat moment zijn alle Google-apps zoals Gmail, Google Maps, Chrome, Google Calendar en Google Play op je apparaat aan je account gekoppeld. Handig … maar zo krijgt Google wel heel veel controle over je digitale leven.

In principe kun je op je Android-apparaat gewoon geen Google-account aanmaken en alternatieve apps installeren. Maar omdat het hele besturingssysteem rond Google-componenten is gebouwd, is dat knap lastig. Dan installeer je beter een alternatieve Android-firmware die geen koppeling met het Google-ecosysteem heeft ingebouwd. In dit artikel doen we dat met LineageOS en microG, en hebben we het ook over enkele andere mogelijkheden.

1 Android Open Source Project

Voordat we naar die alternatieven kijken, moeten we het even hebben over hoe die mogelijk zijn als Google-diensten zo nauw met Android verweven zijn. De basis van Android bestaat uit het Android Open Source Project (AOSP). Dit is een volwaardig mobiel besturingssysteem waarvan de broncode beschikbaar is onder een opensource-licentie. Fabrikanten van Android-apparaten voegen hier drivers aan toe om Android op hun hardware te laten werken, en vaak nog eigen aanpassingen. Andere belangrijke componenten die we in een Android-systeem verwachten, zoals Google Play Services, zijn niet opensource. Wanneer je een Android-telefoon koopt, staat daarop dus een besturingssysteem dat door de fabrikant is gecreëerd op basis van AOSP, Google Play Services en eigen aanpassingen.

LineageOS is een project dat de broncode van AOSP neemt en daar extra functionaliteit aan toevoegt, vaak met de focus op aanpasbaarheid, beveiliging en privacy. De nieuwste versie is LineageOS 21, gebaseerd op Android 14. Het biedt voor zo’n tweehonderd apparaten installeerbare images met de drivers van de fabrikanten ingebouwd. Staat je toestel niet in de lijst met apparaten, dan kun je LineageOS helaas niet installeren. De apps van Google zijn (net zoals Google Play Services) hierin niet opgenomen, omdat de licentie dat niet toestaat. Die kun je wel achteraf installeren, waarna je je met een Google-account kunt aanmelden en LineageOS zoals de standaard Android-versie op je telefoon is te gebruiken.

LineageOS ondersteunt zo’n tweehonderd apparaten.

2 MicroG

Nu zou je denken dat je zonder de apps van Google wel verder kunt, maar dat is helaas niet het geval. Google heeft gaandeweg meer en meer functionaliteit van AOSP naar Google Play Services en andere propriëtaire componenten verplaatst. Die vereisen een Google-account of tracken je op een andere manier. En heel wat Android-apps maken van deze propriëtaire componenten gebruik. Als je die apps op LineageOS zonder Google-apps installeert, dan zouden die in het beste geval maar deels werken en in het slechtste geval starten ze niet eens op.

Het project microG biedt hier een oplossing voor. Dit is een opensource-project dat allerlei propriëtaire Android-componenten van Google her-implementeert. Zo biedt GmsCore een alternatieve implementatie voor Google Play Services. Ook Google Cloud Messaging (voor pushnotificaties) en geolocalisatie zijn op deze manier mogelijk. De versies van microG kun je dan op bijvoorbeeld LineageOS gebruiken, waardoor allerlei Android-apps toch weer werken zonder dat je een Google-account of Google-apps nodig hebt.

Het microG-project her-implementeert een deel van Google Play Services.

3 LineageOS met microG

Helaas kun je microG niet zomaar op LineageOS installeren. MicroG werkt namelijk alleen op een Android-versie met ‘signature spoofing’. Die truc zorgt ervoor dat de componenten van microG zich als Google Play Services kunnen voordoen, waardoor apps er mee samenwerken zonder dat ze weten dat het niet om een officiële Google-dienst gaat. Maar de ontwikkelaars van LineageOS hebben om diverse redenen besloten om signature spoofing niet op te nemen.

Er zijn manieren om een al geïnstalleerd Android-systeem te patchen zodat het signature spoofing ondersteunt. MicroG biedt ook zijn eigen versie van LineageOS aan: LineageOS for microG. Die versie heeft een minimale vorm van signature spoofing ingebouwd die alleen geprivilegieerde systeem-apps toelaat om de spoofing-permissie te gebruiken en alleen na toestemming van de gebruiker. LineageOS for microG ondersteunt exact dezelfde apparaten als LineageOS en verspreidt twee keer per maand over-the-air-updates.

LineageOS for microG biedt een opensource Android-versie zonder Google-apps.

Alternatieven voor LineageOS/microG

/e/OS Zo is /e/OS op dezelfde combinatie van LineageOS met microG gebaseerd, maar voegt daar nog een privacygerichte standaardconfiguratie aan toe. Je kunt /e/OS zelf installeren op een ondersteunde telefoon, of een telefoon bij Murena kopen met /e/OS voorgeïnstalleerd. De /e/ Foundation, die /e/OS ontwikkelt, sponsort sinds 2020 de ontwikkeling van microG.   Calyxos Ook Calyxos richt zich op privacybewuste gebruikers. Het heeft microG aan boord en komt met toepassingen zoals de chat-app Signal en Organic Maps, dat kaarten van OpenStreetMap gebruikt. Het ondersteunt wel minder telefoons dan de eerdergenoemde oplossingen, voornamelijk Pixel-telefoons van Google.

GrapheneOS GrapheneOS richt zich op hetzelfde publiek, maar doet dat zonder microG. In plaats daarvan kun je Google Play Services in een afgescheiden sandbox draaien voor de apps die dat nodig hebben. Het besturingssysteem ondersteunt alleen tien Google Pixel-apparaten.

Met /e/OS heb je een Android-systeem zonder Google en een privacygerichte standaardconfiguratie.

Klinkt het als te veel moeite?

De keuze in Android-smartphones is reuze

4 Installeren

De installatie van LineageOS for microG gebeurt exact hetzelfde als bij LineageOS: zoek je toestel op in de lijst met ondersteunde apparaten van de LineageOS Wiki en volg daar de installatiegids. Het enige verschil is dat je de installatiebestanden voor je apparaat niet van de website van LineageOS downloadt, maar van de downloadpagina voor LineageOS for microG. Voor de Fairphone 5 vind je die bijvoorbeeld in de map FP5.

Installeer eerst Android Debug Bridge en fastboot en volg op die pagina ook de instructies om de usb-foutopsporingsmodus op je Android-apparaat in te stellen. Daarna dien je op sommige apparaten de bootloader te ontgrendelen, zodat je alternatieve firmware kunt installeren. De instructies hangen van je apparaat af. Op sommige apparaten moet je ook nog extra partities flashen met fastboot. Let op dat je de downloadbestanden van LineageOS for microG flasht en niet degene waarnaar in de installatie-instructies van LineageOS wordt verwezen.

Daarna flash je het herstelbestand van LineageOS for microG en start je het apparaat in herstelmodus. Voer dan een factory reset uit. Nu kun je eindelijk het zip-bestand met het rootbestandssysteem van LineageOS for microG naar je telefoon flashen met de opdracht adb vanaf je computer. De stap om een Google Apps-add-on te installeren sla je over, want we willen Google juist vermijden. Herstart daarna je telefoon, waarna je in LineageOS for microG opstart.

Volg heel nauwgezet alle waarschuwingen en tips in de installatie-instructies van LineageOS.

5 Configureren

Na de eerste keer opstarten, word je verwelkomd door de configuratiewizard, waarin je onder andere je wifi-netwerk instelt. Maar in tegenstelling tot een normale Android-installatie krijg je nu niet de vraag om een Google-account in te voeren. Wanneer de initiële configuratie van LineageOS is voltooid, open je de app microG Settings. Klik dan op Self-Check. Uiteindelijk moet de hele lijst met controles aangevinkt zijn. Je moet hiervoor diverse permissies aan de app toekennen, zodat microG zijn werk kan doen.

Keer terug naar het hoofdvenster van microG Settings. Hier staan allerlei functies standaard uitgeschakeld en het is aan jou om te kiezen welke je inschakelt. Zo kun je hier een Google-account toevoegen, maar dat doen we in het kader van dit artikel juist niet. Exposure Notifications kun je niet hier inschakelen; daarvoor dien je een app te installeren die deze API gebruikt. Google SafetyNet kun je hier wel inschakelen. Sommige apps vereisen deze functie om te controleren of je Android-apparaat wel veilig is. Mocht je zo’n app gebruiken, schakel die functie dan hier in.

Geef microG alle permissies die het nodig heeft om zijn taken uit te voeren.

6 Pushnotificaties

Als je nu apps zou installeren, zou je merken dat je geen pushnotificaties krijgt. Veel apps, onder meer WhatsApp en Slack, maken hiervoor immers gebruik van Google Cloud Messaging. MicroG implementeert dit ook, maar heeft dit standaard uitgeschakeld. Om pushnotificaties naar je apparaat te kunnen sturen, moet Google je apparaat ook kunnen identificeren aan de hand van een uniek apparaat-ID. Ga daarvoor in microG Settings naar Google device registration en schakel Register device in. Standaard (in het profiel Native) genereert microG nu een ID waaruit Google je apparaattype en softwareversie kan afleiden, maar niet het serienummer. Het profiel Real geeft ook het eigenlijke serienummer aan Google door. Er zijn ook profielen om je voor een Google Nexus 5X of Motorola Moto G uit te geven, voor als je zo weinig mogelijk informatie wilt prijsgeven. Als je een Google-account hebt toegevoegd, wordt dit overigens ook bij je apparaatregistratie aan Google doorgegeven.

Nadat je apparaat bij Google is geregistreerd, tik je op Cloud Messaging en vink je Receive push notifications aan. Zodra je apps installeert die van Google Cloud Messaging gebruikmaken, komen ze hier in de lijst te staan. Als je merkt dat je notificaties met vertraging aankomen, tik dan op de drie puntjes bovenaan rechts, dan op Advanced en pas de instellingen voor pushnotificaties per netwerk aan. Zet ze bijvoorbeeld op Ping interval: 60 seconds. Maar dit is alleen nodig als de netwerkkwaliteit laag is, de standaardwaarde Automatic zou op de meeste netwerken voldoende moeten zijn.

Dankzij microG kunnen je apps ook pushnotificaties ontvangen.

7 Locatiemodules

Diverse apps vragen je locatie op, bijvoorbeeld om een relevante selectie van nabije winkels of laadpalen te tonen. Maar als ze daarvoor altijd je gps gebruiken, belast dat de batterij van je telefoon te veel. Bovendien hoeft die locatie niet altijd zo precies te zijn als van je gps. Google heeft daarvoor de component Network Location Provider, die communiceert met servers van Google om bijvoorbeeld op basis van de zichtbare wifi-netwerken te bepalen waar je apparaat zich bevindt.

In de instellingen van microG kun je ook hiervoor een alternatief instellen. Tik daarvoor op Location modules. Standaard bood microG één geolocalisatiemodule die op basis van gsm-netwerken en wifi-toegangspunten in de buurt je locatie bepaalt: Mozilla Location Service. Helaas is die dienst inmiddels stopgezet. Je kunt wel de app Local GSM Location installeren en de locatiedienst die ze aanbiedt daarna hier inschakelen.

MicroG kan ook je locatie bepalen zonder servers van Google.

8 OpenCelliD gebruiken

Tik daarna op de module en dan op Configure. Geef de app toestemming om altijd toegang tot je locatie te krijgen en daarna om bestanden op te slaan. Maak nu een gratis OpenCelliD-account door op www.opencellid.org op Sign Up te klikken. Klik op de verificatielink en dan in het dashboard op Access Tokens. Je ziet daar één toegangstoken. Klik op Show Token en kopieer die.

Open dan op je telefoon weer de configuratie van de locatiemodule, tik linksboven op het menu en dan op Advanced Settings. Vul bij OpenCellID Access Token je token in. Keer terug, open Settings en vink bij Sources de optie OpenCellID aan. Keer weer terug, tik op Database / Create Database. De module downloadt nu de locatiedatabase naar je telefoon. Op een later moment kun je altijd op Update Database tikken om de database bij te werken.

Haal locatiedata uit de database van OpenCelliD.

Geen Google, wel Apple?

Met een iPhone heb je niets te maken met het Google-ecosysteem

9 Apps installeren met F-Droid

LineageOS for microG komt standaard met F-Droid, een appwinkel voor opensource-apps. Zo kun je hiermee de app Local GSM Location installeren, maar ook apps als Aegis Authenticator voor tweefactorauthenticatie, Joplin voor todo-lijstjes, Organic Maps voor offline navigatie, Syncthing voor synchronisatie van je bestanden, apps voor Home Assistant en openHAB, en nog veel meer. Voor veel propriëtaire Android-apps bestaan er opensource-alternatieven die je in F-Droid vindt. Ook apps updaten gebeurt in F-Droid. In de instellingen kun je zelfs automatische updates instellen.

Opvallend is dat F-Droid per app de zogenoemde anti-functies toont, bijvoorbeeld of de app gebruikmaakt van een propriëtaire back-end of je activiteiten aan de makers rapporteert. Ook de door de app gevraagde machtigingen toont F-Droid bij elke app. Zo kun je op basis van de anti-functies en machtigingen beslissen of je de app wel met deze functies wilt gebruiken of voldoende vertrouwt.

F-Droid toont bij elke app de ‘anti-functies’, functies die je misschien minder leuk vindt.

10 Apps installeren met Aurora Store

Op F-Droid vind je alleen opensource-apps. Voor apps als WhatsApp, Slack, Snapchat, Instagram, TikTok, Spotify en meer heb je een andere bron nodig. Maar zonder een Google-account kan dat niet met Google Play Store. Gelukkig bestaat er een alternatief: Aurora Store. Dit is een onofficiële opensource-client voor de Google Play Store. Je kunt hiermee dus apps op de Google Play Store zoeken, downloaden en updaten. Dat kan met een Google-account, maar ook anoniem. Aurora Store koppelt je dan aan een van de vele anonieme gebruikersaccounts. Soms lukt het aanmelden niet. Probeer het dan opnieuw, dan word je aan een willekeurig ander account gekoppeld.

Net zoals in Google Play Store krijg je in Aurora Store apps te zien per categorie, inclusief lijstjes met de populairste apps of apps die voor jou zijn aangeraden. De mogelijkheden zijn minder uitgebreid dan met Google Play Store. Zo kun je geen betaalde apps downloaden of updaten. Bovendien werken heel wat in-app-functies van allerlei apps niet wanneer je Aurora Store anoniem gebruikt. Soms krijg je bepaalde apps ook niet te zien, omdat het anonieme account dat je op dat moment gebruikt van een bepaald land is waar de app niet is toegelaten. Tik in dat geval bovenaan rechts op het tandwiel, dan op Manage your account / Log uit en log weer in als Anoniem. Je krijgt dan een willekeurig ander anoniem account en kunt opnieuw proberen of je de gewenste app vindt.

Met Aurora Store download en update je anoniem apps uit de Google Play Store.

11 Alternatieven voor Google-apps

Nu je een Android-systeem zonder Google-account hebt, moet je uiteraard voor alle Google-apps nog alternatieven zoeken. Wil je onmiddellijk een heel ecosysteem, dan loont het de moeite om naar Proton te kijken. Je kunt gratis een account maken bij deze dienstenprovider die zich focust op privacy en geen toegang heeft tot je gegevens dankzij end-to-end encryptie. Voor wie meer opslag en mogelijkheden wil, biedt Proton ook betaalde abonnementen aan. De apps Proton Mail, Proton Calendar, Proton Drive, Proton VPN en Proton Pass zijn te vinden in F-Droid en Aurora Store.

Maar je hoeft jezelf niet aan één ecosysteem te verbinden. Je kunt perfect losse apps installeren (zoals de mail-app K-9 Mail) of met DAVx5 in combinatie met een CalDAV/CardDAV-server je agenda en contacten in de standaard-apps van LineageOS integreren. Als wachtwoordbeheerder kun je bijvoorbeeld de app van Bitwarden installeren, in combinatie met de server van Bitwarden of je eigen Vaultwarden-server. Voor tweefactorauthenticatie is Aegis Authenticator een goede keuze.

Als je gewend bent om je browsergeschiedenis en -tabs tussen verschillende apparaten te synchroniseren met Google Chrome, dan is er ook daarvoor een alternatief zonder Google-account. Mozilla biedt een vergelijkbare functie voor Firefox aan met Firefox Sync. Als je de Firefox-app op LineageOS installeert en een gratis Mozilla-account aanmaakt, kun je dus ook je tabs synchroniseren. Interessant om te weten is dat dit met end-to-end encryptie werkt. Mozilla krijgt dus niet te zien welke webpagina’s je bezoekt.

Proton biedt een heel ecosysteem aan van diensten met end-to-end encryptie.

Watch on YouTube