Предыстория: я пытаюсь заменить электронику на хоккейном табло. У старой электроники были следующие проблемы:
Размер табло примерно 3,5 метра в поперечнике.
Я планирую воткнуть Raspberry Pi в табло. Я планирую поставить USB-ключ Wi-Fi, поддерживающий режим AP, и запустить hostapd. Затем счетчики могут подключиться к Raspberry Pi через веб-интерфейс с планшета/ноутбука.
Планирую заменить лампы накаливания на светодиоды, возможно OSRAM LR G5AP-BZCZ .
Изначально я планировал использовать удлинители i2c GPIO. Но с тех пор я узнал, что проводка для шины i2c должна быть как можно короче. Это означало бы, что мне понадобится много кабелей от gpios до светодиодов. Отсюда я прихожу к своему вопросу.
Вопрос: Я хотел бы иметь микропроцессор AVR для каждых 7 сегментов или каждых 2 7 сегментов, работа которых является удлинителем GPIO. Они будут размещены физически рядом со светодиодами. Я хотел бы общаться от Raspberry Pi к нескольким микропроцессорам AVR через общую последовательную шину.
Я читал, что RS-485 может иметь несколько хостов на шине. И поскольку мое общение происходит в одном направлении (выход от Raspberry Pi), я надеюсь, что это может упростить решение.
Могут ли Raspberry Pi и AVR использовать RS-485, используя существующие последовательные интерфейсы? Какая схема нужна для этого?
Доступны стандартные микросхемы приемопередатчиков RS422/RS485.
Здесь вы найдете много страниц, посвященных микросхемам, связанным с RS485, на сайте Digikey.
При желании вы можете использовать стандартные асинхронные последовательные данные с использованием RS485. «Создание собственного» многостанционного кода не должно быть слишком сложным [tm], но это часто изобретаемое колесо — многие люди уже предлагают программное обеспечение (в основном бесплатное), которое делает это.
Шина CAN работает поверх RS485, но, вероятно, избыточна для того, что вы хотите.
Превосходная заметка о применении
AN-218 Реализация многоабонентской сети RS-485
Это предназначено для ZBASIC, но может иметь прямое отношение к вашему приложению.
Схема многоточечной проводки RS485 и сравнение RS232 и RS485
Они говорят -
RS485 иногда называют многоточечной локальной сетью RS485, поскольку он может соединять несколько устройств в сетевой среде локальной сети. Все эти устройства подключены к одной паре проводов. Передача и прием используют одни и те же два провода.
Официально спецификация RS485 допускает только 32 узла (устройства) в локальной сети. Однако производители интегральных схем разработали драйверы RS485, способные поддерживать от 128 до 255 узлов в локальной сети RS485. Мы используем эти драйверы RS485 следующего поколения в наших продуктах. Это означает, что вы можете использовать наши преобразователи и устройства удаленного ввода-вывода в более сложных ситуациях.
Пока другие отвечают на заданный вами вопрос, я хочу обсудить ваши опасения по поводу i2c. 3,5 метра — это чуть меньше 11,5 футов. Глядя на доску, можно увидеть, что от самой правой цифры до самой левой цифры всего 10 футов (3 м). Теперь учтите, что вы можете поместить RPi в мертвую точку, и мастер i2c не обязательно должен находиться в начале физической шины, это действительно 5 футов по обе стороны от шины. Откровенно говоря, любая шина I2C может работать на 3 м сама по себе. Я лично сделал 10м. И это без удлинителей шины. Вы можете получить километры и мили , используя буферы i2c, или даже удвоить / утроить обычную шину с мультиплексорами i2c.
При подключении RPI посередине шины у вас не возникнет проблем с падением напряжения на высоте 1,5 м. Можно использовать витую пару (ethernet cat 5/5e), но вы можете добиться еще большей производительности с помощью cat 6 (экранированная витая пара). В лучшем случае вам, возможно, придется замедлить шину, но для вашего приложения? Вам не нужно обновлять какую-либо конкретную вещь более одного или двух раз в секунду (часы времени).
Более того, модель RPI Model B, Rev 2 (последняя) имеет две настоящие шины i2c. Вы также можете получить доступ ко второму автобусу.
Короче говоря, вы можете использовать i2c без единой проблемы. (Черт возьми, в зависимости от того, как подключены существующие светильники, вам, вероятно, даже не нужно запускать шину i2c по всей длине платы.) Конечно, это дешевле или сложнее, чем использование нескольких микроконтроллеров и реализация RS485.
Поскольку ваша связь осуществляется только от Raspberry Pi к AVR, вы можете использовать RS-232. Передатчик RS-232 может без проблем питать несколько приемников RS-232. Возможно, вы также могли бы просто использовать логические уровни напрямую от UART Pi к UART AVR, хотя использование уровней RS-232 может упростить отладку.
НикХалден
Крейг