ID.nl logo
Welke microcontrollers bestaan er en waar zijn ze goed voor?
© https://ethereumcode.io/
Huis

Welke microcontrollers bestaan er en waar zijn ze goed voor?

Ze zitten in je auto, in je magnetron, in je wasmachine, maar ook in je pc, en ze vormen het hart van de Arduino- en ESP32-ontwikkelbordjes: microcontrollers. Onzichtbaar op de achtergrond wordt bijna ons hele leven erdoor draaiende gehouden. Welke microcontrollers bestaan er en hoe werken ze precies?

Als je een maaltijd in je magnetron zet, kies je de juiste tijd en instellingen en zet je hem aan. Aan het einde zegt je magnetron ‘ping!’ en is je maaltijd opgewarmd.

Heb je je al eens afgevraagd hoe dat werkt? Eigenlijk zit er in je magnetron een hele (kleine) computer die een programmaatje afwerkt dat enerzijds reageert op de knoppen en anderzijds, als je dat hebt, op het lcd-scherm. Ook stuurt de computer de elektronenbuis aan die de maaltijd met microgolven verwarmt. Die kleine computer is een microcontroller. Je hebt er waarschijnlijk tientallen in huis.

Een microcontroller is een chip die eigenlijk een hele computer in één pakket behuist. Daarin zitten een processor, geheugen (ram en rom) en allerlei poorten naar de buitenwereld. Terwijl je bij een gemiddelde processor voor je desktopcomputer dus nog een heel moederbord, ram-geheugen en storage nodig hebt om er iets nuttigs mee te doen, heb je bij een microcontroller slechts een beperkt aantal externe componenten nodig. Wat weerstanden en condensatoren zijn doorgaans voldoende voor een werkende microcontroller-opstelling.

Die verregaande integratie in een microcontroller is mogelijk omdat dit geen chip is voor flexibele apparaten, zoals pc’s. Microcontrollers zijn ontworpen om specifieke toepassingen uit te voeren, zoals in een magnetron, een pinautomaat, een wasmachine of een pacemaker. Een laag stroomverbruik en een lage kostprijs zijn voor die toepassingen belangrijk.

Lage prestaties met hoge impact

Low-end microcontrollers hebben dan ook een processorsnelheid van maar enkele MHz en slechts enkele kilobytes ram-geheugen. Kijk bijvoorbeeld naar de Arduino Uno, een populair ontwikkelbordje om mee te experimenteren. De microcontroller op dat bordje is de AVR ATmega328P. Die werkt op een kloksnelheid van 16 MHz, heeft 2 KB sram, 1 KB eeprom en 32 KB flashgeheugen.

Vergeleken met de gigahertzen, gigabytes en terabytes die we op onze pc’s gewend zijn, lijken die specificaties ondermaats. Maar toch kun je hiermee ongelooflijk veel projecten aansturen: muziekinstrumenten, robotautootjes, weerstations, je planten automatisch water geven... Je kunt het zo gek niet bedenken of iemand heeft het al weleens met die kleine ATmega328P gedaan.

Microcontroller of SoC? Waarschijnlijk heb je ook al gehoord van een system-on-a-chip (SoC), wat op het eerste gezicht hetzelfde lijkt: een processor geïntegreerd met andere componenten. De grens tussen wat we als een microcontroller beschouwen en wat als een SoC is nogal vaag. Maar doorgaans is een SoC met een snellere processor uitgerust, heeft die meer ram en bevat hij mogelijk radiochips (wifi en/of mobiel netwerk) of een ingebouwde gpu.  Alle smartphones en tablets zijn dan ook gebouwd rond een SoC, maar ook de Raspberry Pi, apparaten zoals een nas en slimme luidsprekers. Ook de Apple M1 is een SoC: deze integreert een arm-processor, ram, gpu, image-signal-processor, Secure Enclave (een coprocessor voor veilige opslag van sleutels) en controllers voor NVMe en thunderbolt 4.

Pinnetjes

Als je een low-end microcontroller zoals een ATmega328P van een Arduino Uno ziet, is het eerste wat opvalt de pinnetjes die eruit steken. Elk van die pinnetjes heeft een functie. Sommige sluit je aan op een voeding, zodat de chip stroom krijgt, maar de meeste dienen om met de omgeving te communiceren.

Komt de chip in een dip-behuizing, dan kun je die pinnetjes eenvoudigweg in een breadboard prikken. Door dan jumperwires in een gaatje in dezelfde rij als een pin te steken, verbind je het draadje met die pin. Op die manier bouw je eenvoudig elektronische schakelingen op met componenten die met de microcontroller kunnen communiceren.

Een Arduino Uno-bordje is dan eigenlijk gewoon een printplaatje waarop de ATmega328P is geplaatst en alle pinnetjes verbonden zijn met ofwel de headers op het bordje, ofwel met andere componenten van het printplaatje, zoals de spanningsregelaar, statusleds en de resetknop. Je kunt het eigenlijk vergelijken met een moederbord voor een processor: een Arduino Uno maakt een ATmega328P-microcontroller alleen wat handiger om te gebruiken en om andere componenten op aan te sluiten.

©PXimport

De eenvoudigste manier om met een microcontroller te communiceren is wat we GPIO noemen (general-purpose input/output). Elke GPIO-pin kunnen we aansturen door een bit op een specifiek adres in het geheugen van de microcontroller op 1 of 0 te zetten. Schrijven we er 1 naar, dan wordt een spanning van bijvoorbeeld 5 V over de pin gelegd; schrijven we er 0 naar, dan wordt de spanning 0 V.

Als je dan bijvoorbeeld tussen die pin en 0 V een led en een weerstand plaatst, gaat de led aan wanneer je 1 naar de pin schrijft en uit wanneer je er 0 naar schrijft. Bij een 1 vloeit er immers een stroom van 5 V naar 0 V. De weerstand dient om de stroom te beperken tot wat de led aankan.

Ook in de andere richting werkt dat. Als je de GPIO-pin als invoer configureert, zal de microcontroller de spanning die je aan de pin aanlegt (5 V of 0 V) interpreteren als een 1 of 0. Op die manier sluit je een knop aan op de pin. Druk je de knop in, dan maakt die intern een verbinding tussen 5 V en de pin van de microcontroller, waardoor die een 1 registreert. 

Laat je de knop los, dan wordt er doorgaans via een pull-downweerstand voor gezorgd dat de pin verbonden is met 0 V en dus een 0 registreert. Op dezelfde manier sluit je een PIR-sensor voor aanwezigheidsdetectie aan: de pin registreert dan 1 als de sensor iemand waarneemt en anders 0.

Protocols en bussen

Telkens 1 bit in of uit de microcontroller sturen, is voldoende voor eenvoudige toepassingen, maar vaak heb je complexere vormen van communicatie nodig. Daarvoor zijn er allerlei protocollen ontwikkeld. Bijvoorbeeld UART (universal asynchronous receiver-transmitter), een protocol voor seriële communicatie waarbij je bytes in twee richtingen kunt sturen. 

Het protocol beschrijft hoe je de opeenvolgende bits moet sturen. Zo bestaan er UART-modules die je in een usb-poort van je pc kunt steken. Communiceren met de microcontroller doe je dan door de RX-pin van de microcontroller met de TX-pin van de UART-module te verbinden en andersom: RX staat voor receive en TX voor transmit.

Voor communicatie met meerdere componenten, zoals sensoren, externe geheugens en schermen, maak je meestal gebruik van een bus zoals I²C (Inter-Integrated Circuit, uitgevonden door Philips) en SPI (Serial Peripheral Interface). I²C wordt ook wel Two-Wire genoemd, omdat er twee pinnen worden gebruikt: SDA om de seriële data door te sturen en SCL om een kloksignaal te sturen. 

SPI (ook weleens Four-Wire genoemd) heeft vier pinnen: SCLK voor de klok, MOSI voor communicatie van de master (meestal de microcontroller) naar de slave en MISO voor de andere richting, en SS om te selecteren met welke slave de master spreekt. Voor elke slave heb je een extra pin SS nodig. Bij de meeste microcontrollers zijn er specifieke pinnen aanwezig voor UART, I²C en SPI.

©PXimport

Digitaal of analoog

Tot nu toe hebben we het alleen maar over 0 en 1 gehad, digitale gegevens dus. Maar heel wat sensoren geven analoge gegevens door, bijvoorbeeld een temperatuursensor of druksensor waarvan de weerstand varieert met de gemeten waarde. Met een spanningsdeler haal je uit die variabele weerstand een variabele spanning, die dus een analoge voorstelling van de meetwaarde is. 

Gelukkig bestaat er een component die een analoge waarde (bijvoorbeeld een spanning) kan omzetten naar een digitale waarde (bijvoorbeeld een 10bit-getal): de ADC (analoog-digitaalomzetter).

ADC’s bestaan als losse componenten (bijvoorbeeld via I²C of SPI aan te sluiten), maar veel microcontrollers hebben ook zelf een of meer ADC’S ingebouwd. Ook in de andere richting bestaat er een component: de DAC (digitaal-analoogomzetter) zet een digitale waarde (bijvoorbeeld een 10bit-getal) om in een analoge waarde (bijvoorbeeld een spanning van 0 tot de voedingsspanning).

Sommige microcontrollers hebben ook een DAC ingebouwd. Al met al zijn microcontrollers dus de perfecte componenten om de digitale en analoge wereld te verenigen. Een Raspberry Pi bijvoorbeeld heeft geen ADC ingebouwd, terwijl een Arduino-bordje er meerdere heeft.

Microcontroller-behuizingen Dezelfde microcontroller kun je vaak in meerdere types behuizingen kopen. Op breadboards zul je vaak DIP-behuizingen tegenkomen: dual in-line package. De chip zit dan in een rechthoekig blokje met aan twee tegenovergelegen zijden pinnetjes die naar onderen uitsteken. Standaard liggen de pinnetjes 2,54 mm (een tiende inch) van elkaar, waardoor ze op een breadboard passen.  In massaproductie vind je eerder varianten van QFP (quad flat package), waarbij een vierkante behuizing aan elke zijde een rij pinnetjes heeft, met een afstand van 0,4 tot 1 mm, die op de printplaat worden gesoldeerd. Een soortgelijke behuizing is QFN (quad-flat no-leads), waarbij er geen pinnetjes uitsteken maar er onderaan de chip aan de vier zijden rijen kopersporen zijn die rechtstreeks op de banen van de printplaat aansluiten. Deze zijn moeilijk met de hand te solderen.

Microcontrollerfamilies

Net zoals er voor pc’s allerlei processorfamilies bestaan, heb je ook diverse families van microcontrollers. De belangrijkste onderverdeling is op basis van de processorarchitectuur. Populair bij hobbyisten zijn de 8bit-AVR-microcontrollers van Atmel (in 2016 overgenomen door Microchip). Ze zijn onderverdeeld in twee subfamilies: de ATtiny-serie met minder pinnen, geheugen en functies (de basismodellen hebben zelfs geen ram-geheugen, UART, I²C en SPI) en de krachtigere ATmega-serie die in de meeste Arduino-bordjes zit.

Een familie die zowel bij hobbyisten als industriële ontwikkelaars populair is, zijn de PIC-microcontrollers, die al sinds 1976 meegaan. Hun populariteit is te danken aan hun lage kostprijs, brede beschikbaarheid en heel wat bestaande code.

Een andere populaire low-end microcontroller in de industrie is de 8051. Oorspronkelijk werd deze in 1980 door Intel ontwikkeld onder de naam MCS-51. In 2007 is Intel met de productie gestopt, maar tientallen andere chipfabrikanten produceren nog altijd hun eigen klonen van de 8051, vaak met een snellere klok en extra functies. Ze worden gebruikt in auto’s, meetsystemen, transceivers voor bluetooth, Zigbee en andere draadloze protocollen, in usb-sticks enzovoort.

©PXimport

Als je naar de krachtigere microcontrollers gaat, kom je bij 32- en 64bit-families uit. De laatste jaren hebben vooral de Xtensa-processors van Tensilica (in 2013 overgekocht door Cadence) een flinke opmars gemaakt. Het zijn immers de processors in de ESP8266- en ESP32-microcontrollers van het Chinese Espressif. Deze zijn populair bij hobbyisten door hun geïntegreerde wifi en (voor de ESP32) bluetooth, en omdat ze eenvoudig te programmeren zijn in de Arduino IDE of via frameworks als ESPHome. De bordjes gebouwd rond de microcontrollers van Espressif zijn dan ook populair voor doe-het-zelf-domotica.

Tot de krachtigste en flexibelste microcontrollers behoren die gebouwd rond de ARM-architectuur. De high-end versies daarvan vind je in je smartphone en ook in computerbordjes zoals een Raspberry Pi, al spreken we dan meer van een SoC. 

ARM kent veel subfamilies, maar voor de klassieke microcontrollertoepassingen zijn vooral de ARM Cortex-M-processors (32 bit) gebruikt. Die vind je bijvoorbeeld in de AT SAM-serie van Atmel die in de krachtigere Arduino-bordjes zitten, in de populaire STM32-familie van STMicroelectronics, en in de nRF-serie van Nordic Semiconductor voor draadloze toepassingen, zoals bluetooth en thread.

Ontwikkelbordjes

Voor industriële toepassingen wordt een printplaat op maat ontworpen, waarop een microcontroller staat. Maar wie zelf aan de slag wil met een microcontroller, heeft een ontwikkelbordje nodig. Dat geeft eenvoudig toegang tot de pinnen van de microcontroller via standaard pinheaders en voegt zaken zoals een spanningsregelaar en usb-naar-UART-omzetter toe, zodat je het bordje eenvoudig op je pc kunt aansluiten.

Voor elke microcontrollerfamilie bestaan er wel ontwikkelbordjes in allerlei vormen en groottes. Voor de AVR-familie zijn de Arduino-bordjes populair. Sommige daarvan, zoals de Arduino Nano, prik je op een breadboard, maar de meeste komen in een groter formaat met vrouwelijke pinheaders waarin je jumperwires steekt. 

Voor de Espressif-microcontrollers is het kleinere formaat dat je op een breadboard prikt alomtegenwoordig. Voor de nRF-serie heeft Nordic Semicondictor grote ontwikkelborden, maar ook versies in de vorm van een stick die je in de usb-poort van je pc schuift. Ook de BBC micro:bit en micro:bit v2 zijn leuke ontwikkelbordjes voor de nRF-microcontrollers.

©PXimport

Microcontroller programmeren

Kijken we tot slot nog even naar hoe het programmeren van een microcontroller werkt. Als je gewend bent om voor een pc of een computerbordje zoals een Raspberry Pi te programmeren, krijg je zeker een cultuurschok wanneer je voor het eerst een microcontroller programmeert. Doorgaans draait er immers geen besturingssysteem op een microcontroller. Er draait slechts één programma op: wat jij schrijft. 

Dat programma schrijf je in het ingebouwde flash-geheugen. Als je de stroom uitschakelt en weer inschakelt, begint de microcontroller het programma onmiddellijk uit te voeren. Dat maakt een microcontroller betrouwbaarder in werking dan een processorbordje zoals een Raspberry Pi.

De best ondersteunde programmeertalen op microcontrollers zijn C of C++, maar die zijn niet het toegankelijkst. Het Arduino-ecosysteem lost dat op door een standaardbibliotheek en allerlei uitbreidingen aan te bieden. Die vormen een laag bovenop het onderliggende C++. 

Andere oplossingen zijn MicroPython en CircuitPython die een afgeslankte versie van Python op microcontrollers aanbieden, en Espruino dat het mogelijk maakt om JavaScript op een microcontroller te gebruiken. Voor industriële toepassingen gebruik je eerder een realtime besturingssysteem zoals Zephyr, dat je in C programmeert.

Ontwikkelomgevingen

Om het proces van code programmeren en de firmware naar je microcontroller flashen te vereenvoudigen, bestaan er allerlei ontwikkelomgevingen. Die tonen bijvoorbeeld fouten in je code, compileren met één druk op een knop je code tot machinecode in de instructieset van de processor, en flashen de firmware naar je ontwikkelbordje. 

Programmeer je een Arduino-bordje, dan doe je dat doorgaans in de Arduino IDE (wat staat voor integrated development environment). Maar dankzij de ondersteuning van andere bordjes kun je met de Arduino IDE ook ESP8266- of ESP32-bordjes programmeren.

Ook populair is PlatformIO, een opensource-plug-in die van Microsofts ontwikkelomgeving Visual Studio Code een ontwikkelomgeving voor microcontrollers maakt. Het voordeel van PlatformIO is dat je met één ontwikkelomgeving voor diverse platforms en frameworks voor microcontrollers kunt ontwikkelen, inclusief Arduino, Espressifs framework en Zephyr. 

Visual Studio Code is bovendien ook bruikbaar om voor een Raspberry Pi of je pc te programmeren. Op deze manier verenig je dus al je programmeerprojecten in één omgeving.

▼ Volgende artikel
SpaceX van Elon Musk koopt xAI voor 250 miljard dollar
© SpaceX
Huis

SpaceX van Elon Musk koopt xAI voor 250 miljard dollar

SpaceX heeft voor 250 miljard dollar xAI, het bedrijf achter X (voorheen Twitter) en ai-assistent Grok, gekocht.

SpaceX is het ruimtevaartbedrijf van Elon Musk. xAI was voorheen ook in handen van Musk, maar nu zullen beide bedrijven dus gecombineerd worden. Er wordt 250 miljard dollar in eigen aandelen betaald. Daarmee wordt de waarde van SpaceX nu geschat op ongeveer 1,25 biljoen dollar.

De reden van de overname van een bedrijf van Musk door een ander bedrijf van Musk, is dat men binnen twee tot drie jaar datacenters in de ruimte kan bouwen. Zo schrijft hij in een persbericht: "De huidige ontwikkelingen in AI hangen af van grote datacentra op aarde, wat enorm voor elektriciteit en koeling vereist."

Hij vervolgt: "Er kan niet voldoen worden de wereldwijde vraag naar elektriciteit voor AI op aarde - niet eens op de korte termijn - zonder dat gemeenschappen en het milieu belast worden. Op de lange termijn is AI in de ruimte de enige manier om op te schalen."

De overname wordt dus vooral gedaan om de ruimtevaartplannen van SpaceX te combineren met de AI-plannen van xAI. Het is niet bekend of dit merkbare gevolgen gaat hebben voor X of Grok. Musk kocht een paar jaar geleden Twitter op en hernoemde het socialmediaplatform naar X.

Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

▼ Volgende artikel
Nieuwe 'strikte accountinstellingen' in WhatsApp: dit doen ze en zo zet je ze (eventueel) aan
© WhatsApp
Huis

Nieuwe 'strikte accountinstellingen' in WhatsApp: dit doen ze en zo zet je ze (eventueel) aan

WhatsApp introduceert een nieuwe beveiligingsstand: strikte accountinstellingen. Met één schakelaar zet je de strengste privacy- en veiligheidsopties tegelijk aan. De functie is vooral bedoeld voor gebruikers die meer risico lopen op gerichte aanvallen, zoals journalisten, politici of activisten. Hier lees je wat de nieuwe instellingen doen en hoe je ze aanzet, als je denkt dat dat voor jou nodig is.

In dit artikel

We laten zien wat strikte accountinstellingen precies doen, welke functies WhatsApp dan meteen aanscherpt en wat dat merkbaar verandert in je chats en oproepen. Ook lees je waar je het kunt aanzetten.

Lees ook: WhatsApp voegt live foto's, AI-thema's en slimme zoekfunctie toe

De nieuwe stand werkt als een soort 'lockdownmodus'. Zodra je hem inschakelt, zet WhatsApp meerdere instellingen vast op de strengste stand. Daarmee wordt het moeilijker voor onbekenden om via WhatsApp contact met je te leggen of schadelijke bestanden te sturen. In ruil daarvoor wordt de app wat minder soepel in het gebruik, vooral richting mensen buiten je contactenlijst.

Niet voor iedereen nodig

Volgens WhatsApp zijn de meeste gebruikers al goed beschermd met standaardprivacy-instellingen en tweestapsverificatie. De strikte modus is bedoeld voor situaties waarin je extra voorzichtig wilt zijn, bijvoorbeeld tijdens werk met gevoelige informatie of in landen waar digitale aanvallen vaker voorkomen.

Wie de stand inschakelt, sluit als het ware alle extra sloten op zijn digitale voordeur. Handig als je tijdelijk of structureel een groter risico loopt.

Wat er gebeurt

De functie grijpt in op verschillende onderdelen van de app. Tweestapsverificatie en beveiligingsmeldingen worden automatisch geactiveerd en vastgezet. Berichten, bijlagen en media van onbekende afzenders worden geblokkeerd, en linkvoorbeelden verdwijnen uit chats. Ook oproepen van onbekende nummers worden standaard gedempt, waarbij je IP-adres verborgen blijft.

Daarnaast kunnen alleen contacten - of een door jou gekozen lijst - je toevoegen aan groepen of je profielinformatie bekijken. Zo voorkom je dat buitenstaanders eenvoudig meer over je te weten komen.

OnderdeelWat er gebeurt
AccountbeveiligingVerificatie in twee stappen wordt automatisch ingeschakeld. Beveiligingsmeldingen staan vast aan. End-to-end versleutelde back-ups worden aanbevolen voor gebruikers die back-ups gebruiken.
Berichten en mediaBijlagen en media van onbekende afzenders worden geblokkeerd. Linkvoorbeelden zijn uitgeschakeld. Grote hoeveelheden berichten van onbekende accounts worden automatisch beperkt.
OproepenOproepen van onbekende nummers worden gedempt. Tijdens gesprekken wordt je IP-adres verborgen.
Profiel en aanwezigheidJe 'Laatst gezien', online-status, profielfoto, info en profiel­links zijn alleen zichtbaar voor contacten of een door jou gekozen lijst.
GroepenAlleen contacten of een vooraf ingestelde lijst kunnen je toevoegen aan groepen.

Inschakelen en beschikbaarheid

De nieuwe stand is te vinden via Instellingen > Privacy > Geavanceerd > Strikte accountinstellingen. WhatsApp rolt de optie in de komende weken gefaseerd uit. De instelling is alleen beschikbaar op je smartphone of je Mac; via WhatsApp Web of WhatsApp Windows kun je hem niet aanpassen. Zodra de stand actief is, zie je precies welke onderdelen zijn vergrendeld.

View post on TikTok

Extra beveiliging in de achtergrond

WhatsApp meldt dat het daarnaast steeds meer onderdelen van de app herschrijft in Rust, een programmeertaal die bekendstaat om zijn sterke geheugenbeveiliging. Daarmee moeten kwetsbaarheden in de verwerking van media en berichten lastiger te misbruiken zijn door spyware of andere aanvallen.

Wat is Rust?

Rust is een moderne programmeertaal die voorkomt dat software fouten maakt in het omgaan met computergeheugen. Zulke fouten kunnen leiden tot beveiligingslekken. Door delen van WhatsApp in Rust te schrijven, verkleint Meta de kans op dit soort kwetsbaarheden.

Even ontspannen tussen het beveiligen door?

🕵Spionagethrillers