Inleiding
Als je een moderne auto koopt, is de kans groot dat er een navigatie- en entertainmentsysteem is ingebouwd of ten minste als upgrade beschikbaar is. Maar niet iedereen rijdt in een moderne auto en er zijn nog genoeg auto’s op de weg die het enkel met een kleine radio moeten doen. Vroeger kocht je dan een TomTom of vergelijkbaar kastje om tegen de voorruit te plakken, maar tegenwoordig hebben mensen vaak hun telefoon waar een navigatieapp op draait, in een houdertje.
Ideaal is dat niet. Telefoonschermen zijn relatief klein en de interface is er niet op gemaakt om die tijdens het rijden en van een afstandje te bedienen. Daarnaast zijn er allerlei zaken die kunnen afleiden, zoals notificaties. Google introduceerde daarom enkele jaren terug Android Auto, een systeem waarbij je je telefoon via usb inplugt en het ingebouwde scherm van de auto als tweede scherm wordt gebruikt. Daarop wordt dan een speciale versie van de interface getoond, met extra grote knoppen en minder afleiding.
De normale Android-interface is daarbij verborgen. Je ziet enkel tabs voor navigatie, bellen en muziek, samen met een homescreen waarop informatie samenkomt, zoals het weer, recente bestemmingen, vaste routes en komende afspraken. Notificaties worden alleen getoond van apps die Android Auto-ondersteuning hebben: in de regel messaging-apps als WhatsApp en Telegram. Volledige berichten zie je niet, enkel dat er een notificatie van een van die apps binnenkomt, met de mogelijkheid om de inhoud te laten voorlezen of via spraak te antwoorden. Ook kun je de app op mute zetten.
Disclaimer
Dit project is opgebouwd rondom opensourcesoftware waarbij bestaande functionaliteit van Android Auto reversed engineered is. Op het moment van schrijven werkt alles perfect, maar het kan altijd zijn dat Google dit soort oplossingen in de toekomst actief gaat blokkeren. De makers van OpenAuto en Crankshaft garanderen ook niet dat de software bugvrij is of nooit zal crashen. Verder willen we er nog duidelijk op wijzen dat je tijdens het rijden te allen tijde goed op de weg moet letten, ook met mooie speeltjes in je auto.
Muziekapps mogen geen eigen interface gebruiken in Android Auto. Google heeft de mediaspeler gestandaardiseerd en apps kunnen alleen wat accenten aanpassen. Zo is de kleurstelling bij Spotify groen met zwart, maar luister je podcasts via een app als PocketCasts, dan wordt bijvoorbeeld rood gebruikt. Net als bij de chatapps moeten ontwikkelaars expliciet ondersteuning voor Android Auto inbouwen, anders zijn de apps niet te gebruiken. Een en ander moet ervoor zorgen dat je als autobestuurder minder met de interface in de weer bent tijdens het rijden en zoveel mogelijk met je stem kunt doen.
Deze software kan los op de telefoon draaien, maar fijner is natuurlijk om het op een groot scherm terug te zien. Dat werkt dan alleen als je auto een ingebouwd scherm heeft en Android Auto ondersteunt, of als er ruimte is om een double din-radio toe te voegen. Maar wat als je nog in een oudere auto rijdt, die geen ruimte heeft voor een inbouwradio met scherm? Dan maak je zelf een Android Auto-headunit, op basis van een Raspberry Pi. In deze .Build laten we je zien hoe je relatief eenvoudig een extra scherm aan je auto toevoegt waarop je Android Auto kunt draaien. Dat is mogelijk omdat enkele ontwikkelaars de software erachter reverse engineered hebben en een emulator, genaamd OpenAuto, hebben gebouwd. Voor Apples vergelijkbare CarPlay-systeem is dat nog niet gebeurd, dus deze .Build richt zich alleen op Android.
Wat heb je nodig
De Android Auto-unit die we gaan maken, wordt opgebouwd rondom een Raspberry Pi, een touchscreen, een behuizing en nog wat randapparatuur. Wij hebben gekozen voor een versie die je met een zuignap bevestigt, die door een autolader wordt gevoed en die audio doorstuurt via een 3,5mm-kabel. Dat maakt hem zo universeel mogelijk en compatibel met een groot aantal typen auto’s. Je kunt in je eigen versie ook andere keuzes maken, waardoor hij wellicht mooier integreert met de auto die jij rijdt. Daar komen we in dit artikel een aantal keer op terug.
/i/2002422064.jpeg?f=imagearticlefull)
Er zijn verschillende varianten van de Pi beschikbaar en hoewel de software ook werkt op oudere versies, kiezen wij voor de 3B+ vanwege de betere prestaties en snellere wifi. De software installeren we op een micro-sd-kaartje van 4GB. De software die we installeren, heet Crankshaft; een kant en klare Linux-distributie met OpenAuto ingebakken. Je hoeft enkel een image naar de sd-kaart weg te schrijven en de rest wordt voor je geregeld. We kiezen daarbij voor de Crankshaft-NG-variant, een versie waarvan de ontwikkeling op een hoger tempo gebeurt.
Voor het touchscreen heb je verschillende opties. Omdat de Raspberry Pi over een hdmi-uitgang beschikt, kun je een scala aan schermen aansluiten. We zoeken echter niet zomaar een scherm, maar een touchscreen. Bij sommige thirdpartyschermen zul je dus ook nog een usb-kabel van je scherm naar je Pi moeten trekken om de input door te sturen. Daarbij is het belangrijk dat Raspbian, de onderliggende Linux-distro waarop Crankshaft draait, overweg kan met de gebruikte touchcontroller.
Boodschappenlijst
Raspberry Pi 3B+ |
€ 39,00 |
7” Raspberry Pi-touchscreen |
€ 79,95 |
ModMyPi-behuizing |
€ 17,95 |
Dashboardhouder |
€ 6,15 |
4GB-micro-sd-kaart |
€ 7,90 |
Autolader |
€ 15,00 |
Usb-microfoon |
€ 29,95 |
Usb-a naar usb-c-kabel |
€ 6,99 |
CR1220-batterij |
€ 1,95 |
Shim RTC |
€ 14,95 |
Basisversie |
€ 219,79 |
|
|
Raspberry Pi-camera |
€ 29,95 |
Hdmi-converter voor Pi-camera |
€ 13,27 |
Hdmi-kabel |
€ 6,95 |
Knop voor achteruitrijcamera |
€ 1,95 |
Met camera |
€ 271,91 |
Om het onszelf wat makkelijker te maken, hebben we dan ook gekozen voor het officiële 7”-touchschreen van de Rasperry Pi-foundation. Dit sluit je aan via een ribboncable en twee pinnen op de gpio-header, en wordt perfect ondersteunt door de software. Het scherm heeft een resolutie van 800×480 pixels, wat op dit formaat en bij deze kijkafstand in onze ogen net aan voldoende is.
Voor de voeding voldoet elke autolader met een micro-usb-kabel die tenminste 2A kan leveren. Bespaar hier niet op; goedkopere laders kunnen vaak te weinig stroom leveren om zowel de Pi als het scherm goed te voeden. Je merkt dit aan het icoon van een bliksemschicht in het scherm.
Het laatste stukje randapparatuur is een usb-microfoon. Er is slechts één 3,5mm-poort aanwezig en die gebruiken we om de audio naar de stereo te sturen. We hadden ook kunnen kiezen voor een dongle die een usb-poort splitst in een 3,5mm-in- en uitgang, maar dat is weer een extra onderdeel om weg te werken.
Dit alles moet natuurlijk ergens ingebouwd worden. Je hebt online de keuze uit verschillende behuizingen die gemaakt zijn voor de Raspberry Pi en het 7”-touchscreen. Wij hebben gekozen voor een behuizing van ModMyPi, omdat deze de hardware mooi afschermt en toch alle aansluitingen beschikbaar laat. Het staat je echter vrij te kiezen wat je mooi vindt. Misschien wil je zelfs een eigen behuizing ontwerpen en fabriceren met een 3d-printer. Zolang er maar genoeg ruimte is voor alle hardware en het geheel zich ook rondom het dashboard laat bevestigen, zijn er weinig beperkingen. Let wel op hoe je het scherm monteert; de officiële display heeft duidelijk één superieure verticale kijkhoek. Houd er dus rekening mee of hij boven of onder het niveau van je ogen wordt geplaatst.
Voor deze .Build hebben we een autohouder met zuignap en magneetaansluiting gebruikt. Dat laatste is handig, omdat houders met een knijpconstructie de aansluitingen op de Pi kunnen blokkeren. Voor onze houder plakken we een magneetstikker op de achterkant van de behuizing en gaat de hele behuizing vervolgens tegen de houder aan. Houd er bij het kopen van een houder rekening mee dat hij sterk genoeg moet zijn om de Pi en behuizing te dragen. Zoek daarom een houder die achter het kogelgewricht een schroef heeft om deze mee vast te draaien.
Als extraatje gaan we de unit ook nog voorzien van een parkeercamera op basis van een Raspberry Pi-cameramodule. Omdat deze normaal met een korte ribboncable wordt aangesloten, hebben we twee extra pcb’s besteld die de ribboncableaansluiting omzetten naar een hdmi-opening. Zo kun je de camera eenvoudig een eind weg van de Pi monteren. Onze camera heeft een resolutie van vijf megapixel en een wijde beeldhoek van 160 graden. Aan weerszijden zitten infraroodlampjes, zodat hij ook in het donker nog bruikbaar beeld laat zien.
Assembleren en software
Om het touchscreen met de Pi te verbinden, is een extra printplaatje nodig, dat gelukkig op het scherm is voorgemonteerd. Op dat printplaatje zit een aansluiting voor een ribboncable, vergelijkbaar met de aansluiting op de Pi zelf. Om deze te verbinden, moet je simpelweg de sluiting van de connector iets omhoog wippen, waarna je de kabel erin kunt stoppen en de sluiting weer kunt dichtduwen. Zowel het beeld als de touchinput zal over deze kabel lopen.
Het scherm heeft natuurlijk ook nog stroom nodig en dat wordt geleverd via twee gpio-pinnen op de Raspberry Pi. Bij het scherm zijn daarvoor kabeltjes geleverd. Bij oudere versies van de Pi moet je in totaal vier kabels aansluiten (5V, GND, SCL en SDA), maar bij de Pi 3B+ heb je genoeg aan 5V en aarde. Het gaat daarbij om de tweede en derde pin van de buitenste rij. Check online even een schema van de gpio-pinnen voordat je begint. Op de printplaat van het scherm sluit je deze op de buitenste twee pinnen aan.
:strip_exif()/i/2002422072.jpeg?f=imagearticlefull)
De Pi kan helaas niet zelf de tijd onthouden als hij niet wordt gevoed, dus we installeren een rtc, of real time clock. Op die manier kunnen we vanuit Crankshaft instellen wanneer Android Auto naar de lichte dag- of donkere nachtmodus moet schakelen. Er is op dit vlak veel keuze, maar een groot aantal rtc-bordjes gebruikt de pinnen die wij al bezet hebben voor het touchscreen. Daarom kiezen we voor de wat duurdere Shim RTC. Deze schuift over de bestaande gpio-header heen en laat de pinnen vrij voor andere doeleinden. Een CR1220-batterij zorgt ervoor dat de tijd bewaard blijft.
Zoals gezegd wordt deze hardware tot leven gebracht door Crankshaft. De eerste versie kwam in maart van dit jaar uit, kort nadat een andere ontwikkelaar OpenAuto had gepubliceerd. De ontwikkeling van Crankshaft is van de zomer gesplitst in Crankshaft en Crankshaft-ng, waarbij die laatste versie op het moment van schrijven de meeste updates krijgt en er elke week een nieuwe versie uitkomt. De releases vind je hier.
Het img-bestand dat je downloadt, moet weggeschreven worden naar de sd-kaart. Wij gebruiken hier het gratis programma Etcher voor, dat voor zowel Windows en macOS als Linux beschikbaar is. Installeren hoef je op deze manier maar één keer te doen, want updates kan Crankshaft-ng zelf vanaf een usb-stick installeren. Dat is fijn, want de usb-aansluiting is gewoon bereikbaar via de behuizing en het micro-sd-slot niet.
/i/2002422090.jpeg?f=imagenormal)
Om dit alles te laten werken, moet de Android Auto-app op de telefoon zijn geïnstalleerd. Helaas is deze officieel niet beschikbaar in de Benelux, waardoor je hem niet uit de Play Store kunt halen. We raden iedereen aan altijd heel voorzichtig te zijn met het installeren van externe .apk-bestanden en goed te kijken naar de plek waarvan je hem downloadt. De website APKMirror staat bekend om zijn betrouwbaarheid en biedt een download van het Android Auto-installatiebestand aan, identiek aan de versie uit de Play Store.
Inbouwen
Heb je de Pi aan het scherm gekoppeld en de software geïnstalleerd, dan is het tijd om de hardware in de behuizing te bouwen. Daarbij is bouwen een groot woord; je hoeft enkel de display in de behuizing te laten vallen en de twee onderdelen met vier schroeven aan elkaar vast te maken. De usb-microfoon plug je in aan de zijkant en kun je met de knijper ergens aan je dashboard vastmaken. Van de Pi naar de aux-ingang trek je simpelweg een kabel met aan beide kanten een 3,5mm-plug. Tot slot plug je nog de kabel in die van usb-a naar de aansluiting van je telefoon gaat, wat tegenwoordig vaak usb-c is.
Bij het aansluiten van de voeding heb je de keuze om de usb-ingang op de Pi zelf of het touchscreen te gebruiken. Kies er altijd voor om de Pi direct te voeden en dit niet via het scherm te laten lopen. In die laatste situatie kan de Pi namelijk te weinig stroom ontvangen en onstabiel worden. Doordat we gebruikmaken van de sigarettenaansteker, zal de Pi gelijk starten als de auto wordt gestart. Dat betekent ook dat de stroom wordt verbroken als de motor weer wordt uitgezet, waarmee de Pi niet de tijd heeft om netjes af te sluiten. Normaal wil je dat niet met een computer, maar aangezien de Pi het bestandssysteem read only start, is er geen kans op corruptie.
Achteruitrijcamera
Nog zo’n handigheid in moderne auto’s is een achteruitrijcamera. Die kunnen we redelijk eenvoudig aan deze build toevoegen; er zijn immers genoeg camera’s voor de Raspberry Pi te krijgen. Zoals gezegd, gebruiken we twee kleine pcb’s die van de ribboncable een hdmi-connectie maken, zodat de camera gemakkelijk op lange afstand wordt gebruikt. De camera zelf heeft een vijfmegapixelsensor en kan video opnemen in 1080p met dertig beelden per seconde. De module heeft twee infraroodlampjes en een lichtsensor die ervoor zorgt dat de lampen bijschijnen als het donker is.
Om de camera te activeren, gebruiken we een knopje dat we aan de achterkant van de behuizing monteren en dat je gemakkelijk op de tast kunt vinden. Wij gebruiken hiervoor een toggle switch, waarbij je dus één keer moet drukken voor in- en één keer voor uitschakelen. De toggle switch moeten we aansluiten op de gpio-headers van de Pi. Welke dat zijn, mag je zelf kiezen, zolang er maar één draad als aarde wordt gebruikt. In de software van Crankshaft kun je vervolgens aangeven met welke gpio-pin je de camera wilt schakelen. Wij kozen voor pin 23.
/i/2002422088.jpeg?f=imagearticlefull)
Dit is het enige onderdeel van de build waar we de invulling verder een beetje openlaten. Hoe je hem wegwerkt, hangt natuurlijk af van je auto. Je zult aan de binnenkant van je achterklep in ieder geval een klein gaatje moeten boren, zodat de lens naar buiten kan kijken. Hoe je het ook oplost, denk eraan dat je het geheel goed dichtmaakt met bijvoorbeeld kit, zodat er geen water bij de elektronica komt.
Als je alles aangesloten hebt, hoef je alleen nog je telefoon met Android Auto op de usb-kabel aan te sluiten en de auto te starten. Crankshaft zal automatisch booten en hierna overschakelen naar de Android Auto-interface.
Verdere integratie
Met deze .Build hebben we geprobeerd iets te bouwen dat zo universeel mogelijk werkt, maar je kunt er natuurlijk voor kiezen om alle hardware echt in je dashboard te integreren. Wat je dan nodig hebt, is een dubbel dinframe voor jouw dashboard, waar je het scherm vervolgens in bevestigt. Vervang je daarmee je huidige radio, dan zul je voor een versterker moeten zorgen, want je kunt de Pi niet rechtstreeks op je stereo aansluiten. Er zijn verschillende versterkers die gemaakt zijn om met een Pi te werken, zoals de HiFiBerry AMP2. Audiofielen zullen waarschijnlijk iets krachtigers, en duurders, willen.
Het is natuurlijk het mooist als je de stroomaansluiting niet via de sigarettenaansteker laat lopen, maar wegwerkt achter het dashboard en aansluit op de kabelboom van je auto. Op die manier wordt de Pi gevoed door je accu, waarvan je de spanning met een converter moet omvormen van 12 naar 5V. Door vervolgens het signaal van je contactslot aan de gpio-header te koppelen, zal de Pi zodra je de auto start, het signaal krijgen om aan te gaan. Zet je de motor uit, dan wordt er een shutdown-signaal naar de Pi gestuurd en omdat hij via de accu wordt gevoed, is er gewoon stroom voorhanden om netjes af te sluiten.
De achteruitrijcamera kan ook aan de bestaande elektronica worden gekoppeld. Elke auto is namelijk voorzien van een achteruitrijlicht, dat aangaat zodra de versnellingsbak in zijn achteruit wordt gezet. Door dat signaal af te tappen en aan de gpio-pin te koppelen, waar we voor deze .Build een knop hebben gebruikt, kun je het in- en uitschakelen van de camera automatiseren.
Als je met een van deze verbeteringen aan de slag wilt, maar niet goed weet wat je moet doen, raden we je aan even online te kijken. Van de meeste auto’s zijn schema’s te vinden waarop je kunt zien hoe de kabelboom in elkaar steekt en op YouTube staan genoeg filmpjes van mensen die vergelijkbare modificaties uitvoeren.
Kostenbesparing
Bij dit project zijn we voor de makkelijke weg gegaan en hebben we alle componenten in Nederland gekocht. We moesten immers wat experimenteren en als een product dat uit bijvoorbeeld Azië komt, niet goed werkt, moet je direct weer een lange tijd wachten op de volgende bestelling. Onze totaalprijs van 219,79 euro zonder camera of 271,91 euro met camera kan dus flink omlaag. Vrijwel alle onderdelen uit deze .Build zijn op sites als AliExpress voor minder geld te krijgen, mits je bereid bent wat langer te wachten op de bezorging.