Эмулирующее 1-проводное устройство (а)


10

Я хочу сделать так, чтобы ATTiny IC стал ведомым на 1-проводной шине с собственным S / N и списком команд для своих специфических функций.

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

Например, в одной комнате может быть ведомое устройство с несколькими типами датчиков, которые будут сообщать мастеру запрашиваемую информацию, или мастер может сказать ему управлять чем-то вроде жалюзи.

Вопрос Должен ли я контролировать линию шины и отвечать на запрос от мастера, а также принимать во внимание то, как обычный датчик будет отправлять данные? На какой частоте должен работать подчиненный, чтобы получить наилучшую функциональность?

Я не буду использовать паразитическую силу, как примечание.



@ Гербен - я нашел это раньше в поиске. Пролистал. Но я был обеспокоен, потому что были некоторые ошибки, хотя и исправлены, я не знаю, надежность. Также поиск проектов противника с использованием пользовательских рабов не казался обычным делом, поэтому вопрос выше.
RSM

Кажется, что библиотека поддерживает это. Вот библиотека специально для этого, я думаю. Скорость кажется около 15 кбит / с. Я думаю, что скорость процессора не имеет большого значения, но это зависит от библиотеки. Если он не работает от батареи, просто запустите его на 8 МГц или 16 МГц, и все должно быть в порядке.
Гербен

@ Гербен Я протестирую библиотеку, чтобы увидеть, как она работает. Одна вещь, которую я до сих пор не понимаю, почему некоторые вещи так редко не используют однопроводное ведомое устройство?
RSM

@RSM Вы должны проверить эту библиотеку github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Ответы:


3

Насколько я знаю, 1-проводная библиотека, которую вы связали в своем вопросе, позволяет действовать только как мастер, а не как раб.

Я только что выпустил библиотеку, чтобы превратить плату Arduino в 1-проводное ведомое устройство, здесь: https://github.com/neuoy/OneWireArduinoSlave (edit: перенесено сюда https://gitea.youb.fr/youen/OneWireArduinoSlave ). Я использую его в своей собственной системе домашней автоматизации, и она работает безупречно в моей настройке (1-проводный мастер, DS9490R, подключен к ноутбуку через USB, а также обеспечивает питание для Arduino, который является Arduino Uno). Библиотека обрабатывает детали низкого уровня: соответствие rom, отправка и получение байтов (что на самом деле довольно сложно сделать правильно, в основном невозможно без логического анализатора). Остальное зависит от тебя.

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

Я также знаю, что существует по крайней мере еще одна библиотека, https://github.com/MarkusLange/OneWireSlave , как прокомментировал выше Ryu_hayabusa. Это не сработало для меня (не знаю, из-за моей настройки оборудования или по другой причине), но определенно работает для других, так что стоит попробовать. Кажется, эта библиотека не реализована с прерываниями, поэтому ваша программа блокируется во время ожидания основной операции (что вполне приемлемо во многих сценариях).


Похоже, что хранилище перемещено в gitea.youb.fr/youen/OneWireArduinoSlave
Jonas Berlin

1
@JonasBerlin Действительно, я переместил хранилище (просто отредактировал ответ, чтобы отразить это). Я оставляю старую ссылку в качестве резервной копии на всякий случай и в качестве ссылки, чтобы найти других людей на GitHub.
youen

Должны ли проблемы быть скопированы, возможно?
Йонас Берлин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.