Arduino mit mehr Leistung

Hallo allerseits,

ich programmiere derzeit mit einem Arduino Uno, jedoch bin ich bei meinem Projekt sehr schnell an die Leistungsgrenze gestoßen. Jetzt könnte ich natürlich auf ein größeres Arduino umsteigen, jedoch befürchte ich, dass auch das nur eine mittelfristige Lösung ist.

Gibt es ein Board (außer dem Galileo Board), dass ich programmieren kann wie ein Arduino? Es muss nicht zwangsweise über die Arduino IDE sein, aber das Prinzip des Programmierens am eigenen PC und dem anschließenden hochladen auf das Board gefällt mir.
Mit dem Raspberry Pi ist das ja nicht möglich, oder liege ich da falsch? Am liebsten wäre mir ja tatsächlich die Leistung eines ARM-Prozessors.

Viele Grüße
Ben

Was hast du denn genau vor?

Beagleboard ist noch eine beliebte Option:

Oder Cubiboard:
http://www.exp-tech.de/Mainboards/Cubieboard-A10-ARM-Board.html

Das und der Raspberry Pi sind allerdings keine Mikrocontroller Boards mehr. Das sind richtige Computer.

Im µC Bereich und in der Leistungsklasse des Due und höher ist noch der STM32 ziemlich verbreitet. Da gibt es auch Arduino-ähnliche Boards dafür. z.B.:
http://www.exp-tech.de/Mainboards/STM32-E407-Development-Board-for-STM32F4072GT6-Cortex-M4.html

Danke schonmal für die Antwort.

Mein Plan ist es zuerst einen Kalman-Filter laufen zu lassen, der die Daten einer IMU und vom GPS-Sensor verarbeitet. Anschließend möchte ich dann in Richtung Steuerung eines Multicopters gehen.

Ein PC wie der RasPi ist eigtl. schon viel zu viel, da ich den ganzen USB, Video, Audio-Kram gar nicht benötige.

Arduino DUE hat einen ARM-Prozessor. Wenn es noch mehr I/O-Pins sein sollen, dann einen DigiX DigiX - The Ultimate Arduino Compatible - Digistump damit hast Du dann einen ARM-Prozessor, Wifi on board und 99 nutzbare Pins. In Deutschland wird das Ding zur Zeit für 59,95 angeboten wenn ich mich nicht irre. Programmiert wird das Ding über eine angepasste Arduino IDE. Der DigiX ist voll pinkompatibel zu DUE und hat nur eine zusätzlich Pin-Leiste. Durch die Kompatibilität mit dem DUE können auch alle Bibliotheken für den DUE auch auf dem DigiX genutzt werden.

Was heißt hier Leistungsgrenze? Wenn es ordentlich programmiert und auf Schnick Schnack verzichtet wird, was man nicht in der Luft braucht, sollte es sehr wohl mit einem 328P gehen. Der wäre zumindest noch gut lötbar für eigene Platinen. Mit Schnick Schnack meine ich hierbei zB. TFT Displays. Sowas braucht man nicht. Da sollte einfachen 4x20 oder 2x16 ausreichen. Am besten absteckbar.

Ein RaspberryPi kann dafür auch gehen. Es gibt die wiringPi. Jedoch hat mM nach ein Rasp nichts in der Luft zu tun. Ob nun Audio etc mit onboard ist, sollte egal sein. Die Platine ist kompakt genug.

Wie sehr kennst du dich überhaupt mit µC aus? Ein Multicopter ist kein Projekt für Anfänger, auch wenn man bereits von der Kalman Filterung gehört hat. Der Eigenbau ist meistens keinesfalls günstiger als fertige Produkte. Denn ohne entsprechendes KnowHow gehen dir die ersten Teile (Rotorblätter/Gehäuse) sehr schnell kaputt ehe du diesen überhaupt gleichmäßig in der Luft halten kannst.

Also bei den Stichwörtern Multicopter und mehr Leistung als Arduino fällt mir spontan dieses Google Summer of Code Projekt ein:
http://beagleboard.org/project/BeaglePilot/

Das Stichwort Beagleboard wurde ja schon genannt, der Beaglebone Black ist das aktuelle Modell. Kaum größer als ein Uno und mehr auf Steuerungsanwendungen ausgerichtet als auf Multimedia. Wahrscheinlich wird der Tre so ähnlich sein, er basiert jedenfalls zur Hälfte auf diesem Design. Daher wird hier in Zukunft schon eine Schnittstelle zu Arduino bestehen.

"Programmieren wie beim Arduino" kann man im Prinzip schon. Es läuft halt Linux auf dem Board und damit auch die C/C++ Compiler von GNU und CLang. Man kann also auf dem Board übersetzen und ist dabei z.B. mit Putty vom PC aus angemeldet. Der Beaglebone kann wie ein Arduino über USB vom PC versorgt werden, er erscheint als kleiner USB-Stick (u.a. mit den PC-Treibern drauf), als serielle Schnittstelle und als USB-Ethernet-Schnittstelle.

Es gibt für diverse Sprachen diverse Bibliotheken um auf IOs zuzugreifen. Da gibt es verschiedene Levels auf denen man das tun kann, hier nur mit Beispielen für C/C++:

Über das Dateisystem (Reicht z.b. für Rechteck-Signale erzeugen im 1-2 kHz Bereich)

über direkten Speicherzugriff (ca. 2 MHz möglich)

und wenn man die enthaltenen PRUs (Programable Realtime Units, 2 200 MHz "Hilfskerne") verwendet,
kommt man in den zweistelligen Megahertz-Bereich
http://beagleboard.org/project/libpruio/

Thema STM32:
Zum Rumspielen habe ich mir das hier gekauft
http://www.voelkner.de/products/657829/STMicroelectronics-Entwicklungsboard-Nucleo-STM32F401XD-XE-fuer-die-STM32-Serie-NUCLEO-L152RE.html

Der hier läuft zwar nur mit 32mhz, der Preis ist dafür aber auch unschlagbar.
512kb flash und 80kb sram dürften ausreichen :wink:
Die äußeren Anschlussleisten haben normales Rastermaß so das man leicht aus einer Lochpunktrasterplatine ein Protoshield bauen kann.

Die IDE mit Webanbindung ist zwar Anfangs etwas gewöhungsbedürftig, insgesamt funktioniert alles wie es soll.
Auch die Einbindung der Lib's finde ich gut gelöst.
Die Programmierung ist näher an C++ angelehnt als beim Arduino.

Denke anschauen lohnt sich...

An dieser Stelle eine kurze Frage.
Die Projekte kann man z.b nach keil ?vision 4 exportieren.
Es ist also davon auszugehen das der Code dort 1:1 incl der Lib's läuft. Nur keil ?vision 4 ist in der Vollversion nicht gerade billig.

Gibt es adequate Alternativen wenn man einen Offline Compiler für diese Board's haben will ?

rudirabbit:
An dieser Stelle eine kurze Frage.

Etwas OT, aber hier ein paar Antworten:

rudirabbit:
Gibt es adequate Alternativen wenn man einen Offline Compiler für diese Board's haben will ?

Keine eigene Erfahrung, aber auf der Produktseite steht

Supported by wide choice of Integrated Development Environments (IDEs) including IAR, Keil, GCC-based IDEs

Siehe
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260000

rudirabbit:
Der hier läuft zwar nur mit 32mhz,

Also meiner läuft definitiv mit den angegebenen 84 MHz und schlägt in Vergleichen den Due sogar etwas. In den Kommentaren auf der mbed-Webseite steht aber etwas von Leuten, wo er nicht die volle Geschwindigkeit hatte. Hast du die Firmware aktualisiert ?

Bei den ersten Versendern gibt es übrigens schon den 411. Kostet das gleiche, ist auch die gleiche Platine, aber ein 100 MHz Chip mit 128 kB RAM.

Ansonsten sind meine Erfahrungen mit den Teilen gut. Bis auf die instabile USB-seriell Verbindung über den Programmer. Die läuft nur mit 9600 hinreichend gut. Bei den NXP Boards von der gleichen Seite gehen locker 500000. Aber die ST kosten nur ein Viertel und haben wirklich viele IOs, dafür aber, im Gegensatz zu den NXP, kein Ethernet, CAN und zweiten programmierbaren USB. Programme umstellen zwischen ST, NXP und Freescale geht wirklich mit zwei Mausklicks.

Appropos Freescale, ein sehr attraktives Board auf der Seite ist das hier
http://mbed.org/platforms/FRDM-K64F/
kostet z.B. bei Mouser 24,90 und hat eine 120 MHz CPU, 256 kB RAM, Ethernet, Micro-SD Kartenslot und Beschleunigungsensor und Magnetfeldsensor auf der Platine. Nur wenn er am PC hängt, will er immer Reset gedrückt haben, damit das Programm startet. Bei den anderen läuft es beim Reinstecken einfach los.

Hallo, ich weiß das ist schon OT.
Leider finde ich kein Deutsches Forum, hatte zwar jahrelang Englisch aber null Übung. Trauig aber wahr. Lesen geht halbwegs

Also Firmware ist aktuell, und ein

pc.printf("Processor Clock ist %d",SystemCoreClock);

Zeigt mir die 32mhz an. So wie ich das Datenblatt interpretiere kann man die CPU Clock softwaremässig ändern.
Das ist mir aber zunächst nicht so wichtig.

Ich bin im Moment am grübeln wie damit ein Webserver zu realisieren wäre, mit dem Arduino Ethernet Shield und Mega2560 und der passenden Lib war das relativ einfach.

Hier schaut die Sache etwas anders aus, theoretisch sollte auch das Arduino Ethernet Shield V2 passen, wenn man die ISP Pins anpasst.
Es gibt den W5100 und W5200 in den Lib's wird auch oft von WIZ820 gesprochen.
Was passt nun zusammen ? Das Arduino Shield hat den W5100 drauf.

Es sollte auch das hier https://mbed.org/cookbook/Websocket-and-Mbed (Part1 mit Wifi funktionieren) nur lässt sich der Code nicht bauen, weil wohl was fehlt und die Abhängigkeiten nicht aufgelöst werden.
Wenn schon webbasierend sollte sowas funktionieren.

Ich stehe mit mbed absolut am Anfang kann auch mein Fehler sein :blush:

rudirabbit:
Hallo, ich weiß das ist schon OT.

Solange sich niemand gestört fühlt, können wir ja weitermachen.

rudirabbit:
Also Firmware ist aktuell, und ein

pc.printf("Processor Clock ist %d",SystemCoreClock);

Zeigt mir die 32mhz an.

Ha, das hab ich noch nie ausprobiert. Allerdings zeigten die Werte für HaWes Benchmark aus diesen Thread
http://forum.arduino.cc/index.php?PHPSESSID=0rfgiha9jvqpv8nhfosajiht66&topic=257507.msg1832762#msg1832762
das der ST den Due dort deutlich schlägt. (Die mbed Messwerte stehen ein paar Beiträge weiter unten.)

rudirabbit:
Ich bin im Moment am grübeln wie damit ein Webserver zu realisieren wäre, mit dem Arduino Ethernet Shield

Also ich glaube, dafür müsste man eine eigene Library schreiben. Die Ethernet Libs von mbed sind für Board mit integriertem Ethernet. Das muss nicht mal heißen, dass ein Stecker drauf ist. Beim LPC1768 ist z.B. nur die Elektronik vorhanden, man muß noch den "MagJack", das ist eine Ethernet-Buchse mit eingebauten Transformatoren, keine einfache Buchse, anschliessen. Aber das sind nur vier Drähte, die angelötet werden müssen:
http://mbed.org/cookbook/Ethernet-RJ45
Einfacher sind aber Boards wie das LPC4088 oder FRDM-K64F, da ist das alles schon drauf.

In Sachen Webserver mache ich aber mit den Mikrocontrollern gar nichts, sie dienen mir nur als Erweiterung zum Linux-Board. Auf dem Beaglebone sind mit Apache 2 und Node.js gleich zwei richtige Webserver vorhanden. Außerdem laufen dort Libs wie Poco, womit man normalen C++ Programmen ein Webinterface verpassen kann.

Ich habe mich etwas eingelesen.
Das WIZ820io Modul in Verbindung mit der WIZ820ioNetIf und HTTPServer Lib sollte funktionieren
Die HTTPServer Lib ist ihmo gut gemacht, man kann eine Eventhandler Klasse einhängen.

Dort werden dann die Funktionen doGet(),doPost(),doHead() etc angesprungen.
Mal sehen ob es auch so läuft wenn ich das Modul habe.

Ha, das hab ich noch nie ausprobiert. Allerdings zeigten die Werte für HaWes Benchmark aus diesen Thread
für Due: Benchmark Test für verschiedene MCUs - #37 by ArduFE - Deutsch - Arduino Forum
das der ST den Due dort deutlich schlägt. (Die mbed Messwerte stehen ein paar Beiträge weiter unten.)

Kannst ja mal den Wert von SystemCoreClock anzeigen lassen. Ob das zusammenpasst.
Hast ja jede Menge von den ST's :slight_smile:

rudirabbit:
Kannst ja mal den Wert von SystemCoreClock anzeigen lassen. Ob das zusammenpasst.

Das hier

#include "mbed.h"

int main() {
    printf("SystemCoreClock = %d Hz\n", SystemCoreClock);
}

gibt auf dem F401

SystemCoreClock = 84000000 Hz