Ciao a tutti
Dal momento che abbiamo un sacco di domande a supporto sull'utilizzo del nostro Datalogginshield in collaborazione con un MEGAR3, vorrei mostrare brevemente oggi ciò che è necessario per ottenere questa combinazione e funzionante il più facilmente possibile.
Per questo abbiamo bisogno di:
Sullo scudo data logger c'è un RTC (DS1307) e un lettore di schede SD che riconosce anche le schede formattate in FAT32 e un'area di prototipazione.
Il problema tra i due prodotti (UNO e MEGA) è la mappatura dei perni diversi. In un post, ho già Trasferimento di Pin puntato ad altri controllori. Abbiamo creato un'applicazione di esempio con lo scudo alle Nazioni Unite Qui Creato.
Per l'RTC, utilizziamo la Biblioteca di Adafruit, che qui per scaricare GitHub è possibile aggiungerli come di consueto alla cartella "Librerie" da c:-User-Documents-Arduino-libraries.
Nella prima fase ci prendiamo cura dell'RTC, poi del lettore SD. Non sono necessarie modifiche sul lato software, aggiungiamo solo una connessione perché lo scudo del data logger SCL e SDA non sono collegati ad A4 e A5. Perni aggiuntivi non sono occupati da questo, abbiamo abbastanza alternative. Il modo più semplice per connettersi consiste nell'allietare intestazioni aggiuntive sullo scudo del data logger.
Ecco una foto delle penne saldati (giallo):
Questa intestazione aggiuntiva è collegata a "A4" e "A5" di Data Logger Shield. Mettiamo questa connessione su SDA e SCL come si può vedere nella parte inferiore dell'immagine (MEGA con scudo ruotato di 180 gradi):
Così, il RTC è pronto per il funzionamento e l'impostazione del tempo funziona subito:
Come configurare correttamente rtc e utilizzare la libreria è disponibile nel nostro e-book su RTC.
Il passo successivo è quello di rivolgersi al lettore di schede SD. Il problema con la libreria SD fornita è che le informazioni necessarie per funzionare non vengono compilate, pertanto si desidera utilizzare un'altra libreria a questo scopo.
Le Biblioteca di Adafruit da GitHub soft-SPI ed è ideale per lo scudo data logger.
Aggiungiamo una libreria che facciamo sia attraverso il gestore della libreria, attraverso la funzione di importazione della libreria o copiando i file richiesti dopo c:-Utenti-Documenti-Arduino-librerie.
Tuttavia, poiché si desidera sostituire la libreria inclusa per il progetto, si passa alla directory di installazione dell'IDE di Arduino, in genere in c:-Programs(x86)-Arduino-Librarys. Assegna un nome alla vecchia biblioteca, ad esempio dopo SD_old e copia la biblioteca Adarfuit al suo posto:
Problemi con il controllo delle versioni delle librerie? -> VSCode con :) PlatformIO
Se la SD-Card-Library è stata scambiata, possiamo richiamare l'esempio di schizzo CardInfo:
E solo bisogno di modificare una riga, cambiare la riga selezionata come visto nella schermata:
Caricamento schizzo e apertura di Serial Monitor:
E vedere il contenuto della scheda di memoria.
Così, l'RTC e il SD-Card-Reader lavorano. Se vogliamo usare l'esempio "Datalogger" dalla nuova libreria sostituita in precedenza, la personalizzazione avviene in SD.begin() perché card.init() non ha alcuna utilità qui:
Divertiti ad armeggiare con il tuo scudo logger di dati su megaR3 e fino al prossimo post :)
9 commenti
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
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
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
@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
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
@Christian: ich melde mich per E-Mail
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
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
super, danke,
genau danach habe ich gesucht – und im Nu mein Problem gelöst.
Service auf höchster Ebene!