Azurit und Arduino Due

dotmaster5

New member
AlexanderG schrieb:
Der Arduino Due ist Pin-kompatibel zum Mega, daher kann man ihn gegen den Mega austauschen. Wichtig ist dabei jedoch zu beachten dass der Due ein 3,3v System ist (der Mega ein 5v System), d.h. dass kein I/O Pin mehr als 3,3v verwenden darf. Das lösen wir wie unten beschrieben.

Den Arduino Due konnte ich wie folgt mit dem Ardumower PCB verwenden:

1. Jumper JP3 (PowerA3.3) und Jumper JP12 (PowerA5.0) entfernen, damit keine Arduino-Spannungs Regler verwendet werden. Falls Mess-Jumper (Mess3.3 o.ä.) gesetzt sind, diese entfernen.
2. DC-Wandler U7 auf 3,3v einstellen (alle alten 5v Leitungen bzw. VCC-Leitungen des PCB sind nun 3,3v Leitungen !)
3. DC-Wandler U6 auf 5,0v einstellen (die alten 3.3v Leitungen des PCB sind nun 5,0v Leitungen ! Am besten man macht Aufkleber auf das PCB damit man später nicht durcheinander kommt).
4. Die aufgesteckten MC33926 Treiber und INA169-Module sowie die Odometrie laufen nun alle mit 3,3v. Für folgende Module musste ich die VCC-Stecker auf 5v umstecken:
4.1 Das Bluetooth Modul HC-05 betreibe ich an RX0/TX0 und an VCC=3,3v (TX und RX des Bluetooth-Moduls arbeiten bereits mit 3,3v).
4.2 Das MPU9150-Modul (IMU) betreibe ich mit 5v (die SCL, SDA Leitungen des Moduls arbeiten bereits mit 3,3v).
4.3 Die LM386-Module (Perimeter) betreibe ich mit 5v. Die Potis auf den Modulen ggf. so einstellen, dass die Signalpegel (Oszilloskop) nicht höher als 3,3v gehen.

Weitere Module habe ich bisher nicht mit dem Arduino Due verwendet.


Hey Alex, du hast ja auf der ersten Seite in deinem Post nen kleines Umbaututorial geschrieben, von Mega auf Due, das klappt jetzt soweit schon ganz okay, ich frage mich nur, in Azurit gibt es ja die Due Dateien, aber wo zum teufel stelle ich das den um, das auch der Due genutzt wird?
da steht ja überall das mit dem #ifdef __AVR__ , wo definiere ich denn den Due?

Könntet ihr mir da nen kleinen Tipp geben, wie ich Azurit 1.0a6 auf dem Due zum Leben erwecke?


Danke euch schonmal im voraus
Benni
 
Zuletzt bearbeitet von einem Moderator:
AlexanderG schrieb:
Der Arduino Due ist Pin-kompatibel zum Mega, daher kann man ihn gegen den Mega austauschen. Wichtig ist dabei jedoch zu beachten dass der Due ein 3,3v System ist (der Mega ein 5v System), d.h. dass kein I/O Pin mehr als 3,3v verwenden darf. Das lösen wir wie unten beschrieben.

Den Arduino Due konnte ich wie folgt mit dem Ardumower PCB verwenden:

1. Jumper JP3 (PowerA3.3) und Jumper JP12 (PowerA5.0) entfernen, damit keine Arduino-Spannungs Regler verwendet werden. Falls Mess-Jumper (Mess3.3 o.ä.) gesetzt sind, diese entfernen.
2. DC-Wandler U7 auf 3,3v einstellen (alle alten 5v Leitungen bzw. VCC-Leitungen des PCB sind nun 3,3v Leitungen !)
3. DC-Wandler U6 auf 5,0v einstellen (die alten 3.3v Leitungen des PCB sind nun 5,0v Leitungen ! Am besten man macht Aufkleber auf das PCB damit man später nicht durcheinander kommt).
4. Die aufgesteckten MC33926 Treiber und INA169-Module sowie die Odometrie laufen nun alle mit 3,3v. Für folgende Module musste ich die VCC-Stecker auf 5v umstecken:
4.1 Das Bluetooth Modul HC-05 betreibe ich an RX0/TX0 und an VCC=3,3v (TX und RX des Bluetooth-Moduls arbeiten bereits mit 3,3v).
4.2 Das MPU9150-Modul (IMU) betreibe ich mit 5v (die SCL, SDA Leitungen des Moduls arbeiten bereits mit 3,3v).
4.3 Die LM386-Module (Perimeter) betreibe ich mit 5v. Die Potis auf den Modulen ggf. so einstellen, dass die Signalpegel (Oszilloskop) nicht höher als 3,3v gehen.

Weitere Module habe ich bisher nicht mit dem Arduino Due verwendet.


Hey Alex, du hast ja auf der ersten Seite in deinem Post nen kleines Umbaututorial geschrieben, von Mega auf Due, das klappt jetzt soweit schon ganz okay, ich frage mich nur, in Azurit gibt es ja die Due Dateien, aber wo zum teufel stelle ich das den um, das auch der Due genutzt wird?
da steht ja überall das mit dem #ifdef __AVR__ , wo definiere ich denn den Due?

Könntet ihr mir da nen kleinen Tipp geben, wie ich Azurit 1.0a6 auf dem Due zum Leben erwecke?


Danke euch schonmal im voraus
Benni
 
Zuletzt bearbeitet von einem Moderator:
Ich hab es noch nie ausprobiert, aber die define-Variable __AVR__ wird glaub ich aus den avr-sourcen von Atmel genommen. Somit müsste man eigentlich gar nichts umstellen, wenn man den DUE flasht. Das ist ja der Witz an diesen hardwarespezifischen Compilerdirektiven :)

Gruß,
Jem
 
Es muss nichts weiter gemacht werden. Allerdings läuft der Azurit-Code für Due nicht mehr mit den aktuellen IDE's (kompiliert aber Funktionalität geht nicht). Werde ich die Tage aktualisieren. Schade dass die Arduino Libraries den Due softwareseitig nie richtig unterstützt haben und auch nie richtig unterstützten werden (Due ist als "retired" aufgenommen worden).
 
Uff, der Nano ist auch retired ... ich hab da noch 20 Stück rumliegen von ... :unsure:

Der Mega ist noch aktuell und der Due retired ... eine sehr seltsame Produktentwicklung. Ein richtiger Nachfolger für den Mega scheint nicht in Reichweite zu sein. Alle anderen sind entweder Uno- oder Pro-Größe. :angry:

Edit: Ich habe gerade bemerkt, dass es neben arduino.cc auch arduino.org gibt, mit unterschiedlichen IDEs und unterschiedlichen Produkten. z.B. http://www.arduino.org/products/boards/arduino-star-otto
Nun bin ich total verwirrt, welche Variante der IDE ist für uns die richtige?
 
@ Jürgen:
Also, ich werde das jetzt mal auf nem Frischen OS und neu aufgespielter Arduino.cc 1.6.9 ausprobieren, mal sehen, ob das Klappt.

Nur mal so am Rande, das mit dem Otto Board sieht ja mal interessant aus, habe das Soundmodul, W-lan usw ja eh schon dran gebastelt, das teil wäre schonmal ne Möglichleit das Ganze zu verkleinern und zu vereinfachen. Zum anderen ist ja die Leistung mit... WOW !!! ... 180 Mhz auch nicht schlecht, Speicher bis zum abwinken und dann noch der SD Reader dazu... das könnte nen echt ernstzunehmender Nachfolger für den Mega sein finde ich.

Gruß
Benni
 
Also ich hab es grade mal ausprobiert, kommen immer Fehler beim erstellen....
Egal ob ich jetz im Due als Port Native USB oder Programming auswähle
Oder wie wird das gemacht, ich muss ja im Boardverwalter das Due erst herunterladen uns installieren, dann kann ich ja den Due unter ARM 32Bit Boards auswählen. Ich habe gelesen, das man auf Native USB stellen soll
aber wie gesagt, bricht immer mit Fehler ab. Vielleicht könnte ja mal einer so nett sein und eine Version für den Due vorbereiten, das würde es extremst vereinfachen :)




Hier mal die Feler Log:

Build-Optionen wurden verändert, alles wird neu kompiliert
sketchNewPing.cpp: In constructor 'NewPing::NewPing(uint8_t, uint8_t, unsigned int)':

NewPing.cpp:19: error: cannot convert 'RwReg* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

_triggerOutput = portOutputRegister(digitalPinToPort(trigger_pin)); // Get the output port register for the trigger pin.

^

NewPing.cpp:20: error: cannot convert 'RoReg* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

_echoInput = portInputRegister(digitalPinToPort(echo_pin)); // Get the input port register for the echo pin.

^

NewPing.cpp:22: error: 'portModeRegister' was not declared in this scope

_triggerMode = (uint8_t *) portModeRegister(digitalPinToPort(trigger_pin)); // Get the port mode register for the trigger pin.

^

exit status 1
cannot convert 'RwReg* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment
 
Die meisten externen Libraries gehen nicht für den Due (NewPing eingeschlossen). Die mitgelieferten Arduino-Libraries gehen in den aktuellen IDE's nur zur Hälfte. Ich werde den Azurit Code die Tage mal ändern so dass er ohne externe Libraries sowie (fast) ohne Arduino-Library auskommt. Wie gesagt, den Due hat das Arduino-Projekt nicht zu 100% umgesetzt.
 
Hallo Alexander,

ich habe gerade die azurit 1.05a als arduino_mini konfiguriert und wollte hochladen auf meinem mega 2540, dann kommt folgender Fehler:

In file included from sketchesp8266.cpp:1:0:

sketchesp8266.h:6:19: fatal error: comms.h: No such file or directory

#include "comms.h"

^

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.

Was ist da zu tun?

vielen herzlichen Dank für deine Mühe!

Liebe Grüße,
Karl-Heinz
 
Hey Alex, ich habe grad mal ein wenig gebastelt, da kam mir die Idee, warum denn nicht einen Teensy 3.2 als Steuerung benutzen? Die Pins können sogar 5V soweit ich das gesehen habe.... man bräuchte ja theoretisch nur einen Adapter zu bauen um das ganze Passend zu machen. Also wenn man sich mal so die Vergleiche ansieht, steckt der Teensy ja sogar den Due mal locker in die Tasche.... Hast du schonmal von Teensy gehört oder mit gebastelt? Teensy ist ja auch Arduino Kompatibel und von daher müsste ja der Code dann auch damit laufen.
Vorteil wäre dann ja auch Cortex-M4, 256 kbytes Flash, 96 kbytes Ram und bis zu 92 Mhz

Hier mal ein kleines Demovideo
https://www.youtube.com/watch?v=rkIfsYRshRQ

Edit: Hab grade mal nachgeschaut, der Teensy 3.2 ist 5 Volt tolerant.... das wäre ja nen echt heißer Kandidat, hab noch 2 davon hier herumliegen, wenn der Code passen würde, könnte ich mal schnell eine Adapterplatine layouten und das ganze mal testen.... bleibt ja nur das Spielchen mit den Libraries, könntest du mir helfen eine Version für den Teensy3.2 zu erstellen?
 
Alles interessant und könnte man bestimmt auch verwenden (wenngleich er weniger I/O Pins hat). Der direkt nächste sinnvolle Schritt ist m.E. aber nicht wieder Hardware ändern, sondern die Ardumower-Software noch modularer machen (habe damit angefangen). Es wird dann der gesamte Code aufgetrennt in Anwendungscode, Board-Code (HAL) und Treiber-Code. Erst danach kann man sauber eine Portierung für praktisch beliebige Hardware vornehmen.
 
Meinst du mit aufteilen, das man dann den Code auf jeder Arduino basierender Hardware nutzen könnte? Ich bin echt gespannt....


Mal am rande, ich bin echt beeindruckt, was du so an Kenntnis und Arbeit in das Projekt steckst, Respekt!!!
 
Das Ardumower-Team möchte ein modulares System einführen wo die Treiber-Logik der Sensorik/Aktorik auch in externe Hardware wandern kann (Beispiele: BumperDuino, PerimeterDuino, ControlCenter). Auch soll eine Anpassung an neue Boards einfacher möglich sein. Voraussetzung ist dass man diese Dinge alle erstmal in getrennten Software-Modulen hat.

Man definiert also Software-Schnittstellen die für jede Funktionalität benötigt wird und konkretisiert diese in entsprechende HAL-Treiber ("liefere mir 100 Samples vom ADC-Wandler") bzw. Geräte-Treiber ("welche Signalstärke hat die linke Spule?").

Beispiel: links allgemeine HAL- und Geräte-Klassen, rechts konkretisierte Geräte-Treiber
driver.png

Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/driver.png/
 
Zuletzt bearbeitet von einem Moderator:
Also wenn ich das jetzt richtig verstanden habe, wollen wir das so lösen, das sozusagen jeder Sensor oder Aktor seine eigene Treiber und Steuerung drauf hat und dann sozusagen der Hauptrechner sich nur noch die werte anfordert? Ich komme aus dem KFZ bzw Land-und Baumaschinen bereich, das erinnert mich stark an die da verbauten Bus Systeme, beispielsweise den Can Bus, dort ist ja auch alles Vernetzt, sozusagen, ich mache das Fenster über das Info Display auf, das Info-Display sendet einen Befehl, zum Fensterheber, fahre 30% das Fenster herunter, der Fensterheber weis seine Position und fährt eigenständig 30% herunter, sendet dann den aknowen befehl und danach nur noch den jeweiligen stand zum Info Display


das würde heißen, der duo oder teensy sendet zum Perimeter-Nano das er sich initialisieren soll, er führt das aus und sendet fortlaufend ob er in oder außerhalb ist und die Feldstärke

das selbe mit den Motortreibern, ähnlich wie beim PWM System im Modellbau bereich, eigener Regler, der sich selbst steuert und überwacht wartet nur noch auf ein Signal zum ausführen, nur halt eben in Bidirektional ;)

klar, das würde enorm den Hauptrechner entlasten, aber da sind dann auch mehr Störquellen, denk ich, dann hat man ja auch noch die Daten, die verarbeitet werden müssen, das alles in kürzester Zeit

aber das würde die Hardware zusammenstellung für Anfänger und Neulinge enorm vereinfachen und man könnte dann theoretisch sogar nen Raspberry Pi oder andere Arduino fremde Hardwaresysteme nutzen, sie müssten nur Ardumowerisch sprechen können :lol:


Habe ich das so richtig verstanden?
 
Also ich stehe gern als Tester bereit^^ Wie wollt ihr das Hardware technisch umsetzen? Gibt es da schon Pläne oder sowas? Wie schaut es mit dem Bus System? SPI, I2C, USB, Ethernet,CAN,...??? Welche Protokolle verwendet ihr? Bin gespannt wie nix^^ :woohoo:
 
Da ich aus Zeigründen bei Azurit derzeit nicht zum Due-Update komme, im Anhang Code aus einem anderen Projekt (Sunray) dem der korrigierte Due-Code entnommen wurde. Auf den neuesten Stand gebracht werden müssten damit in Azurit:

1) analogWrite() , wird für Motoren/Buzzer benötigt - Die vom Arduino eingebaute Funktion scheint nicht mit allen Due-Pins zu funktionieren, daher wurde die Funktion neu geschrieben. Zu finden in "pinman.h/cpp"

2) tone(), noTone() , wird für Buzzer benötigt - Der vorhandene Due-Code in Azurit muss damit auf den neuesten Stand gebracht werden. Benutzt jetzt die DueTimer-Lib.
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/905/due.zip/
 
Zuletzt bearbeitet von einem Moderator:
Oben