Inhaltsverzeichnis:

Kabelloser SD-Kartenleser [ESP8266] - Gunook
Kabelloser SD-Kartenleser [ESP8266] - Gunook

Video: Kabelloser SD-Kartenleser [ESP8266] - Gunook

Video: Kabelloser SD-Kartenleser [ESP8266] - Gunook
Video: HP-71B 2024, November
Anonim
Image
Image

USB sollte universell sein, und das Hauptziel war es, ein Hot-Swap-fähiges Gerät zu schaffen, das sich super einfach mit anderen Geräten verbinden lässt, aber im Laufe der Jahre ging die Idee durcheinander. Es gibt so viele verschiedene Varianten dieser USB-Ports, die manchmal so frustrierend sind und die Funktionsweise völlig ihrem Namen [USB - Universal Serial Bus] widerspricht, denn jeder USB-Empfänger sollte mit jedem USB-Gerät kompatibel sein! Sie können Ihren USB-Stick oder eine Tastatur nicht in ein Ladegerät einstecken und erwarten, dass es funktioniert.

Aber das Konzept klingt zu gut! Um dieses "Universal-Port"-Konzept zu initiieren, habe ich mit einem einfachen Projekt "Wireless Card Reader" begonnen.

Dies hat alle meine Wünsche erfüllt, ich muss es nur in einen beliebigen USB-Empfänger stecken, egal welchen!

Sobald Sie es anschließen, erstellt es einen Zugangspunkt, an dem wir eine Verbindung herstellen und dann eine Verbindung zum Zugangspunkt herstellen und einfach eine FTP-Client-Anwendung auf einem kompatiblen Gerät öffnen können. Mit diesem Setup können wir Dateien drahtlos auf die SD-Karte kopieren und speichern!

Lieferungen

Dies ist die Liste der Produkte, die Ihnen helfen können, dieses Projekt mit Leichtigkeit durchzuführen

(Affiliate-Link)

  • Esp12E:
  • SD-Karte:
  • Micro-SD-Adapter:
  • HeaderPins:
  • Abgewinkelte Stiftleisten:
  • Kabel:
  • FTDI:
  • Arduino Nano + Programmierkabel:
  • USB-Stecker:
  • Leiterplatte:
  • Lötpistole:
  • Lötkabel:

Schritt 1: SD-Karte (Secure Digital)

SD-Karte (Secure Digital)
SD-Karte (Secure Digital)

SD steht für Secure Digital, es ist Ihrem Pendrive ähnlich, aber mit einem kleineren Platzbedarf und einem viel günstigeren Preis.

Wenn wir dies mit einem der Mikrocontroller verwenden müssen, gibt es 2 Optionen, eine davon ist SDIO und SPI. Fast alle SD-Karten teilen viele Standardfunktionen und haben die gleichen physikalischen und elektrischen Spezifikationen. Die tatsächlichen Unterschiede zwischen SPI und SDIO liegen hauptsächlich auf Softwareebene. In diesem Link können Sie mehr darüber lesen.

Sagen wir vorerst einfach, SDIO ist schneller, aber schwieriger zu implementieren und SPI ist langsamer, aber einfacher zu implementieren. Da die meisten Mikrocontroller standardmäßig SPI unterstützen, bleiben wir einfach dabei.

Pinbelegung der SD-Karte für SPI

Pin-1 - CS (Chipauswahl)Pin-2 - DI (MOSI)Pin-3 - GNDPin-4 - VCCPin-5 - SCLKPin-6 - GNDPin-7 - DO (MISO)Pin-8 - NCPin-9 - NC

Schritt 2: Änderung des SD-Kartenadapters

Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters
Modifikation des SD-Kartenadapters

Sie können alle SD-Kartenmodule verwenden, die Arduino und esp8266 unterstützen, aber für dieses Projekt verwenden wir den microSD-Kartenadapter und werden so modifiziert, dass wir diesen anstelle des Moduls verwenden können.

Reinigen Sie zuerst die Kontakte des SD-Kartenadapters. Verwenden Sie dann abgewinkelte Headerpins und löten Sie die Pins direkt an die Adapterkontakte. Überprüfen Sie nach dem Löten die Kontakte zwischen den Kopfstiften auf Kurzschluss. Entfernen Sie den schwarzen Separator nacheinander, damit er beim Zurücksetzen bündig mit der Platine abschließt.

Schneiden Sie die Platine so zu, dass sie perfekt in den SD-Kartenadapter passt und etwas mehr Platz hat, um den männlichen USB-Anschluss hinzuzufügen.

Sie können den gleichen Vorgang auch mit der SD-Karte anstelle des Adapters durchführen, aber es ist ziemlich riskant, wenn Sie sie beschädigen.

Schritt 3: USB-Verbindung

USB-Verbindung
USB-Verbindung
USB-Verbindung
USB-Verbindung
USB-Verbindung
USB-Verbindung

Wir müssen die SD-Karte mit Strom versorgen. Dafür verwenden wir den USB-Empfangsanschluss selbst. Wir verwenden also einen männlichen USB-Anschluss. Dieser hat normalerweise 4 Pins, wobei 2 mittlere Pins für die Datenübertragung und 2 extreme Pins für Strom und Masse verwendet werden. Da wir nur Strom brauchen, schneide ich die Datenpins und behalte nur GND und VCC.

Dann den männlichen USB-Anschluss vor die SD-Karte legen, wo wir zuvor etwas Platz gemacht haben, und dann anlöten. Dies hat noch kein Stromversorgungsproblem gelöst! Da die SD-Karte 3,3 V benötigt, die USB-Versorgung jedoch standardmäßig 5 V beträgt, wenn Sie diese einfach einstecken, werden Sie die SD-Karte wahrscheinlich ausbraten (aber keine Schäden durch den microSD-Adapter).

Um dies zu lösen, verwenden wir einen 3,3-V-Regler und verbinden den Eingang der USB-Versorgung mit dem 3,3-V-Regler, dh verbinden Sie GND des USB mit Pin 1 des Reglers und verbinden Sie Pin 3 des Reglers mit +5 V des Reglers. Zum Schluss den Pin 3 (Ausgangspin) und Masse des Reglers an die SD-Karte anlöten.

Dadurch wird die Stromversorgung für die SD-Karte eingerichtet. Sie können den Schaltplan für eine detailliertere Verbindung überprüfen.

Schritt 4: Alles zusammenfügen mit ESP-12E

Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E
Alles zusammenstellen mit ESP-12E

Um nun die Daten von der SD-Karte zu lesen und zu schreiben, verwenden wir das Esp12E-WLAN-Modul, obwohl es langsamer als esp32 ist. Aber es spielt wirklich keine Rolle, welche Sie wählen, ich werde in den letzten Schritten die Gründe nennen.

Löten Sie zuerst den EN (Enable Pin) an den VCC des esp12E, dies schaltet den IC ein. Wenn dies nicht mit dem HIGH-Signal verbunden ist, schaltet sich der IC nicht ein. Setzen Sie dann den esp12E auf die Rückseite der Platine und verlöten Sie die SPI-Pins des esp12E mit den SPI-Pins der SD-Karte. Für die Details überprüft der Anschluss den Schaltplan.

Schritt 5: HTTP VS FTP

Vor dem Programmieren habe ich ein wenig recherchiert, wie Downloads und Uploads funktionieren, und bin dabei auf das Wort FTP gestoßen. Grundsätzlich steht FTP für File Transfer Protocol. Dieses Protokoll wird verwendet, um Dateien zwischen Servern und Client zu übertragen, und es unterscheidet sich grundlegend vom regulären HTTP, bei dem der Client und der Server Anfragen/Antworten senden und empfangen, die sehr klein sind.

FTP ist beim Übertragen von Dateien schneller als HTTP, da es speziell dafür entwickelt wurde. Also wollte ich dies in diesem Projekt umsetzen. Wo ein FTP-Server auf dem esp-12E läuft und wir Daten über diesen FTP auf die SD-Karte pushen und holen können.

Schritt 6: Herausfinden der FTP-Bibliothek

Herausfinden der FTP-Bibliothek
Herausfinden der FTP-Bibliothek
Herausfinden der FTP-Bibliothek
Herausfinden der FTP-Bibliothek

Ich konnte keine FTP-Bibliothek finden, die sehr aktiv entwickelt oder speziell für esp8266 entwickelt wurde. Aber mit einigem Graben stieß ich auf David Paiva, der eine Arduino-Version des FTP-Servers auf esp8266 portierte, aber mit der SPIFFS-Unterstützung und nicht der SD-Karte.

Aber mit etwas mehr Aufwand fand ich jemanden, der etwas an der David Paiva-Bibliothek arbeitete, um die SPIFFS auf die SD-Karte zu konvertieren. Aber als ich versuchte, dies zu verwenden, hatte ich 2 Probleme. Zuerst war die Seite, auf der ich das herausfand, auf Koreanisch, also musste ich mich buchstäblich hinsetzen und alles übersetzen, um zu wissen, was los war, bevor ich etwas damit anfangen konnte. Das zweite Problem war dann, dass ich die vorhandene SD-Bibliothek modifizieren musste, um die von ihm vorgenommenen Änderungen zu unterstützen, aber das fühlte sich sehr ungeschickt an.

Also habe ich diese beiden Bibliotheken verglichen, eine von David Paiva und die andere von der koreanischen Website. Dann habe ich einige kleinere Änderungen vorgenommen und das Ganze in einem einzigen Projekt zusammengefasst, sodass keine Bibliothek installiert werden muss. Sie können den Code von meinem Github-Konto aus überprüfen.

Schritt 7: Programmierung des ESP-12E

Programmierung des ESP-12E
Programmierung des ESP-12E
Programmierung des ESP-12E
Programmierung des ESP-12E
Programmierung des ESP-12E
Programmierung des ESP-12E

ESP-12E wird nicht mit einem eingebauten Programmierer geliefert, daher müssen wir einen externen Programmierer wie das FDTI-Modul verwenden. Also habe ich einen Adapter mit ein paar Drähten und Buchsenleistenstiften gemacht. Damit können wir den esp12E vorübergehend verlöten und mit dem FTDI-Modul programmieren.

Verbinden Sie GND[esp12E] mit GND, Rx[esp12E] mit Tx, Tx[esp12E] mit Rx, GPIO15[esp12E] mit GND, GPIO0 [esp12E] mit GND, VCC[esp12E] mit VCC des FDTI-Moduls.

Laden Sie dann den Code von Github mit der Arduino IDE hoch.

Sobald das Programm hochgeladen ist, können Sie die Drähte, die zum Programmieren des esp12E angeschlossen wurden, entlöten.

Schritt 8: Beenden des Projekts

Abschluss des Projekts!
Abschluss des Projekts!
Abschluss des Projekts!
Abschluss des Projekts!
Abschluss des Projekts!
Abschluss des Projekts!

Legen Sie einfach eine beliebige microSD-Karte [32 GB max] in den Adapter ein und stecken Sie das gesamte Gerät in ein beliebiges USB-kompatibles Gerät. Das sollte die Dinge hochfahren! Aber es gibt einige Dinge zu beachten, stellen Sie sicher, dass der Ausgangsstrom des USB-Ports größer als 1 Ampere ist, nur um auf der sicheren Seite zu sein. Weil das Esp12E-Modul beim Übertragen von Dateien mehr Strom verbraucht.

Schritt 9: Verwenden des Geräts

Verwenden des Geräts
Verwenden des Geräts
Verwenden des Geräts
Verwenden des Geräts
Verwenden des Geräts
Verwenden des Geräts

Sobald das Gerät mit Strom versorgt wird, erstellt das Gerät einen Zugangspunkt namens SD Reader. Verbinden Sie sich mit diesem Zugangspunkt mit dem Passwort, das sich auf dem Code befindet. Dann Je nachdem, welches Gerät Sie verwenden, um sich mit dem 12E zu verbinden, laden Sie die entsprechende FTP-Client-Software herunter, wenn Sie WinSCP oder Filzella auf dem PC herunterladen und wenn Sie ein Android-Gerät verwenden, laden Sie AndFTP herunter.

Öffnen Sie nach Abschluss der Installation AndFTP und geben Sie die Anmeldeinformationen ein, um den FTP-Client einzurichten. In meinem Fall habe ich den Benutzernamen und das Passwort standardmäßig auf "esp8266" im Code belassen. Verwenden Sie das also für die Benutzerinformationen und für den Host verwenden Sie 192.168.12.7. Verbinden Sie sich schließlich mit dem FTP-Server.

Sobald das erledigt ist, können Sie alle Dateien von der SD-Karte herunterladen und Dateien von Ihrem Telefon auf die SD-Karte hochladen.

Sie können das Video sehen, um zu erfahren, wie es funktioniert!

Schritt 10: Abschließende Gedanken

Abschließende Gedanken
Abschließende Gedanken
Abschließende Gedanken
Abschließende Gedanken

Aber bevor wir zu dem Schluss kommen, dass es ein sehr praktisches Gerät ist, gehen wir einen Schritt zurück.

Obwohl es tut, was ich will, ist es absolut langsam! Für nur 4 Dateien (jeweils ~100 KB) dauert es ungefähr 30 Sekunden, und wenn Sie es mit einer größeren Datei wie 10 MB versuchen, dauert es etwa 3-4 Minuten. Es gibt Möglichkeiten, dies zu optimieren, und von der Seite, auf die ich verwiesen habe, konnte er eine Lesegeschwindigkeit von ungefähr 450 KB erreichen. (Mit Esp32 und SD_MMC-Bibliothek kann die Übertragungsgeschwindigkeit etwa 1 MB/s betragen)

Der Grund, warum ich das Projekt hier gestoppt und nicht versucht habe, es zu optimieren, hatte 2 Gründe. Erstens wünsche ich mir wirklich, dass ich zusammen mit dem FTP-Server immer noch die USB-Datenleitung zum Übertragen von Daten verwenden könnte, aber es wird in esp8266 oder esp32 nicht unterstützt. Und der zweite Grund ist, dass ich nicht genug Geschwindigkeit erreichen konnte, um die Dateien über FTP zu übertragen. Dies sind auch die gleichen Gründe, warum ich mir nicht die Mühe gemacht habe, den esp32 anstelle des esp12E zu verwenden.

Aber ich denke, einige dieser Probleme können gelöst werden, wenn wir die esp32 S2-Boards verwenden können, die USB für unterwegs mit voller Geschwindigkeit unterstützen. Vielleicht kann ich das für ein anderes anweisbares XD tun.

Empfohlen: