Коммутация устройств

Jetro
Offline
Зарегистрирован: 25.09.2015

Скорее всего многие посчитают мой вопрос глупым, но все-же для меня он актуальный.

Суть вот в чем:

У нас имеется два кардридера и пять SD-карт памяти. Я хотел-бы сделать девайс, с помощью которого можно было-бы эти самые карты памяти коммутировать с кардридерами, то есть подключать по требованию, при чем не прикасаясь к ним. То есть даю команду ардуине на подключение третей флешки в первый кардридер, она делает волшебство, после чего я получаю в ридере подключенную флешку, после этого даю команду на подключение первой карты в второй порт, и пятой в первый, и так далее.

Главная проблема тут все-же в самой реализации. Изначально я думал сделать все это на оптронах, но слишком уж много оптронов для этого нужно, да и управлять ими то еще удовольствие. И тут я полумал а нет ли случайно каких либо микросхем на N ног, которые как раз и делают то, что мне нужно. А может что-то более умное посоветуете, в плане "забрось эту ерунду" :)

Одним словом жду дельных советов?

axill
Offline
Зарегистрирован: 05.09.2011

Карты подключаться будут к ардуине или к компьютеру? Т.е. Ардуина только коммутирует или же и работает с картами

если ардуина и коммутирует и работает то проще сделать так.

Sd карта поддерживает работу по SPI, это значит, что все карты можно присоединить к МК параллельно, выводы SCK/MISO/MOSI

А вот выводы выбора кристалла CS надо подключить к разным пинам

Jetro
Offline
Зарегистрирован: 25.09.2015

Карты будут подключаться к компьютеру, ардуина будет служить только коммутатором.

А ничего, если пины SCK/MISO/MOSI будут паралельно подключены к нескольким кардридерам? Замыкания это не вызовет?

axill
Offline
Зарегистрирован: 05.09.2011

Jetro пишет:

Карты будут подключаться к компьютеру, ардуина будет служить только коммутатором.

А ничего, если пины SCK/MISO/MOSI будут паралельно подключены к нескольким кардридерам? Замыкания это не вызовет?

вызовет. Но зачем вам подключать к нескольким кард ридерам если все карты можно прицепить к одному?

Jetro
Offline
Зарегистрирован: 25.09.2015

На случай, когда одновременно нужен доступ к нескольким картам памяти.

К сожалению всю суть задачи раскрыть не могу, могу только сказать что там будет далеко не 5 карт и не парочка кардридеров.

axill
Offline
Зарегистрирован: 05.09.2011

Если комп один то можно все карты прицепить к одному кардридеру, все пины, кроме CS

Пины CS цеплять к ардуине

а как вы собираетесь решать проблему с операционной системой? систему может заглючить, а записываемые данные легко будут потеряны

vde69
Offline
Зарегистрирован: 10.01.2016

на уровне операционки сабж имеет решение только при эмуляции "отключить/включить новый" так как ОС оперирует дискрипторами а не именами файлов или областями записи, и замена физического носителя приведет к проблеммам ч вероятностью 99% (банально таблица FAT запишится криво и SD станет не читаемой).

есть еще вариант - эмуляция горячего RAID контроллера, но думаю это ардуинке если и под силу, то только для спеца с очень прямыми руками...

Jetro
Offline
Зарегистрирован: 25.09.2015

Горячую замену делать не планировал изначально, перед заменой карты она будет извлекаться. Да и не важно это, софтверная часть меня не интересует, мне важна железная часть. Смысл париться о том, до чего еще невероятно далеко?

Ладно, упрощаем задачу - у нас есть сто светодиодов, и десять источников питания, при этом нет возможности использовать ни сдвиговые регистры ни светодиодные драйвера. Нам требуется при команде на ардуину коммутировать определенный светодиод на определенный источник питания.

vde69
Offline
Зарегистрирован: 10.01.2016

Jetro пишет:

Горячую замену делать не планировал изначально, перед заменой карты она будет извлекаться. Да и не важно это, софтверная часть меня не интересует, мне важна железная часть. Смысл париться о том, до чего еще невероятно далеко?

Ладно, упрощаем задачу - у нас есть сто светодиодов, и десять источников питания, при этом нет возможности использовать ни сдвиговые регистры ни светодиодные драйвера. Нам требуется при команде на ардуину коммутировать определенный светодиод на определенный источник питания.

Вы зря так думаете, ну да ладно....

покупаем платы, вроде http://www.ebay.com/itm/262243068830?_trksid=p2060353.m2749.l2648&ssPageName=STRK%3AMEBIDX%3AIT у них есть интерфейс SPI значит на UNO одновременно можно подключить до 15 таких плат (3 пина общие на все, и по 1 управляющему пину на каждую плату), одновременно будет работать только одна, в зависимости от включеного  управляющего пина

более 15 SD я себе слабо представляю :) .... если надо больше - то или использовать более дорогие шины (например "rs485" или "wire"), но к ним нудно будет покупать отдельные модули сопряжения с SD картами, и не факт, что типовые библиотери заработают...

вариант с SPI - самый простой и дешевый, если Вам надо более 15 карт - опишите подробнее что именно Вам нужно...

vde69
Offline
Зарегистрирован: 10.01.2016

Jetro пишет:

Горячую замену делать не планировал изначально, перед заменой карты она будет извлекаться. Да и не важно это, софтверная часть меня не интересует, мне важна железная часть. Смысл париться о том, до чего еще невероятно далеко?

для винды - перекомутация ардуинкой (без извлечения карты) будет видется именно как "пропажа" старого устройства и "обнаружения" нового... то есть "горячая замена", разумеется для этого нужна спец поддержка, которой у тебя нет...

axill
Offline
Зарегистрирован: 05.09.2011

vde69 пишет:

Jetro пишет:

Горячую замену делать не планировал изначально, перед заменой карты она будет извлекаться. Да и не важно это, софтверная часть меня не интересует, мне важна железная часть. Смысл париться о том, до чего еще невероятно далеко?

для винды - перекомутация ардуинкой (без извлечения карты) будет видется именно как "пропажа" старого устройства и "обнаружения" нового... то есть "горячая замена", разумеется для этого нужна спец поддержка, которой у тебя нет...

интересно, как опознается замена? Там что то типа серийного номера используется?

vde69
Offline
Зарегистрирован: 10.01.2016

axill пишет:

интересно, как опознается замена? Там что то типа серийного номера используется?

должна опозноватся, в этом и есть проблемма, что штатно не увидет подмену и будет работать как со старой... например таблицу размещения файлов перезатрет и все....

по этому и требуется от ардуинки эмулировать отключение или еще чего

Jetro
Offline
Зарегистрирован: 25.09.2015

vde69 пишет:

для винды - перекомутация ардуинкой (без извлечения карты) будет видется именно как "пропажа" старого устройства и "обнаружения" нового... то есть "горячая замена", разумеется для этого нужна спец поддержка, которой у тебя нет...

Ай беда! Что-же мне теперь делать?

https://dl.dropboxusercontent.com/u/27680952/Ardu.png

 

Ладно, с учетом того, что вы все равно не хотите обсуждать мою тему, а и далее продолжаете мусолить софтверную часть, предлаю обсудить где лучше на Али покупать ардуины. Мне вот нужно парочку Нано прикупить.

Jetro
Offline
Зарегистрирован: 25.09.2015

А если серьезно - предлагаю забыть мое первое сообщение, и отталкиватся от вопроса/примера с светодиодами. Все, я больше не хочу коммутировать карты памяти, а хочу  коммутировать светодиоды, вот их в частности:

https://dl.dropboxusercontent.com/u/27680952/Ardu2.JPG

Вычитал о такой штуке как мультиплексторы и демультиплексторы, по описани вроди как раз то, что мне нужно. Что скажете?

vde69
Offline
Зарегистрирован: 10.01.2016

Jetro пишет:

Ай беда! Что-же мне теперь делать?

https://dl.dropboxusercontent.com/u/27680952/Ardu.png

 

Ладно, с учетом того, что вы все равно не хотите обсуждать мою тему, а и далее продолжаете мусолить софтверную часть, предлаю обсудить где лучше на Али покупать ардуины. Мне вот нужно парочку Нано прикупить.

какая разница, винда, линукс, андроид или NT и т.д. везде тома монтируются перед использовнием...

собственно монтирование и подразумевает опознание диска...

в противном случае ты должен эмулировать функции BIOS в плане работы с диском, и весь базар в том где это эмулировать на компе или в ардуинке, при работе с одним SD это делает комп... ардуинка то-же умеет эмулировать это, но дело в том, что связь ардуино-комп будет очень тяжелая именно из-за того, что придется эмулировать BIOS или в ардуинке или в нестандартной программе компа...

 

Jetro
Offline
Зарегистрирован: 25.09.2015

В Линуксе есть такая крутая штука как Bash и Shell - они нереально решают, есть еще даже Udev. Короче, запускаем скрипт с определенным параметром, он отмонтирует нужную флешку, на порт Ардуины дает команду на коммутацию флешки, на отключение одной и на подключение на ее место другой. После этого Udev разруливает что с ней делать и куда монтировать, можно монтировать отталкиваясь от подключенного порта, а можно от серийника флешки. Все, после этого спокойно работаем! Ну вот при чем тут биосы-шмиусы, эмуляции какие-то? При чем тут горячие замены? При чем тут файловые системы флешек? Ну вот объясните мне! Чего вы вьелись в софтверную часть? Мне это оставте, тут ничего сложного для меня нет, уж поверьте!

В конце то концов, может все таки о флешках забудем, и вернемся к светодиодам? Не зря-же я фотку делал...