mikrocontroller.net

Forum: Compiler & IDEs ESP8266 - SD-Kartenleser und FTP-Server ohne Funktion mit Arduino


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: I- A. (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Guten Tag,

ich habe ein kleines Problem mit meinem ESP8266 und den darauf
verbundenen SD-Kartenleser sowie einem FTP-Server.
Ich versuche auf einem ESP8266 mit der Arduino IDE einen FTP-Server zu
erstellen und die darauf liegenden Daten (.txt Datei) auszulesen. Der
FTP-Server funktioniert, sodass ich Daten auf dem Server Speichern kann 
(außer einigen timeouts einwandfrei), aber
leider kann er die Daten nicht abrufen die auf dem Server liegen.
Zu meinem Code:
#define FS_NO_GLOBALS
#include <ESP8266WiFi.h>
#include <ESP8266FtpServer.h>

const char* ssid = "xxx";
const char* password = "xxx";

FtpServer ftpSrv;

#include <SPI.h>
#include <SD.h>

File myFile;

void setup()
{
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

if (!SD.begin(4))
  {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  // open the file for reading:
  myFile = SD.open("/Meeting.txt");
  if (myFile)
  {
    // read from the file until there's nothing else in it:
    while (myFile.available())
    {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  }
  else
  {
    // if the file didn't open, print an error:
    Serial.println("error opening Meeting.txt");
  }

  /////FTP Setup, ensure SPIFFS is started before ftp;  /////////
  if (SPIFFS.begin())
  {
      Serial.println("SPIFFS opened!");
      ftpSrv.begin("xxx","xxx");    //username, password for ftp.  set ports in ESP8266FtpServer.h  (default 21, 50009 for PASV)
  }
}

void loop()
{
  byte inChar;
  inChar = Serial.read();
  if(inChar == 'e')
  {
    myFile = SD.open("/Meeting.txt");
  if (myFile)
  {
    // read from the file until there's nothing else in it:
    while (myFile.available())
    {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  }
  else
  {
    // if the file didn't open, print an error:
    Serial.println("error opening Meeting.txt");
  }
  }
  ftpSrv.handleFTP();
}

Bei den "xxx" Felder habe ich selbstverständlich meine eigenen Daten
eingefügt.
In der "loop" frage ich mit dem Buchstaben "e" die Daten ab, ob sie
verfügbar sind oder nicht.
Der SD-Kartenleser ist mit 6pins Verbunden(CS, SCK, MOSI, MISO, VCC und
GND) und der Spannungsregler auf der Platine wurde rausgelötet, sodass
er mit 3v3 Funktioniert. Dazu wird eine 4GB micro SDcard verwendet von
Verbatim.

Es wäre super, wenn einige User Hilfestellungen oder Lösungen parat
haben.

MfG
I-Azubi

Als ESP8266 verwende ich folgenden:
https://www.amazon.de/Waveshare-Universal-Driver-Board-ESP8266/dp/B07BJ4J1T9/ref=sr_1_fkmrnull_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=Universal+e-Paper+Driver+Board+with+WiFi+SoC+ESP8266&qid=1552556697&s=computers&sr=1-3-fkmrnull

und als SD-Kartenleser:
https://www.amazon.de/gp/product/B077MCQS9P/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

Autor: Εrnst B. (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I- A. schrieb:
> inChar = Serial.read();

Blockiert deine Loop, wenn kein Zeichen eingegangen ist

=>

  ftpSrv.handleFTP();

Kriegt keine Rechenzeit.


Bau ein "if (Serial.available()) {" Aussenherum

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.