Bernd Leitenbergers Blog

Wie viel Microcontroller brauche ich?

Ich muss sagen, Microcontroller waren bisher nicht auf meinem Schirm. Sie sind für Programmierer irgendwie unsexy und sie machen ohne Hardware, die sie kontrollieren können auch wenig Sinn. Mit einem Artikel über „Hardware-Hacking“ wurde ich auf das Thema vor einiger Zeit gestoßen und weil viele digitale Meßgeber heute billig sind, genauso wie direkt abfragebare Chip-Kameras, GPS Sensoren oder Bewegungssensoren gibt es etliches, was man heute auch las Privatperson mit einem Microcontroller anstellen kann.

Ich hatte mich als nützliches Projekt für eine Wetterstation entschieden. Das ist programmtechnisch was relativ einfaches: in regelmäßigen Abständen Sensoren abfragen. Die Daten speichern und auf einen Reset warten der signalisiert das man sie abgeholt hat und man von neuem anfangen kann, eventuell noch ergänzt um Routinen fürs Übertragen.

Meine Wetterstation sollte die Daten jede Minute aufzeichnen. Von den Sensoren bin ich inzwischen vom Drucksensor abgekommen und denke eher an Feuchtigkeit, Temperatur und Licht. Dafür gibt es auch preiswerte Sensoren, während die meisten Drucksensoren eher zur Gewichtsbestimmung als zur Bestimmung des Luftdrucks gedacht sind.

Nun soll aber meine Wetterstation auf dem Balkon sein, das heißt der Controller ist nicht direkt an den Computer angeschlossen. Das bedeutet: der Microcontroller muss die Daten zwischenspeichern können und es muss eine bequemer Übertragungsmöglichkeit geben. Entweder WLAN oder ein Speichermedium. Da ich auch mal in Urlaub fahre, sollten die Daten auch zwei Wochen vorgehalten werden. Daraus kann man leicht folgende Rechnung anstellen: 1440 Minuten x 14 Tage x 3 Sensoren x 2 Bytes pro Wert = 120 kByte Speicher benötigt.

Das knockte die meisten der Arduino Plattformen aus. Wenn ein Sensor nur 8-Bit Werte liefert oder man z. B. drei 12 Bit Werte zusammen packt würde ein Arduino Due ausreichen. Ich habe mich dann an einen ct‘ Artikel erinnert dort wurde ein um einen Microcontroller herum entwickelter Retro-Heimcomputer erwähnt. Der Color Maximite hat ARduino kompatible Anschlüsse aber auch 128 kbyte Speicher, er kann einen Monitor ansteuern, ein Keyboard kann angeschlossen werden, es gibt eine Echtzeituhr und einen SD-Slot. das heißt er erfüllt von der Hardware her die Anforderungen.

Er setzt den PIC32 Microcontroller ein, der hat einen MIPS M4K-Kern und läuft mit 80 MHz, was selbst einen BASIC Interpreter rund 30-mal schneller als ein C64 laufen lässt. Ich bin ja noch mit 8 Bit Rechnern groß geworden und habe die auch in Assembler programmiert und irgendwie sehe ich das für diese Aufgabe als „Verschwendung“ an. Im Prinzip brauche ich die Rechenleistung nicht, von der Rechenleistung würde ein ATMega, ein 8 Bit Prozessor wie er in den meisten Arduinos steckt vollkommen ausreichen. Doch der kleine Speicher von 2-8 Kbyte schließt diese aus, und wenn man einen Massenspeicher wie einen SD-Kartenanschluss anschließt ist man im Preis auch gleich bei dem Color Maximite.

Ich habe das nach hinten geschoben, weil ich gerade noch so viel zu tun habe, (das habe ich eigentlich immer). Doch dann kam die Meldung, dass nun Intel auch ein Arduino-kompatibles Entwicklungsbaord namens Galileo herausbringt. Es basiert auf dem Quarks X1000 SOC. Der Name wird keinem was sagen, doch es ist ein alter Bekannter: Ein 486DX Kern mit 16 kbyte Cache. er versteht aber den Pentium Befehlssatz. Er ist mit 400 MHz getaktet und anhand der veröffentlichten Daten kann man ableiten das er in etwa so schnell wie ein 150 MHz Pentium ist. Dazu kommen 512 Kbyte OnBoard RAM und 8 MByte Flash-RAM. Auf dem Board dann noch 256 MByte RAM. Das ist dann nochmals eine Stufe höher. Die Rechenleistung hängt alle anderen Arduinos ab, aber die Abfrage der Pins verläuft langsamer selbst als bei den 8-Bit ATMegas. Ich habe mir in Gedanken überlegt wofür man so viel Rechenleistung braucht, kombiniert mit der Langsamkeit bei I/O Operationen. Vielleicht für eine Überwachungskamera, die Räume überwacht und nur Aufnahmen mit Bewegungen speichert, sich aber nicht von wechselnden Lichtverhältnissen irreführen lässt. Da müsste man einige Megapixel verarbeiten. Doch auch hier könnte man das Problem einfacher lösen wenn man einen Bewegungsmelder zusätzlich anschließt.

Boch eine stufe höher ist ein Raspberry Pi mit einem ARM Prozessor mit 700 MHz und bis zu 512 MByte RAM, doch er ist nicht direkt ein Microcontroller, auch wenn es Erweiterungen dafür gibt, sondern mehr ein Mini-PC.

Der klassische Microcontroller verarbeitet die Daten einiger Sensoren und steuert einige Aktoren. Er kommt daher mit wenig RAM aus. Weder ist das Verarbeiten großer Daten, noch das Speichern eine Domäne von Microcontroller. Daher sitzen RAM und FLAH-ROM meist auf dem Chip. Das ist zum einen eine Herausforderung für die Fertigung, es ist aber auch der Grund warum es so wenig RAM ist. Es wird als SRAM ausgelegt. Da braucht man pro Bit sechs Transistoren, was bei einem Kbyte Speicher schon 49152 Transistoren sind – bei rund 5000 bis 7000 Transistoren, die ein 8 Bit CPU Kern hat, eine durchaus nicht vernachlässigbare Größe.

Die Lösung wäre es die Kits mit externem RAM und externem Flash ROM auszuliefern. Beides ist heute billig zu haben. Ein Speicherchip hat heute rund 64 MByte Größe und kostet unter 2 Euro, Große Flash Speicher für SSD haben heute 4 und 8 GB Kapazität, aber es gibt auch kleinere ab 1 MB Größe. Bei den ATMega scheint externes RAM aber nicht vorgesehen zu sein, anders als beim Intel X1000. Dasselbe gilt für den PIC32. Die Architekturen sind geschlossen, nicht auf externes RAM und ROM ausgelegt.

So könnte für Hardware-Hacking die eigentlich überdimensionieren ARM und 486DX Prozessoren doch die besseren Lösungen sein, zumindest wenn eine Anwendung mal mehr als 100 KByte Speicher braucht. Ich bin ja mal gespannt ob jemand um den Rechner von Intel herum auch so was wie einen Raspberry Pi baut – Mit der Leistung eines 150 MHz Pentium 256 MByte RAM und einem SD-Kartenanschluss für das Betriebssystem könnte man ohne Probleme ein älteres Windows (Windows 98)  oder Linux drauf laufen lassen. Das wäre dann ein neuer Mini-PC oder Thin Client. So was könnte ich mir auch zulegen fürs Surfen in den Werbepausen (an den Fernseher angeschlossen). Ein Notebook ist mir dafür zu umständlich und teuer. Eigentlich schriet das System nach einer solchen Nutzung.

Noch ein Blick zur Raumfahrt. Die 80 bzw. 84 MHz 32-Bit Microcontroller in einem Arduiono Duo oder Color Maximite sind leistungsfähiger als der ERC-32, dem derzeitigen Stahdardrechner in europäischen Raumfahrtprojekten und die Quark SOC bzw. der ARM im Rapberry Pi dürften den weltweit schnellsten Prozessor RAD 750 in der Leistung weit übertreffen. Der verarbeitet immerhin die Bilder des hochauflösenden Satelliten Wourldview in Echtzeit ….

Die mobile Version verlassen