Daten Logger Shield am MEGA R3 - AZ-Delivery

Hallo zusammen,

da uns im Support relativ viele Fragen zur Verwendung unseres Datalogginshields in Verbindung mit einem MEGAR3 eingehen möchte ich heute kurz zeigen, was erforderlich ist um diese Kombination möglichst einfach in Betrieb zu nehmen.

Dafür brauchen wir:

Auf dem Data-Logger-Shield befindet sich eine RTC (DS1307) sowie ein SD-Card Reader der auch in FAT32 formatierte Karten erkennt und ein Prototyping-Bereich.

Das Problem der beiden Produkte (UNO und MEGA) ist das unterschiedliche Pin-Mapping. In einem Beitrag habe ich schon einmal das Übertragen von Pins auf andere Controller gezeigt. Eine Beispielanwendung mit dem Shield am UNO haben wir hier erstellt.

Wir nutzen für die RTC die Library von Adafruit, welche hier zum Download von GitHub bereit steht, Sie können diese wie gewohnt Ihren Ordner "Librarys" aus c:\Benutzer\Dokumente\Arduino\libraries hinzufügen.

Im ersten Arbeitsschritt kümmern wir uns um die RTC, im Anschluss um den SD-Reader. Hier sind softwareseitig keine Änderungen erforderlich, wir ergänzen nur eine Verbindung da auf dem Data-Logger-Shield SCL und SDA nicht mit A4 und A5 verbunden sind. Zusätzliche Pins werden dadurch nicht belegt, wir haben genügend Alternativen. Am einfachsten ist die Verbindung durch einlöten von zusätzlichen Stiftleisten auf dem Data-Logger-Shield umzusetzten.

Hier ein Bild der eingelöteten Stifte (gelb):

Diese zusätzliche Stiftleiste ist mit "A4" und "A5" des Data-Logger-Shield verschaltet. Diese Verbindung legen wir auf SDA und SCL, wie unten im Bild zu erkennen (MEGA mit Shield um 180° gedreht):

Somit ist die RTC betriebsbereit und das setzten der Uhrzeit klappt auf Anhieb:

Wie man die RTC richtig konfiguriert und die Library benutzt finden Sie in unserem E-Book zur RTC.

Im nächsten Schritt wenden wir uns dem SD-Card-Reader zu. Das Problem der mitgelieferten SD-Library ist, das die zum Funktionieren erforderlichen Angaben nicht kompiliert werden weshalb wir eine andere Bibliothek dafür nutzen wollen.

Die Library von Adafruit aus GitHub unterstützt soft-SPI und ist ideal für das Data-Logger-Shield.

Fügen wir eine Library hinzu machen wir das entweder über den Bibliotheksverwalter, durch die Import-Funktion desselben oder durch kopieren der benötigten Dateien nach c:\Benutzer\Dokumente\Arduino\libraries.

Da wir jedoch für unser Vorhaben die mitgelieferte Library ersetzten wollen navigieren wir in das Installationsverzeichnisses der Arduino IDE, meistens unter c:\Programme(x86)\Arduino\Librarys. Nennen die alte Bibliothek um z.b. nach SD_old und kopieren die Adarfuit-Library an deren Stelle:

Probleme mit der Versionsverwaltung von Bibliotheken? -> VSCode mit PlatformIO :)

Wurde die SD-Card-Library getauscht können wir den Beispielsketch CardInfo aufrufen:

Und müssen nur eine Zeile editieren, ändern Sie die markierte Zeile wie im Screenshot zu erkennen:

Sketch hochladen und Seriellen Monitor öffnen:

Und sehen den Inhalt der Speicherkarte.

Somit funktioniert die RTC und der SD-Card-Reader. Wollen wir das Beispiel "Datalogger" aus der zuvor ersetzten, neuen Bibliothek verwenden findet die Anpassung in SD.begin() statt, da card.init() hier keine Verwendung hat:

Viel Spass beim basteln mit Ihrem Data-Logger-Shield am MegaR3 und bis zum nächsten Beitrag :) 

 

Für arduinoProduktvorstellungen

9 comments

Andreas Wolter

Andreas Wolter

@Christ: der Beitrag ist schon etwas in die Jahre gekommen. Hardware buchstäblich zu beschneiden, passiert auf eigene Gefahr.
Ich nehme an, dass die Versionen nicht zusammenpassen. Wenn die Anleitung aus dem Beitrag nicht sofort funktioniert, würde ich die Bibliotheken downgraden, wenn die Hardware so aufgebaut wurde, wie oben beschrieben. Denn es sollte dann auch so funktionieren.

Grüße,
Andreas Wolter
AZ-Delivery Blog

Christ

Christ

warum keine antwort? ich habe nach deiner Anweisung pins abgezwickt die jetzt nicht mehr verbunden werden können. und trotzdem funktioniert es nicht. das microsd shield erkennt zwar sd karten aber es kann keine datei erstellt werden?

Christ

Christ

OK, habe 4,5,11,12,13 unter dem shield abgezwickt. 11,12,13 über drähte mit 51,50,52 verbunden und die arduino standard SD-Bibliothek verwendet. chipselect 10 gewählt. SD-Karte wird nicht erkannt.
obwohl bei github kommentiert war mega verwendet pin 53 als chip select. wollte dafür aber nicht den pin 10 des shields abzwicken. SD-Karte wird auch nicht mit der neuen Bibliothek von github erkannt.
Heißt nächstes Mal Shield gleich bei adafruit kaufen?

Andreas Wolter

Andreas Wolter

@Martin: ich vermute, dass beim Tausch der Bibliotheken etwas nicht funktioniert hat. Im Beitrag steht, dass die SD Bibliothek ausgetauscht werden muss. Eventuell greift die Arduino IDE trotzdem noch auf die alte Bibliothek zurück. Diese ließ sich nicht kompilieren.

Der Beitrag ist nun ein paar Jahre alt und es kann sein, dass sich während dieser Zeit etwas in den Bibliotheken verändert hat.

card.init() erwartetete vorher zwei Übergabeparameter. Mit der Änderung (siehe Bild), sind es nun fünf. Die Variable chipSelect ist damit überflüssig.

Haben Sie nach dem Tausch der SD Bibliothek diese Änderung im Beispiel-Sketch vorgenommen?
Welche Fehlermeldung erhalten Sie?

Grüße,
Andreas Wolter
AZ-Delivery Blog

Martin

Martin

Hallo Andreas, ich stehe gerade vor dem gleichen Problem wie Christian und könnte deine Hilfe gebrauchen. Kannst du bitte nochmal genauer darauf eingehen, wie die Pins des Data Logger Shield geändert werden können.
Danke

Andreas Wolter

Andreas Wolter

@Christian: ich melde mich per E-Mail

Christian

Christian

Leider klappt es bei mir nicht, obwohl nach Anweisung – sowohl software- als auch hardware-technisch – vorgegangen!
Die Funktion card.init erwartet bei mir in der zweiten Variablen (chipSelect) offenbar einen Wert und kann nicht wie in der Anweisung dargestellt, mit 4 Werten arbeiten => Compiler-Fehler. Auch die Zusammenfassung der vier Werte per Klammer führt nicht zum Erfolg. Es gibt zwar keinen Compiler-Fehler, aber die SD-Karte kann mit dem Board nicht initialisiert werden – mit anderen Boards tauchen diesbezüglich keine Probleme auf! Woran kann der Fehler liegen

Milan

Milan

Das SPI-Problem am SD-Shield lässt sich auch einfach mit 3 Kabeln lösen: Einfach Pin 50 (MISO) mit Pin 12, Pin 51 (MOSI) mit Pin 11 und Pin 52 (SCK) mit Pin13 auf dem Shield verbinden (löten). Um Probleme zu vermeiden, ist es besser, die “Beinchen” unter dem Shield abzuzwicken (4,5,11,12 und 13). Pin 10 stehen lassen! Der wird für den Slave Select benötigt und liegt beim Mega und Uno an der selben Stelle. … Dann muss man nicht mit den Bibliotheken rummachen … :-)

Bernhard

Bernhard

super, danke,
genau danach habe ich gesucht – und im Nu mein Problem gelöst.
Service auf höchster Ebene!

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery