ID.nl logo
Niet kopen maar kijken: zo simuleer je een microcontrollerbordje
© gargantiopa - stock.adobe.com
Huis

Niet kopen maar kijken: zo simuleer je een microcontrollerbordje

Het aansluiten en programmeren van elektronische componenten op een microcontrollerbordje kan flink wat werk zijn. Met Wokwi simuleer je eenvoudig een ESP32, Raspberry Pi Pico of Arduino met alle bijbehorende elektronica. Zo kun je al beginnen met programmeren en verschillende dingen testen, zonder dat je telkens je breadboardopstelling hoeft aan te passen.

Na het lezen van dit artikel weet je precies hoe je met Wokwi een microcontrollerbordje kunt simuleren.

  • Start je project op
  • Voeg componenten toe
  • Plaats en verbind de componenten
  • Schrijf de benodigde code
  • Simuleren maar!

Ook interessant: Zo breid je met microcontrollers je computer uit met extra functies

Code downloaden In dit artikel worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Zie het bestand wokwicode.txt voor de stukken code die in dit artikel genoemd worden.

Met Wokwi maak je een virtuele versie van een microcontrollerproject. Op de Wokwi-site simuleer je gratis een ESP32 (alle types), Raspberry Pi Pico, Arduino (Uno, Mega of Nano) of STM32. Maar ook allerlei elektronische componenten, zoals leds, drukknoppen, potentiometers, luidsprekers, sensors, motors en LC-displays. Bekijk voordat je begint eens de lijst met ondersteunde hardware.

Je kunt je projecten online programmeren in bijvoorbeeld MicroPython of Arduino. Je programma wordt op de gesimuleerde microcontroller uitgevoerd en het resultaat is ook in de gesimuleerde componenten te zien: leds gaan aan en uit, servomotors draaien, displays tonen de geprogrammeerde boodschappen enzovoort. Dat maakt experimenteren met elektronica wel heel eenvoudig. In dit artikel illustreren we dit met twee eenvoudige ESP32-projecten, die zelfs via internet met elkaar of andere IoT-apparaten kunnen communiceren.

1 Project starten

Wokwi is gratis te gebruiken zonder je te registreren. Je kunt bovenaan op de website eerst voor de processorfamilie kiezen of, als je even verder scrolt, eerst voor de programmeertaal. Wij scrollen naar onder en kiezen MicroPython. Daarna zie je onder Starter Templates twee miniprojectjes: Pi Pico Blink en ESP32 Blink. Beide zijn eenvoudige sjablonen om mee te beginnen.

Maar je kunt ook op New project klikken om met een volledig leeg project te beginnen. Daarna krijg je de keuze uit MicroPython op ESP32, Raspberry Pi Pico of Raspberry Pi Pico W. Wij kiezen MicroPython on ESP32.

Je krijgt links de MicroPython-code in het tabblad main.py te zien, met als inhoud een eenvoudige printopdracht. In dit tekstveld voeg je je MicroPython-code toe en erboven staat een knop waarmee je je code opslaat. Rechts zie je een ESP32-ontwikkelbordje. Hier kun je nu allerlei elektronische componenten toevoegen en met je microcontroller verbinden. Met het groene knopje bovenaan start je vervolgens de simulatie.

Begin via een startersjabloon aan je project in Wokwi.

2 Componenten toevoegen

Voeg nu aan het canvas rechts componenten toe met het blauwe plusknopje. Scrol door de lijst om te zien welke componenten je allemaal kunt toevoegen. In het onderdeel Basic zijn dat leds, drukknoppen en weerstanden. Heel ruim toebedeeld is het onderdeel Display, met RGB-leds, een SSD1306 OLED-display, allerlei tft-schermpjes, een led-dotmatrix, NeoPixel-led en -ring, zevensegmentdisplays en zelfs een e-paperscherm.

Bij Input vind je allerlei soorten schakelaars, een joystick, infraroodontvanger, keypad en potentiometers. De sensors zijn wat minder ruim toebedeeld, maar je vindt er wel onder andere de ultrasone sensor HC-SR04, de temperatuursensors DHT22, DS18B20 en een NTC, en een PIR-bewegingssensor. Het onderdeel Output heeft een piëzoelektrische zoemer, enkele motors en relays. En er zijn ook enkele formaten breadboards.

Kies als eerste een half breadboard, dat op het canvas verschijnt. Doe dan hetzelfde voor een led en een weerstand. Als je op de weerstand klikt, kun je de waarde veranderen. Maak er 220 Ohm van. De banden op de weerstand veranderen naar rood, rood en bruin om de nieuwe waarde aan te duiden. Met een klik op de led verander je de kleur, maar laat die maar rood. We hebben de voorschakelweerstand immers gekozen in functie van de spanningsval over de led.

Kies je elektronische componenten uit de lijst.

3 Componenten plaatsen en verbinden

We gaan alle componenten op de juiste plek plaatsen: klik op de ESP32 en druk dan enkele keren de R-toets in tot het ontwikkelbordje correct is georiënteerd. Sleep het boven het breadboard tot de pinheaders op de rijen b en j passen.

Plaats dan de led en de weerstand op het breadboard. Met de P-toets kun je de led eventueel nog spiegelen. Sluit dan het lange pootje (anode) van de led, wat Wokwi met een knik aanduidt, op GPIO23 aan. Als je boven de pootjes van de led blijft hangen met de muiscursor, krijg je een label te zien: A voor anode en C voor kathode.

Op dezelfde manier toont Wokwi bij elke pin van de ESP32 een label, zoals 23 voor GPIO23. De verbinding maken doe je in dit geval, omdat de led op een breadboard staat, door op a2 te klikken en dan op a28. Zo wordt GPIO23 via het breadbord verbonden met de anode van de led.

Sluit daarna het korte pootje (kathode) van de led via de voorschakelweerstand van 220 Ohm op GND van de ESP32 aan. Dat doe je door het ene pootje van de weerstand boven de kathode van de led te plaatsen. Het andere pootje verbind je met GND door erboven een verbinding met de blauwe rij te maken, en boven GND (het vakje a1) ook een verbinding met de blauwe rij te maken. Verander de kleur van die twee verbindingen naar zwart door er na het aanmaken op te klikken en dan op 0 te drukken.

Alle componenten zijn correct geplaatst en verbonden.

4 Code schrijven

Nu de virtuele hardware klaar is, kun je aan de slag met de softwarekant. Schrijf links in het codevenster van het tabblad main.py de volgende code om de led te laten knipperen:

De code kun je downloaden van en daarna vanuit een programma als Kladblok overnemen.

We tonen in deze code met print eerst de boodschap Blink LED op de terminal van MicroPython. Dan definiëren we een led op pin 23. De rest van de code bestaat gewoon uit een oneindige lus waarin we de led een seconde aan doen en een seconde uit.

Druk dan op Ctrl+S of de knop Save bovenaan en geef je project een naam. Dat kan in de gratis versie alleen als publiek project (zie kader ‘Gratis en betaalde versie’). Klik op Save. Vanaf nu heeft je project een publieke url.

Gratis en betaalde versie De gratis versie bevat al heel wat functionaliteit. De betaalde versie kost 7 dollar per maand en heet Wokwi Club. Je kunt dan aangepaste Arduino-bibliotheken vanaf je computer uploaden, evenals willekeurige bestanden (zoals afbeeldingen of audiobestanden) om op de microSD-kaart van de virtuele microcontroller te plaatsen. Een andere mogelijkheid is dat je vanaf je computer toegang krijgt tot een webserver die je op je virtuele microcontroller draait. Je hoeft je projecten dan ook niet meer publiek op te slaan; je kunt ze privé houden.

Enkele uitbreidingen van Wokwi, zoals de integratie in Visual Studio Code en de commandline-interface Wokwi CI, zijn momenteel in bèta maar worden daarna deels betaald.

5 Simuleren

Nu je zowel de hardware als de software klaar hebt, is het tijd voor actie. Klik rechts op het groene knopje om de simulatie te starten. Onderaan verschijnt een terminalvenster waarin je de ESP32 ziet opstarten en na enkele seconden krijg je de boodschap Blink LED. Bovenaan rechts begint een timer te lopen. Je ziet ook in een snelheid van hoeveel procent van de realiteit de simulatie wordt uitgevoerd.

Na de boodschap Blink LED in de terminal begint de led zoals verwacht te knipperen met een frequentie van een seconde. Op deze manier kun je controleren of je code werkt zonder dat je zelf ook maar enige elektronische component hebt moeten aanraken.

Met de knopjes linksboven in het simulatievenster kun je de simulatie overigens herstarten, stoppen of pauzeren. Als je ze pauzeert, toont het venster ook de toestand van elke pin. Je ziet hier dat de meeste pinnen als invoer zijn geconfigureerd en Floating (ongedefinieerde waarde). GPIO23 wordt als uitvoer getoond, met de waarde Low als je gepauzeerd hebt, terwijl de led uit is en High als je juist gepauzeerd hebt terwijl de led aan is.

De led knippert in onze simulatie.

Over simuleren gesproken

Met deze racestoel kun je virtueel meedoen in de Formule 1

6 Verbinden met internet

Wokwi simuleert ook een volledig wifi-netwerk, dat zelfs toegang heeft tot internet. Laten we een wifi-verbinding opzetten, deze met een MQTT-broker verbinden en wachten op een bericht om de led in of uit te schakelen:

De code kun je downloaden van en daarna vanuit een programma als Kladblok overnemen.

We verbinden dus eerst met het gastnetwerk Wokwi-GUEST zonder wachtwoord. Tijdens het verbinden laten we de led knipperen en wanneer de verbinding tot stand is gekomen, gaat de led aan. Daarna verbinden we met de publieke MQTT-broker broker.hivemq.com en geven als client-ID het unieke ID van de ESP32.

We definiëren een functie mqtt_message die binnenkomende MQTT-berichten afhandelt: gaat het om het cijfer 0, dan doet de functie de led uit en bij een 1 gaat de led aan. Tot slot stellen we in dat de functie voor elk binnenkomend bericht wordt aangeroepen, verbinden we met de MQTT-broker en abonneren we ons op een topic dat gelijk is aan het client-ID. Daarna wachten we in een oneindige lus op binnenkomende berichten.

7 Schuifschakelaar

Maak nu een tweede project aan. Voor de eenvoud gebruiken we weer een ESP32 met MicroPython, maar ook andere combinaties zijn mogelijk, zoals het Arduino-framework in plaats van MicroPython, of een Raspberry Pi Pico W in plaats van een ESP32.

Plaats de ESP32 weer op een breadboard. Voeg deze keer een schuifschakelaar (Slide switch onder Input) en een weerstand van 10 kOhm toe.

De schuifschakelaar heeft drie pinnetjes. De linkse verbind je met GND en de rechtse met 5V. De middelste verbind je enerzijds met GPIO23 van de ESP32 en anderzijds via een pulldownweerstand van 10 kOhm naar GND. Zo is de invoer aan de GPIO-pin altijd gedefinieerd. We gaan deze schuifschakelaar gebruiken om de led op ons andere Wokwi-project in en uit te schakelen.

Met deze schuifschakelaar gaan we berichten naar de MQTT-broker sturen.

8 Berichten sturen

In de code op dit virtuele bordje verbinden we weer met wifi en de MQTT-broker, maar daarna gaan we de toestand van de schakelaar uitlezen. Elke keer dat die toestand verandert, sturen we de nieuwe toestand naar de MQTT-broker:

De code kun je downloaden van en daarna vanuit een programma als Kladblok overnemen.

Het begin van de code is zo goed als hetzelfde. Maar in plaats van een led definiëren we een knop. We slaan ook onmiddellijk de huidige waarde van de knop op.

Bij de verbinding met de MQTT-broker moet je er wel op letten dat je het client-ID nu verandert. Blijkbaar gebruikt Wokwi voor elke simulatie die je draait (in ieder geval in onze tests met de ESP32) hetzelfde unieke hardware-ID. We hebben dit opgelost door in deze code gewoon ff aan het hardware-ID toe te voegen. Want als een tweede MQTT-client hetzelfde client-ID gebruikt om met de MQTT-broker te verbinden, wordt de eerste client afgesloten.

Na de verbinding lezen we in een oneindige lus de toestand van de schakelaar uit. Als die verschilt van de vorige, kijken we naar de waarde: is die aan, dan publiceren we 1 op het MQTT-topic van ons andere project, anders publiceren we 0.

9 Communicatie tussen virtuele ESP32’s

Start nu beide simulaties en zet de vensters naast elkaar, zodat je ze tegelijk kunt observeren. Kijk in de terminaluitvoer en wacht tot ze allebei met de MQTT-broker verbonden zijn. Mogelijk verloopt alles nu wat trager dan voorheen, want je browser moet nu met deze twee gelijktijdige simulaties heel wat rekenwerk verrichten.

Als je nu de schuifschakelaar naar links beweegt (gewoon klikken volstaat), zie je niet alleen in de terminal van het bordje OFF verschijnen, maar je ziet ook op het breadboard van het andere project de led uitgaan. En als je de schuifschakelaar naar rechts beweegt, dan gaat de led van het andere project aan. Je hebt beide virtuele microcontrollerbordjes met internet verbonden en ze kunnen via de publieke MQTT-broker met elkaar communiceren. Je zou een van de twee zelfs door een fysieke opstelling kunnen vervangen en dan zou de communicatie ook werken.

Deze twee virtuele ESP32-ontwikkelbordjes communiceren via internet met elkaar via een publieke MQTT-broker.

10 Arduino, CircuitPython en meer

We hebben hier nu MicroPython als voorbeeld gebruikt, maar met Wokwi kun je ook Arduino-projecten simuleren. Je kunt zelfs elke Arduino-bibliotheek installeren die in de Arduino Library Manager beschikbaar is. Om ook andere Arduino-bibliotheken te gebruiken, heb je het betaalde Wokwi Club-account nodig.

Op de Raspberry Pi Pico heb je ook nog enkele andere mogelijkheden. Je kunt er CircuitPython gebruiken, een fork van MicroPython. Dan kun je ook elke bibliotheek van de Adafruit CircuitPython Bundle gebruiken. Met een ander sjabloon programmeer je de Raspberry Pi Pico met de Pico SDK in C. Verder heb je op de ESP32 ook de keuze uit ESP-IDF en de programmeertaal Rust.

Beperkingen Elke simulatie breekt op een bepaald niveau met de realiteit. Dat is niet anders met Wokwi. Zo ligt de focus op digitale elektronica. De analoge aspecten van je schakeling worden dan ook maar beperkt gesimuleerd. Als je een voorschakelweerstand vergeet bij een led, krijg je geen waarschuwing en zal je virtuele led ook niet doorbranden. Dus als je denkt je schakeling veilig te hebben getest in Wokwi en dan op een fysiek breadboard opbouwt, is het goed mogelijk dat het daar mis gaat.

Je kunt ook geen condensatoren en complexere elektronische componenten toevoegen. Bovendien worden niet alle mogelijkheden van de microcontrollers ondersteund. Zo kun je geen bluetooth of deep sleep simuleren voor de ESP32. Betalende gebruikers mogen overigens wel stemmen op functies waaraan Wokwi gaat werken.

Watch on YouTube
▼ Volgende artikel
Verwacht geen nieuwe Wolverine-beelden in de State of Play vanavond
Huis

Verwacht geen nieuwe Wolverine-beelden in de State of Play vanavond

In de State of Play-presentatie die vanavond wordt uitgezonden zullen zeer waarschijnlijk geen nieuwe beelden zitten van het langverwachte spel Marvel's Wolverine.

Ontwikkelaar Insomniac Games gaf vorig jaar al aan dat het pas aankomend voorjaar meer uit de doeken zou doen over Wolverine. Toen eerder deze week de nieuwe State of Play werd aangekondigd, hoopten veel fans echter dat de ontwikkelaar zijn plannen gewijzigd had en toch wat meer van de nieuwe Marvel-game zou tonen.

Dat lijkt echter zeer onwaarschijnlijk. Een fan vroeg deze week op social media aan Insomniac Games wanneer er meer info over de game zal verschijnen, waarop Insomniac wederom antwoordde met "lente 2026". Dat maakt het dus zo goed als bevestigd dat de game vanavond tijdens de State of Play niet getoond gaat worden.

View post on X

Over Marvel's Wolverine

Insomniac Games, de ontwikkelaar van de moderne Spider-Man-spellen, werkt al een aantal jaar aan Wolverine, een game rondom de Marvel-anti-held. Hoewel vroege beelden van de game al geruime tijd op internet stonden, werd afgelopen najaar de eerste volledige trailer van het spel getoond. Die is hieronder nog eens te zien.

Wolverine - oftewel Logan - zal gespeeld worden door Liam McIntyre, die eerder onder andere in Spartacus speelde. De game doet diverse exotische locaties aan, waaronder Japan en Canada, en uit de eerste beelden blijkt dat er veel geweld en bloed in de game zit. Wolverine maakt daarbij logischerwijs gebruik van de iconische messen die uit zijn handen komen.

Watch on YouTube

De aankomende State of Play

Zoals gezegd werd eerder deze week de nieuwe State of Play aangekondigd, die vanavond om 23:00 uur wordt uitgezonden. De livestream kan dan hier bekeken worden.

Op PlayStation Blog schrijft Sony dat de presentatie meer dan zestig minuten beslaat en "nieuws, gameplay-updates en aankondigingen van gamestudio's verspreid over de wereld" bevat voor aankomende PlayStation 5-games. Daarbij zullen er zowel games van PlayStation Studios zelf als andere bedrijven de revue passeren.

Sony brengt dit jaar in ieder geval Saros, Marathon en Marvel's Wolverine uit. Van die laatste game weten we nu dus dat hij waarschijnlijk niet getoond gaat worden. Verder werd vorige week een nieuwe Horizon-game met een focus op multiplayergameplay aangekondigd, genaamd Horizon Hunters Gathering. We weten ook dat The Last of Us-ontwikkelaar Naughty Dog aan hun nieuwe game Intergalactic: The Heretic Prophet werkt, en volgens geruchten wordt er bij PlayStation Studios ook een nieuwe God of War-game ontwikkeld met metroidvania-elementen.

▼ Volgende artikel
Zo vervaag je je huis in Google Maps
© ID.nl
Huis

Zo vervaag je je huis in Google Maps

Wie je adres intikt, kan je huis open en bloot bekijken in Street View van Google Maps. Dat voelt niet bepaald privacyvriendelijk. Vind je het geen prettig idee dat iedereen zomaar een blik op je woning kan werpen? Dan kun je Google vragen om je huis permanent te laten vervagen.

Wat gaan we doen?

We laten zien hoe je je woning in Street View nauwkeurig in beeld brengt, hoe je bij Google meldt dat je die wil laten vervagen en hoe je de aanvraag hiervoor indient.

Lees ook: 5 handige (en misschien onbekende) functies van Google Maps

Sleep het poppetje voor de deur

Google Maps biedt een functie waarmee je specifieke beelden – zoals nummerplaten, objecten of zelfs hele huizen – kunt laten blurren om privacyredenen. Je moet hiervoor een aanvraag indienen en zodra Google die goedkeurt, is de vervaging definitief en zelfs niet meer terug te draaien. Open Google Maps bij voorkeur op je computer, want op mobiele apparaten is deze optie voorlopig nog niet beschikbaar. Zoek vervolgens je adres via de zoekbalk bovenaan en druk op Enter om de woning vanuit de lucht in beeld te brengen. Klik op het Pegman-pictogram, het gele poppetje rechtsonder in het scherm. Sleep het poppetje naar de straat waar je huis staat. De straten die langs deze weg beschikbaar zijn in Street View, lichten blauw op.

Sleep het gele poppetje in de straat zo dicht mogelijk bij je huis.

Probleem melden

Zodra je dit doet, verschijnt het bekende 360°-beeld van jouw straat. Navigeer door de beelden totdat je woning volledig in beeld is. Zet het huis zo centraal mogelijk in het scherm; dat maakt de volgende stap eenvoudiger. Onderaan het beeld zie je in een dunne, donkere strook de opnamedatum, maar ook de knop waar het ons om te doen is: Probleem melden.

In deze weergave vind je de knop Probleem melden in de rechterhoek van de strook onderaan.

Aanvraag

Je komt nu op de Google-pagina Ongepaste Street View melden. Versleep eerst de weergave zodat je woning netjes binnen het rode kader past. Vervolgens geef je aan waarom je de vervaging aanvraagt. Er zijn drie opties: een gezicht, mijn huis of mijn voertuig/een kentekenplaat. Kies uiteraard de tweede mogelijkheid. Het is ook mogelijk om vervaging aan te vragen voor een privéweg of een oprit. Vul zeker je e-mailadres in en klik op Versturen. Na het verzenden ontvang je een e-mail van Google over je aanvraag. Als alles duidelijk is, wordt de vervaging binnen enkele dagen tot weken doorgevoerd. Houd er rekening mee dat je de aanvraag soms meerdere keren moet indienen als je woning vanuit verschillende hoeken zichtbaar is.

Plaats de woning netjes binnen het rode kader.


Ook fijn, qua privacy:

View post on TikTok

Blur, maar dan anders

(en toch ook weer niet)