Raspberry Pi vs. ARDUINO

» home «

Was ist besser, der Raspberry Pi oder ARDUINO? Beide können fast das Gleiche, doch wo ist der Unterschied? Das klärt dieser Beitrag.

"...ich liebe den Raspberry Pi ZERO, den kleinen Microrechner. Hat er jedoch einen schlechten Tag, dann schnappe ich mir mein ARDUINO-Board..."

Mit diesem Zitat möchte ich den Beitrag starten, da es im wesentlichen den Kern zum Unterschied dieser beiden Entwicklerboards trifft. Der Beitrag ist ein Leitfaden der eine Entscheidung für je eine Gerätekategorie und Einsatzgebiet stützt. Er soll daher mehr auf die Unterschiede statt auf die Gemeinsamkeiten eingehen, da dies eine bessere Differenzierung zuläßt.

Vergleichbare Einsatzgebiete

Die beiden Geräte-Linien, Raspberry Pi und der ARDUINO haben in etwa recht ähnliche Abmaße und decken daher ganz ähnliche Anwendungsgebiete ab. In den meisten Fällen werden mit diesen Geräten Steuer-, Meß- und Regeleinheiten der klassischen BMSR-Technik entwickelt. Wirft man einen Blick in die Portale diverser Onlinehändler, dann werden viele Erweiterungsboards, Zubehör und Sensoren gleichermaßen für den Einsatz am ARDUINO und dem Raspberry Pi angeboten. Dies erscheint auch folgerichtig, denn beide Geräteklassen besitzen Digital IO Pins, Analog Pins, PWM Anschlüsse, beherrschen I2C Kommunikation, können per BlueTooth oder WiFi kommunizieren und können frei Programmiert werden.

Sensoren für alle

Jedoch... ein Versuch die sensorischen Experimente des ARDUINO auf den Raspberry Pi oder umgekehrt zu übertragen zeigt, das zwar ein Großteil der Sensoren und Module gleichermaßen auf beiden Plattformen eingesetzt werden können, jedoch ein kleiner Anteil speziell für den ARDUINO zugeschnitten sind und schwer am Raspberry Pi zum laufen gebracht werden. Beispielweise ist der wirklich triviale Ultraschall-Sensor am ARDUINO innerhalb von wenigen Minuten, dank zugeschnittener Softwarebibliothek, einsatzbereit. Das Ultraschall-Experiment mit dem Raspberry Pi nachzuentwickeln hat mich vor viele fast unlösbare Probleme gestellt. Wir düfen uns hier nicht falsch verstehen, es ist auf dem Raspberry Pi ebenfalls umsetzbar aber der Aufwand wäre sehr hoch.

Spezial Bibliotheken

Das Ultraschall-Sensor Experiment zeigt bereits einen großen Unterschied. Im Beispielcoding des Ultraschall-Sensors wird die Funktion pulseIn() verwendet die laut Dokumentation folgendes tut:

Liest einen Wert von einem vorgegebenen Digitalpin ein, entweder HIGH oder LOW. Wenn value z.B. HIGH ist, wartet pulseIn() darauf,dass der Pin auf den Wert HIGH wechselt, startet einen Timer und wartet anschließend darauf, dass der Pin wieder auf LOW wechselt. Daraufhin stoppt pulseIn() den Timer. Gibt die Länge des Impulses in Mikrosekunden zurück. Stoppt und gibt 0 zurück, wenn ein bestimmter Timeout erreicht wird.

Der Raspberry Pi und der ARDUINO nutzen die gleiche Hardware, einen Digital I/O Pin, jedoch ist die Implementierung der Softwarebibliotheken beim ARDUINO sehr viel spezieller. Um die oben gezeigte Funktion pulseIn() auch am Raspberry nutzen zu können, müsste ich die Funktion mittels Python oder C nachentwickeln und das wäre wirklich sehr aufwändig.

IDE

Bleiben wir doch gleich beim Thema, Entwickeln. Für den Raspberry Pi und den ARDUINO kann Software frei entwickelt werden. Im Falle der Raspberry Foundation ist es die bevorzugte Programmiersprache Python, er kann aber auch in C oder in Java Programmiert werden. Hingegen ist das open Source Projekt des ARDUINO für den Consumer auf einen C ähnlichen Sprachdialekt festgelegt. Auch die zur Verfügung stehende IDE ist sehr unterschiedlich. ARDUINO nutzt eine fest vorgegebene IDE auf einem externen Windows, Linux oder Mac Rechner. Eine Programmentwicklung außerhalb dieser IDE ist für den ARDUINO nicht vorgesehen.

Demgegenüber können Python-Programme für den Raspberry Pi auf ganz unterschiedlichen Plattformen und IDEs entwickelt werden. Es können bekannte Produkte wie Eclipse, Netbeans oder gar ein ganz banaler Editor wie Nano verwendet werden, um den Raspberry Pi zu programmieren.

Im Falle des Raspberry Pi ist es auch kein separater Entwicklungs-PC nötig wie beim ARDUINO. Der Raspberry Pi ist Entwicklungs-PC und Controller in einem Board. Habe ich beispielweise einen Fehler im Programm, so kann ich dies beim Raspberry am Gerät selbst korrigieren (er kann damit im Projekt verbleiben und müßte nicht ausgebaut werden).

Für die Fehler-Korrektur am ARDUINO muss ich den externen Entwickler PC hochfahren, den ARDUINO anstecken, die Korrektur übertragen und kann ihn dann wieder zurück in sein Projekt bringen bzw. einbauen.

Hilfreich ist auch der Einsatz von Telnet am Raspberry Pi, denn damit ist es möglich via WLAN auf den Raspberry Pi zuzugreifen und die Entwicklung neuer Programme oder etwaige Fehlerkorrekturen aus der Ferne durchzuführen - dies geht beim ARDUINO leider (noch) nicht.

Die Hardware

Im Bereich Hardware möchte ich gar nicht so sehr auf die interne Architektur der beiden Rechner/Controller eingehen. Vielmehr ist festzuhalten, das beide eine ausreichende Anzahl von digitalen I/O Pins haben, genügend analoge Ports und auch in der Lage sind PWM zu betreiben. Die üblichen Bus-Protokolle wie I2C oder SPI beherrschen ebenfalls beide.

Unterschiede gibt es jedoch in der Ausstattung von WiFi, Bluetooth, Ethernet, SD-Slot, HDMI und Audio-Buchse. Der Raspberry Pi bringt alle diese Anschlüsse bereits mit, während User des ARDUINO diese separat als Hardware-Modul kaufen und anschließen müssen. In folge dessen müssen Ports des Gerätes geopfert werden die ansonsten für Steuerungszwecke zur Verfügung stünden. Darüber hinaus muss sich der Anwender des ARDUINO um die Implementierung von Blutooth oder anderen selbst kümmern, der Raspberry Pi bringt diese bereits voll funktionsfähig mit.

Der zur Verfügung stehende SD-Kartenslot sollte in diesem Zusammenhang ebenfalls noch mal erwähnt werden, da Programme dadurch in der Lage sind Daten zu speichern, die beim Neustart oder für statistische Zwecke elegant ausgelesen werden können.

Das Modulkonzept des ARDUINO ist allerdings ebanfalls sehr gut, denn die Hardware kann exakt auf das Projekt abgestimmt werden, während der Raspberry Pi beispielsweise den dicken Ethernetanschluss immer mitschleppen muss und zusätzlichen Strom verbraucht auch wenn der gar nicht verwendet wird.

Das Betriebssystem

Wenn ich es ganz weit fassen darf, so würde ich sagen, das beide Geräte ein "Betriebssystem" nutzen. Der ARDUINO in Form eines vorinstallierten Bootloaders und der Raspberry Pi in Form eines echten Betriebssystems wie Debian-Linux namens Buster.

Der Bootloader des ARDUINO hat die Aufgabe den compilierten Code des ATMEL auszuführen, folglich startet das Programm sofort nach einschalten des Controllers. Das Gerät beginnt bereits nach wenigen Millisekunden (ca. 1s) damit das Programm auszuführen. Es befindet sich allerdings nur ein einziges Programm gleichzeitig im Controller.

Allerdings: Sofern die DIL bzw. DIP Variante (ARDUINO UNO) des ATMEL Verwendung findet, besteht durchaus die Möglichkeit diverse Chips mit unterschiedlichen Programmen vorrätig zu haben, die je nach Aufgabe au dem Board ausgetauscht werden.

Das Einschalten des Raspberry Pi hat das Booten des Rechers zur Folge, das wie gewohnt und je nach Implementierung im Minuten Bereich liegen kann. An das automatische Starten des entwickelten Programms ist hier noch nicht zu denken, denn dies muss vom Anwender in systemrelevanten Startdateien eingetragen werden. Hat man hier einen Fehler gemacht und das Programm verfängt sich hoffnungslos in einer Endlosschleife, ist der Rechner (manchmal) hoffnungslos verloren, es hilft nur die Neuinstallation des Raspberry Pi.

Vorteilhaft beim Raspberry Pi ist jedoch die Tatsache, das man alle möglichen Programme gleichzeitig auf dem Gerät speichern kann und je nach Bedarf verschiedene Programme ausführen lassen kann. Der Pi ist damit sehr flexibel in verschiedenen Projekten einsetzbar ohne ihn erneut an den Entwickler-PC anschließen zu müssen, man startet "on the Fly" einfach das benötigte Python-Skript das sich auf der Speicherkarte befindet für die betreffende Aufgabenstellung des Projektes. Der ARDUINO müsste beim Wechsel der Projektaufgabe erneut Compiliert und das Compilat muss erneut via USB übertragen werden (es sein denn, man hat bereits verschiedene Chips fertig mit unterschiedlichen Programmen bestückt und tauscht diese auf dem Board aus).

In diesem Zusammenhang möchte ich auch auf die Einleitung zurück kommen.

Der Betrieb des Raspberry Pi bedeutet zwangsläufig, das sehr viele Arbeiten im Betriebssystem Linux erledigt werden müssen, beispielsweise müssen Nutzerrechte eingetragen werden, Systemvariablen müssen konfiguriert werden, Dateien kopiert, Pakete müssen installiert und verschoben werden und und und. Ein Großteil der Entwicklerarbeit fällt daher auch auf die Pflege des Betriebssystems, mit all seinen Schwächen und Stärken - der ARDUINO hat dies nicht nötig.

Ist man jedoch durchaus bereit, im Vergleich zum ARDUINO, mehr Zeit zu opfern, erhält man ein imens flexibles Gerät das in Sachen Komfort in dieser Größe kaum noch zu überbieten ist. Hingegen kann man sich beim ARDUINO vollkommen auf die Programmierung der Projektaufgabe konzentrieren und muss keine Gedanken an das "Betriebssystem" und dessen Pflege und Administrierung verschwenden. Damit ist der ARDUINO deutlich weniger Diva als der Raspberry Pi.

Einsatz im Projekt

Ich habe einige Projekte für den Raspberry Pi entwickelt, er kommt jedoch kaum zur Umsetzung, da mir der Pi als vollwertiger PC viel zu schade ist, ihn beispielsweise als Garagentoröffner mit Gesichtserkennung arbeiten zu lassen - kein Witz, der Pi erscheint mir zu wertvoll als das ich ihn unbeobachtet außerhalb meiner Rechweite werkeln lassen würde. Demgegenüber kann ich den Verlust eines ARDUINO-Boards durch Unwetter oder Diebstahl für wenige EUR durchaus verschmerzen.

Viel wichtiger scheint für Projekte allerdings zu sein, wie Energiehungrig ist es? Denn es sollte nicht unterschätzt werden, das der Raspberry Pi mit Kühlung und angeschlossener Peripherie schon mal satte 1A Strom verbrauchen kann. Solche Werte sind für den ARDUINO allerdings schon fast utopisch, denn er kommt bereits mit 20-50mA aus. Damit ist der ARDUINO ein idealer Knadidat für batteriebetriebene Projekte.

Erfreulich ist auch, das der ATMEL Chip des ARDUINO UNO als standalone Lösung mit einer minimalen Beschaltung an Bauelementen bereits seine volle Kraft ausspielen kann. Kleiner und platzsparender geht es nicht mehr.

Fazit

Der Raspberry Pi ist ein echter PC mit all den Stärken und Schwächen die von PCs mit multitasken Betriebssystemen bekannt sind - er kann eine echte Wunderwaffe für alles sein - allerdings will er wie eine Diva behandelt werden (im Vergleich zum ARDUINO). Der Pi kann sogar als kleiner Office-PC genutzt werden, das kann der ARDUINO hingegen nicht - er beherrscht auch kein Multitasking.

Der ARDUINO ist klein leicht und Projekte sind in wirklich kurzer Zeit, dank spezieller Software-Bibliotheken, umgesetzt. Dies funktioniert beim Raspberry Pi ähnlich, ihm fehlen jedoch Lösungen für Spezialanwendungen. Sobald Standardprotokolle wie I2C, TCP/IP, FTP, WiFi, HTTP oder BlueTooth genutzt werden sind sie beide gleich auf, wobei der Raspberry Pi etwas komfortabler durch seine Desktopoberfläche für den User ist.

Softwareentwicklung findet für beide Geräte in einer geeigneten IDE statt. ARDUINO User sind auf die IDE festgelegt die das OpenSource Projekt vorgibt. Das Gerät der Raspberry Foundation nutzt das weit verbreitete und beliebte Python und ist somit unabhängiger von einer bestimmten IDE oder Plattform - die Programmierung kann sogar in einem trivialen Editor stattfinden.

Zum Betrieb und für die Entwicklung von Scripten bzw Sketches ist beim ARDUINO ein separater Computer nötig, der Raspberry Pi braucht keinen separaten Rechner, denn er ist Entwickler-PC und Controller in einem Gerät - er könnte sogar aus der Ferne via Telnet programmiert werden.

Hardwareseitig unterscheiden sich die beiden Micro-Knechte nicht sonderlich, beide haben digitale IO Pins, können analoge Signale messen und ausgeben, beherrschen PWM, können mit Modulen, Sensoren entweder klassich Parallel kommunizieren oder nutzen internationale Protokollstandards wie I2C oder andere Protokolle. Daher wundert es nicht, das viele externe Baugruppen sowohl für ARDUINO und Raspberry Pi identisch verwendet werden können (unter Beachtung unterschiedlicher Pinbelegung).

Während das Board des Raspberry Pi bereits alle Anschlüsse wie HDMI, USB, Bluetooth, WiFi, Kopfhörerausgang, Kameraanschluss, Ethernet und SD-Kartenslot mitbringt, so müssen diese Komponenten für den ARDUINO nachträglich gekauft werden, was einige Projekte recht teuer werden kann.

Die interne Architektur beider Micro-Rechner/Controller ist grundsätzlich verschieden. Dies äußert sich zum einen in einem (erheblich) unterschiedlichen Stromverbrauch und zum anderen auch in verschiedenen Bootzeiten. Während ARDUINO einen simplen Bootloader nutzt, so befindet sich ein echtes Betriebssystem auf dem Pi. Der Raspberry Pi benötigt eine lange Bootphase, der ARDUINO startet unterhalb einer Sekunde und ist bereits damit beschäftigt das Programm auszuführen.

Im Vergleich zum ARDUINO besitzt der Raspberry Pi in allen Belangen eine deutlich höhere Komplexität, da er Mikroelektronisch eine deutlich höhere Integrationsdichte auf dem Board besitzt. Der ARDUINO ATMEL-Chip hingegen kann sogar als einzelner Chip ohne Board mit minimaler Bauelementebeschaltung betrieben werden.

Mit dem Erscheinen des Raspberry Pi 4 muss sich der Nutzer auch um das Thema Kühlung Gedanken machen. Während der Vorgänger Pi 3 noch ohne Kühlung locker durch den Hochsommer kommt, so wird es in der vierten Iteration nicht mehr so leicht. Dafür hat der Pi 4 einen unglaublichen Geschwindigkeitssprung vollzogen sodass sogar zwei HDMI Ausgänge von dem Gerät gleichzeitig befeuert werden können - dies kann der ARDUINO nicht, benötigt aber auch keinerlei Kühlung.

Projekte in denen die Wiedergabe von Sound oder MP3 wichtig ist, können mit beiden realisiert werden. Der Raspberry Pi hat gegenüber dem ARDUINO jedoch den großen Vorteil, das er bereits einen Audioanschluss am Board besitzt (sofern man den Pi 2, 3 oder 4 verwendet). ARDUINO bietet für die Soundverarbeitung spezielle Module die angeschafft und angeschlossen werden müssen.

In der Gesamtbetrachtung wirkt das ARDUINO-Produkt in der Handhabung etwas abgerundeter und smarter. Alles passt gut zusammen und der Anwender findet in der kostenlosen IDE alles was er braucht sauber und ordentlich aufbereitet. Er muss sich mit keinen Medienbrüchen herumschlagen, während hingegen beim Raspberry Pi die Beispielcodes teilweise aus unterschiedlichen Quellen, unterschiedlich schwierig bezogen werden müssen. Zudem schlägt auch der zusätzliche Aufwand am Betriebssystem des Pi etwas mehr auf das Zeitkonto.

Erfreulich ist, das die Clones des ARDUINO mittlerweile sehr gut realisiert sind und teilweise für einen Bruchteil des Raspberry Pi daher kommen. Preiswerte Clones vom Raspberry Pi sucht man allerdings vergeblich. Es ist daher oft zu überlegen, ob für das eigene Projekt der preiswerte ARDUINO unter Verzicht des Komforts des Raspberry Pi zum Einsatz kommen sollte/könnte.

Zumal beide Geräte in einer BlackBox untergebracht der außenstehende Betrachter nicht sagen könnte welcher der beiden Knechte dort seinen Dienst verrichtet - denn im Endeffekt "schalten beide lediglich eine Lampe an und aus" (ok, ich übertreibe etwas).

Oliver Lohse   •  13.Jun.2020

Navigation


home
Omega 2
ESP32 NodeMCU
Arduino
Raspberry Pi
Python
PHP

Es geht um den heißem Scheiß über den alle reden - IoT (das Internet der Dinge). Doch zunächst der rechtliche Teil auf dieser rein privat betriebenen Webseite.

Die Webseite verwendet keine Cookies oder sonstigen Tracking-Tools, um das Leserverhalten zu speichern.

Python FTP Upload


Laden Sie mit Hilfe dieses kleinen Codebeispiels (Python-Script) lokale Dateien in das Internet auf Ihren Webserver oder im WLAN hoch.

Schwarzen Bildrand entfernen


Möchten Sie den Bildschirm vollends ausnutzen, dann können Sie den schwarzen Bildrand entfernen, Sie gewinnen damit ein bisschen Auflösung, was gerade kleineren Monitoren zu gute kommt.


© by O.Lohse • Impressumhome