чтение карты micro SD напрямую с ПК

Возможно ли чтение карты microSD (на прорыве) через порт USB на ардуино? или, возможно, другой USB-порт, который я мог бы подключить к прорыву? По сути, я хотел бы считывать данные с карты с помощью моего ноутбука без необходимости каждый раз извлекать ее!

, 👍1

Обсуждение

да, это возможно, @jsotola

@jsotola Правда? Интересно, как (я думал, что Arduino не поддерживает использование USB в скетче, по крайней мере, по умолчанию)., @Michel Keijzers

@MichelKeijzers, используйте последовательное соединение для передачи данных ... ОП спросил о возможности передачи данных ... я не вижу требования эмулировать флэш-накопитель, @jsotola

@jsotola хорошо, я думаю, что у нас примерно одна и та же идея (я удалил свой ответ на основе вашего комментария, который теперь не удален, стреляйте в него, если он неверен)., @Michel Keijzers

разве на каждом ПК нет устройства для чтения SD-карт?, @Juraj

@201, На всякий случай из комментариев или ответов непонятно: USB содержит много разных протоколов. Arduino использует последовательный протокол USB. SDCard использует протокол USB-накопителя. Немногие периферийные устройства USB могут переключаться между протоколами. Я вижу, вы еще не выбрали правильный ответ. Если вы хотите, чтобы я уточнил еще один ответ - добавьте комментарий с указанием этого., @st2000

@Juraj Возможно, да, но я думаю, что он не хочет извлекать SD-карту ... на самом деле в моем проекте я также думаю о создании SD-карты где-то внутри устройства (таким образом, недоступной снаружи), потому что это делает ее сборку внутри корпус намного проще., @Michel Keijzers

@MichelKeijzers, в моем проекте я показываю/загружаю файлы с SD через веб-сервер, @Juraj

@juraj звучит как отличная идея!, @201

@MichelKeijazers, можешь поделиться со мной программой?, @201

@ st2000 другой протокол, такой как SPI, верно? Можете ли вы дать мне больше информации о том, как это сделать?, @201

@201, я думаю, Маженко лучше всех ответил на твой вопрос. Но, чтобы добавить немного, для сложных протоколов существуют физические уровни / верхние уровни (USB) и нижние уровни (последовательный USB или USB-накопитель и другие). Карта SDCard должна будет использовать запоминающее устройство USB, а интерфейс Arduino всегда использует последовательный порт USB. Да, у SDCard одним из двух возможных физических уровней является SPI. Но к тому времени, когда вы доберетесь до USB-порта, SDCard использует USB-накопитель. И, к сожалению, это не то, что Arduino поддерживает через свой USB-порт. Arduino, конечно, поддерживает последовательный порт USB., @st2000

@ st2000 Итак, можно использовать SPI для соединения между SD-картой и последовательным портом Arduino, верно? проект, над которым я работаю, требует прошлогодних данных, хранящихся на SD-карте, и показывает их на ПК, не извлекая SD-карту из регистратора данных щита... для меня это звучит сложно..., @201

Хотя я думаю, что нашел ответ, я могу просто попросить последовательный порт записать для меня файл, сохраненный на SD-карте, с помощью этой команды: Serial.write(dataFile.read());, @201

так что вот еще один вопрос... могу ли я сохранять данные в течение долгого времени на моей SD-карте? например на год?, @201

[Этот веб-сайт] (https://integralmemory.com/faq/how-long-will-data-stay-valid-memory-card) утверждает, что срок хранения ~10 лет., @st2000

@st2000 большое спасибо, @201


3 ответа


1

Это было бы очень полезно, но на самом деле это невозможно, так как скетч Arduino, который вы пишете, связывается с ПК только через последовательный интерфейс.

Драйвер IDE/Arduino может использовать USB для записи вашего скетча и использовать USB для связи, но для скетчей USB (как прямой носитель) невозможен.

SD-карта не будет отображаться как определенный диск/карта/папка на вашем ПК.

Поскольку вы хотите прочитать SD-карту, напишите в своем скетче код для передачи файлов, которые вы хотите отправить на ПК, для передачи их по UART, а на ПК напишите программу, которая считывает последовательный порт. и обрабатывает его.

,

1

В целом это возможно. Но вы не можете прочитать SD-карту через USB-порт Arduino. Вместо этого вам нужно прочитать SD-карту по другому протоколу, например, SPI (ищите соответствующую библиотеку) и отправить ее на компьютер через последовательный порт. Вам понадобится программное обеспечение на стороне ПК для записи содержимого, которое было прочитано с Arduino, в файл.

Посмотрите руководство по SD-карте, чтобы узнать, как его читать. .

,

Итак, если я хочу, скажем, прочитать историю моих данных за последний год из регистратора данных, могу ли я использовать SPI для установления этого соединения между SD-картой и Arduino? у вас есть пример кода, который может быть полезен?, @201

В Интернете есть примеры и учебные пособия (я нашел одно для вас). Но могу я спросить, почему вы хотите использовать Arduino? У вас нет устройства чтения SD-карт для использования с USB на вашем ноутбуке?, @Sim Son

@201, а как он подключен для регистрации данных? не через SPI?, @Juraj

вы правы, но на самом деле это проект, над которым я сейчас работаю.., @201


0

Это невозможно сделать с Arduino, но можно с другими микроконтроллерами. Вам нужен микроконтроллер с прямым USB-подключением, а также стек USB, способный работать как запоминающее устройство USB. Что-то вроде плат серии Teensy или chipKIT может сделать это.

Затем вы можете написать программное обеспечение, которое по команде будет отсоединять SD-карту от вашей обычной операции скетча и повторно подключать ее к устройству MSD в стеке USB. Затем вы можете читать и записывать на SD-карту (хотя иначе ваш скетч не может получить к ней доступ) столько, сколько хотите, а затем «размонтировать» устройство MSD и отсоединить от него SD-карту, после чего ваш скетч может быть снова переустановлен. -прикрепите себя к карте и снова начните пользоваться.

Обратите внимание, что здесь важно то, что одновременно может работать только один функционал - либо вы можете читать и записывать файлы на карту со своим скетчем, или вы можете экспортировать устройство через MSD . Никогда оба. Это приводит к повреждению файловой системы и потере данных.

,