Jakiego języka programowania należy używać do projektów mikrokontrolerów? Przyjrzyjmy się czterem najlepszym opcjom.

Płytki rozwojowe mikrokontrolerów stały się podstawą społeczności twórców. Te programowalne urządzenia są specjalnie zaprojektowane do przetwarzania sygnałów wejściowych i wyjściowych w celu sterowania różnymi modułami i komponentami, takimi jak czujniki, silniki, diody LED i urządzenia wejściowe człowieka (HID).

Ale wcześniej musisz nauczyć się języka skryptowego, który mikrokontroler może zinterpretować, aby zaprogramować te urządzenia. Obecnie najpopularniejsze języki mikrokontrolerów to MicroPython, CircuitPython, Arduino (uproszczony C++) i C. Każdy z tych języków ma swoje wady i zalety.

MicroPython

MicroPython to lekka implementacja języka programowania Python 3 zaprojektowana specjalnie dla mikrokontrolerów. Został wydany w 2013 roku przez dr Damiena George'a w celu szybszego prototypowania i umożliwienia osobom znającym Python programowanie mikrokontrolerów w podobnym języku.

Cechy

MicroPython to doskonały język skryptowy dla początkujących, którzy chcą programować mikrokontrolery. Nowicjusze bez doświadczenia w programowaniu z łatwością przeczytają i zrozumieją, ponieważ używa poleceń czytelnych dla człowieka w prostych strukturach. Co więcej, wykorzystuje środowisko wykonawcze read-evaluate-print-loop (REPL), umożliwiając interaktywne kodowanie.

Wydajność

Aby zaprogramować mikrokontroler za pomocą MicroPython, oprogramowanie układowe zawierające interpreter, biblioteki i różne inne zależności jest przesyłane do mikrokontrolera. Dzięki temu kod MicroPython może być interpretowany i wykonywany lokalnie przez mikrokontroler, umożliwiając szybkie tworzenie prototypów, ponieważ podczas kodowania można dostarczać informacje zwrotne na żywo.

Jednak ze względu na jak procesory wykonują kod, języki interpretowane, takie jak MicroPython, będą znacznie wolniejsze w porównaniu z językami kompilowanymi, takimi jak C++. Tak więc domyślnie, chociaż prototypowanie może być znacznie szybsze, samo wykonanie kodu jest wolniejsze.

Zgodność

Ponieważ MicroPython używa lokalnych zasobów do interpretacji i wykonywania programów, mikrokontroler musi mieć minimum 256 kB pamięci flash i 16 kB pamięci RAM. Niestety, niektóre popularne płytki rozwojowe, takie jak Arduino Uno, nie spełniają wymaganych specyfikacji. Jednak nadal istnieje wiele płyt kompatybilnych z MicroPythonem.

Obecnie MicroPython oficjalnie obsługuje Pyboard, ESP32, ESP8266, Raspberry Pi Pico, BBC micro: bit, Płytki rozwojowe STM32 i kilka płyt Arduino, takich jak Nano 33 BLE, Nano RP2040, Giga R1 i Portenta H7.

Społeczność i wsparcie

Od czasu swojej premiery w 2013 roku, MicroPython zdobył sporą rzeszę zwolenników. Początkujący powinni mieć łatwy czas na naukę MicroPython z jego dobrze napisaną dokumentacją. Jeśli potrzebujesz dodatkowej pomocy, MicroPython ma również forum społeczności, na którym użytkownicy dzielą się samouczkami, pomysłami i odpowiadają na wszelkiego rodzaju problemy, jakie możesz mieć w związku z MicroPythonem.

Arduino

Arduino to popularna platforma typu open source, skierowana przede wszystkim do entuzjastów elektroniki i majsterkowania. Język programowania Arduino oparty jest na językach programowania C i C++. Język Arduino został wydany w 2005 roku przez grupę inżynierów, artystów i projektantów z Włoch.

Cechy

Język programowania Arduino wykorzystuje okrojoną wersję zarówno C, jak i C++, co ułatwia naukę i rozwijanie. Wykonywanie kodu za pomocą Arduino jest znacznie szybsze niż jego odpowiedniki w języku interpretowanym ze względu na jego skompilowany charakter. Co więcej, Arduino wymaga jedynie niewielkiej ilości zasobów systemowych do działania, dzięki czemu jest kompatybilne z wieloma płytkami programistycznymi i mikrokontrolerami.

Wydajność

W przeciwieństwie do MicroPython i CircuitPython, Arduino jest skompilowanym językiem programowania. Oznacza to, że kod jest najpierw kompilowany na kompilatorze (już zawartym w Arduino IDE), a następnie wykonywany jako cały program przez mikrokontroler.

To znacznie usprawnia wykonywanie kodu, ponieważ mikrokontroler nie musi wykorzystywać zasobów do interpretacji każdej linii kodu. Ponadto kompilacja programu tłumaczy go również na kod maszynowy, który mikrokontroler może natywnie wykonać bez instalowania zależności.

Znacznie poprawia to szybkość wykonywania kodu, ponieważ mikrokontroler może bezpośrednio wykonać program bez poświęcania czasu i zasobów sprzętowych na tłumaczenie kodu.

Obsługiwane tablice

Ponieważ etap kompilacji odbywa się za pośrednictwem IDE, mikrokontrolery mogą mieć do pracy zaledwie 32 kB pamięci flash i 2 kB pamięci RAM. Więc oprócz płyt Arduino, istnieje wiele alternatywnych płyt Arduino możesz użyć do programowania z Arduino. Wiele z tych płyt korzystałoby z mikrokontrolerów, takich jak ATmega328P, ATmega2560, SAMx8E, ESP8266, ESP32 i STM32.

Społeczność i wsparcie

Będąc platformą typu open source od 2005 roku, Arduino ma jedną z najlepszych dostępnych dokumentacji. Fundacja Arduino każdego roku aktywnie zapewnia aktualizacje, wsparcie i nowe ekscytujące produkty. Społeczność na całym świecie jest również jedną z najbardziej aktywnych w dzieleniu się przewodnikami i pomysłami oraz odpowiadaniu na wszelkie napotkane problemy związane z rozwiązywaniem problemów. Z Arduino masz gwarancję dobrego poziomu wsparcia.

CircuitPython

CircuitPython to implementacja Pythona 3 firmy Adafruit, oparta na MicroPythonie. Choć rozwidlony z MicroPython, CircuitPython oferuje kilka ulepszeń, dzięki którym nauka mikrokontrolerów jest łatwa i przyjemna.

Cechy

CircuitPython został stworzony, aby pomóc początkującym w nauce programowania mikrokontrolerów. Aby to osiągnąć, CircuitPython zapewnia kilka funkcji, w tym interaktywne kodowanie środowisko, wbudowane biblioteki, prosta składnia (prostsza niż MicroPython) i doskonała dokumentacja i przewodników.

Wydajność

Ponieważ CircuitPython jest oparty na MicroPythonie, ma wiele takich samych mocnych i słabych stron. Czas wykonywania programu będzie nieco wolniejszy niż MicroPython, ponieważ CircuitPython zapewnia więcej funkcji i dodatkowych bibliotek. Jednak różnica jest prawdopodobnie niezauważalna, ponieważ CircuitPython wymaga do działania bardziej wydajnych mikrokontrolerów.

Obsługiwane tablice

Dzięki zintegrowanym bibliotekom i jeszcze prostszej składni płytki rozwojowe mikrokontrolerów potrzebują więcej zasobów, aby korzystać z CircuitPython. Mikrokontroler musi mieć co najmniej 8-bitowy procesor, 256 kB pamięci flash (zalecane 512 kB) i 32 kB pamięci RAM (zalecane 64 kB). Obecnie CircuitPython obsługuje ponad 390 płyt programistycznych wymienionych na stronie oficjalna strona internetowa.

Społeczność i wsparcie

Adafruit jest znany z tworzenia produktów przyjaznych dla początkujących. W związku z tym w CircuitPython można znaleźć łatwą do zrozumienia dokumentację i książki. Chociaż język został wprowadzony dopiero w 2017 roku, nadal ma większą liczbę zwolenników niż MicroPython, do których można dotrzeć za pośrednictwem Discord i oficjalnego forum. Podobnie jak Arduino Foundation, Adafruit aktywnie zapewnia aktualizacje, wsparcie i nowe produkty, co oznacza, że ​​wsparcie powinno być łatwe do znalezienia.

C

C to język programowania ogólnego przeznaczenia opracowany w latach 70. przez Dennisa Ritchiego w Bell Labs. Jest to skompilowany język programowania, którego inżynierowie i inni profesjonaliści często używają do programowania mikrokontrolerów o wysokim poziomie wydajności.

Cechy

Chociaż język C jest trudniejszy do nauczenia, główną zaletą C w porównaniu z MicroPythonem, CircuitPythonem i Arduino jest poziom szybkości, wydajności, kontroli i przenośności, jakie zapewnia. To sprawia, że ​​C jest najlepszym językiem do programowania obu mikrokontrolerów, które mają być używane w gotowych produktach.

Wydajność

Oprócz doskonałej przenośności, C jest znany ze swojej wydajności. Może uruchamiać programy szybciej niż Arduino, MicroPython i CircuitPython, nawet z mikrokontrolerem o niższych zasobach. Dzieje się tak dlatego, że C jest bardziej wydajnym językiem, wymagającym najmniejszej liczby zależności. Chociaż skompilowany program Arduino można, podobnie jak program C, uruchomić na zwykłym sprzęcie, jego kod maszynowy jest dostarczany z bibliotekami i narzędziami, które zmniejszają wydajność.

Obsługiwane tablice

Język C jest tak przenośny, że można go używać do programowania niemal każdego mikrokontrolera opartego na ARM. Ponadto może być stosowany na płytkach opartych na mikrokontrolerach Atmel AVR, STM32, PIC, MSP.

Społeczność i wsparcie

Ze względu na solidną aplikację programistyczną i fakt, że ma już kilkadziesiąt lat, język programowania C ma ogromną społeczność internetową. Możesz łatwo znaleźć pomoc na różnych forach internetowych, czatach i blogach poświęconych dyskusji i dzieleniu się pomysłami na temat języka C.

W jakim języku powinieneś programować?

Więc jaki jest najlepszy język do programowania mikrokontrolerów? To naprawdę zależy od osoby. Język C byłby najlepszy dla profesjonalistów projektujących elektronikę do produkcji.

Osoby bez doświadczenia w programowaniu mogą chcieć zacząć od CircuitPython, ponieważ ma funkcje i dokumentację, które sprawiają, że nauka jest łatwa i przyjemna. Osoby zaznajomione z Pythonem z łatwością zaprogramują mikrokontrolery w MicroPythonie.

A dla większości społeczności majsterkowiczów/twórców Arduino nadal byłby najlepszym językiem do programowania mikrokontrolerów, ponieważ oferuje wyjątkową równowagę między wydajnością, przenośnością, funkcjami i wspólnota.