Arduino SD-kaart:wat het is en hoe het te gebruiken
Voert u tal van Arduino-projecten uit? En u moet een enorme hoeveelheid essentiële informatie en loggegevens opslaan? De oplossing is om een Arduino SD-kaart te gebruiken. Hoe werkt het?
In dit artikel leest u alles wat u moet weten over het apparaat, zoals wat het is, hoe u het aansluit, hoe u het gebruikt en meer.
Blijf lezen om alles te ontdekken wat je moet weten.
Wat is SD in Arduino?
Arduino SD-kaart
Afbeeldingsbron:Pixlr
Een SD-kaart of micro SD-kaart is een apparaat dat twee belangrijke componenten heeft. En deze componenten helpen u eenvoudig datalogging aan uw Arduino-project toe te voegen. Verder is de werkspanning van de meeste micro SD-kaarten 3,3V.
Als gevolg hiervan is het onmogelijk om het apparaat rechtstreeks op 5V logische circuits aan te sluiten. Kortom, als u probeert te werken met spanningen boven de 3,6 V, wordt uw SD-kaart vernietigd.
Daarom heeft een module een regelaar (onboard ultra-low dropout) die de stroomspanning verandert van 3,3 – 6V in ongeveer 3,3V.
Bovendien heeft de SD-kaart een chip op de module (74LVC125A), die helpt om de verbindingslogica te veranderen van 3,3 – 5V naar 3,3V. Je kunt het proces dus "logic level shifting" noemen, wat betekent dat het bord kan worden gekoppeld aan twee microcontrollers zoals Arduino:3,3 V en 5 V.
Componenten van microcontrollers
Hoe koppel je een standaard SD-kaart aan Arduino? We hebben hiervoor twee methoden:SDIO-modus en SPI-modus.
De meeste SD-kaartmodules zijn gebaseerd op de SPI-modus (minder overhead en lagere snelheid). En dit is een gemakkelijke modus voor de meeste microcontrollers om te gebruiken.
Geheugenkaartmodules
Aan de andere kant, de snellere modus is SDIO en is van toepassing op verschillende apparaten zoals mobiele telefoons, camera's, enz. Maar deze modus is meestal complexer omdat u vertrouwelijke documenten moet ondertekenen voordat u verder gaat.
De pinout van de Arduino SD-kaartmodule
De SD-kaartmodule heeft zes pinnen op de adapter en deze bevatten het volgende:
- MOSI – SPI-invoer
- CS – signaalpin voor chipselectie om lijn in/uit te schakelen
- GND – Aardpen
- MISO – SPI-uitvoer
- VCC – +5V voeding
- SCK – Het ontvangt klokimpulsen om gegevens te synchroniseren
Hoe u uw Micro SD-kaart klaarmaakt
Eerst moet u een SD-kaartmodule aanschaffen en uw micro SD-kaart plaatsen. Plaats vervolgens de module in de Arduino om de kaart correct te formatteren.
Terwijl je toch bezig bent, moet je ervoor zorgen dat je de kaart formatteert op basis van de Arduino-bibliotheek. Dat wil zeggen dat u de geheugenkaart moet formatteren naar FAT32 of FAT16.
Als u met een gloednieuwe SD-kaart werkt, hebben de fabrikanten deze mogelijk vooraf geformatteerd met een FAT-bestandssysteem. Maar u kunt problemen ondervinden met het formaat van de kaart. De vuistregel is dus om uw SD-kaart opnieuw te formatteren, of deze nu nieuw of oud is.
Hoe sluit je de SD-kaart aan op Arduino?
Arduino-kaart verbinden met SD-kaart
Afbeeldingsbron:Wikimedia Commons
Aangezien uw SD-kaart klaar is voor gebruik, kunt u deze aansluiten op het SD-breakoutboard.
U kunt dus beginnen door de micro SD-kaartmodule op uw breadboard te plaatsen. Verbind vervolgens de VCC-pin van de module met de 5V van de Arduino. Koppel ook de GND-pin aan de grond. En wat overblijft zijn de pinnen voor SPI-communicatie.
Micro SD-kaarten hebben doorgaans veel gegevensoverdracht nodig. Maar ze presteren beter als je de kaarten aansluit op de hardware SPI-pinnen van de microcontroller. En dat komt omdat de pinnen (SPI) sneller zijn dan het "bit-bangen" van de interfacecode met een andere set pinnen.
Verder is het van vitaal belang op te merken dat Arduino-kaarten verschillende SPI-pinnen hebben die u dienovereenkomstig moet aansluiten. De Arduino Nano heeft bijvoorbeeld pinnen zoals 11 (MOSI), 12 (MISO) en 13 (SCK). Daarnaast heb je een vierde pin nodig:de SS-lijn “chip select”.
Bovendien kunt u pin 10 gebruiken voor de SS-pin of een andere gewenste. Bij Arduino mega zijn de pinnen echter anders. U moet dus 53 (SS), 50 (MISO), 51 (MOSI) en 52 (SCK) gebruiken. U kunt ook deze officiële documentatie raadplegen als u andere Arduino-boards gebruikt. Dan bent u klaar om gegevens te loggen.
Hoe gebruik je een Arduino-code om de SD-kaartmodule te testen met CardInfo?
Het kan vervelend zijn om met een SD-kaart te communiceren. Maar het goede is dat de Arduino IDE een mooie bibliotheek "SD" heeft. Als gevolg hiervan vereenvoudigt het het proces van het lezen en schrijven van SD-kaarten.
Voer verder de schets uit en klik op Bestand → Voorbeelden → SD → kaartinfo. Daarna zal de schets u op de hoogte stellen als deze uw SD-kaart herkent door enkele gegevens weer te geven. Vervolgens kunt u teruggaan om te schetsen en te bevestigen dat de "chip Select" de juiste digitale pin gebruikt. Zo niet, verander de pin in 10.
Zodra alles er goed uitziet, plaatst u de SD-kaart in de module en uploadt u de schets. Verder zou u onmiddellijk een prompt moeten zien wanneer u de seriële monitor opent. En de prompt zou FAT32 moeten tonen voor het volumetype, de grootte en SDHC (SD High Capacity) als het kaarttype.
Screenshot van Arduino-schets
Maar als het een kloon of een slechte SD-kaart is, ziet u SD1 mogelijk als het kaarttype zonder product- en fabrikant-ID. Hiermee kunt u proberen de kaart opnieuw te formatteren. Als je hetzelfde resultaat krijgt, gooi je de kaart weg.
Screenshot van Arduino-schets
Voer ten slotte de schets opnieuw uit zonder uw SD-kaart. En de schets initialiseert de SD-kaart niet. Interessant is dat je deze prompt ook kunt krijgen als je kaart beschadigd is of een bedradingsfout heeft.
Screenshot van Arduino-schets
Wat als de SD-kaart correct is geformatteerd met de juiste bedrading? De prompt luidt:"bedrading is correct en er is een kaart aanwezig."
Lezen en schrijven van gegevens met een Arduino SD-kaart
Als uw SD-kaart met succes is geïnitialiseerd, kunt u doorgaan naar de volgende stap. Allereerst kun je beginnen met het uploaden van de code op de schets. Dus als alles goed is, ziet u een display met de tekst 'initialisatie voltooid'.
U ziet ook 'schrijven om te testen voltooid'. Dus als u ervoor kiest om de Arduino opnieuw in te stellen en de schets opnieuw te laten uitvoeren, worden de vorige gegevens niet overschreven. In plaats daarvan worden de nieuwe gegevens gekoppeld aan de vorige gegevens.
Wat betekent de code?
Deel 1
De schets heeft de SPI-bibliotheek en de ingebouwde SD-bibliotheek. Hierdoor kunt u eenvoudig uw SD-kaart gebruiken om contact te maken met de SPI-interface.
Vervolgens moet u de Arduino-pin kiezen die de CS zal verbinden met de pin van de module. En dat komt omdat de CS-pin niet vast is. Bovendien, aangezien u de hardware-SPI-bibliotheek gebruikt, is het niet nodig om de pinnen te vermelden omdat ze vast zijn.
Vervolgens moet u een object maken, myFile, waarmee u informatie op uw SD-kaart kunt opslaan.
Ga vervolgens naar het gedeelte setup() om seriële communicatie te starten voor het weergeven van resultaten op de seriële monitor.
Daarna hebt u de functie SD.begin() nodig om uw kaart te initialiseren. Dus als uw kaartinitialisatie doorgaat, is de "if" -verklaring waar en verschijnt de tekenreeks "initialisatie voltooid" op de seriële monitor. Anders verschijnt de "else String":"initialization failed" en wordt het programma beëindigd.
Vervolgens ziet u dat de functie SD.open() een bestand opent:"test.txt." Als u dit bestand niet ziet, moet u er een maken. Als gevolg hiervan wordt de functie FILE_WRITE geopend in de lees-schrijfmodus.
Zodra het bestand is geopend, geeft de seriële monitor het bericht 'Writing to test.txt...' weer. Verder ziet u "testing 1, 2, 3" bij de functie myFile.println(). Daarna moet je de functie close() toepassen om de gegevens die naar het bestand zijn geschreven op te slaan.
Deel 2
Nu moet u het bestand controleren om te bevestigen dat de schrijfbewerking is geslaagd. En u kunt dit doen door de functie SD.open() te gebruiken als "test.txt". Later kunt u de functie myFile.read() gebruiken, die het bestand zal lezen en weergeven op de seriële monitor.
Gebruik daarna de "while"-lus en de functie myFile.available() om de bestandstekens te lezen. En dat komt omdat de functie read() één teken per keer leest. Sluit vervolgens het bestand.
Het is niet nodig om de codes meerdere keren uit te voeren, omdat dit een demo-schets is. En alle codes bevinden zich in de setup()-functie die één keer wordt uitgevoerd.
Belangrijke dingen om op te merken
1. Er is geen hoofdlettergevoeligheid in de bestandsnamen. Dus, WriteLog.Txt is hetzelfde als writelog.txt en WRITELOG.TXT.
2. Het is mogelijk om uw bestanden in een map te openen.
3. U kunt variabelen, strings, enz. schrijven met de functies println() en print().
4. De functie Read() leest geen volledig getal of regel. In plaats daarvan retourneert het één teken per keer.
5. Het is van cruciaal belang om bestandsnamen kort te houden, aangezien de SD-kaartbibliotheek geen "lange bestandsnamen" ondersteunt.
Veelgestelde vragen
Wat is de maximale grootte van de Arduino SD-kaart?
De maximale SD-kaart is 2 GB.
Kan een Arduino SD-kaart corrupt zijn?
Ja het is mogelijk. En het kan gebeuren door fysieke schade, oneigenlijk gebruik, fabricagefouten en malware.
Kortom
De Arduino SD-kaart is een praktisch opslagapparaat waarmee u gegevens kunt loggen. En het is vrij eenvoudig in te stellen, zolang u maar nauwkeurig aansluit. U kunt met dit apparaat ook gemakkelijk gegevens lezen en schrijven.
Heeft u hulp nodig bij het verkrijgen van de beste Arduino SD-kaarten voor uw projecten? Neem gerust contact op.
Industriële technologie
- P-F Curve:wat het is en hoe het te gebruiken bij onderhoud
- Wat is 6G en hoe snel zal het zijn?
- Wat is pompcavitatie en hoe voorkom ik het?
- Wat is plasmasnijden en hoe werkt plasmasnijden?
- Wat is solderen? - Soorten en hoe te solderen?
- Wat is solderen en hoe metaal te solderen?
- Wat is kopersolderen en hoe het te doen?
- Wat is MQTT en hoe kunnen industriële automatiseringsbedrijven het gebruiken?
- Wat is Lean Digital en hoe integreer je het?
- PIC18 Microcontroller:wat het is en hoe het te gebruiken?
- Wat is een referentie-aanduiding en hoe gebruiken we deze bij assemblage?