Оглавление:
- Запасы
- Шаг 1: SD-карта (Secure Digital)
- Шаг 2: изменение адаптера SD-карты
- Шаг 3: USB-подключение
- Шаг 4: Собираем все вместе с ESP-12E
- Шаг 5: HTTP VS FTP
- Шаг 6. Изучение FTP-библиотеки
- Шаг 7: Программирование ESP-12E
- Шаг 8: Завершение проекта
- Шаг 9: Использование устройства
- Шаг 10: Заключительные мысли
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Предполагалось, что USB будет универсальным, и главная цель заключалась в том, чтобы сделать его с возможностью горячей замены и сверхлегким взаимодействием с другими устройствами, но с годами эта идея пошла наперекосяк. Существует так много различных вариантов этих USB-портов, что временами так разочаровывает, и способ их работы полностью противоречит их названию [USB - универсальная последовательная шина], потому что каждый USB-приемник должен быть совместим с любым USB-устройством! Вы не можете подключить USB-накопитель или клавиатуру к зарядному устройству и ожидать, что они будут работать.
Но концепция звучит слишком хорошо! Вот почему, чтобы инициировать концепцию «универсального порта», я начал с простого проекта «Устройство считывания беспроводных карт».
Это выполнило все мои пожелания, все, что мне нужно сделать, это просто вставить его в любой USB-приемник, неважно какой!
Как только вы подключаете его, он создает точку доступа, где мы можем подключиться, а затем подключиться к точке доступа и просто открыть любое клиентское приложение FTP на любом совместимом устройстве. С помощью этой настройки мы можем копировать, а также сохранять файлы на SD-карту по беспроводной сети!
Запасы
Это список продуктов, которые помогут вам с легкостью выполнить этот проект.
(Партнерская ссылка)
- Esp12E:
- SD-карта:
- Адаптер Micro SD:
- Заголовки:
- Наклонные штыри заголовка:
- Провода:
- FTDI:
- Провод программатора Arduino nano +:
- Мужской USB:
- Плата:
- Паяльник:
- Свинец для пайки:
Шаг 1: SD-карта (Secure Digital)
SD означает Secure Digital, он похож на ваш Pendrive, но занимает меньше места и гораздо дешевле.
Когда нам нужно использовать это с любым из микроконтроллеров, есть 2 варианта: SDIO и SPI. Почти все SD-карты обладают многими стандартными функциями и имеют одинаковые физические и электрические характеристики. Фактические различия между SPI и SDIO в основном связаны с программным обеспечением. Вы можете прочитать об этом подробнее по этой ссылке.
А пока давайте просто скажем, что SDIO быстрее, но сложнее в реализации, а SPI медленнее, но проще в реализации. Поскольку большинство микроконтроллеров по умолчанию поддерживают SPI, мы будем его придерживаться.
Распиновка SD-карты для SPI
Контакт-1 - CS (выбор микросхемы) Контакт-2 - DI (MOSI) Контакт-3 - GNDPin-4 - VCCPin-5 - SCLKPin-6 - GNDPin-7 - DO (MISO) Контакт-8 - NCPin-9 - NC
Шаг 2: изменение адаптера SD-карты
Вы можете использовать любые модули SD-карт, которые поддерживают Arduino и esp8266, но для целей этого проекта мы будем использовать адаптер карты microSD и будем модифицировать его таким образом, чтобы мы могли использовать его вместо модуля.
Сначала очистите контакты адаптера SD-карты. Затем используйте расположенные под углом штыри разъема и припаяйте штырьки непосредственно к контактам адаптера. После завершения пайки проверьте контакты между штырями коллектора на предмет короткого замыкания. Удалите черный разделитель один за другим, чтобы, когда мы поместим его обратно, он заподлицо с печатной платой.
Обрежьте печатную плату таким образом, чтобы она идеально подходила к адаптеру SD-карты и имела дополнительное пространство для добавления штыревого USB-порта.
Вы также можете проделать тот же процесс с SD-картой вместо адаптера, но это довольно рискованно, если вы повредите ее.
Шаг 3: USB-подключение
Нам нужно запитать SD-карту, для этого мы будем использовать сам принимающий USB-порт. Итак, мы будем использовать мужской USB-порт. Обычно он имеет 4 контакта, где 2 средних контакта используются для передачи данных, а 2 крайних контакта используются для питания и заземления. Поскольку нам просто нужно питание, я обрежу выводы данных и оставлю GND и VCC.
Затем поместите штекерный USB-порт перед SD-картой, где мы освободили место ранее, затем припаяйте его на место. Это еще не решило никаких проблем с питанием! Поскольку для SD-карты требуется 3,3 В, но стандартное питание USB составляет 5 В, если вы просто подключите его к источнику питания, вы, вероятно, сожжете SD-карту (но адаптер microSD не повредит).
Чтобы решить эту проблему, мы воспользуемся регулятором 3,3 В и подключим вход источника питания USB к регулятору 3,3 В, то есть подключим GND USB к контакту 1 регулятора и подключим контакт 3 регулятора к + 5 В регулятора. Наконец, припаяйте контакт 3 (выходной контакт) и заземление регулятора к SD-карте.
Это настроит питание SD-карты. Вы можете проверить электрическую схему для более детального подключения.
Шаг 4: Собираем все вместе с ESP-12E
Теперь для чтения и записи данных с SD-карты мы будем использовать модуль Wi-Fi Esp12E, хотя он медленнее, чем esp32. Но на самом деле не имеет значения, какой из них вы выберете, я объясню причину на последних этапах.
Сначала припаяйте EN (разрешающий контакт) к VCC esp12E, это включит IC. Если он не подключен к сигналу HIGH, IC не включится. Затем поместите esp12E на заднюю часть печатной платы и припаяйте контакты SPI esp12E к контактам SPI на SD-карте. Подробности подключения проверяются на принципиальной схеме.
Шаг 5: HTTP VS FTP
Перед программированием я провел небольшое исследование того, как работают загрузки и выгрузки, и тогда я наткнулся на слово FTP. В основном FTP означает протокол передачи файлов, этот протокол используется для передачи файлов между серверами и клиентом, и он полностью отличается от обычного HTTP, где клиент и сервер отправляют и получают запросы / ответы, которые имеют очень маленький размер.
FTP быстрее HTTP при передаче файлов, потому что он был специально создан для этого. Итак, я хотел реализовать это в этом проекте. Где FTP-сервер работает на esp-12E, и мы можем отправлять и извлекать данные через этот FTP на SD-карту.
Шаг 6. Изучение FTP-библиотеки
Мне не удалось найти ни одной библиотеки FTP, которая бы очень активно разрабатывалась или создавалась специально для esp8266. Но, покопавшись, я наткнулся на Дэвида Пайва, который портировал версию FTP-сервера для Arduino на esp8266, но с поддержкой SPIFFS, а не с SD-картой.
Но приложив немного больше усилий, я нашел человека, который немного поработал над библиотекой Дэвида Пайвы, чтобы преобразовать SPIFFS на SD-карту. Но когда я попытался использовать это, я столкнулся с двумя проблемами. Во-первых, страница, на которой я узнал об этом, была на корейском языке, поэтому мне пришлось буквально сидеть и переводить все, чтобы понять, что происходит, прежде чем я смогу что-то с этим сделать. Вторая проблема заключалась в том, что мне пришлось изменить существующую библиотеку SD для поддержки внесенных им изменений, но это было очень неуклюже.
Итак, я сравнил обе эти библиотеки, одну от Дэвида Пайвы, а другую с корейского веб-сайта, затем внес некоторые незначительные изменения и собрал все это в один проект, поэтому нет необходимости устанавливать какую-либо библиотеку. Вы можете проверить код в моей учетной записи Github.
Шаг 7: Программирование ESP-12E
ESP-12E не имеет встроенного программатора, поэтому нам нужно использовать внешний программатор, такой как модуль FDTI. Итак, я сделал адаптер с несколькими проводами и штырями-розетками. С его помощью мы можем временно припаять esp12E и запрограммировать его с помощью модуля FTDI.
Подключите GND [esp12E] к GND, Rx [esp12E] к Tx, Tx [esp12E] к Rx, GPIO15 [esp12E] к GND, GPIO0 [esp12E] к GND, VCC [esp12E] к VCC модуля FDTI.
Затем загрузите код из Github с помощью Arduino IDE.
После загрузки программы вы можете распаять провода, которые были подключены для программирования esp12E.
Шаг 8: Завершение проекта
Просто вставьте любую карту microSD [32 ГБ макс.] Внутрь адаптера и подключите все устройство к любому USB-совместимому устройству, это должно привести к включению! Но есть несколько вещей, которые следует учитывать, убедитесь, что выходной ток USB-порта превышает 1 ампер, просто для большей безопасности. Поскольку модуль Esp12E потребляет больше тока при передаче файлов.
Шаг 9: Использование устройства
Как только устройство получает питание, устройство создает точку доступа под названием SD Reader. Подключитесь к этой точке доступа, используя пароль, указанный в коде. Затем, в зависимости от того, какое устройство вы используете для подключения к 12E, загрузите соответствующее программное обеспечение FTP-клиента, если вы используете ПК, загрузите WinSCP или Filzella, а если вы используете устройство Android, загрузите AndFTP.
После завершения установки откройте AndFTP и введите учетные данные для настройки FTP-клиента. В моем случае я оставил в коде имя пользователя и пароль по умолчанию «esp8266». Итак, используйте это для информации о пользователе, а для хоста используйте 192.168.12.7. Наконец, подключитесь к FTP-серверу.
Как только это будет сделано, вы сможете загружать любые файлы с SD-карты, а также загружать файлы со своего телефона на SD-карту.
Вы можете посмотреть видео, чтобы узнать, как это работает!
Шаг 10: Заключительные мысли
Но прежде чем прийти к выводу, что это очень удобное устройство, давайте сделаем шаг назад.
Несмотря на то, что он делает то, что я хочу, он очень медленный! Для всего 4 файлов (каждый ~ 100 КБ) это занимает примерно 30 секунд, а если вы попробуете с файлом большего размера, например 10 МБ, это займет около 3-4 минут. Есть способы оптимизировать это, и со страницы, на которую я ссылался, он смог получить скорость чтения примерно 450 кбит / с. (С Esp32 и SD_MMC скорость передачи библиотеки может составлять около 1 МБ / с)
Причина, по которой я остановил проект здесь и не пытался его оптимизировать, заключалась в двух причинах. Во-первых, мне очень хотелось бы, чтобы я мог использовать наряду с FTP-сервером линию передачи данных USB для передачи данных, но она не поддерживается в esp8266 или esp32. И вторая причина в том, что мне не хватало скорости для передачи файлов по FTP. По этой же причине я не стал использовать esp32 вместо esp12E.
Но я думаю, что некоторые из этих проблем можно решить, если использовать платы esp32 S2, которые поддерживают полную скорость USB на ходу. Может быть, я смогу сделать это для другого обучаемого XD.