Die Entwicklung des Anfangsdesigns für eine Lösung mit integriertem Mikrocontroller (MCU) ist eine komplexe Aufgabe, bei der viele voneinander abhängige Faktoren zu berücksichtigen sind. Bei batteriebetriebenen Lösungen kann ein zentraler Aspekt sein, den Stromverbrauch zu begrenzen, um die Lebensdauer der Batterie zu verlängern. In der Regel benötigt die MCU den meisten Strom, wenn sie mit zahlreichen Ressourcen ausgestattet und betrieben wird. Im Umkehrschluss führt eine maximal reduzierte Nutzungsdauer der Rechenressourcen zu einer möglichst langen Batterielebensdauer. Entwickler können dann eine viel schnellere MCU verwenden, etwa mit 32 Bit, obwohl die eigentlichen Rechenaufgaben leicht von einer 8-Bit-MCU bewältigt werden könnten.
Peripherie-Schnittstellen
Außerdem muss der Entwickler den verfügbaren Platz im Gehäuse abwägen, ob eine Datenübertragung per Funk erforderlich ist und welche Peripherie-Schnittstellen für den Anschluss von Sensoren und Displays notwendig sind. Jeder dieser Faktoren hat seine Besonderheiten. Zum Beispiel ist die Funkkommunikation stark reguliert und eine hochspezialisierte Funktion, die viele Entwickler von Embedded-Systemen dazu verleitet, einen Modulansatz zu wählen.
Um die Anforderungen der Embedded-Entwickler zu erfüllen, haben die Halbleiterhersteller schnell reagiert. Viele Embedded-Designs verfügen über die gleichen grundlegenden Bauelemente, wobei die MCU, das 2,4-GHz-Funksystem, die Echtzeituhr (RTC), A/D- und D/A-Wandler sowie serielle I/Os die Liste anführen. Die Bündelung von möglichst viel Silizium in einem einzigen System-on-Chip-Baustein (SoC) ergibt einen hochintegrierten und kompakten Chip. Ergänzt um einen Funk-Transceiver, eine Antenne und weitere entsprechende Bauelemente entsteht dann ein optimiertes SoC-Modul, das sich für unterschiedliche Anwendungen eignet.
Exemplarisch soll in der Folge das SoC-Modul Espressif ESP-WROOM-32 betrachtet werden. Es ist ein leistungsfähiges MCU-Funkmodul, das auf der Prozessorserie ESP32 basiert. Auf nur 25,5 mm x 18 mm befinden sich ein ESP32-SoC, das zwei Xtensa-LX6-Prozessorkerne, Flash-Speicher, eine PCB-Antenne und ein kombiniertes, weltweit zertifiziertes BLE-, BT- und WiFi-Funksystem umfasst. Die CPU-Kerne lassen sich einzeln ansteuern.
Um der jeweiligen Anwendung gerecht zu werden, ist die Taktfrequenz von 80 bis 240 MHz einstellbar. Ein integrierter stromsparender Koprozessor kann I/O- und andere Peripherie-Schwellenwerte überwachen, um Interrupts auch dann zu erzeugen, wenn sich beide 32-Bit-Mikroprozessorkerne im Sleep-Modus befinden. Das ESP-WROOM-32 bietet eine umfangreiche Peripherie – einschließlich Hall-Sensoren, kapazitiven Touch-Eingängen und einer SD-Kartenschnittstelle – und unterstützt serielle Protokolle mit I2C-, SPI-, I2S-, UART-, Ethernet- und CAN-Schnittstellen.
Das Modul ist mit FreeRTOS ausgestattet, was das Modulmanagement und die Anwendungsunterstützung erleichtert. Die Funkschnittstelle unterstützt Datenraten bis zu 150 MBit/s, und der Transmitter bietet eine Ausgangsleistung von 20 dBm. Damit eignet sich das Modul für eine Vielzahl von Anwendungen. Eine sichere Over-the-Air-Update-Funktion ist ebenfalls enthalten. Darüber hinaus senkt der Deep-Sleep-Modus des ESP32 den Stromverbrauch auf 5 μA, was den Anwendungsbereich für batteriebetriebene Designs wie IoT oder Wearables erweitert.
Das SoC-Modul ESP-WROOM-32 wird von professionellen Entwicklern und Herstellern gleichermaßen angenommen. Es stellt eine sowohl zeitsparende als auch energieeffiziente Plattform dar – ist aber natürlich nicht das endgültige Design. Das Hinzufügen von Sensoren, Displays und anderer Peripherie ist anschließend der nächste Schritt im Entwicklungsprozess. Dabei setzen die meisten Entwickler auf das sogenannte Breadboarding: Dabei wird über ein oder mehrere Breakout-Boards und Schaltdrähte eine Verbindung zu den erforderlichen Komponenten hergestellt. Diese Methode ist eigentlich sehr praktisch – schließlich bietet sie einfachen Zugriff auf die Schaltung, um Verbindungen zu überprüfen und DMM- und Oszilloskop-Sonden anzuschließen.
Energieeffiziente Plattform
Mit der Anzahl der verbundenen Komponenten wachsen jedoch auch die Herausforderungen. Was ganz einfach beginnt, endet oft mit einem chaotischen „Rattennest“-Prototypen. Zudem sind Schaltdrähte nicht besonders stabil: Die geringste Bewegung kann zu Störungen auf I/O-Leitungen führen, was den Betrieb beeinträchtigt und das Design unberechenbar macht. Besonders anfällig dafür sind serielle Schnittstellenverbindungen. Zu guter Letzt lassen sich viele Hochgeschwindigkeitsschnittstellen nicht per Breadboarding für das Prototyping einsetzen, da Schaltdrähte eine schlechte Impedanzanpassung verursachen und möglicherweise elektromagnetische Störungen (EMI) in die Schaltung einbringen.
Ein kürzlich vorgestelltes Open-Source-Evaluierungsboard verspricht, dass solche Probleme während des Prototypings bald der Vergangenheit angehören. Das ESP32-Evaluierungsboard MakerFactory enthält ein ESP-WROOM-32-Modul und verschiedene Sensoren, Bedienelemente und LEDs. Dabei wird die I/O- und Sensorauswahl durch eine Kombination von DIP-Schaltern auf dem Board gesteuert, was eine einfache und zuverlässige Verbindung mit der Host-MCU gewährleistet.
Alternative zum Breadboarding
Zusätzlich zu den ESP32-Modulen verfügt das Board über einen MEMS-Beschleunigungsmesser (InvenSense MPU9250), ein Gyroskop und Magnetometer, einen Ein-Draht-Temperatursensor (Maxim DS1820), einen Audio-Verstärker (Maxim MAX98357) und ein rauscharmes Digitalmikrofon (InvenSense 43432). Zwei Potentiometer, fünf Taster in Diamantanordnung, zwei LED-Displays (ein OLED und ein TFT-LCD) sowie acht Grove-Add-On-Modulanschlüsse runden das „anschlussdrahtfreie“ Evaluierungsboard ab. Das Board lässt sich standardgerecht über die Arduino-IDE programmieren. Darin sind Board-Support-Pakete und umfassender ESP32-Open-Source-Community-Support enthalten. Das Board verfügt über ein eigenes Wiki (https://docs.makerfactory.io), wo sich Anleitungen zum Entwicklungsstart und einfache Code-Beispiele für jeden Baustein auf dem Evaluierungsboard finden.
Übersichtliche Anordnung
Jedes diskrete Bauelement ist auf einem eigenen Bereich des Boards angeordnet, was die Konfiguration und das Prototyping deutlich vereinfacht. Die MEMS-kombinierte Beschleunigungs-, Gyro- und Magnetometer-Sensorvorrichtung ist mittig auf dem Board zusammengefasst. Die zugehörige Schaltung und eine Demo-Anwendung sind beide im Board-Wiki beschrieben. Der Sensor kommuniziert über I2C mit dem ESP32-Modul.
In der entsprechenden Abbildung sind die anfänglichen Setup-Routinen dieses Beispiels gezeigt, wobei der Code verifiziert und auf das Board hochgeladen wird. Die Anwendung sendet die ausgelesenen Daten anschließend an den seriellen Monitor der IDE. In der Folge lassen sich mit minimalem Aufwand Datenströme vom MEMS-Sensor erzielen – und das ohne einen einzigen Anschlussdraht! Während die Demo-Anwendung lediglich Rohdaten des Magnetfelds liefert, lassen sich einige einfache Modifikationen vornehmen, um beispielsweise einen digitalen Kompass anzufertigen. Dabei können die vom MPU9250-Sensor im Mikro-Tesla-Format ausgegebenen Werte durch eine simple arctan-Berechnung in eine Kompassrichtung umgewandelt werden.
Vereinfachtes Debugging
Zusammenfassend lässt sich festhalten: Befinden sich alle wichtigen Komponenten eines Embedded-Designs auf einer einzigen, leicht zugänglichen und einfach konfigurierbaren Platine, vereinfacht sich der Prototyping- und Debugging-Prozess erheblich. Sobald ein Design auf dem MakerFactory-Board validiert wurde, kann der Entwickler die Anwendung fein abstimmen, schnell einen Prototyp-Schaltplan erstellen und ein kundenspezifisches Board fertigen. Verglichen mit dem Breadboarding-Ansatz lassen sich so mögliche Fehlerquellen auf ein Minimum reduzieren