Goodbye Raspberry Pi - Hello ESP32

Die Chipkrise ist in aller Munde. Die Automobilindustrie liefert unfertige Autos aus und Grafikkarten sind entweder massiv teurer geworden oder seit Monaten nicht lieferbar. Die Gründe dafür sind vielfältig und reichen von Sanktionen der USA über das Corona Virus bis zu Unglücken wie Großbrand oder Schneestürmen. Inzwischen sind sehr viele Branchen vom Mangel an Halbleitern betroffen und auch die Maker-Szene ist davon nicht verschont geblieben. 

Ich habe nicht schlecht gestaunt, als ich mir kürzlich für das neue Zykochron einen Raspberry Pi 3 A+ kaufen wollte. In nur wenigen Monaten hat sich der Preis beinahe verdoppelt. Auch beim Raspberry Pi 3 B+ ist die Situation nicht besser. Auf den beiden Diagrammen von geizhals.at sieht man den sprunghaften Anstieg der Preise sehr deutlich.

Raspberry Pi 3 A+ Preisentwicklung

 

Raspberry Pi 3 B+ Preisentwicklung

Natürlich ist der Raspberry immer noch bezahlbar, aber die Entwicklung gibt mir trotzdem zu denken. Wie weit wird das noch gehen? Werden der Raspberry Pi 3 A+ und B+ in einigen Monaten überhaupt noch lieferbar sein? Der Raspberry Pi ist kein Industrieprodukt und die langfristige Verfügbarkeit eines bestimmten Modells ist nicht garantiert. Die entscheidende Frage ist jetzt, gibt es auch andere Optionen für mich?

Alternativen zum Raspberry Pi

Abgesehen von einigen Experimenten mit einem 80535 Mikrocontroller in den späten 80er Jahren, kenne ich bis jetzt nur den Arduino Uno und den Raspberry Pi. Sobald man damit beginnt, nach anderen Mikrocontrollern zu suchen, wird man mit einer beinahe unüberschaubaren Anzahl an Möglichkeiten konfrontiert. Einen ersten Überblick bietet diese Wikipedia Seite, auf der die einzelnen Marken und Modelle aufgelistet sind. Allerdings sind hier nur solche Typen aufgeführt, die als Mikrocontroller bezeichnet werden. Abgesehen vom Pico zählen die CPUs der Raspberry Modelle aber zu den Mikroprozessoren. Die Unterscheidung zwischen Mikrocontrollern und Mikroprozessoren ist schwierig und im Grunde für mich auch nicht wichtig, solange die geforderte Aufgabe erfüllt werden kann. Nach intensiver Recherche habe ich die Auswahl schließlich auf die folgenden Boards eingegrenzt:

  Pi Pico Pi Zero 2 W 3 Mod. A+ 3 Mod. B+ ESP32
DevKit C V4
Black Pill
STM32F411
RedBear
WiFi Mini
 Jahr 2021 2021 2018 2018 2016 2020 2016
 SoC RP2040 BCM2710A1 BCM2837B0 BCM2837B0 ESP32 STM32F411 CC3200
 Typ Arm Cortex-M0+ (32 Bit)  Arm Cortex-A53
(64 Bit)
Arm Cortex-A53
(64 Bit)
Arm Cortex-A53
(64 Bit)
Tensilica Xtensa LX6 (32 Bit) Arm Cortex-M4 (32 Bit) Arm Cortex-M4 (32 Bit)
 Kerne 2 4 4 4 2 1 1
 Takt 133 MHz 1000 MHz 1400 MHz 1400 MHz 240 Mhz 100 MHz 80 MHz
 Leistung 0,4 Watt 3 Watt .4,24 Watt 7 Watt 0.8 Watt 0,1 Watt 0,8 Watt
 RAM 264 KB 512 MB 512 MB 1024 MB 520 KB 128 KB 256 KB
 Flash 2 MB microSD microSD microSD 4 MB external 512 KB external
 WLAN - 2,4 GHz, 802.11b/g/n 2,4 u. 5 GHz 802.11ac 2,4 u. 5 GHz 802.11ac 2,4 GHz, 802.11b/g/n - 2,4 GHz,
802.11 b/g/n
 Bluetooth - 4.2 BLE 4.2 LS LE 4.2 LS LE 4.2 BR/EDR & BLE - -
 GPIO 26 26 26 26 34 16 27
 Analog 3 x 12 Bit - - - 2 x 12 Bit 1 x 12 Bit 4 x 12 Bit
 SPI 2 2 2 2 4 5 1
  I2C 2 1 1 1 2 3 1
 UART 2 2 2 2 3 3 2
 Preis 9 Euro 28 Euro 40 Euro 75 Euro 5 Euro 15 Euro 40 Euro
 Verfügbar gut schlecht schlecht schlecht gut gut schlecht
Mikrocontroller im Vergleich


In der Tabelle erkennt man sofort, dass die meisten Modelle aus der Arm Cortex-A bzw. Cortex-M Familie stammen. Mir persönlich wäre ein Mikrocontroller aus einer dieser Familien auch am liebsten gewesen, da mich diese Architektur schon länger interessiert und aufgrund der hohen Verbreitung auch entsprechend viel Literatur vorhanden ist. Letztendlich habe ich mich aber für einen ganz anderen Mikrocontroller entschieden, und zwar den ESP32 von Espressif.

Der ESP32

Warum ist es jetzt der ESP32 geworden? Das Entscheidende sind wie so oft die Anforderungen, die der Mikrocontroller im Allgemeinen und speziell zur Steuerung des Zyklochrons erfüllen muss. Dazu zählen

  • Leichte Verfügbarkeit von Entwicklungsboards
  • WLAN für Zeitsynchronisation
  • Gute Entwicklungsumgebung
  • JTAG Debugger
  • SDK mit ausführlicher Dokumentation und vielen Beispielen
  • Schnittstellen wie UART, SPI, I2C
  • Günstig

Der Raspberry PI Zero 2 W erfüllt zwar alle technische Anforderungen, ist aber im Moment nur sehr schwer zu bekommen. Auch die Tatsache, dass für den Betrieb eine komplette Linux Installation nötig ist, stört mich sehr. Für viele Aufgaben mag das sinnvoll sein, aber für die Verwendung als Mikrocontroller ist es eher nur Ballast. Das Black Pill Board mit dem STM32F411 unterstützt leider, wie die meisten Mikrocontroller, kein WLAN. Das ist insofern schade, weil diesen Board eigentlich mein Favorit war. Eine weitere Option wäre noch der CC3200 von Texas Instruments, aber die Entwcklungsboards von TI und RedBear Labs sind nur sehr schwer zu bekommen und recht teuer.

Nur ein einziger Mikrocontroller erfüllt wirklich alle Kriterien und das ist der ESP32 von Espressif. Eine Suche auf Amazon oder AliExpress liefert eine Vielzahl von verfügbaren Boards, die schon für unter 10 Euro zu haben sind. Neben der WLAN- und Bluetooth-Funktionalität bietet der ESP32 noch jede Menge weiterer Features an, die ihn zum universellen Mikrocontroller für IoT Aufgaben machen:

Core and memory ROM Cryptographic hardware acceleration AES SHA RSA RTC ULP coprocessor Recovery memory PMU Bluetooth link controller Bluetooth baseband Wi-Fi MAC Wi-Fi baseband SPI 2 ( or 1 ) x Xtensa® 32- bit LX6 Microprocessors RF receive RF transmit Switch Balun I2C I2S SDIO UART TWAI® ETH RMT PWM Touch sensor DAC ADC Clock generator RNG SRAM Embedded Flash or PSRAM Timers

CPU & Speicher

  • Xtensa Dual-Core 32-bit LX6 Mikroprozessor mit maximal 240 MHz
  • Ultra low power (ULP) Koprozessor
  • 448 KBytes ROM zum Booten und für Grundfunktionen.
  • 520 KByte On-Chip-SRAM für Daten und Befehle.
  • 8 KByte SRAM (RTC SLOW Memory) auf den der Co-Prozessor während des Deep-Sleep-Modus zugreifen kann.
  • 8 KByte SRAM (RTC FAST Memory) Code, der nach dem Aufwachen aus dem Deep-Sleep-Modus ausgeführt werden soll.
  • 1024 Bits eFuse, wovon 256 Bits für das System verwendet werden und die restlichen 768 Bits für eigene Anwendungen verwendet werden können.

Konnektivität 

  • 802.11 b/g/n Wi-Fi
  • Classic Bluetooth v4.2 und BLE

Peripherie

  • 34 programmierbare GPIOs
  • 12-Bit-ADC mit 18 Kanälen
  • 8-Bit-DAC mit 2 Kanälen
  • Serielle Schnittstellen: 4 x SPI, 2 x I2C, 2 x I2S, 3 x UART.
  • SD/SDIO/MMC Host-Controller und SDIO/SPI Slave-Controller
  • Motor-PWM und bis zu 16 Kanäle für LED-PWM
  • 2 Pulszähler Module
  • 4 Timer
  • Remote Control Transceiver 
  • Hall Sensor
  • Secure Boot und Flash-Verschlüsselung
  • Hardware-Beschleunigung für Kryptografie.

Inzwischen gibt es sehr viele Entwicklungsboards mit dem ESP32, teilweise mit kleinem Display bestückt, unterschiedlich großem Flash-Speicher, Anschluss für einen externen Akku oder anderen Extras. Ich habe mich für das ESP32-DevKitC V4 Board entschieden, weil es für den Anfang völlig ausreicht.

ESP32-DevKitC V4

Dieses Board bekommt man auf AliExpress sogar schon unter 5 Euro. Man sollte nur darauf achten, die Chip Revision 3 zu bekommen, damit man bei Bedarf Secure Boot v2 verwenden kann. Durch die USB-to-UART Bridge muss man das Board nur per USB mit dem PC verbinden und kann schon loslegen.

Entwicklungsumgebung

Der ESP32 kann auf unterschiedliche Arten programmiert werden. Die wichtigsten Umgebungen sind

  • Arduino IDE
  • Eclipse mit dem ESP-IDF Eclipse Plugin
  • PlatformIO (Visual Sudio Code)
  • MicroPython
  • LUA
  • JavaScript

Ich habe zunächst mit MicroPython begonnen, bin aber dann sehr schnell auf PlatformIO gewechselt und verwende das Espressif IDF (IoT Development Framework), da ich so möglichst nahe an der Hardware programmieren kann. Eine gute Gelegenheit, meine C Kenntnisse von früher wieder aufzufrischen.

Der Umstieg von Java im Client/Server Umfeld auf C und einem Mikrocontroller ist allerdings kein leichter und erfordert einiges an Umdenken. Inzwischen bin ich aber vom ESP32 sehr begeistert und auch das Programmieren in C macht richtig Spaß. Es gibt noch viel zu lernen, was durch die gute Dokumentation und den vielen Beispielen sehr erleichtert wird. Und das nächste Ziel ist ganz klar. Den Raspberry Pi im Zyklochron durch den ESP32 ersetzen!

Konversation wird geladen