Многопоточное получение данных со NNN-датчиков

Тема в разделе "Raspberry Pi", создана пользователем kise97, 11 июл 2017.

  1. kise97

    kise97 Нерд

    Здравствуйте!

    Передо мной стоит следующая задача. Подключить к rasberry pi датчики и управлять ими в параллельном режиме (т.е. передавать им данные и принимать данные от них).

    Для условности, есть 100 датчиков, каждый из которых постоянно будет либо принимать небольшой блок информации, так и отдавать (размер данных порядка 1кб). Каждый из этих датчиков может отдавать данные либо напрямую по GPIO, но так же возможна передача по ethernet, usb кабелям, но я думаю, что напрямую по GPIO будет быстрее, не так ли?

    И собственно есть вопрос: как мне подключить эти 100 датчиков к rasberry pi? Проблема в том, что, если мне не изменяет память, у rasberry pi всего 25 GPIO интерфейсов.

    Заранее прошу прощение за ламерство и спасибо за любую помощь и совет! :)
     
  2. mcureenab

    mcureenab Гуру

    Для подключения используй шинную топологию.
     
  3. rkit

    rkit Гуру

    Может вы для начала определитесь, какие именно датчики собрались подключать? Это важно, вообще говоря.
     
  4. kise97

    kise97 Нерд

    Интересный вариант, но, признаюсь, немного не понял как я это могу реализовать при помощи rasberry pi. Потому что как я понял, это все некоторые отголоски коммутатора, не так ли? Если да, то коммутаторы размером 1U всегда идут с макс 48 разъемами. Да, такой вариант я не стал бы исключать, НО 100 датчиков == 2 коммутатора, которые будут стоить в лучшем случае по 8000р за штуку.

    К слову, в шинной топологии, если один датчик "умер", то умирает вся сеть, что не есть хорошо. Поэтому такой вариант меня не устраивает... :(

    Вас интересует конкретная модель датчиков? На самом деле, это все неважно, единственная важная деталь - это то, что я могу реализовать на этих датчиках передачу данных при помощи многих интерфейсов (например USB, Ethernet и т.д.).
     
  5. rkit

    rkit Гуру

    И чего вы тогда хотите, я не понимаю? Чтобы вам кто-то наугад сказал какое-нибудь слово, не имеющее никакого отношения к вашей секретной задаче, которой никто не знает? Ну ладно, используйте 4-20мА токовую петлю.
     
  6. mcureenab

    mcureenab Гуру

    USB, Ethernet... а при чём тут GPIO? Вы огласите весь список.

    Если Ethernet..., то хабы собираются в стек и получаете сотни портов.

    Без хабов - радио. Тот же WiFi.
     
  7. kise97

    kise97 Нерд

    Никакой секретности в моей задаче нету :) Просто не видел смысла в объяснении того, как работает каждый из компонентов, но, я думаю вы правы. Не сочтите за неуважение к формучанам, просто не думал, что есть смысл объяснять что в "датчиках" внутри.

    Итак, у меня имеется ~100 компонентов, которые представляют собой обвязку датчика движения, камеры и avr микроконтроллера. Соответственно, мне необходимо постоянно получать данные с датчика, по запросу - фото с камеры.
    Суть в том, что написанный выше датчик работает на ура, но мне нужно завязать работу не одного, не десяти, а >100 таких датчиков, под управлением rasberry pi. :)

    К сожалению, Wi-Fi, как и любую другую беспроводную связь я не смогу реализовать по техническим причинам :(
     
  8. rkit

    rkit Гуру

    Ок. Я не думаю, что вам нужно разместить сто камер в радиусе действия usb (5 метров).
    Тогда вопрос: в каком? И какие требования по питанию? И какие интерфейсы свободны на микроконтроллерах?
     
  9. kise97

    kise97 Нерд

    Да, действительно, но как вариант, сделать 50 метровый USB кабель для меня не составит проблем :)

    Помещение это 2 этажа, общая площадь чуть меньше 5000 кв.м. (складское помещение).

    Микроконтроллер используется atmega128, свободны все интерфейсы, по сути, заняты всего несколько GPIO-интерфейсов, питание 5 вольт.
     
  10. rkit

    rkit Гуру

    Вы камеру подключили к атмеге128 битбангом гпио? Серьезно?
    Слушайте, может вы обратитесь к человеку, который вам сделал эти микроконтроллеры? Ну невозможно разговаривать
     
  11. kise97

    kise97 Нерд

    Используется данная камера https://aliexpress.com/item/-/32648182018.html

    Получается, заняты примерно следующие порты (прошу заметить, у меня не atmega328, а atmega128).
    [​IMG]
    ( http://privateblog.info/arduino-uno-i-kamera-ov7670-primer-ispolzovaniya/ )
     
  12. mcureenab

    mcureenab Гуру

    Мощь! 3м USB уже нифига не работает. Цифровой сигнал затухает. А у вас 50 за здорово живешь.
     
  13. mcureenab

    mcureenab Гуру

    Ну дак к atmega128 еще Ethernet интерфейс с poe прицепить и по локальной сети в малинку.

    Есть еще всякие промышленные шины. Только нафига такие сложности.
     
  14. rkit

    rkit Гуру

    Ок. Сделайте конвертер usart-rs232. Протокол свой с синхронизацией по таймслотам. Сеть в экранированной витой паре по вашем складу даст пропускную способность в 2кб/с. Если нужно больше, то проще докупить еще пару малин и связать хоть по вайфаю, хоть по езернету. .
     
    kise97 нравится это.
  15. rkit

    rkit Гуру

    Ах да, на малине аппаратный uart говно, так что придется прикупить usb-переходничок.
     
  16. Igor68

    Igor68 Гуру

    А как работает? или главное провода на 50 метров с разъёмами на концах. Я восхищаюсь. Тут блин RS485 и КСВ присутствует... согласование и т.п. А тут аж USB - круто!!! Вот мне бы так:rolleyes:
     
  17. kise97

    kise97 Нерд

    Судя по всему, так и поступлю, огромное вам спасибо за наводку ;)

    Не стоит придираться к словам :DЯ шутки ради это написал, но да, главное это 50 метров и два разъема на концах:)
     
  18. Igor68

    Igor68 Гуру

    Простите... думал серьёзно. Не принимайте близко к сердцу:). Смогу помощь оказать по "сборке" малин в единую сеть... (и по wifi в сеть тоже).
     
    kise97 нравится это.
  19. kise97

    kise97 Нерд

    @rkit, @Igor68, @mcureenab еще раз спасибо всем за помощь, в данной задаче остановился на RS485 с применением MAX485!
     
  20. Unixon

    Unixon Оракул Модератор

    @kise97, RS422 можно сделать, по сути тот же 485 только с одновременным приемом и передачей.