Связь микроконтроллеров по звонку

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

У меня была идея, что я могу использовать два из этих проводов для обеспечения 3,3 В, а два других использовать для межсоединения. От конца до конца кабель около 30 метров.

Есть ли какая-нибудь легко доступная и реализуемая коммуникационная технология, которую я могу использовать?

У меня есть только теоретические знания, и я в основном знаю только Ethernet. Теоретически 10- и 100-мегабитный Ethernet используют CSMA/CD и имеют полудуплексный режим работы, для работы которого требуется только один канал, т. е. 2 провода.

В «сложной» настройке будет центральный концентратор, и каждое устройство будет напрямую подключено к этому концентратору. Поскольку у концентратора нет никакого интеллекта, можно было бы забыть о концентраторе и просто использовать один провод для подключения всех выводов 1 и использовать другой провод для подключения всех выводов 2, эффективно создавая шину. Я предполагаю, что мне придется припаять несколько резисторов на концах, но это определенно наименьшая проблема всей идеи. Со всеми интеллектуальными возможностями конечных точек рабочий Ethernet кажется возможным.

Есть 10Base2 и 10Base5. Я бы посмотрел на что-то вроде 10BaseBell. Конечно, за пределами каждого стандарта, и он не будет работать так же хорошо, как 10Base2. Но может ли это сработать? Кто-нибудь когда-нибудь пробовал и документировал такие вещи с последними микроконтроллерами, которые имеют интерфейс 10/100 Ethernet ?

Или есть что-то еще готовое для использования поверх этих несчастных проводов? Это был бы просто забавный проект в свободное время, так что никаких реальных требований, но работающее TCP-соединение между несколькими микроконтроллерами было бы здорово!

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

Как быстро вы хотите, чтобы эта ссылка работала? Кроме того, подходит ли установка ведущий/ведомый, и хотите ли вы подавать питание по кабелю или только данные с узлами с независимым питанием?
@ThreePhaseEel: Пока я бы согласился на «работу». Если я смогу получить 1 Мбит/с, когда есть только два активных узла, это уже превзойдет мои ожидания. Тем не менее, некоторые 40-50 кбайт/сек, поддерживаемые 4-8 активными устройствами, были бы очень кстати. Питание будет проходить по двум другим проводам, но по тому же кабелю. Если Master/Slave в порядке, это зависит от того, как определяются роли и как/могут ли они меняться.
Кроме того, вы привязаны к стеку TCP / IP или работает какой-то совершенно другой протокол?
@ThreePhaseEel: мне бы очень хотелось TCP/IP, но я думаю, что могу обойтись и без него. Я предполагаю, что для меня это в основном зависит от наличия кода и объема памяти альтернатив.
RS-485 — это то, что вам действительно нужно.
@Majenko - я рассматривал RS-485, но подозреваю, что CAN лучший выбор для его приложения.
Чтобы повторить X для вашей проблемы Y, дифференциальный многоточечный последовательный порт определенно получит вашу информацию, например RS-485. Вы также, вероятно, не захотите распределять 3,3 В, но по крайней мере 12 В с понижающими регуляторами везде, где вы подключаете устройство.
@ThreePhaseEel Или CAN - оба хороши для этого приложения. Пока существует дифференциальная сигнализация и не требуется заземление, не имеет значения, какой именно протокол выбран...
Двухпроводные интерфейсы, 10Base5 и 10Base2, требуют специальных приемопередатчиков (PHY), которые устарели. Физическая схема сильно отличается от 10/100Base-T. Например, 10Base5/2 несбалансированы и используют уровень сигнала на среднем проводе для обнаружения коллизий.
@rioraxe Тем не менее, 10BaseT по-прежнему выполняет CSMA / CD и все такое ... по крайней мере, это должно ... и это PHY, который я ожидал бы от современных микроконтроллеров.
10Base-T обнаруживает коллизию при отправке по одной паре путем обнаружения приема по другой паре.

Ответы (1)

Современный Ethernet, как вы правильно подозреваете, предназначен для структурированных сетей, а не для подвешивания случайных устройств к случайным участкам кабеля — семейство физических уровней XBaseT является двухточечным, при этом все обнаружение коллизий выполняется в IC центрального концентратора (или нет, если у вас есть коммутируемая сеть, что в наши дни является нормой). Однако , учитывая, что вы не пытаетесь работать так быстро, другие физические уровни, разработанные для многоабонентских приложений, гораздо более практичны для вашего приложения.

Два особенно выделяются среди остальных: сеть контроллеров (CAN) и RS-485. Они используют дифференциальную передачу данных (что-то вроде современного Ethernet), но являются многоточечными (в отличие от Ethernet по витой паре) и могут поддерживать умеренные скорости передачи данных (от 100 кбит/с до 1 Мбит/с и более) по длинным кабелям (30 м — это не проблема для любого из них). один).

Однако RS-485 — это только физический уровень (спецификация приемопередатчика), который позволяет пользователям предоставлять свой собственный уровень канала передачи данных (например, специальный UART с некоторыми дополнительными функциями), в то время как CAN также обеспечивает уровень канала данных — можно найти широкий спектр микроконтроллеров со встроенной поддержкой CAN (все, от частей ATmega, таких как AT90CAN32, связанный с ATmega328 Arduino, до мощных 32-битных ARM, использующих ядра Cortex-M4 или M7, а также автомобильные системы на кристалле со встроенным CAN контроллеры), а также доступны автономные ИС контроллера CAN (MCP2515 разработан для простого взаимодействия с микроконтроллером).

Кроме того, возможна и задокументирована передача IP по CAN , а карты CAN доступны для ПК (включая поддержку Linux, хотя похоже, что если вы хотите использовать IP через CAN в Linux, вам придется немного настроить ядро).

И последнее, но не менее важное: CAN обычно выполняется с использованием 3 проводов — двух дифференциальных линий передачи данных и общего заземления для всех узлов. Изоляция осуществляется в каждом узле с помощью оптронов или цифровых изоляторов между приемопередатчиком CAN и контроллером CAN. Вы можете использовать четвертый провод для питания, скажем, 12 или 24 В, если хотите, хотя я бы не стал подключать к нему больше ампера.

Я быстро погуглил, и с учетом TCP/IP подход CAN кажется намного проще в реализации. Я не изучал требования к мощности для CAN, но 1 AMP при 24 В выглядит больше, чем мне когда-либо понадобится.