Spisu treści:

Bezprzewodowy czytnik kart SD [ESP8266]: 10 kroków (ze zdjęciami)
Bezprzewodowy czytnik kart SD [ESP8266]: 10 kroków (ze zdjęciami)

Wideo: Bezprzewodowy czytnik kart SD [ESP8266]: 10 kroków (ze zdjęciami)

Wideo: Bezprzewodowy czytnik kart SD [ESP8266]: 10 kroków (ze zdjęciami)
Wideo: Ma czytnik kart micro SD, łączy się z bluetooth i posiada port USB🤩 Jest także bezprzewodowe 2024, Lipiec
Anonim
Image
Image

USB miało być uniwersalne, a głównym celem było stworzenie urządzenia z możliwością wymiany podczas pracy, super łatwego w interfejsie z innymi urządzeniami, ale z biegiem lat pomysł zepsuł się. Jest tak wiele różnych wariantów tych portów USB, co czasami jest tak frustrujące, a sposób, w jaki działają, jest całkowicie sprzeczny z ich nazwą [USB - Universal Serial Bus], ponieważ każdy odbiornik USB powinien być kompatybilny z dowolnym urządzeniem USB! Nie możesz podłączyć pamięci USB lub klawiatury do ładowarki i oczekiwać, że zadziała.

Ale pomysł brzmi zbyt dobrze! Dlatego aby zainicjować koncepcję "Universal-Port" zacząłem od prostego projektu "Wireless Card reader"

To spełniło wszystkie moje życzenia, wszystko, co muszę zrobić, to po prostu podłączyć go do dowolnego odbiornika USB, nieważne w którym!

Jak tylko go podłączysz, tworzy punkt dostępowy, z którym możemy się połączyć, a następnie połączyć się z punktem dostępowym i po prostu otworzyć dowolną aplikację klienta FTP w dowolnym kompatybilnym urządzeniu. Dzięki tej konfiguracji możemy bezprzewodowo kopiować, a także zapisywać pliki na karcie SD!

Kieszonkowe dzieci

Oto lista produktów, które pomogą Ci z łatwością wykonać ten projekt

(Link afiliacyjny)

  • Esp12E:
  • Karta SD:
  • Adapter Micro SD:
  • HeaderPins:
  • Kątowe kołki czołowe:
  • Przewody:
  • FTDI:
  • Arduino nano + przewód programatora:
  • Męski USB:
  • PCB:
  • Lutownica:
  • Przewód lutowniczy:

Krok 1: Karta SD (Secure Digital)

Karta SD (bezpieczna cyfrowa)
Karta SD (bezpieczna cyfrowa)

SD oznacza Secure Digital, jest podobny do twojego Pendrive, ale ma mniejszą powierzchnię i znacznie niższą cenę.

Kiedy musimy użyć tego z dowolnym mikrokontrolerem, mamy 2 opcje, jedną jest SDIO i SPI. Prawie wszystkie karty SD mają wiele standardowych funkcji i mają te same specyfikacje fizyczne i elektryczne. Rzeczywiste różnice między SPI i SDIO dotyczą głównie oprogramowania. Więcej na ten temat możesz przeczytać w tym Linku.

Na razie powiedzmy, że SDIO jest szybsze, ale trudniejsze do wdrożenia, a SPI jest wolniejsze, ale łatwiejsze do wdrożenia. Ponieważ większość mikrokontrolerów domyślnie obsługuje SPI, będziemy się go trzymać.

Pinout karty SD dla SPI

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

Krok 2: Modyfikacja adaptera kart SD

Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD
Modyfikacja adaptera kart SD

Można użyć dowolnych modułów kart SD obsługujących Arduino i esp8266, ale na potrzeby tego projektu użyjemy adaptera kart microSD i zmodyfikujemy go w taki sposób, abyśmy mogli go użyć zamiast modułu.

Najpierw wyczyść styki adaptera karty SD. Następnie użyj kątowych kołków rozgałęźnych i przylutuj kołki bezpośrednio do styków adaptera. Po zakończeniu lutowania sprawdź styki między pinami nagłówka, aby sprawdzić, czy nie ma zwarcia. Usuń czarny separator jeden po drugim, aby po ponownym włożeniu zrównał się z płytką PCB.

Wytnij płytkę tak, aby idealnie pasowała do adaptera kart SD i miała trochę miejsca na męski port USB.

Możesz również wykonać ten sam proces z kartą SD zamiast adaptera, ale jest to dość ryzykowne, jeśli ją uszkodzisz.

Krok 3: Połączenie USB

Połączenie USB
Połączenie USB
Połączenie USB
Połączenie USB
Połączenie USB
Połączenie USB

Musimy zasilić kartę SD, w tym celu użyjemy samego portu odbiorczego USB. Użyjemy więc męskiego portu USB. Zwykle ma 4 piny, gdzie 2 środkowe piny są używane do przesyłania danych, a 2 skrajne piny są używane do zasilania i uziemienia. Ponieważ potrzebujemy tylko zasilania, odetnę piny danych i po prostu zachowam GND i VCC.

Następnie umieściliśmy męski port USB przed kartą SD, gdzie wcześniej zrobiliśmy trochę miejsca, a następnie przylutowaliśmy go na miejscu. To nie rozwiązało jeszcze żadnego problemu z zasilaniem! Ponieważ karta SD wymaga 3,3 V, ale zasilanie USB to standardowe 5 V, jeśli po prostu podłączysz to do zasilania, prawdopodobnie usmażysz kartę SD (ale adapter microSD nie spowoduje żadnych uszkodzeń).

Aby rozwiązać ten problem użyjemy regulatora 3.3V i połączymy wejście zasilania USB z regulatorem 3.3V, czyli podłączymy GND USB do pinu 1 regulatora i pin 3 regulatora połączymy z +5V regulatora. Na koniec przylutuj pin 3 (pin wyjściowy) i masę regulatora do karty SD.

Spowoduje to skonfigurowanie zasilania karty SD. Możesz sprawdzić schemat obwodu, aby uzyskać bardziej szczegółowe połączenie.

Krok 4: Łączenie wszystkiego razem z ESP-12E

Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E
Łączenie wszystkiego razem z ESP-12E

Teraz do odczytu i zapisu danych z karty SD użyjemy modułu wifi Esp12E, mimo że jest wolniejszy niż esp32. Ale tak naprawdę nie ma znaczenia, który wybierzesz, wyjaśnię rozsądek w dalszych krokach.

Najpierw przylutuj EN (włącz pin) do VCC esp12E, to włączy układ scalony. Jeśli nie jest podłączony do sygnału HIGH, układ scalony nie włączy się. Następnie umieść esp12E z tyłu płytki PCB i przylutuj piny SPI esp12E do pinów SPI na karcie SD. Dla szczegółów połączenie sprawdza schemat połączeń.

Krok 5: HTTP VS FTP

Przed programowaniem przeprowadziłem pewne badania na temat działania pobierania i przesyłania, wtedy natknąłem się na słowo FTP. Zasadniczo FTP oznacza protokół przesyłania plików, ten protokół służy do przesyłania plików między serwerami a klientem i jest zupełnie inny niż zwykły HTTP, w którym klient i serwer wysyłają i odbierają żądania / odpowiedzi, które są bardzo małe.

FTP jest szybszy niż HTTP w przesyłaniu plików, ponieważ został specjalnie do tego stworzony. Więc chciałem to zaimplementować w tym projekcie. Gdzie serwer FTP działa na esp-12E i możemy przesyłać i pobierać dane przez ten FTP na kartę SD.

Krok 6: Ustalenie biblioteki FTP

Poszukiwanie biblioteki FTP
Poszukiwanie biblioteki FTP
Poszukiwanie biblioteki FTP
Poszukiwanie biblioteki FTP

Nie mogłem znaleźć żadnej biblioteki FTP, która jest bardzo aktywnie rozwijana lub specjalnie stworzona dla esp8266. Ale po pewnym kopaniu natknąłem się na Davida Paivę, który przeniósł wersję Arduino serwera FTP na esp8266, ale z obsługą SPIFFS, a nie kartą SD.

Ale przy odrobinie wysiłku znalazłem kogoś, kto popracował nad biblioteką Davida Paiva, aby przekonwertować SPIFFS na kartę SD. Ale kiedy próbowałem tego użyć, napotkałem 2 problemy. Najpierw strona, na której się o tym dowiedziałem, była po koreańsku, więc musiałem dosłownie usiąść i wszystko przetłumaczyć, żeby wiedzieć, co się dzieje, zanim mogłem cokolwiek z tym zrobić. Drugi problem polegał na tym, że musiałem zmodyfikować istniejącą bibliotekę SD, aby obsługiwała wprowadzone przez niego zmiany, ale to było bardzo niezręczne.

Porównałem więc obie te biblioteki, jedną od Davida Paivy, a drugą z koreańskiej strony internetowej, a następnie wprowadziłem kilka drobnych zmian i umieściłem całość w jednym projekcie, więc nie ma potrzeby instalowania jakiejkolwiek biblioteki. Możesz sprawdzić kod z mojego konta Github.

Krok 7: Programowanie ESP-12E

Programowanie ESP-12E
Programowanie ESP-12E
Programowanie ESP-12E
Programowanie ESP-12E
Programowanie ESP-12E
Programowanie ESP-12E

ESP-12E nie ma wbudowanego programatora, więc musimy użyć zewnętrznego programatora, takiego jak moduł FDTI. Zrobiłem więc przejściówkę z kilkoma przewodami i żeńskimi pinami nagłówka, za pomocą którego możemy chwilowo przylutować esp12E i zaprogramować za pomocą modułu FTDI.

Podłącz GND[esp12E] do GND, Rx[esp12E] do Tx, Tx[esp12E] do Rx, GPIO15[esp12E] do GND, GPIO0 [esp12E] do GND, VCC[esp12E] do VCC modułu FDTI.

Następnie wgraj kod z Github za pomocą Arduino IDE.

Po wgraniu programu można odlutować przewody, które zostały podłączone do programowania esp12E.

Krok 8: Zakończenie projektu

Dokończenie projektu!
Dokończenie projektu!
Dokończenie projektu!
Dokończenie projektu!
Dokończenie projektu!
Dokończenie projektu!

Wystarczy włożyć dowolną kartę microSD [maksymalnie 32 GB] do adaptera i podłączyć całe urządzenie do dowolnego urządzenia kompatybilnego z USB. To powinno zasilić wszystko! Ale jest kilka rzeczy do rozważenia, upewnij się, że prąd wyjściowy portu USB jest większy niż 1 amp, aby być po bezpieczniejszej stronie. Ponieważ moduł Esp12E zużywa więcej prądu podczas przesyłania plików.

Krok 9: Korzystanie z urządzenia

Korzystanie z urządzenia
Korzystanie z urządzenia
Korzystanie z urządzenia
Korzystanie z urządzenia
Korzystanie z urządzenia
Korzystanie z urządzenia

Zaraz po włączeniu zasilania urządzenie tworzy punkt dostępowy o nazwie Czytnik SD. Połącz się z tym punktem dostępu, używając hasła znajdującego się w kodzie. Następnie, w zależności od urządzenia, którego używasz do łączenia się z 12E, pobierz odpowiednie oprogramowanie klienta FTP, jeśli używasz PC, pobierz WinSCP lub Filzella, a jeśli używasz urządzenia z Androidem, pobierz AndFTP.

Po zakończeniu instalacji otwórz AndFTP i wprowadź poświadczenia, aby skonfigurować klienta FTP. W moim przypadku w kodzie zostawiłem nazwę użytkownika i hasło domyślnie "esp8266". Użyj tego do informacji o użytkowniku, a do hosta użyj 192.168.12.7. Na koniec połącz się z serwerem FTP.

Gdy to zrobisz, możesz pobrać dowolne pliki z karty SD, a także przesłać pliki z telefonu na kartę SD.

Możesz zobaczyć wideo, aby dowiedzieć się, jak to działa!

Krok 10: Końcowe myśli

Końcowe przemyślenia
Końcowe przemyślenia
Końcowe przemyślenia
Końcowe przemyślenia

Ale zanim dojdziemy do wniosku, że jest to bardzo poręczne urządzenie, cofnijmy się o krok.

Mimo że robi to, co chcę, jest całkowicie powolny! W przypadku zaledwie 4 plików (każdy ~100 KB) zajmuje to około 30 sekund, a jeśli spróbujesz z większym plikiem, takim jak 10 MB, ukończenie zajmie około 3-4 minut. Są sposoby, aby to zoptymalizować, a ze strony, o której wspomniałem, był w stanie uzyskać prędkość odczytu z grubsza 450 kbs. (W przypadku bibliotek Esp32 i SD_MMC prędkość transferu może wynosić około 1 MB/s)

Powodem, dla którego zatrzymałem projekt tutaj i nie próbowałem go zoptymalizować, były 2 powody. Po pierwsze, naprawdę chciałbym, aby wraz z serwerem FTP móc nadal używać linii danych USB do przesyłania danych, ale nie jest to obsługiwane w esp8266 lub esp32. Drugim powodem jest to, że nie mogłem uzyskać wystarczającej prędkości, aby przesłać pliki przez FTP. Są to również ten sam powód, dla którego nie zawracałem sobie głowy używaniem esp32 zamiast esp12E.

Ale myślę, że niektóre z tych problemów można rozwiązać, jeśli użyjemy płyt esp32 S2, które obsługują pełną prędkość USB w podróży. Może uda mi się to zrobić dla innego pouczającego XD.

Zalecana: