Нужна библиотека двустороннего обмена между двумя Arduino по одному проводу до 10м
- Войдите на сайт для отправки комментариев
Сб, 20/05/2017 - 03:08
Здравствуйте,
Есть главный контроллер и несколько обслуживающих контроллеров (на каждом несколько датчиков).
От главного к обслуживающим идут трехпроводные кабели (до 10м) с проводниками GND, VCC и DATA.
Сейчас DATA соединяет RX главного через мультиплексор с TX обслуживающего.
Т.е. имеем одностороннюю связь от обслуживающих к главному.
Подскажите, пожалуйста, пример или библиотеку, как реализовать двустороннюю связь по одному проводу между двумя Arduino?
Благодарю.
по двум проводам - односторонняя:
RX - TX
GND - GND
библиотека serial
Еще раз: имеем GND,VCC и DATA.
Нужно организовать по DATA двустороннюю связь "а-ля" 1-wire,
только между двумя Arduino.
Как я понимаю
- DATA притянем к VCC,
- у каждого Arduino будет задействовано по 2 pina: одним прижимаем к земле DATA,
другим детектируем уровень на DATA.
Наверное, уже все расписано и отлажено.
Только я, пока, не нашел.
Еще раз: имеем GND,VCC и DATA.
Нужно организовать по DATA двустороннюю связь "а-ля" 1-wire,
только между двумя Arduino.
Как я понимаю
- DATA притянем к VCC,
- у каждого Arduino будет задействовано по 2 pina: одним прижимаем к земле DATA,
другим детектируем уровень на DATA.
Наверное, уже все расписано и отлажено.
Только я, пока, не нашел.
ещё раз: UART, библиотека Serial
схема подключения:
RX - TX
TX - RX
GND - GND
Еще раз: имеем GND,VCC и DATA.
- у каждого Arduino будет задействовано по 2 pina: одним прижимаем к земле DATA,
это как?
Вы меня не поняли.
Нельзя два провода пожертвовать на TX и RX, т.к. у нас для данных всего один провод.
Два других - это питание - GND и VCC.
Без питания обслуживающие Arduino не будут работать.
Так же как сделано прерывание в ds3231, например.
Т.е. ведущий чередует прижимания к земле - и ведомые получают биты.
В DHT11, по-моему, тоже так.
Не хочется изобретать велосипед.
Вот реализацию чего-нибудь подобного LIN нужно https://ru.wikipedia.org/wiki/LIN
ну, можно попробовать по UART одним проводом пользоваться, программно переключая его к RX-TX командой по этой же линии
Можно и такое организовать. Для этого вам нужно все соединяемые дуни объявить принимающими. Какая-то одна должна быть ведущей и отправлять синхронизационный пакет. После этого можно будет общаться. Синхронизацию лучше делать через определенное время. На вторичных устройствах указать разрешенное время чуть меньше периода синхронизации и период передачи должен быть продуман так чтобы не получилось что отправляется информация с нескольких устройств.
https://wifi-iot.com/p/wiki/172/ru/
http://bigbarrel.ru/virtualwire_arduino/
Можно и такое организовать. Для этого вам нужно все соединяемые дуни объявить принимающими. Какая-то одна должна быть ведущей и отправлять синхронизационный пакет.
Дык, ясно.
Еще нужно знать, какие железки и как соединить.
Хотелось бы на оптронах pc817.
Все еще надеюсь найти где-то либу и картинку.
https://wifi-iot.com/p/wiki/172/ru/
http://bigbarrel.ru/virtualwire_arduino/
Спасибо, поковыряю исходники. Пока с железом не ясно.
Библиотека 1-Wire https://www.pjrc.com/teensy/td_libs_OneWire.html подойдет ? Или рассмотрите Modbus
Библиотека 1-Wire https://www.pjrc.com/teensy/td_libs_OneWire.html подойдет ? Или рассмотрите Modbus
Поскольку там есть код и для мастера и для slave - похоже на то, что нужно. Спасибо!
Надеюсь, код работает на прерываниях.
С железом все еще не до конца понятно.
Во-первых, у меня топология получается - звезда.
Как будет работать 1-wire на звезде?
Во-вторых, можно запитать шину 1-wire от 3.3в и от 12в.
Что выбрать?
Даже на 10м могут быть наводки. Хочется развязку по питанию.
Хотя, раз земля одна на всех, нужна не развязка, а защита от перенапряжения.
Нашел appnote avr274 как раз про однопроводную двустороннюю передачу по uart.