Arduino_____USB Hub_____Arduino

jjdrive
Offline
Зарегистрирован: 16.11.2012

Здравствуйте! Возможна ли такая схема обмена данными на ардуино через  USB Hub?

Zapek@n
Offline
Зарегистрирован: 16.02.2012

Могу ошибаться, но ИМХО не получится. Кто здесь будет USB host? Более того, даже Arduino Due, с помощью библиотеки USBhost  не сможет так работать, т.к. в описание к библиотеке прямо указано, что работать через хаб не будет.

leshak
Offline
Зарегистрирован: 29.09.2011

И да и нет. "напрямую" они не смогут между собой общатся. Хаб должен будет быть втыкнуть в комп, где будет программа открывающая сразу четеры COM-порта и занимающаяся "трансфером данных" между ними.

Если "комп не нужен", то одна из ардуин должна содеражть USB-хост шилд. И "заниматся тем же самым".

Но не очень ясно "а зачем тут вообще USB". Зачем в цепочке Arduino1->Serial->Usb->HUB->PC->HUB->USB->Serial->Arduino2 то что выделенно жирным.

Ардуины вполне могут общатся и между собой напрямую. И через тот же Serial и i2c и SPI и 1/2-wire и "что-то свое дрыгая ногами".

jjdrive
Offline
Зарегистрирован: 16.11.2012

leshak пишет:

И да и нет. "напрямую" они не смогут между собой общатся. Хаб должен будет быть втыкнуть в комп, где будет программа открывающая сразу четеры COM-порта и занимающаяся "трансфером данных" между ними.

Если "комп не нужен", то одна из ардуин должна содеражть USB-хост шилд. И "заниматся тем же самым".

Но не очень ясно "а зачем тут вообще USB". Зачем в цепочке Arduino1->Serial->Usb->HUB->PC->HUB->USB->Serial->Arduino2 то что выделенно жирным.

Ардуины вполне могут общатся и между собой напрямую. И через тот же Serial и i2c и SPI и 1/2-wire и "что-то свое дрыгая ногами".

У меня ног на ардуине не осталось свободных)  

А как 4 ардуины связать по Serial?

leshak
Offline
Зарегистрирован: 29.09.2011

Ну TX (D1) одной дуины, в RX (D0) другой и наоборот. Так вы "связали две дуины".

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

Я бы, наверное, все-таки I2C для этого выбрал (serial все таки больше для точка-точка, хотя "можно извратится"). Там "адресация" уже заложена изначально.

А ноги осовбодить - смотреть на всякие "сдвиговые", "порт экспандеры" и т.п. Может тогда и четыре дуины не потребуется :)

 

jjdrive
Offline
Зарегистрирован: 16.11.2012

leshak пишет:

Ну TX (D1) одной дуины, в RX (D0) другой и наоборот. Так вы "связали две дуины".

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

Я бы, наверное, все-таки I2C для этого выбрал (serial все таки больше для точка-точка, хотя "можно извратится"). Там "адресация" уже заложена изначально.

А ноги осовбодить - смотреть на всякие "сдвиговые", "порт экспандеры" и т.п. Может тогда и четыре дуины не потребуется :)

 

Хотел тем самым добиться универсальности. Так чтобы была маленькая сеть из ардуин и если необходимо то можно было бы подключить в эту сеть железку с Linux(типа TP-Link MR3020) и все это вывести в интернет )

maksim
Offline
Зарегистрирован: 12.02.2012

Что бы подключить все дуины "параллельно" и так что бы любая дуина могла слышать/говорить с любобой другой нужно соединить все TX и RX выводы в один провод, тоесть по этому проводу будут и передаваться и приниматься данные, а это как вы понимаете не есть хороший вариант. 

Если вам уж прям так неообходима сеть на UART, то можно соединять все дуины последовательно в кольцо, тогда (как уже написано выше) вам понадобится адресация, но не надо будет думать как организовать неодновременную передачу нескольких дуин. Дуины соединенные в кольцо должны работать по принципу "не мое - передай дальше". Если интересно могу разъяснить.

leshak
Offline
Зарегистрирован: 29.09.2011

Кольцо невесело тем, что один обрыв или одна дуина заглючила и сразу несколько "в пролете". Лучше уж общая шина. Но опять-таки уже изобрели I2C и аппаратно реализовали.  Или взять еще одну дуину "центральную" для связи с роутером и делать "звезду".

Тогда и роутер не обязателен. Ставим на центральную эйезрент шилд и "сеть у нас в интернете" :)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

TX & RX не стоит использовать, если соединение не один к одному. Плохо и больно будет :) Во всяком случае я бы не советовал даже пробовать. Уж тогда точно I2C и один из них мастер, который и будет накапливать/запрашивать информацию с других. На счет обрывов сложнее, заморачиваться нужно только если это действительно нужно в противном случае из пушки по воробьям. А к I2C можно, предполагаю, можно много Ардуин подцепить, да и не только их, как я понимаю, интерфейс часто используется и в других устройствах.

 

leshak
Offline
Зарегистрирован: 29.09.2011

kisoft пишет:

TX & RX не стоит использовать, если соединение не один к одному. Плохо и больно будет :) 

Это почему? Ну токоограничивающий резюк на TX поставить и "Та йижте, дамо, не бийтеся, нияка трясця вас не визьме! отвечает та. Уси ж йидять." (С)  ;)

Но согласен. Что-то "извращенное" в этом есть :)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Я еще RS232 пользовал. Хоть сам ничего не сжег, но что это я знаю :) Потому с тех времен осталась "боязнь".

А I2C прикольная штука, спасибо, ТС, я хоть почитал про неё. Если нужна возможность расширения, самое оно. К тому же, если я правильно понял, в Ардуино - аппаратная поддержка, еще лучше.

 

leshak
Offline
Зарегистрирован: 29.09.2011

kisoft пишет:

А I2C прикольная штука, спасибо, ТС, я хоть почитал про неё. Если нужна возможность расширения, самое оно. К тому же, если я правильно понял, в Ардуино - аппаратная поддержка, еще лучше.

Верно. В амтеловских даташитах она еще под именем TWI встречается (отголоски борьбы за торговые марки или что-то подобное).

В ардуино оно фигугирует под именем Wire библиотека

Casper
Offline
Зарегистрирован: 02.10.2012

Оппа. А я связывал посредством LIN шины. Просто Rx/Tx не захотели работать всем скопом.

Casper
Offline
Зарегистрирован: 02.10.2012

Ну и далее по протоколу LIN

Адрес / длина / данные / контрольная сумма.