Доступ к файлам на компьютере по USB - возможно?

Draghkon
Offline
Зарегистрирован: 17.09.2013

Здравствуйте, в программировании на С - опыта особого нету - поэтому возникают такие вопросы.

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

Городить дополнительные шилды с SD картой или USB хостом очень не хочется, тем более, что управление дуиной планируется реализовать через mini PC на Линуксе, где уже есть свой слот под микро СД.

Подключить хочу через тот же провод ЮСБ, через который осуществляется прошивка - собственно вопрос - можно ли получить доступ к слоту карты памяти на устройстве таким образом? (или тупо подключив по этом порту usb внешний кардридер?)

Или только жопным способом, отправляя данные по Serial и записывая их в файл уже на стороне Линукса - и также посылая их обратно?

Если можно, то подскажите, как? библиотеки для sd тут не работают.

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

 

PS

Поиском искал - ответа не нашел.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Ну если работать с файлами на компьютере -то придется писать программу на компьютер - без этого никак.

Если на линуксе то рекомендую язык Python.

Програмка которая показывает данные, управляет параметрами - и все это через Serial по собственному протоколу.

Клапауций
Offline
Зарегистрирован: 10.02.2013

>тем более, что управление дуиной планируется реализовать через mini PC на Линуксе, где уже есть свой слот под микро СД

не совсем понял, где тут "более чем"...

если карта не на борту дуино располагается - нет такого желания, а располагается на борту PC, то как можно записать данные дуино на карту, кроме как слив их по сериалу и средствами системы записать на подключенный по USB ридер SD?

*задумался, каким софтом в линуксе данные пишутся во что-нибудь.

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

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Линух может открыть на порту(/dev/ttyS0) консоль(/bin/sh), а консоль это доступ к файлам через стандартные команды:

добавить строку в файл:

echo "test">>"/home/user/data.txt"

получить стороку содержащую param=

cat "/home/user/settings.txt"| grep "param="

Погуглите как это настраивается. Но тогда скетч получится жирным - строки эти ничем не сократишь...

Без доп софта только через консоль!

Draghkon
Offline
Зарегистрирован: 17.09.2013

Спасибо)

Прямой доступ, я имел ввиду то, что при подключении например к компьютеру miniPC определяется как флешка с доступом к внутренней памяти и к карте.

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

 

По поводу команд линукса нагуглю обязательно, спасибо. С линуксом пока что знаком только по наслышке, поэтому может чего не знаю. 

Я так понял что эти команды надо забить в консоль на стороне компа, а не дуины. тогда разрастание скетча не проблема там память не ограничена.

И в таком случае, использовать Питон не нужно? можно обойтись командами в консоли (например добавить эти команды типа в автозагрузку)?

а то питон это еще новый язык, а я с ардуиновским еле разобрался.

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Draghkon пишет:

Прямой доступ, я имел ввиду то, что при подключении например к компьютеру miniPC определяется как флешка с доступом к внутренней памяти и к карте.

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

Для этого вам необходим USB Host Shield - чем это лучше просто SD-шилда не знаю.

Draghkon
Offline
Зарегистрирован: 17.09.2013

Клапауций

Ну по идее, тем что к усб-шилду можно подключить кардридер который читает не только SD, а еще и CF и MMC хотябы... а еще можно подключить внешний хард, флешку или принтер... незнаю будет ли работать но вроде должно, почему нет?

А к SD - шилду - только Sd и micro sd карточки.

Просто я думал что ЮСБ (COM) порт на дуине нее только для IDE сделан.. а вполне себе настоящий полноценный USB.. выходит что нет.

 

ТОгда уж лучше передавать по Serial порту - это по крайней мере не  займет никаких пинов на дуине.

 

Остается только вопрос - есть ли готовый обработчик на стороне компа и библиотека для дуины под него.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Команды эти формирует посылает arduino, а комп на них отвечает. Большую часть обработки файлов можно повесить на комп, но запросы должни идти от микроконтроллера.

Получается что при подключении Arduino к компу она определяется как последовательный порт.

http://vladimir-stupin.blogspot.ru/2009/09/ubuntu.html

Научитесь работать в консоли чтобы понять что вам нужно.

Но ардуино должен слать только команды в консоль, если нужно сообщить о состоянии то выводить это комндой записи в файл, вместо "Sensors OK" надо слать "echo \"Sensors OK \" >> /tmp/arduino.log" что говорит компу добавить "Sensors OK" в файл /tmp/arduino.log на мини компе из другой консоли(gui) можно посмотреть этот файл командой cat

Клапауций
Offline
Зарегистрирован: 10.02.2013

Draghkon пишет:
Ну по идее, тем что к усб-шилду можно подключить кардридер который читает не только SD, а еще и CF и MMC хотябы... а еще можно подключить внешний хард, флешку или принтер... незнаю будет ли работать но вроде должно, почему нет?

клавиатуру, монитор и мышку...

Draghkon пишет:
Просто я думал что ЮСБ (COM) порт на дуине нее только для IDE сделан.. а вполне себе настоящий полноценный USB.. выходит что нет.

Полноценный такой себе USB - такой же как и в остальных USB-девайсах.

Вам же не приходит в голову подключить к флешке мышку или вэб-камеру, а чего? - пусть напрямую видео на флешку фигачит.  Что, разъёмы папа-папа друг в друга не втыкаются - не важно.

Вы с дуиной маетесь, а я вот два бука не могу по USB друг к другу подключить - вроде и USB полноценный, а не получается, ибо хосты оба.

Draghkon пишет:
Остается только вопрос - есть ли готовый обработчик на стороне компа и библиотека для дуины под него.

Есть. В системе - устройство сериалпорт, на стороне дуино - функция Serial

Draghkon
Offline
Зарегистрирован: 17.09.2013

Спасибо)

Вроде понял вашу мысль: можно слать команды консоли линукса прямо через Serial.print() и линукс будет их понимать.

А если использовать какой-то другой софт как прослойку, то можно возложить работу на него, и тогда можно будет слать в консоль просто поток данных: t1_32;t2_45;t0_24;h2_57; и т.д. А программа будет уже распихивать их в файл по нужным столбцам..  Но для этого нужно уже софт писать, так?

Draghkon
Offline
Зарегистрирован: 17.09.2013

Клапауций

Ну как вариант попробуйте сделать один из концов OTG разъемом - там нужно пару контактов спаять между собой в разъеме usb - в сети есть инструкция.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Draghkon пишет:

Ну как вариант попробуйте сделать один из концов OTG разъемом - там нужно пару контактов спаять между собой в разъеме usb - в сети есть инструкция.

Только драйвер нужно найти для USB-устройства "Ноутбук".