ESP32 Pico-Board. SD-Card ESP32 Addon. SD-Card. Vers. 1.1

Ähnliche Dokumente
ESP32 Pico-Board. ADC mit MCP ESP32 Addon. ADC- mit dem MCP3008. Vers. 1.0

ESP32 Pico-Board. und Node-RED GUI ESP32 Addon. ESP32 und Node-RED Datenversand. Vers. 1.0

Arbeitsblatt Nr.19: RFID Kit

Die Installation der Arduino-Entwicklungsumgebung Version 1.0

ESP32 Pico-Board. und Node-RED ESP32 Addon. ESP32 und Node-RED. Vers. 1.0

HelvePic32 Breadboard. Internet Data Logger

Anschluss Flachbandkabel

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

ESP32 Pico-Board. und Node-RED GUI ESP32 Addon. ESP32 und Node-RED GUI. Vers. 1.0

Willkommen!

RFID RC522. Ausgabe Copyright by Joy-IT 1

RFID RC522. Ausgabe Copyright by Joy-IT 1

MMC/SD FAT 16 mit AVR und C

Der Zusammenbau des ESP32 Pico- Discoveryboards

4. Ditzinger Makerspace. Arduino Teil 1. Ein Projekt von Repair-Café und Stadtbücherei Ditzingen Stadtbücherei Ditzingen UG

BERNINA Q Serie - Firmware Update

Firmware Update - BERNINA 5er Serie mit Touch Screen

Programmieren des ESP8266 mit OLED

Das Bluetooth-Shield von ITead-Studio konfigurieren Seite 2

BERNINA 720/740/770/790 - Firmware Update

Abbildung 4-9-1: Die Sound-Machine-Tastatur und der Arduino

RFID Modul basierend auf NXP MFRC-522

Weiterführende Entwicklungen

GEVITAS MobileCatalog

NodeMCU ESP32 Betriebsanleitung

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Wie aktualisiere ich ein Pro 8270 / 8275 / 7250 per SD Karte

DC 5V Stepper Motor 28BYJ-48. Verwendung mit einem Arduino

Mini- Mikroprozessor-Experimentier-System. Version 1.0b vom :21. mit einem 8051-Mikrocontroller

I2C Serial 2.6 LCD Modul. Verwendung mit einem Arduino

TCS3200 Farbsensor. Schritt 1 Anschließen des Sensors. Bild 1: TCS3200 Farbsensor

BERNINA. In dieser. Computer. auf einem werden. Problem. USB. USB-Stick Laufwerk. 2te Fenster Dateisystem. f. Das

Installation und Nutzung WinAuth

Ausbildungsziel: WIN10: Einrichtung eigener Ordner und Ablage von Dateien mit Hilfe des Datei-Explorers

Arduino Digispark. Ausgabe Copyright by Joy-IT 1

Portal-Dokumentation. becom Systemhaus GmbH & Co. KG Antrano.Production Portal-Handbuch Seite 1

Signieren und Signaturprüfung im Angebotsassistenten (AnA)

JADE NRW. Benutzerleitfaden JADE NRW. für Haushaltsplan-Planschule

Benutzerhandbuch WSCAD Datenpunktliste Konvertierung nach Datenpunktliste VDI 3814

Anleitung zum Herunterladen der neuesten Softwareverbesserungen für das GreenStar -System

FDU 3. Anweisungen

I2C Serial 2.6 LCD Modul

Bildschirm Sicherheit beim Bootfahren" Aktualisierung der VesselView-Software. Automatische Wi-Fi-Abfrage. Verwendung der Micro-SD-Karte

Anpassen BS-Explorer

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Aufbau und Inbetriebnahme, SD Shield

Kurzanleitung für den MyDrive Client

Discover Media Gen.2 (MIB) Update Kartenmaterial

Ein kleiner ARDUINO mit viel Speicher für Datalogging (Wetterstation), LED Stripe Anwendungen u.v.a.m.

Tobias Wolf Seite 1 von 19

Discover Pro (MIB) Update Kartenmaterial

JOY-iT TFT-Display 1.8

Avery Dennison 64-Bit Serie Generation 2 Firmwareupdate CF Karte

USB-Stick für die Wiederherstellung von Windows 10 für das Xcellent Tablet

ESP als Webserver für richtige Webseiten

Zugriff vom Privatcomputer auf «Mein Intranet VSZ» (Verwaltungsnetz)

Allgemein...2. Inbetriebnahme...2. Tastatur-Bedienung Funktions-Matrix...2. Main- und Kanal-Volume-Einstellung...3. Timecode...3

Windows-Setup-Stick mit verschiedenen Versionen und Editionen erstellen (Part_2)

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

1.1 Features der Software Folgende Änderungen bzw. Neuerungen sind gegenüber der alten KPS-Lite 2009 Software enthalten:

Arduino LC-Display-Ansteuerung Seite 2

Kingston DataTraveler Locker+ G3 in der ZSVU

Hello World! Eine Einführung in das Programmieren Das erste Programm

Anschluß an Raiffeisen OnLine Installationsanleitung für Netscape Communicator

Funeral Office V.3.1

Die WiFI Library( bei dem meisten recent?

Getting Started Conquestor

Übertragung des MSB-Mitglieder- Verwaltungsprogrammes von einem PC auf einen anderen PC

Im Original veränderbare Word-Dateien

Fachprojekt for Embedded System: Design and Implement Your Own Embedded Systems (2) LS 12, TU Dortmund

PE-4094 USB-Card Reader/Writer für Speicherkarten vom Typ SIM/SD/MMC/RS. PE-4095 USB-Card Reader/Writer für Speicherkarten vom Typ SIM/MS/PRO/DUO

Quick Guide. Avale. Überblick. Erfassung für den Aval- und Avaländerungsauftrag

9. Dateisysteme. Betriebssysteme Harald Kosch Seite 164

CM Z-Finanzberichte nur mit SD Karte möglich! Download der Aktuellen PC-Software unter:

PI-Star Amateur Radio Gateway Modem

Es kann Stand-Alone oder als Erweiterung einer µc Schaltung verwendet werden.

News. Einleitung. Ansicht im Frontend. Typo3-Support

EEPROM Lesen/Schreiben über SPI-Bus

Ausbildungsziel: Einrichtung eigener Ordner und Ablage von Dateien mit Hilfe des Datei-Explorer

3 Maps richtig ablegen und

Der Serienbrief bzw. Seriendruck

Update der Navigation - ZENEC ZE-NC3711D / ZE-NC620DMH

Kurzanleitung Projektverwaltung

Arduino Nano. Hello World per LED On-Board LED (Pin D13) Beispiel: Arduino IDE / Beispiele / Basics / Blink 5 / 20

Messwerterfassung mit dem Arduino und dem "Data logging shield" Mai 2011

Grundlagen der Anwendung und Programmierung des ESP8266. Dennis Hoffmann Mittwoch, :30 Uhr Schulungsraum SW23/147

Raspberry Pi. AddOn. Der Port-Expander MCP23S17 (Teil 2) by Erik Bartmann

14. Es ist alles Ansichtssache

Arbeitsmarktdatenbank Performance und Excel Export

Microsoft Explorer Laufwerke, Verzeichnisse, Ordner und Dateien

JegiPortal. TrueCrypt Einrichten. Herbert Zach Version 2 vom

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

Transkript:

ESP32 Pico-Board SD-Card https://erik-bartmann.de/ ESP32 Addon SD-Card Vers. 1.1 by Erik Bartmann, November 2018

S D - C a r d I n diesem ESP32-Addon wollen wir uns dem Thema der permanenten Datenspeicherung widmen. Es gibt Möglichkeiten, Messdaten z.b. im einem EEPROM (Electrical Erasable Programmable Read Only Memory), also einem ist ein elektrisch lösch- und programmierbarer Halbleiterspeicher abzulegen. Im Mikrocontroller eines Arduino ist ein derartiger Bereich vorhanden. Der ESP32 verfügt ebenfalls über einen ähnlichen Speicher, der mithilfe der Arduino-EEPROM-Library Daten mit einem Volumen bis zu 512 Bytes in einem Flash-Speicher ablegt. Doch das ist nicht unser Thema dieses Addons. Wir wollen größere Datenmengen speichern und was bietet sich besser an, als die Flut von Daten, die manchmal anfallen, auf einer SD- Karte zu speichern. Der ESP32 kann natürlich - wie auch der Arduino - eine SD- Karte ansprechen. Das erfolgt über den SPI-Bus, der vom ESP32 unterstützt wird. Ein SD-Card- Reader ist schon für unter 4 zu bekommen und es werden Typen für SD- bzw. Mikro-SD-Karten angeboten. Die Wahl bleibt jedem selbst überlassen und spiel im Endeffekt keine Rolle. SD-Card https://erik-bartmann.de/ Seite 2

Erforderliche Libraries D a zur Ansteuerung einer SD-Karte auf dem ESP32 der SPI-Bus mit den Signalen MOSI, MISO, SCK und CS verwendet werden, ist eine zusätzliche Installation einer Library nicht erforderlich, denn sie ist standardmäßig schon in der Arduino- Entwicklungsumgebung implementiert. Die Einbindung erfolgt über #include <SPI.h> Das ist jedoch nur die halbe Miete, denn es ist noch eine weitere softwaremäßige Unterstützung von Nöten. Die Daten müssen auf der SD-Karte ja in einem bestimmten Filesystem abgelegt werden. Es werden hierbei FAT16 bzw. FAT32 für SD- bzw. SDHC- Karten unterstützt. Die Einbindung erfolgt über #include "SD.h" Der SD-Card Adapter E s gibt auf dem Markt die unterschiedlichsten SD-Card-Adapter bzw.- Module mit einer SPI-Anbindung. In meiner Kramkiste habe ich den folgenden gefunden und ich kann noch nicht einmal sagen, von welcher Firma das Teil ist. Von irgendwo aus chinesischen Gefilden vermute ich. Abbildung 1 Ein SD-Card-Adapter In meinem Fall muss der Adapter mit einer normalen SD-Karte bestückt werden. Es gibt jedoch auch sogenannte microsd-karten. Auf der folgenden Abbildung sind beide Varianten zu sehen. 3 SD-Card

Abbildung 2 micro-sd und SD-Karte Für den Fall, dass jemand ein SD-Card-Adapter besitzt, jedoch eine microsd-karte, bedeutet das nicht unbedingt ein Drama, denn es gibt entsprechende micro-adapter, die eine microsd-karte aufnehmen und es ermöglichen, einen SD-Card-Adapter damit zu füttern. Abbildung 3 Der micro-adapter Sehen wir uns kurze die Anschlüsse des SD-Card-Adapters aus der Nähe an. Auf der Abbildung kann man die einzelnen Pins aufgrund der Beschriftung eindeutig identifizieren. Die hier gezeigte Reihenfolge ist bei unterschiedlichen Adaptern nicht immer gleich und ich rate, auf jeden Fall auf die Pinbeschreibung zu achten. Abbildung 4 Der SD-Card-Adapter mit seinen Pins 4 SD-Card

Die Formatierung der SD-Karte Kommen wir zur Formatierung der SD-Karte, die in anhand des Windows-Betriebssystems zeige. Für die Formatierung einer SD-Karte ist natürlich ein SD-Card-Reader erforderlich, auf den ich nicht weiter eingehe. Nach dem Einstecken der SD-Karte in den Reader ist sie normalerweise im Windows-Explorer sichtbar. Abbildung 5 Die SD-Karte im Dateisystem Es ist an dieser Stelle sehr wichtig darauf zu achten, on auch das richtige Laufwerk ausgewählt ist. Eine unbeabsichtigte Formatierung ist schnell durchgeführt und die Restaurierung der verlorenen Daten kann einiges an Stress bedeuten und nicht immer von Erfolg gekrönt sein. Ab besten steckt man die Karte ein und zieht sie nach dem Erkennen durch das Betriebssystem wieder heraus. Durch die Beobachtung des Explorers bei diesem Vorgang kann der Laufwerksbuchstabe der SD-Karte eigentlich zweifelsfrei ermittelt werden. Gehen wir davon aus, dass der richtige Laufwerksbuchstabe identifiziert wurde und wählen dann den Menüpunkt Formatieren aus. 5 SD-Card

Es öffnet sich ein Dialogfenster, in dem im ersten Schritt das gewünschte Dateisystem - für uns FAT32 - gewählt werden kann. Die Formatierung beginnt mit dem Klick auf die Starten-Schaltfläche, wobei die Formatierungsoption Schnellformatierung angewählt bleiben kann. Nach dem Bestätigen der Abfrage, ob die Formatierung wirklich durchgeführt werden soll, endet der Vorgang mit der Meldung über die erfolgreich abgeschlossene Formatierung. Abbildung 6 Die Formatierung der SD-Karte wurde erfolgreich abgeschlossen Nun kann die SD-Karte in den SD-Card-Adapter eingeschoben werden, wobei sie mit leichtem Druck hörbar (Klick-Klick ) einrastet, was nur bei normalen SD-Karten der Fall ist. 6 SD-Card

Abbildung 7 Die eingeschobene SD-Karte Sehen wir uns den Schaltungsaufbau und den Schaltplan an. Der Schaltungsaufbau und der Schaltplan F ür einen ersten Test habe ich den SD-Card-Adapter auf dem kleinen Breadboard des ESP32-Pico-Discoveryboards [1] platziert und durch flexiblen Steckbrücken (Male-Female) mit dem ESP32 verbunden. Abbildung 8 Der SD-Card-Adapter auf dem ESP32-Pico-Discoveryboard 7 SD-Card

Da die genaue Verkabelung aus dieser Ansicht etwas schwierig ist, liefere ich den Schaltplan nach, der wie folgt ausschaut. Abbildung 9 Der Schaltplan zur Ansteuerung des SD-Card-Adapters Es ist gut zu sehen, dass die einzelnen Anschlüsse des SPI-Busses verwendet werden. Sie sind ebenfalls auf dem ESP32-Pico-Discoveryboard beschriftet, so dass eine längere Suche nach den korrekten Pins entfällt. IO19/MISO IO23/MOSI IO18/SCLK IO05/CS Abbildung 10 Die SPI-Pins auf dem ESP32-Pico-Discoveryboard Nach diesen vorbereitenden Informationen können wir uns den ESP32-Code anschauen. 8 SD-Card

Der ESP32-Code F ür einen ersten Code-Test wollen wir eine Datei auf der SD-Karte anlegen und diese mit ein paar Informationen versehen. Wichtig bei derartigen Aktionen der Speicherung von Daten sind neben den eigentlichen Daten, Zusatzinformationen wie z.b. das Datum. Darüber lassen sich dann später detaillierte Auswertungen bzw. Reporte generieren. Doch dazu in einem späteren SD-Addon mehr. Der folgende Code basiert auf den ESP32-Beispielen, die unter dem Menü Datei Beispiele SD(esp32) zu finden sind. Dem zu Grunde liegen die folgenden Methoden für den Zugriff auf die SD- Karte. listdir void listdir(fs::fs &fs, const char * dirname, uint8_t levels){ Serial.printf("Listing directory: %s\n", dirname); File root = fs.open(dirname); if(!root){ Serial.println("Failed to open directory"); return; if(!root.isdirectory()){ Serial.println("Not a directory"); return; File file = root.opennextfile(); while(file){ if(file.isdirectory()){ Serial.print(" DIR : "); Serial.println(file.name()); if(levels){ listdir(fs, file.name(), levels -1); else { Serial.print(" FILE: "); Serial.print(file.name()); Serial.print(" SIZE: "); Serial.println(file.size()); file = root.opennextfile(); 9 SD-Card

createdir void createdir(fs::fs &fs, const char * path){ Serial.printf("Creating Dir: %s\n", path); if(fs.mkdir(path)){ Serial.println("Dir created"); else { Serial.println("mkdir failed"); removedir void removedir(fs::fs &fs, const char * path){ Serial.printf("Removing Dir: %s\n", path); if(fs.rmdir(path)){ Serial.println("Dir removed"); else { Serial.println("rmdir failed"); readfile void readfile(fs::fs &fs, const char * path){ Serial.printf("Reading file: %s\n", path); File file = fs.open(path); if(!file){ Serial.println("Failed to open file for reading"); return; Serial.print("Read from file: "); while(file.available()){ Serial.write(file.read()); file.close(); 10 SD-Card

writefile void writefile(fs::fs &fs, const char * path, const char * message){ Serial.printf("Writing file: %s\n", path); File file = fs.open(path, FILE_WRITE); if(!file){ Serial.println("Failed to open file for writing"); return; if(file.print(message)){ Serial.println("File written"); else { Serial.println("Write failed"); file.close(); appendfile void appendfile(fs::fs &fs, const char * path, const char * message){ Serial.printf("Appending to file: %s\n", path); File file = fs.open(path, FILE_APPEND); if(!file){ Serial.println("Failed to open file for appending"); return; if(file.print(message)){ Serial.println("Message appended"); else { Serial.println("Append failed"); file.close(); 11 SD-Card

renamefile void renamefile(fs::fs &fs, const char * path1, const char * path2){ Serial.printf("Renaming file %s to %s\n", path1, path2); if (fs.rename(path1, path2)) { Serial.println("File renamed"); else { Serial.println("Rename failed"); deletefile void deletefile(fs::fs &fs, const char * path){ Serial.printf("Deleting file: %s\n", path); if(fs.remove(path)){ Serial.println("File deleted"); else { Serial.println("Delete failed"); testfileio void testfileio(fs::fs &fs, const char * path){ File file = fs.open(path); static uint8_t buf[512]; size_t len = 0; uint32_t start = millis(); uint32_t end = start; if(file){ len = file.size(); size_t flen = len; start = millis(); while(len){ size_t toread = len; if(toread > 512){ toread = 512; file.read(buf, toread); len -= toread; end = millis() - start; Serial.printf("%u bytes read for %u ms\n", flen, end); file.close(); else { 12 SD-Card

Serial.println("Failed to open file for reading"); file = fs.open(path, FILE_WRITE); if(!file){ Serial.println("Failed to open file for writing"); return; size_t i; start = millis(); for(i=0; i<2048; i++){ file.write(buf, 512); end = millis() - start; Serial.printf("%u bytes written for %u ms\n", 2048 * 512, end); file.close(); Schauen wir uns aufgrund der hier gezeigten Methoden den Hauptsketch an, wobei die Anweisungen lediglich in der setup-funktion zu finden sind und einmalig ausgeführt werden. Der Hauptsketch Der ESP32-Code für dieses Addon [2] ist unter der folgenden Internetadresse herunterzuladen. https://github.com/erikbartmann/elektoresp32/tree/master/addons/sdcard Der Code des Hauptsketches schaut wie folgt aus. #include "FS.h" #include "SD.h" #include "SPI.h" #include "SDAccess.h" void setup() { Serial.begin(9600); if (!SD.begin()) { Serial.println("Card Mount Failed"); return; uint8_t cardtype = SD.cardType(); if (cardtype == CARD_NONE) { Serial.println("No SD card attached"); 13 SD-Card

return; Serial.print("SD Card Type: "); if (cardtype == CARD_MMC) { Serial.println("MMC"); else if (cardtype == CARD_SD) { Serial.println("SDSC"); else if (cardtype == CARD_SDHC) { Serial.println("SDHC"); else { Serial.println("UNKNOWN"); uint64_t cardsize = SD.cardSize() / (1024 * 1024); Serial.printf("SD Card Size: %llumb\n", cardsize); /* listdir(sd, "/", 0); createdir(sd, "/mydir"); listdir(sd, "/", 0); removedir(sd, "/mydir"); listdir(sd, "/", 2); writefile(sd, "/hello.txt", "Hello "); appendfile(sd, "/hello.txt", "World!\n"); readfile(sd, "/hello.txt"); deletefile(sd, "/foo.txt"); renamefile(sd, "/hello.txt", "/foo.txt"); readfile(sd, "/foo.txt"); testfileio(sd, "/test.txt"); */ writefile(sd, "/data.log", "Das ist der erste Eintrag in der 1.Zeile\r\n"); appendfile(sd, "/data.log", "Das ist der nächste Eintrag in 2.Zeile\r\n"); appendfile(sd, "/data.log", "Das ist der nächste Eintrag in 3.Zeile\r\n"); void loop() { /* leer */ Über die writefile-methode wird initial die Text- bzw. Log-Datei auf der SD-Karte erzeugt. Falls sie schon unter dem Namen vorhanden sein sollte, wird sie überschrieben. Über die appendfile-methode wird der genannten Datei eine neue Zeile hinzugefügt. 14 SD-Card

Sehen wir uns zunächst die Statusmeldungen im Serial-Monitor an. Abbildung 11 Die Anzeigen im Serial-Monitor Es ist zu erkennen, dass die Log-Datei erzeugt und nachfolgend zwei Nachrichten hinzugefügt wurden. Der Inhalt der Log-Datei gestaltet sich dann wie folgt. Abbildung 12 Der Inhalt der Log-Datei Über die anderen Methoden, die im Hauptsketch auskommentiert waren, sind entsprechende Funktionen aufrufbar, wobei die Namen sprechend sind und hier nicht erläutert werden müssen. 15 SD-Card

Ein anderer SD-Karten-Adapter E s gibt auch SD-Karten Adapter, die über einen einzigen Spannungsversorgungspin lediglich mit 5V betrieben werden können. Er besitzt dann meistens die Bezeichnung Vcc. Um ganz sicher zu sein, sollte das Datenblatt des Herstellers zur Rate gezogen werden. Abbildung 13 SD-Karten-Adapter mit einem einzigen Spannungsversorgungspin für 5V Über einen auf der Platine befindlichen Spannungswandler (LDO Low-Drop-Out) wird die angelegte Spannung von 5V auf 3,3V heruntergeregelt. Es ist natürlich ebenfalls wichtig, dass z.b. die Datenleitungen MISO/MOSI ebenfalls mit 3,3V arbeiten, denn das ESP32-Board soll nicht durch eine Signalleitung, die einen Spannungspegel von 5V aufweist, beschädigt werden. 16 SD-Card

Im nächsten ESP32-SDCard-Addon werden wir uns mit der Messwertaufnahme und SD-Karten Speicherung befassen. Frohes Frickeln Web-Links [1]: https://www.erik-bartmann.de/?projekte ESP32_Discovery-Board [2]: https://github.com/erikbartmann/elektoresp32/tree/master/addons/sdcard Das ESP32-Praxisbuch https://www.elektor.de/das-esp32-praxisbuch https://www.erik-bartmann.de/ 17 SD-Card