Емуляція 1-провідних пристроїв


10

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

Що я хочу знати, якщо я можу використовувати одну провідну бібліотеку з сайту arduino для надсилання даних як раб.

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

Питання: Чи потрібно мені слідкувати за автобусною лінією та відповідати на запит ведучого, а також брати до уваги спосіб, як нормальний датчик надсилатиме дані? На якій частоті я повинен запускати підлеглого для отримання найкращої функціональності?

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



@Gerben - я раніше це виявив. Проткнувся через нього. Але я був стурбований тим, що були деякі помилки, хоча вони були вирішені, але я не знаю надійності. Також пошук недругів за допомогою власних рабів не здавався звичайною справою, тому питання вище.
RSM

Здається, бібліотека підтримує це. Ось спеціально для нього бібліотека, я думаю. Швидкість, здається, становить близько 15 кбіт / с. Я думаю, швидкість процесора насправді не має значення, але це залежить від бібліотеки. Якщо це не акумулятор, просто запустіть його на 8 МГц або 16 МГц, і це повинно бути добре.
Гербен

@Gerben Я перевірю бібліотеку, щоб побачити, як вона працює. Одне, чого я досі не розумію, - це чому так нечасто, щоб у деяких речах не було використано єдиний раб-дріт?
RSM

@RSM Ви повинні перевірити цю бібліотеку github.com/MarkusLange/OneWireSlave
Ryu_hayabusa

Відповіді:


3

Наскільки я знаю, 1-провідна бібліотека, яку ви пов’язали у своєму запитанні, дозволяє виконувати роль лише господаря, а не раба.

Щойно я випустив бібліотеку, щоб перетворити плату Arduino в 1-провідний раб, тут: https://github.com/neuoy/OneWireArduinoSlave (редагувати: переїхав сюди 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
Йонас Берлін

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

Чи варто скопіювати проблеми, можливо?
Йонас Берлін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.