Gesucht: Etwas zwischen dem Raspberry Pi und Arduino

Zuerst mal: alle die nun den Blog über die größten Katastrophen der Raumfahrt erwartet haben – den findet ihr in der Website. Da es ein rein informativer Blog ist und das Thema auch so nicht in der Website vorkommt habe ich einen neuen Artikel geschrieben. Wer mal die Neues Seite besucht wird feststellen, das es da einige neue Artikel in diesem Halbjahr gab. Vielleicht ist der eine oder andere auch interessant.

Auf meinen heutigen Beitrag kam ich durch eine Reihe von Raspberry Pi Projekten die in einer der letzten ct’ Ausgaben vorgestellt wurden. Dabei war auch ein „digitaler Zollstock“ bei dem ein Raspberry Pi Kit einem Ultraschall-Sensor Entfernungen maß und auf einem 7-Segment Display (wie bei einfachen Taschenrechnern, bzw. der eine oder andere kennt das noch von dem Microcomputer Lernkits der frühen Achtziger) wiedergab. Das erinnerte mich daran, dass ich mal was Ähnliches erstellen wollte. Als Fahrradfahrer ärgern mich Autofahrer, die viel zu nahe an einem vorbeifahren. Die Distanz könnte man mit einem solchen Sensor bestimmen und weil ich noch eine Raspbery Pi Kamera habe, könnte man auch gleich ein Beweisfoto machen. Das ist eindrucksvoller bei nahen Passagen als eine einfache Messung. Ein weiteres Projekt, das mir lange vorschwebt, ist ein eigener MP3-Player, die die ich habe erfordern zu viel Aufwand, um schnell mal den Titel zu wechseln vor allem, wenn man über 1000 auf dem Player hat. Für beide Projekte ist aber der Raspberry Pi nur eingeschränkt geeignet. Warum das wird deutlich, wenn ich mal die beiden Experimentierplattformen Arduino und Raspberry Pi umreise, die jeweils noch unterschiedliche Mitglieder haben.

Einfach ist es beim Arduino. Der Arduino ist im Prinzip nur eine Plattform für die Programmierung eines Mikrocontrollers. Er ist auf der Platine fest verlötet und es gibt eine Leiste mit Pins für den Anschluss von Sensoren oder Aktoren. Damit spart sich der Hobbyist eine Menge Arbeit und Drahtverhau, denn für jedes Projekt eine neue Platine layouten lassen, tun wohl die wenigsten. Programmiert wird der Microcontroller, indem das Programm auf dem PC mit einem C-Crosscompiler ersetzt und auf den Arduino geflasht wird. Dafür gibt es eine eigene IDE für Windows. Es ist nur ein Programm aktiv, das mit dem Einschalten startet und dann typisch in einer Endlosschleife auf Ereignisse wartet.

Man kann einen Arduino aufrüsten. Neben Sensoren und anderen Bauteilen, die man direkt auf die I/O-Leiste aufstecken kann wie LED-Displays sind das vor allem Shields, z. B. für einen GPS-Tracker oder eine Micro-SD Karte als Massenspeicher. Denn ein Arduino ist eben nur ein Microcontroller – es gibt außer den I/O Pins und den Shieldanschlüssen keine weiteren Anschlüsse. Man ist auch auf die Speichermöglichkeiten im Chip beschränkt. Jeder Arduino hat im Microconroller ein Flash-ROM für das Programm und Arbeitsspeicher, aber selbst bei den größeren Versionen sind das maximal 32 KB RAM und 256 KB ROM. Bei den kleinen geht das RAM bis auf 1 KByte zurück. Das reicht für Messdatenerfassung, aber für meine MP3-Datenbank und das Speichern von Bildern von Dränglern nicht. Die reine Rechenleistung reicht je nach Board für meine gedachten Projekte aus. Neben den klassischen 8 Bit Mikrocontrollern des Typs ATMega gibt es auch eine neue Serie mit 32 Bit Cortex Prozessoren bis 48 MHz, die dürften dann in der Leistungsklasse eines 80386 liegen und damit kann man dann schon komplexere Projekte umsetzen.

Der Raspberry Pi hat mit dem Arduino die GPIO-Leiste gemein, aber sonst nichts. Es ist ein vollwertiger Mikrocomputer der ein Linux von einer SD-Karte als Massenspeicher lädt. Je nach Modell gibt es einen bis vier USB Ports für den Anschluss von Peripherie, Lan-Anschluss, WLAN, Audiobuchsen und HDMI-Anschlüsse (bis zu zwei). Man kann ihn als echten Desktopcomputer einsetzen, es gibt ihn sogar in ein Tastaturgehäuse eingebaut.

Je nach Modell hat der ARM-Prozessor einen bis vier Kerne mit 1 bis 1,9 GHz Takt. Er ist damit zwar deutlich langsamer als selbst der einfachste x86 Prozessor, aber für viele Dinge reicht es. Ich habe einen Raspberry Pi jahrelang in mein Ferienhaus mitgenommen, damit ich dort auch „online“ bin. Langsam war er nur bei mit Werbung überfrachteten Webseiten und Programmen die Java einsetzen, wie der TV-Browser oder Mediathekview. Aber das liegt eher an Java. Man kann über die GPIO Pins Sensoren anschließen, wie beim Arduino, hat aber viel weitergehende Möglichkeiten. Mit dem langsamen und uralten Modell A habe ich über zwei Jahre lang eine Wetterstation betrieben. Irgendwann (nach etwa 2 Jahren) waren die Sensoren von Tinkerforge nach einigen Stunden nicht mehr ansprechbar, sodass ich es aufgegeben habe, der Raspberry arbeitete nach zwei Jahen Dauerbetrieb immer noch. Die Daten sind immer noch online. Jede Seite mit Grafiken, auch die Übersichtsseiten wurden durch ein Programm auf dem Raspberry erstellt und per FTP auf meinen Webserver übertragen. Das lief völlig automatisch und autonom. Mit einem Arduino wäre das nicht möglich, dafür würde der Arbeitsspeicher nie ausreichen.

Für mich auch ein Vorteil: ich bin nicht auf C als Programmiersprache festgelegt. Ich habe die Programme für die Wetterstation auf dem PC mit Lazarus entwickelt, dann auf dem Raspberry nur noch compiliert (Crosscompiling ist bei Lazarus möglich aber wie ich finde, zu umständlich). Die meisten programmieren in Python oder der Lernsprache Scratch, aber es gibt im Repistory der Raspberry Pi Foundation jede Menge andere Sprachen wie Java, Perl, Javascript etc.

Der große Nachteil: Der Raspberry Pi ist nicht gedacht für einen mobilen Einsatz. Die kleinste Version, der Raspberry Pi Zero braucht im Idle Betrieb 0,45 Watt und unter Last 0,9 Watt. Die größeren Modelle können bei CPU Volllast schon 6 Watt erreichen. Noch dazu arbeitet er mit 5 Volt als Eingangsspannung. Das heißt, wenn man eine Stromversorgung aus preiswerten NiMh-Akkus aufbauen will, braucht man mindestens 5 Stück, da sie maximal 1,2 V pro Zelle liefern und die Spannung auch noch abnimmt bei Entladung.

Bei den Arduinos gibt es auch Modelle mit 3,3 V Spannung (neben 5 Volt Modellen) da reichen drei Stück. Nimmt man die teuren Lithiumakkus mit 3,7 V Spannung sogar einer. Sicher man kann eine Powerbank als Stromversorgung anschließen, doch die wiegt viel und belegt weiteren Platz, passt nicht in das Gehäuse. Demgegenüber braucht ein 32 Bit Cortex für den Arduino 35 µA pro Mhz, das wären selbst bei gleicher Taktfrequenz (1 GHz) wie beim Raspberry Pi Zero 0,12 Watt, aber da er viel niedriger getaktet ist (48 MHz) sind es real nur 5 mWatt im Idle Mode. Daneben ist auch die ganze Platine beim Arduino kleiner und schmaler. Ein Raspberry Pi ist schon etwas sperrig, vor allem wenn dann noch eine Powerbank hinzukommt.

Mein Wunsch: warum kombiniert man nicht beide Plattformen. Ausgangsbasis könnten die kleinen Raspberry Pi Modelle sein wie den Zero oder die Modell A und B, die auch wenige Anschlüsse haben – sie machen die Platine nämlich höher und brauchen Strom. Anstalt einen potenten 1 GHz Kern nimmt man dann einen genügsamen 32 Bit Kern wie beim Arduino und einem Takt im zweistelligen MHZ Bereich reichen meistens ja auch aus. Dazu etwas mehr RAM – 256 MB mehr RAM beim Modell B erhöhen den Stromverbrauch um 0,2 Watt, das wären bei 16 oder 32 MB RAM dann im Bereich von 10 mWatt. Schön wäre es, wenn man auch Batterien direkt anbringen könnte, also neben der Stromversorgung über Micro-USB einen kleinen Halter für AAA-Zellen anbringen würde. Dann sollte der Prozessor natürlich mit 3,3 V arbeiten. Drei AAA-Batterien wiegen nicht viel, brauchen wenig Platz und haben immerhin knapp 9 Wh Leistung, was bei sagen wir mal großzügigen 0,5 Watt Stromverbrauch für 18 Stunden Betrieb ausreichen würde – so lange hallten auch viele MP3 Player nicht durch.

Natürlich würde sich auch die Softwareumgebung ändern. Es gibt zwei Möglichkeiten. Nummer 1: wie bisher bei den größeren Raspberry Pis. Man bootet ein Linux, nun aber abgespeckt auf den Einsatzzweck und es endet auf der Konsole. Das Hauptprogramm kann man von dort aus starten oder erstellen. Das ist flexibler als jedes Mal es zu flashen, wobei das dann auch viel Flash im Prozessor erfordert, aber einen Micro-SD Kartenanschluss. Viele Anschlüsse braucht man nicht. Ich habe schon mit einem Raspberry Pi A+ Modell experimentiert das nur einen USB-Anschluss und keinen LAN-Anschluss (aber Wlan) hat. Sobald man Wlan konfiguriert hat, kann man über einen Remote Desktop oder SSH zugreifen, der USB-Port wird frei und der Raspberry Pi ist autonom. Für Bastelprojekte hängen die Raspberrsy sowieso nicht an einem Monitor, sondern werden bei mir alle über Remote Desktop angesprochen. So wäre ein LAN-Anschluss – die gibt es auch in Low-Profile Ausführung und ein USB-Anschluss ausreichend, dann kann über SSH wie Putty man auf das Gerät zugreifen, ohne es jemals an einen Bildschirm anzuschließen.

Es gibt ja von der Raspberry Foundation schon einen Abstecher in die Mikrocontroller Welt gemacht. Der Raspberry Pi Pico hat einen 32 Bit Cortex Prozessor mit zwei Kernen mit 133 MHz Takt, 256 KB Speicher und 2 MB Flash. Er ist damit um einiges potenter als die größten Prozessoren der Arduinos. Er braucht auch mehr Strom und liegt bei 10 mW im Sleep Mode und 460 mW bei voller Auslastung. So ein Pico wäre mir etwas weniger Leistung (MHz), dafür etwas mehr RAM recht. Preislich unterbietet er die Arduinos, denn er kostet nur 5 Euro, derzeit aber durch ie Verknappung deutlich teurer. Mit den Arduinos teilt er auch die Schnittstellenarmut – es gibt nur I/O Leiste (sogar ohne Pins) und einen USB-Anschluss zum Programmieren und wie bei den Arduinos wird das Startprogramm geflasht, kein Linux gestartet. Bei einem Programm annehmbar, kompliziert den Entwicklungszyklus, ist dafür aber schneller startbereit.

Vor allem vermisse ich bei allen Boards etwas (egal ob Arduino oder Raspberry Pi): man kann an sie zwar Ausgabegeräte wie einen LCD-Schirm oder eine LCD/LED-Zeile anschließen, ebenso einfache Eingabegeräte wie Mini-Joysticks oder ein 3 x 3 bis 4 x 4 Tastenfeld. Aber das blockiert dann GPIO Pins, die man für Sensoren braucht oder man schließt per USB an – noch ein Teil mehr zu handeln außer der Stromversorgung, das will man bei mobilen Geräten nicht haben. Will man wirklich mal ein Gerät basteln, das man mitnehmen muss/kann, dann muss das alles in ein Gehäuse passen. Also warum nicht zwei Steckerleisten, davon eine nur für die Pins die man ein LCD-Zweizeilen Display braucht und eine Mini-Tastatur. Und Befestigungsmöglichkeiten für die Strombesorgung mit Akkus auf dem Board. Dann noch ein Gehäuse mit Aussparungen für Display und Keypad an den richtigen Stellen und man hätte wirklich alles in einem Gehäuse, ein mobiles Gerät, nicht eines mit externem Batteriepack oder Powerbank und externer Tastatur.

Das ist bei allen Mikrocontrollern ein Manko. Es gibt für den Raspbery Pi jede Menge Gehäuse, doch bei vielen sind die GPIO-Pins blockiert, einige Fremdhersteller sparen sie aus. Aber es gibt kein Konzept, bei dem man in das Gehäuse ein Mini-Display und eine Mini-Tastatur integrieren kann. Es gibt eine Option eines Gehäuses mit einem berührungssensiblen LCD Display. Doch zum einen ist das meiner Erfahrung nach sehr heikel in der Handhabung selbst mit Kalibrierung werden Klicks falsch verortet, zum anderen nützt es nichts, wenn man etwas Textual eingeben muss.

Ich meine, wenn man den Sprung von der Bereitstellung nur einer Plattform zu einem Konzept mit Ein/Ausgabegeräten und integrierter Stromversorgung geht, egal ob bei Arduino oder Raspberry Pi, man könnte beiden Plattformen pushen. Der echte Nutzen wäre viel größer. Das ändert an den eigentlichen Rechnern ja nichts, die kann man immer noch ohne das Zubehör verkaufen, aber man muss eben die Erweiterung schon auf der Platine vorsehen. Aber beim Pico läuft es ja derzeit gerade anders – bei ihm muss der Anwender sogar noch die 20-Pin Pfostenleiste, die eigentlich für die Nutzung nötig ist zusätzlich einlöten. Warum? Bei den normalen Raspberrys ist sie ja auch vorhanden und für die Industrie, die nur das Modul einsetzt kann man ja wie beim Raspberry Pi ein „Compute Modul“ ohne alle Anschlüsse anbieten.

3 thoughts on “Gesucht: Etwas zwischen dem Raspberry Pi und Arduino

    1. Ich kenne solche und ähnliche Projekte auch vom ADFC. Das onbige Projekt benutzt einen Raspberry, da kann man sich ausrechnen wie schnell selbst eine Powerbank leergenuckelt ist. Andere Projekte einen Arduino, dann muss man selbst auf einen Knopf drücken um eine Überholung zu signalisieren, weil er nicht die Rechenkraft hat das selbst von einem stationären Gegenstand der überholt wird zu unterschieden.

      Allen Projekten mangelt es daran das man kein Foto aufnimmt. Aber gerade das ist wichtig. Wer mal sieht wie nahe ein Auto einem Fahrradfahrer kommt ist viel mehr sensibilisiert als wenn er nur zig Messwerte sieht. Und vielleicht wird der abstand ja mal auch verpflichtend und keine Empfehlung dann braucht man sowieso Beweisfotos auf denen man das Fahrzeugschild erkennt.

      1. o.k., der Link bezog sich in erster Linie auf den 2. Absatz des Blogs, Stichworte: Bastelprojekte Raspi und Abstandsmessung Fahrrad. Hatte mich erinnert, weil ich das verlinkte Projekt sehr interessant finde und damals mal vorhatte das selbst nachzubauen… 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.