Arduino's

Als eerste beschrijf ik op deze pagina verschillende uitvoering van originele Arduino's. Daarna beschrijf ik een aantal goede alternatieven, die als een Arduino te programmeren zijn. Vervolgens beschrijf ik nog een paar alternatieven die echt anders zijn.
 Klik hier om een overzicht van de beschikbare geheugens en snelheid te zien 

Arduino Mega

Deze Arduino heeft veel meer in- en uitgangen dan de andere Arduino's en je kunt er dan ook grotere projecten mee doen. Programma's die voor de Uno werken zullen (soms met minimale aanpassingen) ook op de Mega werken, maar andersom geldt dat niet.

Arduino Due

Deze uitvoering lijkt sterk op de Mega, maar heeft een andere, krachtiger chip. Het eerste wat opvalt is dat er twee USB aansluitingen zijn. Je kunt ze beide gebruiken om een programma te uploaden. Als je de 'programming' poort gebruikt dan kun je de 'native' poort voor andere doeleinden gebruiken. Andersom kan dat niet. De Due is de eerste Arduino die sneller is dan de standaard Uno. Ook heeft hij veel meer geheugen. Het grootste voordeel is wel dat hij veel pinnen heeft waardoor hij geschikt is voor ingewikkelde schakelingen.

Arduino Uno

Arduino met breadboard op een plankje.
Dit is de meest populaire Arduino. De originele heeft duidelijke opschriften aan de zijkanten van de pinnen. Klonen zijn vaak minder duidelijk gelabeld, maar hebben soms weer andere voordelen. Ik heb geen problemen ondervonden met goedkope klonen, behalve dat je voor oudere versies dan Windows 10 een driver moet installeren. De Uno is vooral bedoeld om te experimenteren. Het is dan handig om hem samen met een breadboard op een plankje te monteren (zie foto). Schroef de boutjes niet te vast! Aan de onderkant kun je meubelglijders of stukjes lino plakken.
Ik heb ook de Arduino Uno LC ("MassDuino") getest. Deze kloon heeft een aantal extra's. Zo kan hij worden omgeschakeld tussen 3,3 volt en 5 volt. Hij heeft zowel vrouwelijke als mannelijke pinnen. De MassDuino heeft geen USB ingang, maar er wordt een programmer bij geleverd, zodat je hem alsnog aan kunt sluiten op de USB poort van je computer. De Massduino is speciaal bedoeld om op scholen te gebruiken en is daarom erg goedkoop. Zorg ervoor dat je de juiste software installeert, want als je dat niet doet dan lijkt alles goed te gaan, maar... dan klopt de timing niet, waardoor er allerlei problemen kunnen ontstaan. Ook met de juiste software zijn regelmatig functies uit standaardbibliotheken niet beschikbaar. Erg frustrerend. Ik kan deze Arduino dan ook niet aanbevelen.

Arduino Leonardo

De Arduino Leonardo lijkt uiterlijk veel op de Uno, maar hij is nieuwer en is in bijna alles beter dan de Uno. Waarschijnlijk zal de Uno te zijner tijd verdwijnen en is dit de opvolger. Sommige digitale pinnen kunnen als analoge input worden gebruikt en de drie pinnen van de ICSP header als extra digitale pinnen. Bij de originele Leonardo staat op de onderzijde weergegeven welke digitale pin correspondeert met welke analoge. Oude Uno programma's zullen meestal zonder wijzigingen blijven werken. Er zijn nog veel meer verbeteringen, maar die vallen buiten het kader van mijn pagina's. De Leonardo heeft een mini USB aansluiting. Sommige mensen ondervinden problemen bij het uploaden.

Arduino Nano

Misschien omdat de productie gestopt is zijn Nano's erg goedkoop. Nadat je in de IDE onder hulpmiddelen hebt gekozen voor Arduino Nano, moet je ook nog aangeven welke processor jouw nano heeft en welke bootloader gebruikt moet worden. De processor kun je aflezen op de chip van de nano. Als je niet weet welke bootloader je moet kiezen probeer dan gewoon een sketch te uploaden. Alleen als de instellingen goed zijn lukt dat.
De Nano kan een mini-B of een micro-B USB aansluiting hebben. In vergelijking met de Arduino Uno heeft de Nano twee extra analoge pinnen, maar die kunnen in tegenstelling tot de andere 6 analoge pinnen niet als digitale pin worden ingesteld. De meeste software die op de Arduino Uno draait kan zonder wijzigingen ook op de Nano draaien en er zijn weinig problemen mee. Ik gebruik de nano dan ook erg graag. Het is handig om de Nano in een lang breadboard te prikken, zodat je een hele schakeling bij elkaar hebt. Als je een Arduino Nano wil kopen, let dan goed dat je de versie met de ATmega328 processor bestelt, en niet de ATmega168, want de laatste heeft voor veel projecten te weinig geheugen.

Arduino Nano Every

Dit is een nieuw ontwikkeling. De every gebruikt een modernere processor dan de oude Arduino's. Als het goed is is de Nano terugwaarts compatibel met de gewone Arduino Nano zodat je niets hoeft te veranderen aan je programma's of bedrading. Helaas zijn er situaties, waarin de Every niet compatibel is. Als je gebruik maakt van de standaard Arduino IDE, dan moet je via de "Board beheer" de megaAVR borden installeren. Als je binnen Board Beheer zoekt op nano every kom je er ook.
Als je de volgende waarschuwing krijgt, dan kun je die gewoon negeren.
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description
Ik kan niet ingaan op alle voor- en nadelen van de Arduino Nano Every. Op internet kun je veel hierover vinden. Al met al vind ik de voordelen gering en kun je je afvragen of je niet beter een ESP8266 (zoals de Wemos mini D1) kunt kopen.
Als je de Nano Every van pinnen wil voorzien zodat je hem met een breadboard kunt gebruiken houd er dan rekening mee dat de namen van de pinnen op de onderkant staan. Een onbegrijpelijke keuze van de fabrikant!

Arduino Pro Mini

De Pro Mini is net wat kleiner dan de Arduino Nano, maar heeft vrijwel dezelfde mogelijkheden. Er zijn versies met 3,3 Volt en met 5 volt en met een Atmega 168 of met een Atmega 328. Voor eenvoudige projecten zijn beide types geschikt. De Pro Mini heeft geen USB aansluiting. Bedenk voordat je een Arduino Pro Mini koopt dat je deze op een of andere manier moet kunnen programmeren. Het makkelijkst gaat dit met een module als de BTE 13-009A (of ander volgnummer). Ik zal zo'n module gemakshalve een "programmer" noemen. Het is mogelijk om de Pro Mini te programmeren via een andere Arduino, maar dat raad ik af omdat je de andere Arduino kunt beschadigen. De programmer hoef je maar één keer aan te schaffen.
Met een Arduino Mini erbij hoef je niet meer dan een tientje kwijt te zijn.
Ik ga uit van de 5 volt uitvoering. Je kunt de Pro Mini voeden via de programmer of met een gestabiliseerde 5 volt voeding. Ook kun je een ruwe spanningsbron van maximaal 12 volt op RAW aansluiten, niet op VCC.

Solderen van de pinnen

Je moet je eerst afvragen of je wel alle pinnen moet solderen. Als je de Pro Mini op een breadboard gaat gebruiken dan is het antwoord ja. Als je de Pro Mini ergens wilt inbouwen dan is het beter om de draden er rechtstreeks op te solderen.
Soldeer in ieder geval de pinnen die je nodig hebt om hem te kunnen programmeren.
Ga als volgt te werk: begin met de zijpinnen. Als je een lange strip met pinnen hebt knip er dan twee keer twaalf pinnen als één geheel van af. De pinnen moeten aan de onderkant van de Pro Mini komen. Steek de pinnen in de Pro Mini en steek het geheel in een breadboard. Je kunt zo mooi loodrecht solderen. Gebruik zo weinig mogelijk soldeertin en laat die goed vloeien. Vervolgens soldeer je de acht gebogen pinnen (recht mag ook). Steek die er van de bovenkant in en soldeer ze aan de onderkant. Zo kun je de programmer aansluiten als je Arduino Mini in een breadboard zit. Er zijn nog vier gaatjes waar je eventueel pinnen in kunt solderen. Dat zijn A4, A5, A6 en A7. Er zijn klonen te koop waarbij die gaatjes op een handiger plaats zitten dan bij de originele uitvoering, maar in alle gevallen moeten die extra pinnen naar boven staan. Dus daar geen pinnen in solderen, of pinnen naar boven.
Je kunt nu de Pro Mini testen door hem aan te sluiten op de programmer en de programmer op de USB ingang van je computer. Eén rode led moet continu branden, een andere moet knipperen. Je kunt nu een testprogramma downloaden. Het makkelijkst is om de knipperfrequentie te veranderen. Als dat lukt, dan werkt de programmer goed. Om het verschil goed te laten zien zet ik in onderstaande sketch de led drie seconden aan en één seconde uit. Dit is het hele programma:
void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(3000);
  digitalWrite(13, LOW);
  delay(1000);
}

Problemen bij het uploaden

Links: de programmer; rechts op het breadboard: Arduino Pro Mini
Dit device geeft wel eens problemen bij het uploaden. De laatste tijd doet dit probleem zich bij mij nooit meer voor, dus misschien is er inmiddels verbeterd. Soms helpt het om, zodra de Arduino IDE wil gaan uploaden (dus meteen nadat wordt weergegeven hoe groot het bestand is), op de reset knop van de Pro Mini te drukken. Als het helemaal niet lukt, kijk dan eens of je de juiste processor hebt ingesteld onder het tabblad Hulpmiddelen.
Links: gewone mini; rechts de diymore met lipo batterij



Er zijn verschillende alternatieve uitvoeringen van dit bord. Als je veel pinnen wilt hebben dan is de goedkope module van diymore geschikt. Deze heeft de mogelijkheid om een lipo batterij aan te sluiten. Je mag de lipo tegelijk met de programmer gebruiken.

Arduino Pro Micro

De Pro Micro in actie
De Pro Micro wordt wel gezien als de opvolger van de Pro Mini, maar dat is niet echt zo. Alleen de afmetingen zijn gelijk. De Pro Micro is een heel geavanceerde Arduino. Ik heb alleen de 5V uitvoering getest. De Pro Micro heeft een USB micro-B aansluiting, zodat geen programmer nodig is. Als je hem voor het eerst aansluit op een computer met Windows 7 of hoger worden direct diverse drivers geïnstalleerd. Hieruit kun je afleiden dat de Pro Mini veel meer mogelijkheden heeft dan de Pro Mini. Om hem te programmeren moet je in de Arduino programmeeromgeving kiezen voor Arduino Leonardo. Het viel mij op dat het uploaden snel gaat. In tegenstelling tot veel andere Arduino's zie je niet meteen een lampje knipperen. Natuurlijk test je voor je gaat solderen even of hij werkt. Pin 13 kun je nu niet gebruiken om een led te laten aangaan, in plaats hiervan moet je (interne) pin 17 gebruiken. Deze "pin" heeft de eigenaardige eigenschap dat hij andersom werkt: HIGH is uit en LOW is aan. Bijna alle pinnen van de pro micro hebben meerdere functies. Hierdoor zijn er bijvoorbeeld negen analoge input pinnen. Maar A4 en A5 zijn er niet. Er is ondersteuning voor I²C en SPI. Voor I²C gebruik je nu de pinnen D2 (SDA) en D3 (SCL). Voor SPI gebruik je de digitale pinnen 15 (SCK), 14 (MISO of DIN) en 16 (MOSI). Ik heb dit alles getest en het werkt goed, maar het is toch een groot nadeel dat je de sketch moet aanpassen, zeker als je met meerdere types Arduino's werkt.
Als je de USB ingang niet wilt gebruiken voor de voeding dan kun je tussen de 6 en 12 volt aansluiten op de RAW ingang. Het mag ook op VCC, maar dan moet het precies 5 volt zijn. Omgekeerd, als je de USB-ingang gebruikt, dan kun je van de RAW pin 5 volt afhalen met een groter vermogen dan je uit de VCC uitgang kunt halen. Om de pinnen 3, 5, 6, 9 en 10 staat een witte cirkel. Dat geeft aan dat je deze pinnen kunt gebruiken voor een variabele uitgangsspanning (via PWM).

Arduino Beetle

Alternatieve uitvoering
Gewone uitvoering
De Arduino Beetle is erg klein. De plaatsing en het aantal pinnen is afhankelijk van de fabrikant. De pinnen hebben meerdere functies. Er is een uitvoering met gewone pinnen (foto links) en een met connectors waar je makkelijk krokodillenklemmen op kunt aansluiten (foto rechts). Om de Beetle te programmeren kies je uit de lijst met Arduino's de Leonardo. Het geheugengebruik en de snelheid zijn identiek aan dat van de Leonardo. Beide uitvoeringen werken erg goed. Als je alleen plaats hebt voor een kleine Arduino dan is dit een goede optie.
Verschillend aantal pinnen

Andere systemen, Arduino-compatibel

Hieronder beschrijf ik modules, die geen Arduino's zijn, maar vrij gemakkelijk Arduino-compatibel te maken zijn. Ze zijn dan met de Arduino IDE te programmeren. Voordelen zijn dat ze betere specificaties hebben dan de originele Arduino's of voor speciale doelen geschikt zijn.

Digispark

Dit is de kleinste Arduino. Deze Arduino wijkt behoorlijk af van de andere Arduino types. Als je hem wilt inbouwen kan het een optie zijn deze te kopen, maar voor ander doeleinden raad ik deze af. Meer informatie vind je hier. Inmiddels is er de Arduino Beetle (zie hierboven), die ook super klein is, maar veel makkelijker te programmeren en verkrijgbaar met meer pinnen.

Pololu A-star

Werkende 328PB
Polulo maakt bordjes, die Arduino compatibel zijn, maar vaak meer mogelijkheden bieden. Ik heb de A-star 328 PB (5V, 16 MHz) getest. Om deze te kunnen gebruiken in je Arduino programmeeromgeving moet je wel eerst het bord installeren. Dat doe je in door in menu Bestand > Voorkeuren in het veld Additionele Board Beheer URLs het adres https://files.pololu.com/arduino/package_pololu_index.json in te vullen. Na OK klikken kun je nu het juiste bord vinden onder het menu Hulpmiddelen > Board. Je kunt testen met een standaard blink programma, want ook op deze module zit een (gele) led op pin 13. Tip: de kleur van de power led (bij mij blauw) geeft aan welke uitvoering je hebt.
Als je een model krijgt waar je de pinnen nog op moet solderen, dan moet je de pinnen aan de lange zijkanten naar onder solderen (dus de componenten aan de bovenkant), anders kun je niet bij de reset knop. De pinnen aan de korte zijkanten moeten naar boven of opzij. De pinnen van het 3 × 2 blokje hebben meer functionaliteit dan bij de meeste Arduino's, maar die extra functionaliteit is ook op andere pinnen aanwezig. Ook deze pinnen moeten naar boven wijzen (zoals je op de foto ziet heb ik ze weggelaten). Sommige pinnen, zoals GND en VCC, zijn meervoudig uitgevoerd in vier extra pinnen. Ook deze pinnen moeten naar boven wijzen. Ik heb zelf voor alle pinnen die naar boven moeten vrouwelijke connectors gebruikt, zodat ik op mijn breadboard en op dit bord dezelfde kabeltjes kan gebruiken.
Je krijgt bij het bord meestal gebogen pinnen waar de programmer op aangesloten moet worden. Soldeer deze ook zo dat de pinnen aan de bovenkant liggen. Op het plaatjes zie je links nog net een stukje van de aangesloten programmer. De pinnen van het blokje rechts zijn 10, 11 en 12 en SDA1 en SCL1 (Normaal gebruik je SDA0 en SCL0 = pin A4 en pin A5). Alle pinnen bij dit model hebben diverse functies. Als je hier klikt, dan zie je een zogenaamde pin-layout.

Adafruit Pro Trinket

Dit bordje lijkt erg op een Arduino pro mini en heeft vergelijkbare mogelijkheden. Hoewel het bordje een USB aansluiting heeft kun je die niet gebruiken voor seriële communicatie. Dat moet via de RX en TX pinnen (of makkelijker met een programmer). Je kunt de USB poort wèl gebruiken om programma's te uploaden. In de Arduino IDE mag dan geen USB poort geselecteerd zijn en je moet als programmer USBtinyISP kiezen. Even op het kleine knopje op de Trinker drukken en daarna gewoon uploaden zoals je anders doet. Hoewel het een mooi klein bordje is, zou ik hem niet direct aanraden. De nieuwere borden van Adafruit (zie hieronder) zijn handiger en beter.

ItsyBitsy M0/M4

De ItsyBitsy is een klein, maar bijzonder krachtig bordje. Het is op twee manieren te gebruiken: als een Arduino of als een bord met een Python variant erop.
Als je hem krijgt, en je steekt hem in de USB poort, dan verschijnt in de verkenner of bestandmanager een nieuwe schijf. Op deze schijf moet je nu een bestand code.py met een Python programma zetten (soms is het al aanwezig). Zodra dit bestand veranderd is zal de ItsyBitsy dit bestand inlezen en uitvoeren. (In plaats van code.py mag je het ook code.txt, main,py of main.txt noemen). Het grote voordeel is dat dit op elk computertype zal werken. De ItsyBitsy is namelijk zelf de computer. Als je de ItsyBitsy als Arduino wilt gebruiken dan hoef je alleen maar een bord te installeren en te uploaden. Daarna gaat de ItsyBitsy zich heel anders gedragen: Windows ziet hem ineens als een ander type apparaat als eerst. Je kunt dan de Python interpreter dus niet meer gebruiken. Dat is niet erg want dat kun je ook weer terugzetten.
Ik had wel enige problemen met dit bordje: in de Python-stand was hij opeens alleen-lezen. Dan kun je er dus niets meer mee. Op de site van de maker zie je dat dit een probleem is met oudere bordjes (2018) dat je vooraf zelf kunt verhelpen. Maar hij kan nog gewoon in de Arduino stand gezet worden. Ook daar kreeg ik bij een ingewikkeld programma plotseling de melding dat hij er niet meer was. Vervolgens kon hij door geen enkele computer meer gedetecteerd worden. Het blijkt nu, dat je de ItsyBitsy helemaal kunt resetten door twee keer kort achter elkaar op de reset knop te drukken, terwijl hij op de USB poort is aangesloten. Goed om te weten. Je kunt nu op de Adafruit site een bestand ophalen dat je naar de "schijf" moet slepen. Na enige tijd komt de inmiddels geüpdatete schijf terug. Super! Het bordje heeft naast de bekende led op pin 13 ook nog een programmeerbare rood-groen-blauw neopixel. In vergelijking met een Arduino heb je heel veel geheugen aan boord: 512 kByte flash, 192 kByte RAM en nog eens 2 MByte flash om bestanden in op te slaan.

Teensy

Dit zijn geen echte Arduino's, maar je kunt software installeren zodat ze net als een Arduino te programmeren zijn. Hiertoe moet je het programma TeensyduinoInstall downloaden en installeren. Pas als je dit hebt gedaan verschijnt er een USB poort in de Arduino IDE. Je moet nog even controleren of je de goede versie van de Teensy hebt gekozen, want dat gaat niet automatisch. Houd er rekening mee dat als je een nieuwe versie van de Arduino IDE gaat gebruiken je misschien ook een nieuwere versie van TeensyduinoInstall moet installeren.
Belangrijk: De pinnen van de Teensy (behalve Vin) kunnen absoluut NIET tegen 5 volt. Alles werkt met 3,3 volt. Alleen de pinnen van de Teensy 3.5 zijn bestand tegen 5 V, maar ook deze Teensy werkt met 3,3 volt.

Teensy 2.0 en 3.6

Even het juiste bord kiezen
Ik testte de Teensy 2.0++ en de 3.6. De 2.0++ is even snel als een Arduino Uno, maar heeft wel iets meer geheugen. De 3.6 is wel veel sneller en heeft veel meer geheugen. Aan de achterkant zitten een aantal koperen strips die je kunt gebruiken als extra pinnen. De Teensy 3.6 heeft een SD kaartlezer aan boord, bijna alle pinnen kunnen gebruikt worden voor PWM en voor interrupt functies en er zijn pinnen die kunnen reageren op aanraken.

De Teensy 3.6

Teensy 4.0

De Teensy 4.0
In tegenstelling tot de Teensy 3.6 heeft deze Teensy geen SD kaartlezer aan boord en is daardoor aangenaam klein. Het valt op dat de Teensy makkelijk herkend wordt door de Arduino en dat hij supersnel is, zowel bij het uploaden als bij het uitvoeren van berekeningen. Hij heeft verreweg de snelste processor van alle modules die ik tot nu toe heb getest. Voor zover ik dat heb kunnen nagaan is hij erg goed Arduino-compatibel.

Metro express

De Adafruit Metro M0 Express lijkt sterk op de Arduino Uno. Hij heeft erg duidelijke labels. Daaraan zie je dat bijna alle pinnen dezelfde functie hebben als bij de Uno. Maar de Metro is geen Arduino, al kun je hem wel als een Arduino programmeren. Hij heeft dan een aantal grote voordelen t.o.v. de normale Arduino Uno, zoals veel meer werkgeheugen, 2 MByte (!) flashgeheugen, echte analoge output en nog veel meer.
Als je hem voor het eerst op je computer aansluit dan opent zich in de verkenner een soort nieuwe schijf, waarop al enkele items staan. Deze moet je vooral laten staan, want alles wat je verandert wordt direct opgemerkt door de Metro en kan de instellingen veranderen. Hier is ook het programma main.py te vinden. Dit programma wordt door de metro steeds uitgevoerd. Het programma laat zo ongeveer alle sterke punten van de Metro zien, maar je moet wel wat dingen aansluiten om alles te kunnen zien en horen. Je kunt de Metro zelf programmeren door main.py te veranderen. Er is zeker iets voor te zeggen om de Metro met Python te programmeren, maar omdat deze pagina's over de Arduino gaan, zullen we dat niet doen.
Er bestaat ook een geavanceerdere versie: de Metro M4 express en een kleiner model: de Metro Mini 328.

De ATtiny

De ATtiny chip kun je heel goed rechtstreeks gebruiken. Er zijn ook uitvoeringen waarbij een ATtiny chip (meestal de ATTiny85) op een breakout board met een USB aansluiting is gemonteerd.

ATtiny chips

ATtiny chips kunnen via de Arduino Uno geprogrammeerd worden. De kleinste ATtiny chip heeft acht pootjes, waarvan er twee nodig zijn voor de voeding. Ondanks dit kleine aantal pootjes hebben ze veel mogelijkheden. Zo heeft ATtiny 85, ondersteuning voor I²C, SPI, PWM, Analoog en digitaal. De chips zijn vooral bedoeld om in te bouwen in kleine apparaten, of bij toepassingen die weinig stroom mogen gebruiken, zoals bij gebruik van zonnecellen of batterijen. Als je te weinig hebt aan de acht pootjes, dan kun je ook een ander type kiezen, zoals de ATtiny 84 met 14 pootjes of de ATtiny met 20 pootjes. Deze zijn wel een stuk duurder, maar hebben ook meer intern geheugen. Het hangt sterk van je toepassing af welke chip het meest geschikt is: voor een knipperlichtje of drie kleuren stoplicht werken ze allemaal wel. Met de nieuwste versies van de Arduino IDE is het erg eenvoudig geworden de ATtiny te programmeren, maar vergt toch nog wel wat stappen. Klik hier om te zien hoe je dit doet. Hier vind je ook een paar voorbeeld programma's.
Als je alles goed hebt ingesteld, kun je gaan programmeren. Als je per ongeluk niet de juiste variant van de ATtiny hebt gekozen dan zal de compiler je vlak voor het uploaden waarschuwen.
ATtinyATtiny85 op batterijen, met I²C display
Als je van het I²C protocol gebruik wilt maken, bijvoorbeeld om een display aan te sluiten dan zitten daar nogal wat haken en ogen aan. In plaats van de Wire.h bibliotheek moet je nu TinyWireM.h gebruiken. Het probleem is nu dat veel andere bibliotheken alsnog Wire.h gebruiken. Je moet dus ofwel die bibliotheken zelf aanpassen of andere geschikte bibliotheken vinden. Als voorbeeld neem ik het vier-regelig display. Dit werkt pas als je de juiste LiquidCrystel_I2C bibliotheek hebt geïnstalleerd en alle andere LiquidCrystel_I2C bibliotheken hebt verwijderd. De nieuwste versie NewLiquidCrystel_I2C van Malpartida blijkt zonder aanpassingen te werken met de ATtiny85, echter niet met de ATtiny45.
Nog een opmerking over de voedingsspanning: de ATtiny kan met een heel lage spanning werken, bij sommige versies vanaf ca 1,8 volt. De maximum spanning is echter 5,5 volt! In tegenstelling tot de gewone Arduino mag je deze niet op een 9 volt batterij aansluiten.

Als breakout board (ATtiny85)

ATtiny, het linker ledje knippert, het rechter geeft aan dat er spanning is
Als je de breakout versie hebt dan heb je geen andere Arduino nodig om de ATtiny te programmeren. Toch werkt het programmeren en uploaden anders dan bij andere Arduino's, juist omdat de pinnen meerdere functies hebben. Persoonlijk vind ik dat het niet veel voordelen heeft om deze versie te gebruiken. Wil je het toch proberen doe dan het volgende: zet in het voorkeuren paneel bij Meer Board Managers URL's het adres http://digistump.com/package_digistump_index.json
Laat vervolgens door de board manager het digistump ASR board installeren. Als Windows de driver niet kan vinden dan moet je het bestand Digistump.Drivers.zip downloaden, uitpakken en installeren. Nu zal blijken dat de module steeds opnieuw door Windows herkend wordt en dan na 5 seconden weer verdwijnt. Als je geluid hebt aanstaan dan kan dat behoorlijk hinderlijk zijn. Verbind de ATtiny dus nog nietmet de USB poort!
Maak als gewoonlijk een programma, maar kies vervolgens bij hulpmiddelen het bord Digistump(default - 16.5mhz). Als je al een poort kunt kiezen, doe dat dan niet. Klik in de IDE op de pijl voor upload. Het programma wordt nu gecompileerd. De IDE vraagt je nu om de module aan te sluiten. Dat moet je binnen een minuut doen. Als het niet meteen lukt, probeer het dan nog een keer. Als de IDE aangeeft dat het upoaden voltooid is, dan kun je de module nu zonder problemen in de USB poort laten. Maar je moet de module wel steeds loskoppelen en opnieuw aansluiten voordat je gaat uploaden. Vrij onhandig ☹.

ESP8266 NodeMCU of WeMos WiFi module

Deze moet je installeren.

Menu Hulpmiddelen: Boven de blauwe balk zie je de keuzes bij dit bord
De ESP2866 wordt vaak gemonteerd op een bordje met een aantal pinnen dat vergelijkbaar is met een Arduino nano. Bekende voorbeelden zijn de WeMos D1 en de NodeMCU. WeMos heet tegenwoordig Lolin. Ik heb veel verschillende uitvoeringen getest en ze werken allemaal bijzonder goed! Verderop zal ik in meer detail ingaan op de WeMos D1 mini.
De NodeMCU (of WeMos, et cetera) heeft vergelijkbare mogelijkheden als de Arduino en nog veel meer, waaronder zeer uitgebreide toegang tot WiFi. Omdat de Arduino IDE dit zeer goedkope bordje goed ondersteunt wordt dit steeds vaker gebruikt in plaats van een "echte" Arduino. Vroeger moest je de NodeMCU eerst flashen, maar de moderne uitvoeringen kun je via de nieuwste Arduino IDE direct probleemloos programmeren. Veel Arduino programma's kun je met weinig wijzigingen gebruiken met de NodeMCU. Bij ingewikkelde programma's is de esp bibliotheek nodig. Om de NodeMCU op deze manier te kunnen programmeren moet je zorgen dat de Arduino IDE de ESP/nodeMCU kent: ga naar menu Bestand, dan Voorkeuren en zet onder aan de pagina bij Additionele Bordenheerder de link http://arduino.esp8266.com/stable/package_esp8266com_index.json. Als je hier al een ander adres in hebt staan, dan kun je deze adressen scheiden door er komma's tussen te plaatsen.

Vervolgens ga je naar menu Hulpmiddelen, dan naar Board. In plaats van dat je een Arduino kiest ga je helemaal naar boven tot je het item BordenBeheerder... ziet. Als je hier op klikt dan krijg je een lijst met beschikbare borden (zie de screendump). Ergens zie je in de lijst een bord met het woord "esp8266 Module" erin. Klik op install. Met de nieuwste versie van de Arduino software hoef je verder niets te doen. Kies het ESP bord en eventueel nog enkele andere gegevens (zie de screendump) en ga te werk als altijd. Als je een bordje hebt gekocht dat niet in de lijst staat bij Board Beheer, kies dan voor de "Generic ESP2866 module".
Er zijn wel verschillen tussen de Arduino en de ESP, dus daar moet je rekening mee houden. Zo zal de led op 13 niet werken. Kies in plaats daarvan pin 2 (= D4) (Sommige NodeMCU hebben er nog een tweede ledje op pin 16 (=D0)). Het werkt allemaal als een zonnetje!
De esp8266 is ook in een simpele uitvoering (esp-01) te verkrijgen, vooral met het doel een Arduino WiFi mogelijkheden te geven. Ik raad je niet aan deze te kopen, want hij geeft doorgaans nogal veel problemen.
Twee NodeMCU's: de kleine is de D1 mini; de brede zit op twee breadboards.
Tip: als je de nodeMCU op een breadboard wil monteren koop dan de smalle versie! Als je de brede versie hebt, dan kun je twee breadboards in de lengte aan elkaar koppelen, zie de foto. Zo hou je toch plaats over voor draadjes.

De nodeMCU kan in diverse talen geprogrammeerd worden, waaronder LUA en microPython. Je kunt gemakkelijk overschakelen tussen programmeren in C++ (met de Arduinio IDE) en microPython (met bijvoorbeeld uPyCraft of Thonny). Alle reden dus om er eens mee te experimenteren.
Op de display pagina kun je een plaatje zien van een Wemos D1 mini die gegevens van een weerstation weergeeft. Een toepassing die met een Arduino moeilijker (en veel duurder) te realiseren is.
Omdat de nodeMCU steeds belangrijker wordt laat ik hier een sketch zien, waarmee je heel eenvoudig de vertaalslag kan maken van de nodeMCU pin nummers naar de overeenkomstige Arduino pin nummers. Dat is hier zo gedaan dat de naam zoals die op de nodeMCU staat (bijvoorbeeld D0) via #define automatisch wordt omgezet naar het juiste pin nummer. Als je netjes wilt programmeren kun je met nog een #define verwijzen naar die naam (bijv. #define led D4), of meteen naar het goede pin nummer (bijv. #define led 2). Omdat alles binnen #define vóór het compileren gebeurt, kost dit je geen enkele byte van het geheugen extra. Dit voorbeeld laat de blauwe led op het bord knipperen (twee seconden aan, een seconde uit). Als je nodeMCU het precies andersom doet dan weet je dat voor deze led aan overeenkomt met LOW en uit met HIGH. Bij (bijna?) alle nodeMCU's is dat het geval. Het programma zal met de meeste grote uitvoeringen van de nodeMCU werken.
// Vertaling pin nodeMCU -> pin Arduino
#define D0  16
#define D1  5
#define D2  4
#define D3  0
#define D4  2
#define D5  14
#define D6  12
#define D7  13
#define D8  15
#define D9  3
#define D10 1

#define led D4
void setup() {
  pinMode(led, OUTPUT);
}

void loop() { // LET OP: bij veel nodeMCU's moet je HIGH en LOW omwisselen
  digitalWrite(led, HIGH); // Schakel led in
  delay(2000);
  digitalWrite(led, LOW); // Schakel led uit
  delay(1000);
}
Alle extra's van de Arduino, zoals hardware I2C en SPI heb je ook op de ESP, maar op verschillende pinnen. Bij de nodeMCU zijn de standaard I2C pinnen D1 (SCL) en D2 (SDA). Er hoeft niets aan een Arduinoprogramma veranderd te worden als je deze twee pinnen gebruikt. Het werkt probleemloos !(Getest met de D1 mini en de LoLin NodeMCU)

De Lolin/WeMos D1 mini

Onder de naam Lolin of WeMos D1 mini zijn allerlei verschillende uitvoeringen gemaakt. Ik gebruik deze zelf erg vaak, omdat ze compact zijn, maar toch alle voordelen hebben van een nodeMCU. De in het plaatje hieronder weergegeven D1 pro mini heeft zelfs 16 MB aan flash. Je kunt dit in een keer volschrijven vanuit de Arduino IDE.
Het is belangrijk dat je de connectors op de mini D1 op de juiste wijze aansluit, anders krijg je een probleem met shields voor de D1 mini. Daarom beschrijf ik hier hoe het moet.
Als je een WeMos D1 mini koopt, dan krijg je er meestal drie verschillende sets pin connectors bij: mannelijk (A), vrouwelijk (B) en gecombineerd mannelijk en vrouwelijk (C), zie plaatje.
D1 mini's en connectors
D1 mini met ♀/♂ pinheader


Bij de oudere types is het niet duidelijk hoe je de pinnen moet solderen. Als je de processor boven hebt zitten dan kun je de USB connector niet goed aansluiten zodra hij in een breadboard zit (zie module 1). Toch is dat wel de juiste wijze om hem te monteren. Als je de D1 mini aan de rand van het breadboard prikt dan gaat het meestal toch wel. Als je de pinnen op de manier van module 2 monteert dan heb je dit probleem niet, maar dan zit het ledje aan de onderkant. Het gaat er nu om waarvoor je de D1 mini gaat gebruiken: als je geen shield gaat gebruiken dan maakt het niet uit welke pinnen je kiest en hoe je ze soldeert. Als je een shield met vrouwelijke connectors wilt gebruiken (zoals het mooie 2.4" display shield), dan moet je de pinnen aan de onderkant hebben zitten (zoals module 1). Als je nog ander shields wil gebruiken kies dan connectors type C. Je prikt ze er altijd vanaf de bovenkant doorheen, dus vanaf de kant waar de processor zit. Als je ze gesoldeerd hebt, trek dan met een tangetje bij de twee connectors A die je over hebt één voor één de pinnen eruit. Het zwarte kunststof dat je overhoudt kun je nu over de gesoldeerde pinnen schuiven. Ziet er netjes uit en geeft bescherming van je breadboard omdat de pinnen dan niet te lang zijn.
Links: 1,44 inch 'mannelijk' display shield boven op de D1 mini
Rechts: 2,4 inch 'vrouwelijk' display shield onder op de D1 mini
Helaas kun je niet dezelfde software gebruiken...

Flashgeheugen van de ESP lezen en schrijven
Succesvol getest met de Lolin NodeMCU v3, de nodeMCU devkit V0.9 en een WeMos ESP 8266 module

Waarschuwing: het in het vervolg beschreven SPIFFS bestandssysteem heeft enkele nadelen en zal daarom mogelijk in latere versies van de Arduino niet meer ondersteund worden. Het wordt vervangen door LittleFS. Voor de gebruiker werkt LittleFS ongeveer hetzelfde als SPIFFS, maar het is een ander, veiliger bestandssysteem (bijvoorbeeld als de spanning uitvalt tijdens het wegschrijven). Ik zal te zijner tijd de onderstaande tekst aanpassen.
De nodeMCU heeft geen EEPROM, maar een deel van het flash geheugen kan bij gebruik van de bibliotheek EEPROM.h doen alsof het EEPROM is. Hier sla je gegevens in op die bewaard moeten blijven als de module uit gaat. Dat werkt goed, als je maximaal 4 kB nodig hebt. Meer geheugen kun je op deze manier niet gebruiken. Gelukkig kun je wel degelijk het volledige flashgeheugen gebruiken voor permanente data-opslag, maar dat moet op een heel andere manier. Het toverwoord is SPIFFS (SPI File Flash System). De ESP2866 kan in het flash geheugen een (FAT) bestandssysteem laden. Dit bestandssysteem wordt niet overschreven door het laden van een programma. Je kunt bestanden aanmaken, schrijven en lezen, net als op een harde schijf. Je gebruikt hiervoor de bibliotheek FS.h; deze is al als het goed is al geïnstalleerd tegelijk met de ESP-bibliotheken. FS.h kent een aantal opdrachten om bestanden en mappen te maken en bovendien kun je de functies uit de bibliotheek Streams gebruiken.
Kies SpiFFS
Belangrijk is nu dat je alles goed instelt anders gaat het niet werken. Kies eerst het juiste bord (generic ESP2866 of een van de nodeMCU's), vervolgens kies je een geheugenmodel. Als je niet weet hoeveel MB geheugen de module heeft, dan kunt je dat zien onder in het IDE scherm als je een (willekeurige) sketch upload. In het plaatje hiernaast zie je hoe je uit de verschillende geheugenmodellen kunt kiezen. Ik heb een 4MB model en wil daarvan 3MB beschikbaar hebben voor het filesysteem. Als je een heel groot programma wil maken en minder ruimte voor opslag nodig hebt dan zou je een van de andere opties kunnen kiezen.
Allereerst moet het bestandssysteem geformatteerd worden. Als je meerdere ESP's hebt dan is het handig om daar een speciale sketch voor te maken. Ik doe het liever in het eigenlijke programma, zodat ik het schrijven en lezen meteen kan testen. Formatteer elke ESP maar één keer! Na formatteren kun je nu allerlei gegevens wegschrijven en uitlezen. De gegevens blijven bewaard als de spanning wegvalt. In het voorbeeld programma hieronder heb ik alles in de setup gezet. In de praktijk zul je in de functie loop() steeds nieuwe (meet)waarden toevoegen.
Als er iets mis gaat het openen van het bestand krijg je in de seriële monitor een foutmelding te zien. Daarna zal de ESP zichzelf alsmaar blijven opstarten. Hoewel de ESP daar niet kapot van gaat is verstandig om hem dan los te koppelen. Na betere keuzes of verbeteren van de sketch zou het goed moeten gaan.
Overschrijf gegevens zo weinig mogelijk, want daar slijt het flashgeheugen van. Hoe vaak je leest maakt niet uit. Gebruik het testprogramma als volgt: zet de constantes Formatteren en Wijzig op true. Als het programma goed gewerkt heeft dan verander je deze beide in false. Upload het aangepaste programma. Om zeker te weten dat de informatie bewaard blijft kun je de ESP loskoppelen en opnieuw aansluiten.
Uitvoer
Nog een opmerking over de ESP: je ziet op de Seriële monitor altijd allerlei symbolen bij opstarten. Deze worden gegenereerd door de ESP zelf. Als je de juiste baudrate kiest dan kun je lezen wat er staat. Het is moeilijk om dit te onderdrukken, maar door de \n in mijn eerste Serial.print() zorg ik er voor dat de tekst die er toe doet op een nieuwe regel begint.

Het voorbeeldprogramma:
#include "FS.h"
boolean Formatteren = false; // Maak hier de eerste keer true van en zet dit daarna terug op false!
boolean Wijzig = false; // Zet op true als de tekst gewijzigd moet worden
File f;
void setup() {
  Serial.begin(9600);
  SPIFFS.begin();
  if (Formatteren) {
    Serial.println("\nWacht totdat de schijf is geformatteerd (ca 30 s)");
    SPIFFS.format();
    Serial.println("SpiFFS is geformatteerd");
    Serial.println("Zet nu in het programma de variabele Formatteren op false!");
  }

  if (Wijzig) {
    Wijzig = false; // zorg ervoor dat zo weinig mogelijk keer geschreven wordt
    Serial.println("\nIk schrijf nu iets in een bestand");
    f = SPIFFS.open("Theo.txt", "w"); // open bestand voor schrijven ("w"rite)
    if (!f) Serial.println("Ik kan dit bestand niet openen"); // esp start opnieuw op
    f.println("Hallo allemaal");
    f.println("Hierbij een berichtje van de esp2866\n");
    f.println("Groet!");
    Serial.print("Gelukt. Het bestand is "); Serial.print(f.size());
    Serial.println(" bytes groot");
    f.close();
  }

  f = SPIFFS.open("Theo.txt", "r"); // open bestand voor lezen ("r"ead)
  if (!f) Serial.println("Ik kan dit bestand niet openen"); // esp start opnieuw op
  Serial.println("\nIk lees het bestand nu. Dit staat erin:");
  while (f.available()) {
    String s = f.readStringUntil('\n');
    Serial.println(s);
  }
}

void loop() {
}
Je kunt op een makkelijke manier grote hoeveelheden gegevens in het flash geheugen krijgen. Maar om dit mogelijk te maken moet je wel eenmalig de nodige stappen doorlopen. Dat is ook nog verschillend voor ESP8266 en ESP32 systemen. Zie hier mijn uitleg en een voorbeeld hoe dat moet moet.

De ESP32

De nieuwe ESP32 heeft veel meer geheugen dan een Arduino en is ook veel sneller. Hij heeft nog veel meer mogelijkheden, zoals een ingebouwde real time clock, teveel om hier op te noemen. Om de ESP32 met de Arduino IDE te kunnen gebruiken moet je via het menu bestand → voorkeuren bij Meer board managers: de volgende link invullen:
https://dl.espressif.com/dl/package_esp32_index.json
Als hier al andere links instaan, zet dan een komma tussen deze en de andere links. Open nu de bordenmanager en zoek naar ESP32. Als het goed is vind je een bord van Expessif Systems. Installeer dat. Hierna kun je uit tientallen borden kiezen. Om te zien of alles goed werkt kun je via menu Bestand → Voorbeelden → ESP32 → time het SimpleTime voorbeeld proberen. Hierbij moet je zelf achter const char* ssid = de naam van je internet verbinding opgeven en achter const char* password = het wachtwoord. De naam van je internet verbinding lees je onder in je beeldscherm (muisaanwijzer boven het internetsymbool); het wachtwoord vind je meestal achter op het modem. Na uploaden moet je de seriële monitor openen en instellen op de waarde die je in de setup ziet staan (in dit geval 115200). Als alles goed is gegaan dan zie je elke seconde de juiste tijd. Dit alles werkt meestal probleemloos.
Een voordeel van de ESP32 is dat deze ook BlueTooth heeft (zowel de klassieke als de energiezuinige versie). Bijzonder is dat hij het magneetveld kan meten in de buurt van de processor.
Er zijn ook een paar nadelen aan de ESP32 modules:
  1. het gebruik van het flash geheugen gaat anders dan bij de ESP8266
  2. er zijn veel verschillende uitvoeringen met op andere plaatsen andere pinnen e.d.
  3. vaak is niet duidelijk welke uitvoering je moet kiezen in de Arduino IDE
  4. je moet tijdens het uploaden de pin BOOT indrukken, totdat je ziet dat hij gaat uploaden. Er zijn uitvoeringen, zoals de WeMos D1 mini en klonen daarvan, waarbij dit niet hoeft.
  5. alles wijst erop dat een en ander nog niet goed is uitgekristalliseerd, maar dat zal vast snel beter worden.
Ondanks dit alles is het toch een fijne, snelle processor met veel meer mogelijkheden dan een gewone Arduino. Als je draadloos wilt werken of via internet van alles wilt doen dan is dit de processor.

De ESP32 CAM

Links: M5Stack camera
Rechts: achterkant met koelplaatje
De ESP32 heeft zoveel geheugen en rekenkracht, dat het mogelijk is camerabeelden te verwerken. Er worden dan ook diverse modellen aangeboden, waarop kleine camera's kunnen worden aangesloten. Je kunt dan al voor minder dan 10 dollar een bewakingssysteem maken. Als je de software voor de ESP32 hebt geïnstalleerd dan zit daar een uitstekend voorbeeld bij ("CameraWebServer"). In dit voorbeeld moet je de juiste camera kiezen en je internet gegevens invullen. Na uploaden van de code kun je via internet een verbinding met de camera tot stand brengen en de beelden naar je computer streamen. Het programma geeft ook de mogelijkheid om gezichtsherkenning te doen. Je kunt het voorbeeldprogramma aanpassen zodat je (bijvoorbeeld) namen koppelt aan de gezichten. Helaas kloppen de instellingen van de softwarebibliotheek niet altijd met de camera, dan wordt het een hele zoektocht om alles goed te krijgen. Het zal vaak meteen goed gaan. Uiteindelijk heb je een fantastisch systeem met een redelijke kwaliteit.
Hiernaast zie je de uitvoering die ik testte. Deze heeft een type C connector. Voor een paar cent koop je een verloopstukje naar USB, zodat je deze gemakkelijk op je computer kunt aansluiten. Om de module aan de praat te krijgen zijn helaas wijzigingen in de software nodig.
Goedkopere uitvoeringen hebben geen USB aansluiting. Je moet dan een programmer aansluiten, met TX naar RXD en RX naar TXD (zet de programmer in de 3,3 volt stand of gebruik de 3,3 volt pin van de programmer). De programmer neemt als het ware de USB aansluiting over; je kunt dus op de gebruikelijke manier uploaden (via het menu of met Ctr-D). Als het uploaden gelukt is, maar je problemen krijgt dan komt dit vaak omdat de ESPCAM veel stroom vraagt voor deze toepassing. De meeste programmers kunnen dat niet leveren. Om de ESP te beschermen start de zogenaamde brownout detector de ESP dan opnieuw op. Maar dat blijft hij doen als er niets verandert. Probeerde de brownout detector niet uit te zetten, maar sluit een degelijke voeding aan op VCC (de VCC van de programmer koppel je dan los). Als de seriële monitor aanstaat met een baudrate van 115200, dan geeft de brownout detector een melding zodra deze in komt.

SparkFun RedBoard Artemis Nano

Deze moderne processor is goed te programmeren via de Arduino IDE. Je moet vooraf de link https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json toevoegen bij Menu → Voorkeuren → Meer Board Managers URL's:
Als er al andere URL's staan, zet er dan een komma voor (zie afbeelding hieronder)

Hierna kun je via Boardbeheer de borden van SparkFun installeren. Je krijgt nu onder het voorbeeldenmenu een lijstje programma's voor de Artemis.
Deze Nano is net iets breder dan de Arduino Nano. Dit komt o.a. omdat er een hele rij pinnen aan de buitenkant zit die alle verbonden zijn met GND. Als je SparkFun Nano in een breadboard wil kunnen gebruiken, soldeer dan alleen pinnen de de twee rijen aan de binnenkant.
Deze Nano heeft veel meer geheugen dan de Arduino Nano en is veel sneller. Daarnaast heeft hij veel extra's, die ik hier niet allemaal kan opnoemen. Zo is er een LiPo batterijoplader en een Qwiic connector voor verbinden met andere I²C apparaten. De module heeft 1MByte flash geheugen. Hij heeft 6 bussen die voor I² en 6 bussen die voor SPI kunnen worden gebruikt. Er is een real time clock (RTC) aan board, maar deze schijnt niet erg nauwkeurig te zijn. Om de RTC zinvol te kunnen gebruiken moet je de nano aangesloten houden op een batterij. Sommige uitvoeringen hebben een aansluiting voor een lipo accu, maar deze houdt niet alleen de RTC op spanning, maar de hele module. Als je een lipo batterij koopt kijk dan heel goed naar de aansluiting want er zijn verschillende nauwelijks onderscheidbare stekkers. Verder is de aansluiting van + en - niet gestandaardiseerd, waardoor je misschien de draden in de stekker moet omwisselen. Er is ook een ingebouwde microfoon, die je met een van de voorbeeldprogramma's gemakkelijk kunt testen. Bij mij werkte hij bijzonder goed.
De SparkFun Nano heeft twee bootloaders. De SparkFun Variable Loader wordt standaard gekozen en dat kun je het best zo laten. Uploaden gaat merkbaar sneller dan bij Arduino borden.
Houd er rekening mee dat de module werkt op 3,3 V en kapot gaat als je 5 V op de pinnen aansluit.

STM32Fx modules

De STM23F modules staan erom bekend dat ze erg goedkoop zijn en snel. Ze zijn goed met de Arduino IDE te programmeren. Nadeel is dat het vrij ingewikkeld is om alles goed aan de praat te krijgen en dat is ook nog verschillend per type device. Ik ben bij het onderzoeken van verschillende type STM32F's tegen diverse problemen aangelopen die je niet direct zou verwachten. Door veel te zoeken op internet kon ik uiteindelijk de meeste problemen oplossen.

STM32F03/STM32F03/STM32F04 Demo Board serie

Dit is een wat ouder type. De meeste modules van dit type vallen op doordat er twee connectors zijn en een USB-aansluiting. De USB-aansluiting is uitsluitend geschikt als voeding. De connectors zijn handig, want de ene kun je gebruiken voor een seriële verbinding via een programmer. De andere kun je gebruiken voor een ST-LINK aansluiting. Een ST-LINK programmer heeft als voordeel dat de jumper in de gewone werkstand mag blijven zitten. Het is mij niet gelukt (noch via de USB-poort noch via de programmer) om te communiceren met de Seriële monitor. De module werkt erg goed, maar heeft erg weinig geheugen. Ik heb de I²C getest met een tekstdisplay. De pinnen zijn: PA9 voor SCL en PA10 voor SCL. Je hoeft de programma's zoals die je gebruikt voor het display niet aan te passen. Je moet in het menu opgeven dat je U(S)ART niet wil gebruiken, anders heb je heel te weinig geheugen om het display te kunnen gebruiken. Deze modules zijn erg goedkoop (minder dan een euro), maar koop ze alleen als er echt genoeg aan hebt.

BluePill en BlackPill

Blue pill met STLINK
De zogenaamde BluePill is een van de uitvoeringen van de STM32F103. De bordjes zijn doorgaans blauw, vandaar de naam. Ze zijn veel sneller dan de Arduino en hebben behoorlijk veel flash geheugen (minimaal 64 kB). Omdat ze maar enkele dollars kosten zijn ze zeer populair. Nieuwere versies zijn i.h.a. zwart en worden daarom BlackPill genoemd. Probleem met deze bordjes is dat ze geen bootloader hebben, waardoor de aanwezige USB aansluiting niet zonder meer gebruikt kan worden om ze te programmeren. Dat moet met een programmer gebeuren. De "ST-Link" programmer werkt goed met de Arduino IDE, maar geeft momenteel bij mij problemen. De USB connector kun je gebruiken om de module van voeding te voorzien, of om de seriële monitor te kunnen gebruiken. Hiervoor moet je wel opgeven bij het compileren dat je seriële ondersteuning wil, zie onderstaande schermafdruk.

Het is mogelijk een bootloader op de chip te zetten zodat ze toch via de USB poort geprogrammeerd kunnen worden. Dat is echter nog niet zo eenvoudig. Het is mij bij een type gelukt en bij een ander type niet. Of je het nu wel of niet via de programmer doet: je kunt de BluePill programmeren alsof het een Arduino is. Veel functies werken zoals je gewend bent; sommige meer exotisch functies werken niet. De pin-nummers van de BluePill zijn anders dan die van de Arduino; je kunt de pin-nummering gemakkelijk vinden op Internet.
Inmiddels worden Blue- en BlackPills verkocht die wel een Arduino bootloader hebben. Bij mij werkte dit pas nadat ik de CubeProgrammer geïnstalleerd had. Bij de verschillende uitvoeringen van de Blue- en BlackPills doen zich diverse problemen voor. Uiteindelijk lukt het wel om ze te programmeren. Als ik advies mag geven, dan zou ik zeggen: koop eerder een nodeMCU dan een BluePill, want het prijsverschil is niet erg groot. De nodeMCU geeft in tegenstelling tot de STM nauwelijks of geen problemen met uploaden van sketches en heeft ook nog eens WiFi.

Andere systemen, niet Arduino-compatibel

Hieronder beschrijf ik enkele systemen, die geen Arduino's zijn, maar er om een of andere reden vaak mee worden vergeleken. Ze kunnen NIET met de Arduino IDE geprogrammeerd worden.

De Particle Photon

De Photon is een kleine, zeer geavanceerde module, die veel op een Arduino nano of micro lijkt. Hij heeft een antenne en is bijzonder geschikt voor Internet of Things. Hoewel de software hetzelfde is als die voor de Arduino kun je hem niet via de Arduino IDE programmeren. Daarvoor moet je ofwel de online ontwikkelomgeving gebruiken, ofwel een lokale versie daarvan installeren. In alle gevallen is verbinding met internet nodig, zelfs als je het apparaat via USB aan de computer vast zit. Voor je iets kunt doen moet de module "geclaimed" worden. Het kostte me grote moeite dat voor elkaar te krijgen, maar via mail krijg ik vrijwel real time hulp van de firma Particle. Nu updaten van de interne software lukte het eindelijk. Ik gebruikte hierbij een Windows programma. Het zou veel makkelijker moeten lukken via Bluetooth met een smartphone of tablet, maar de hiervoor benodigde app crashte bij mij (en anderen) steeds. Al met al was het vrij moeizaam dit alles aan de praat te krijgen. Maar uiteindelijk kon ik een programma probleemloos downloaden. Hoewel hij volgens de fabrikant eenvoudig te gebruiken is, raad ik deze module toch niet aan voor beginners.

De BBC Micro:bit

Het programma main.py in Thonny
Dit bordje is speciaal ontwikkeld om jonge kinderen te leren programmeren. Het heeft een vergelijkbare functionaliteit als de Arduino. Je kunt de micro:bit online programmeren met een visuele programmeertaal die erg lijkt op Scratch. Het systeem genereert dan automatisch Javascript code. De module kan ook direct worden geprogrammeerd in Javascript, maar ook in enkele andere talen. Het is niet mogelijk de Arduino programmeeromgeving hiervoor te gebruiken. De kale micro:bit heeft maar enkele uitgangen waar je snoertjes via mini krokodillenbekjes op aansluit. Leuk misschien in de klas, maar je kunt beter meteen een module erbij kopen waarmee je meer uitgangen hebt, of waar een breadboard op zit. Op Internet zijn honderden leuke projecten te vinden. Veel van die projecten zijn ook makkelijk geschikt te maken voor de Arduino. In tegenstelling tot de Arduino heeft de micro:bit al Bluetooth en enkele sensoren aan boord. Een voordeel van de de micro:bit is ook dat je deze vanuit elk type computer of tablet kunt programmeren en gebruiken. Het is ook mogelijk de micro:bit in Python te programmeren via de nieuwste versie van Thonny. Dit werkt erg goed.

Raspberry Pi

De Raspberry Pi is een computer, met een operating system met alle voorzieningen van een computer, zoals USB poorten en een HDMI uitgang voor een beeldscherm. De schermafdruk bij het Python voorbeeld hiernaast is dan ook rechtstreeks van het Raspberry scherm genomen.
Een screenshot van "Thonny" met het Python blink programma
De Raspberry Pi is erg geschikt om mee te experimenteren. De overeenkomst met de Arduino is dat je de vele pinnen van de Raspberry gewoon kunt programmeren. De raspberry pi is om allerlei redenen niet geschikt om in te bouwen. Het programmeren van de pinnen van de Raspberry Pi kan met vele programmeertalen, maar waarschijnlijk is Python de meest gebruikte. Hiernaast laat ik zien hoe je een blink programma kunt maken. De led sluit je aan tussen de pinnen 11 en GND. Omdat de Raspberry Pi veel minder stroom kan leveren dan de Arduino, moet je zorgen dat je een weerstand van minimaal 100 Ω voor de led zet.
De meest verkochte Raspberry's zijn de Raspberry 3b en de Raspberry Zero. De nieuwste is de snellere Raspberry 4. Helaas zijn deze drie Raspberry's zowel wat betreft de hardware als de software nauwelijks compatibel te noemen (drie verschillende HDMI aansluitingen, twee verschillende trafo aansluitingen en een OS dat op de 3b werkt, werkt vaak niet op de 4). Goedkope klonen zijn er niet.

De TI innovator hub

De TI innovator hub (kortweg hub) is iets heel anders dan de Arduino, maar vaak wordt deze wel met een Arduino vergeleken omdat hij ongeveer dezelfde functionaliteit biedt en - volgens TI - eenvoudiger in het gebruik is. Met het laatste ben ik het overigens maar ten dele eens, want - om een voorbeeld te noemen - als je de innovator hub met een TI-nspire rekenmachine gebruikt is het programmeren veel ingewikkelder dan met de TI-84. Zelfs in de programmeertaal (een soort Basic) zijn er tussen de twee machines verschillen (hoe verzin je het!). Hier heeft TI een kans laten liggen om de nspire te voorzien van een PGRM knop en een fatsoenlijke programma-editor zoals de TI 84 heeft. In de praktijk zul je grotere programma's met de simulatiesoftware op je computer maken, want met de rekenmachine is dat een crime.
Inmiddels is er een TI uitvoering met Python en die kun je zelfs gebruiken om de micro:bit te programmeren.
Het grootste verschil in functionaliteit met de Arduino is dat je de hub niet stand-alone kunt gebruiken. Je moet altijd een computer of een TI rekenmachine aangesloten hebben. De overige specificaties lijken wel op die van de Arduino: ondersteuning van I²C, mogelijkheid tot gebruik van een breadboard e.d. Met de bijgeleverde netvoeding kan de hub genoeg stroom leveren voor kleine motoren, zonder die voeding zul je vaak een transistor en hulpvoeding nodig hebben.

Lego Mindstorms EV3

De EV3 is de nieuwste processor van LEGO, waarmee je allerlei robots kunt programmeren. Als je vooral geïnteresseerd bent in het bouwen van complete robots, dan kan dit een goede keuze zijn. De EV3 en veel andere onderdelen zijn wel tamelijk groot, zodat je geen miniatuurrobots kunt maken. De EV3 is een zeer veelzijdige processor, met vrijwel onbegrensde mogelijkheden. Je kunt de EV3 echter niet met de Arduino IDE programmeren. Het kan naast de normale programmeermethode met blokjes ook in MicroPython. Ik vond een werkend MicroPython programma dat via de ingebouwde luidspreker van de EV3 zelfs spraak in verschillende talen kan laten horen via text to speech. De robot kan ook met Open Roberta worden geprogrammeerd. Als je een afwijkende programmeertaal wil gebruiken dan heb je een micro SD kaartje nodig waarop de benodigde software staat. Bij aanzetten van de EV3 zal deze dan booten vanaf de SD kaart. Een voordeel is dat je heel veel programma's op het kaartje kunt zetten en niemand verbied je om meerdere kaartjes te gebruiken. Zodra je de EV3 opstart zonder micro SD kaart gedraagt hij zich weer als normaal.
Een groot voordeel is dat er heel veel projecten op internet te vinden zijn van robots. Ook worden veel sensoren meegeleverd.

Pyboard

Twee pyboards. Ik heb er vrouwelijke headers op gezet.
De pyboard is een bordje met veel pinnen, die qua functionaliteit te vergelijken zijn met die van de Arduino Uno. Een groot verschil is dat de pyboard alleen te programmeren is in MicroPython. Er is geen bibliotheek waarmee de Arduino IDE gebruikt kan worden en ik verwacht niet dat die er zal komen. Aan boord heb je onder andere een real time clock en een versnellingsmeter. Daarnaast zijn er de gebruikelijke communicatieprotocollen (I²C, oneWire en SPI). De pyboard heeft een micro SD kaartlezer. Deze is bedoeld om programma's op te slaan. Hierdoor kun je veel programma's bij je pyboard houden. Een van de vele voordelen is ook dat je de kaart (of een kopie daarvan) in een andere pyboard kunt steken en dan heb je daar ook alle programma's beschikbaar. De SD kaart moet FAT of FAT32 geformatteerd zijn (exFat werkt niet). Je kunt de pyboard ook zonder SD kaart gebruiken, maar ik raad dat af omdat bij het minste of geringste het geheugen gereset wordt en dan ben je alle opgeslagen programma's kwijt. De pyboard is niet heel goedkoop (ca. 35 euro), maar er bestaan ook goedkope klonen.
Veel meer nuttige informatie over het pyboard en een aantal voorbeeldprogramma's vind je hier, op mijn nieuwe pyboard site. Ik ben van plan de komende tijd het aantal voorbeeldprogramma's nog uit te breiden.