Welke programmeertaal moet u gebruiken voor uw microcontrollerprojecten? Laten we de vier beste opties eens bekijken.
Ontwikkelingsborden voor microcontrollers zijn een hoofdbestanddeel van de makersgemeenschap geworden. Deze programmeerbare apparaten zijn specifiek ontworpen om invoer- en uitvoersignalen te verwerken als een manier om verschillende modules en componenten aan te sturen, zoals sensoren, motoren, LED's en menselijke invoerapparaten (HID's).
Maar daarvoor moet je een scripttaal leren die de microcontroller kan interpreteren om deze apparaten te programmeren. De meest populaire microcontroller-talen van tegenwoordig zijn MicroPython, CircuitPython, Arduino (vereenvoudigd C++) en C. Elk van deze talen heeft zijn eigen voor- en nadelen.
MicroPython
MicroPython is een lichtgewicht implementatie van de programmeertaal Python 3, speciaal ontworpen voor microcontrollers. Het werd in 2013 uitgebracht door Dr. Damien George voor snellere prototyping en om mensen die al bekend zijn met Python in staat te stellen microcontrollers met een vergelijkbare taal te programmeren.
Functies
MicroPython is een uitstekende scripttaal voor beginners die microcontrollers willen programmeren. Nieuwkomers zonder codeerervaring zullen het gemakkelijk te lezen en te begrijpen vinden omdat het door mensen leesbare commando's gebruikt in eenvoudige structuren. Bovendien maakt het gebruik van een read-evaluate-print-loop (REPL) runtime-omgeving, waardoor een interactieve codeerervaring mogelijk is.
Prestatie
Om een microcontroller te programmeren met behulp van MicroPython, wordt firmware met de tolk, bibliotheken en verschillende andere afhankelijkheden in de microcontroller geflitst. Hierdoor kan MicroPython-code lokaal worden geïnterpreteerd en uitgevoerd door de microcontroller, waardoor snelle prototyping mogelijk is, aangezien live feedback kan worden gegeven tijdens het coderen.
Echter vanwege hoe processors code uitvoeren, zullen geïnterpreteerde talen zoals MicroPython aanzienlijk langzamer zijn in vergelijking met gecompileerde talen zoals C++. Dus hoewel prototyping veel sneller kan zijn, is de uitvoering van de code zelf langzamer.
Compatibiliteit
Aangezien MicroPython lokale bronnen gebruikt om programma's te interpreteren en uit te voeren, moet een microcontroller minimaal 256 kB flashgeheugen en 16 kB RAM hebben. Helaas voldoen sommige populaire ontwikkelborden zoals de Arduino Uno niet aan de vereiste specificaties. Er zijn echter nog steeds genoeg boards die compatibel zijn met MicroPython.
Momenteel ondersteunt MicroPython officieel de Pyboard, ESP32, ESP8266, Raspberry Pi Pico, BBC micro: bit, STM32-ontwikkelborden en enkele Arduino-borden zoals de Nano 33 BLE, Nano RP2040, Giga R1 en Portenta H7.
Gemeenschap en ondersteuning
Sinds de lancering in 2013 heeft MicroPython sindsdien een aanzienlijke aanhang gekregen. Beginners zouden het gemakkelijk moeten hebben om MicroPython te leren met zijn goedgeschreven documentatie. Als je meer hulp nodig hebt, heeft MicroPython ook een communityforum waar gebruikers zelfstudies en ideeën delen en allerlei soorten problemen met betrekking tot MicroPython beantwoorden.
Arduino
Arduino is een populair open-sourceplatform dat vooral gericht is op elektronica- en doe-het-zelvers. De programmeertaal Arduino is gebaseerd op de programmeertalen C en C++. De Arduino-taal is in 2005 uitgebracht door een groep ingenieurs, kunstenaars en ontwerpers uit Italië.
Functies
De Arduino-programmeertaal gebruikt een uitgeklede versie van zowel C als C++, waardoor het gemakkelijk te leren en te ontwikkelen is. Code-uitvoering met behulp van Arduino is aanzienlijk sneller dan zijn geïnterpreteerde taal-tegenhangers vanwege de gecompileerde aard ervan. Bovendien heeft Arduino slechts een kleine hoeveelheid systeembronnen nodig om te werken, waardoor het compatibel is met veel ontwikkelborden en microcontrollers.
Prestatie
In tegenstelling tot MicroPython en CircuitPython is Arduino een gecompileerde programmeertaal. Dit betekent dat code eerst wordt gecompileerd op een compiler (reeds opgenomen in de Arduino IDE) en vervolgens als een geheel programma wordt uitgevoerd door de microcontroller.
Dit verbetert de code-uitvoering aanzienlijk, aangezien de microcontroller geen bronnen hoeft te gebruiken om elke coderegel te interpreteren. Bovendien vertaalt het compileren van het programma het ook in machinecode die de microcontroller native kan uitvoeren zonder afhankelijkheden te installeren.
Dit verbetert de uitvoeringssnelheid van de code aanzienlijk, omdat de microcontroller het programma direct kan uitvoeren zonder tijd en hardwarebronnen toe te wijzen aan het vertalen van de code.
Ondersteunde borden
Aangezien de compilatiefase wordt uitgevoerd via de IDE, kunnen microcontrollers slechts 32 kB flashgeheugen en 2 kB RAM hebben om te werken. Dus afgezien van Arduino-borden, er zijn veel Arduino-bordalternatieven je kunt gebruiken om te programmeren met Arduino. Veel van deze boards zouden microcontrollers gebruiken zoals ATmega328P, ATmega2560, SAMx8E, ESP8266, ESP32 en STM32.
Gemeenschap en ondersteuning
Omdat het een open-source platform is sinds 2005, heeft Arduino een aantal van de beste beschikbare documentatie. De Arduino Foundation biedt elk jaar actief updates, ondersteuning en nieuwe opwindende producten. De wereldwijde gemeenschap is ook een van de meest actieve in het delen van handleidingen en ideeën en het beantwoorden van eventuele problemen die u kunt tegenkomen. Met Arduino bent u verzekerd van een goede ondersteuning.
CircuitPython
CircuitPython is Adafruit's implementatie van Python 3, voortbouwend op MicroPython. Hoewel gevorkt van MicroPython, biedt CircuitPython verschillende verbeteringen om het leren van microcontrollers gemakkelijk en leuk te maken.
Functies
CircuitPython is gemaakt om beginners te helpen bij het leren programmeren van microcontrollers. Om dit te bereiken, biedt CircuitPython verschillende functies, waaronder een interactieve codering omgeving, ingebouwde bibliotheken, eenvoudige syntaxis (eenvoudiger dan MicroPython) en uitstekende documentatie en gidsen.
Prestatie
Omdat CircuitPython is gebaseerd op MicroPython, heeft het veel van dezelfde sterke en zwakke punten. De looptijd van het programma zal iets langzamer zijn dan die van MicroPython, aangezien CircuitPython meer functies en extra bibliotheken biedt. Het verschil is echter waarschijnlijk onmerkbaar, aangezien CircuitPython meer capabele microcontrollers nodig heeft om te werken.
Ondersteunde borden
Met geïntegreerde bibliotheken en nog eenvoudigere syntaxis hebben ontwikkelborden voor microcontrollers meer bronnen nodig om CircuitPython te gebruiken. Een microcontroller heeft minimaal een 8-bits processor, 256 kB flashgeheugen (512 kB aanbevolen) en 32 kB RAM (64 kB aanbevolen) nodig. Momenteel ondersteunt CircuitPython meer dan 390 ontwikkelborden, vermeld op de officiële website.
Gemeenschap en ondersteuning
Adafruit staat erom bekend producten te maken die beginnersvriendelijk zijn. Als zodanig kunt u eenvoudig te begrijpen documentatie en boeken vinden op CircuitPython. Hoewel de taal pas in 2017 werd geïntroduceerd, heeft het nog steeds een grotere aanhang dan MicroPython, dat je kunt bereiken via Discord en het officiële forum. Net als de Arduino Foundation levert Adafruit actief updates, ondersteuning en nieuwe producten, wat betekent dat ondersteuning gemakkelijk te vinden moet zijn.
C
C is een algemene programmeertaal die in de jaren 70 is ontwikkeld door Dennis Ritchie van Bell Labs. Het is een gecompileerde programmeertaal die ingenieurs en andere professionals vaak gebruikten om microcontrollers met hoge efficiëntie te programmeren.
Functies
Hoewel het een moeilijkere taal is om te leren, is het belangrijkste voordeel van C ten opzichte van MicroPython, CircuitPython en Arduino het niveau van snelheid, efficiëntie, controle en draagbaarheid dat het biedt. Dit maakt C de beste taal om beide microcontrollers te programmeren voor gebruik in afgewerkte producten.
Prestatie
Afgezien van zijn grote draagbaarheid, staat C bekend om zijn prestaties. Het kan programma's sneller uitvoeren dan Arduino, MicroPython en CircuitPython, zelfs met een microcontroller met minder middelen. Dit komt omdat C een efficiëntere taal is, die de minste afhankelijkheden vereist. Hoewel een gecompileerd Arduino-programma, net als een C-programma, kan worden uitgevoerd op bare-metal hardware, wordt de machinecode voorgebakken geleverd met bibliotheken en tools die de prestaties verminderen.
Ondersteunde borden
De C-taal is zo draagbaar dat het kan worden gebruikt om zowat elke op Arm gebaseerde microcontroller te programmeren. Bovendien kan het worden gebruikt op boards op basis van de Atmel AVR-, STM32-, PIC- en MSP-microcontrollers.
Gemeenschap en ondersteuning
Vanwege de robuuste programmeertoepassing en het feit dat het al tientallen jaren oud is, heeft de C-programmeertaal een enorme online community. U kunt gemakkelijk hulp vinden via verschillende online forums, chatrooms en blogs die gewijd zijn aan het bespreken en delen van ideeën over de C-taal.
Met welke taal moet je programmeren?
Dus, wat is de beste taal om microcontrollers te programmeren? Het hangt echt af van de persoon. De C-taal zou het beste zijn voor professionals die elektronica ontwerpen voor productie.
Degenen zonder codeerervaring willen misschien beginnen met CircuitPython, omdat het functies en documentatie heeft die leren gemakkelijk en leuk maken. Degenen die bekend zijn met Python zullen het gemakkelijk vinden om microcontrollers te programmeren met MicroPython.
En voor de meerderheid van de doe-het-zelvers zou Arduino nog steeds de beste taal zijn om te programmeren microcontrollers, omdat het een uitstekende balans biedt tussen prestaties, draagbaarheid, functies en gemeenschap.