Двусторонняя связь нескольких arduino по SPI

Тема в разделе "Arduino & Shields", создана пользователем Curtis, 30 авг 2017.

  1. Curtis

    Curtis Нуб

    Здравствуйте, уважаемые ардуинщики. Решил сделать один интересный проект, но столкнулся с проблемой. Сразу прошу тапками не кидаться, если мои вопросы покажутся слишком тривиальными, опыта работы с Ардуино немного, только два небольших проекта.
    Суть проблемы :
    Имееются несколько ардуинок, скажем пять. Четыре из них выполняют определённый код, получая исходные данные (значения переменных) от пятой, и передавая показания датчиков ей же. Эта пятая платка, назовём её главным модулем, собирает данные с переферийных устройств и отправляет во внешний мир через сим модуль; и соответственно получает значения переменных (в случае их изменения) от пользователя, также через сим. Связь между главным модулем и переферийными хочу организовать по SPI. Вроде всё просто. Но есть одна загвоздка, связанная с алгоритмом работы. Показания переменных могут изменяться, посредством ручного ввода кнопками непосредственно на переферийном устройстве. В данном случае необходимо, чтобы инициатором связи по SPI стал именно переферийный модуль. Насколько я понимаю, это невозможно в стандартном подключении. То есть Master вешает на ноль пин ss slave модуля, тем самым инициируя сеанс связи. Возможно ли пин ss на мастере так же вешать на ноль со slave модуля, тем самым поменять мастер и слейв на время ? Теоретически это вроде просто. Только будет ли это всё работать и как это выглядит в коде. Не придётся ли после каждого сеанса переопределять spi?
     
  2. rkit

    rkit Гуру

    Не нужно связь инициировать с периферии, достаточно опрашивать ее достаточно часто. А делать это можно хоть пять раз в секунду.
    Вы лучше о физическом размере шины подумайте. SPI очень капризный, и я слабо себе представляю, зачем в пределы допустимой длины проводов толкать целых пять ардуин.
     
  3. Curtis

    Curtis Нуб

    Чем предлагаете заменить spi? Просто uart будет занят под другие цели (дисплей). Опрашивать постоянно мне без надобности, только по запросу.
    Не знал, что spi только на малых расстояниях работает. А если хорошо экранировать плюс попарно витой провод? У меня максимальное расстояние порядка 10 метров
     
  4. BAR__MEN

    BAR__MEN Гуру

    nRF24L01 по SPI и далеко....
     
  5. Curtis

    Curtis Нуб

    Нрф работает на частоте 2,4 ГГц если не ошибаюсь. Если надумаю себе вай фай сделать, боюсь они не подружатся
     
  6. rkit

    rkit Гуру

    Ну любую шину, рассчитанную на боевые условия. Для того же CAN есть дешевые SPI-адаптеры. и связь в каком хочешь направлении.
    С экранами и прочим можно поколдовать, но я бы перед этим посоветовал изучить теорию.
    Нрф и вайфай друг другу не мешают.
     
  7. DetSimen

    DetSimen Гуру

    Software Serial справится на 9600, только зачем провода тянуть? Есть же NRF
     
  8. Curtis

    Curtis Нуб

    А nrf тоже по принципу мастер слейв работает?
    Я просто сам электрик)) проводам доверяю, но идея с беспроводной связью действительно интересная
     
  9. BAR__MEN

    BAR__MEN Гуру

    Сколько у меня беспроводных проектов все nRF и для ваших целей думаю что подойдет.
    С вайфаем проблем небуду если выбрать пустой канал который он не использует,6 устройств можно поставить для общения между собой ,можно принцип один говорит все слушают и наоборот.
     
  10. Curtis

    Curtis Нуб

    Во время сеанса связи по nrf возможно одновременно передавать и получать данные? Ну и соответственно общаться с конкретным абонентом, а не со всеми сразу?
     
  11. BAR__MEN

    BAR__MEN Гуру

    С конкретным можно, там есть такое-трубы:идентификатор для связи,передавать и принимать одновременно?! Нет, а если передать, а потом принять то можно если менять режим
     
  12. Curtis

    Curtis Нуб

    То есть инициатором сеанса связи может быть только одно устройство? Или можно менять ведущего в зависимости от того, кто хочет передать значения переменной (при наличии его изменения)
     
  13. BAR__MEN

    BAR__MEN Гуру

    Можно
     
  14. BAR__MEN

    BAR__MEN Гуру

    Но нужно чтобы уст-во которое было ведущим стало ведомым
     
  15. Curtis

    Curtis Нуб

    Отлично. Будем курить описания и заказывать nrf на пробу.
     
  16. Curtis

    Curtis Нуб

    Наверное код мудреный получится...
     
  17. BAR__MEN

    BAR__MEN Гуру

    Поначалу да потом неочень
     
  18. BAR__MEN

    BAR__MEN Гуру

    Будете с Китая Брать?! Если нужно дам ссылку на качественные модули
     
  19. Curtis

    Curtis Нуб

    С него, родимого)) Если не затруднит, то ссылочка пригодится
     
  20. BAR__MEN

    BAR__MEN Гуру