Ардуина и два десятка сенсоров.

DsKTY
Offline
Зарегистрирован: 30.07.2012

На объекте нужно разместить около трёх десятков датчиков. Датчики разнообразные. Часть вешается на цифровые пины, часть на аналоговые, часть на I2C. Всё выглядело предельно просто, до определённого момента...

Вопрос возник, когда я начал планировать размещение I2C-датчиков. Всего их около 10 штук. По началу, думал повесить их все на одну линию, подобрать подтягивающие резисторы и радоваться жизнь. Проблема вылезла в том, что ограничение на емкость I2C-шины 400пф. Десяток датчиков даёт где-то около 100пф в сумме. Но ведь есть ещё и провода до этих датчиков. Стандартная витая пара имеет около 56пф на метр кабеля. А это значит что, больше 5-6 метров суммарной длины провода использовать вряд ли получится.

Вот тут и возникает вопрос "Что делать?".

Как вариант, была мысль сделать промежуточные контроллеры на недорогих PRO-Mini и связать их с "Головным" контроллером по UART. На промежуточные, соответсвенно повесить сенсоры, и собирать данные, а на голову слать уже собранные пакеты данных.Для надёжности навесить на UARTы контроллеров MAX232. Но тут возникла проблема в том, что даже если взять Arduino Mega для головного устройства, она имеет всего 4 UARTа - а этого маловато. Программный UART, как я понял, не умеет читать одновременно из разных источников, а значит, могут быть проблемы.

Решил закинуть вопрос на форум. Может коллективный разум подкинет хорошую мысль.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Недорогих - ключевое слово ?

если не очень, собирайте на езернете. enc28j60 с проминькой замечательно работает.

а еще можно сделать автономные сенсоры на базе esp8266 и собирать данные по воздуху. Причем ею же датчик и обслуживать

http://esp8266.ru/arduino-ide-esp8266/

DsKTY
Offline
Зарегистрирован: 30.07.2012

Хм. Мысль интересная, как-то сразу не подумал о эзернете.

Правда, езернет, потребует, по всей видимости, отдельного хаба, что бы все сигналы как-то собрать вместе. Немного избыточно.

Тем временем, подумал о том, что бы попробовать посадить все датчики  дуинами на одну UART-шину и опрашивать их с головного контроллера уже по отдельности. Потестировал соединение NANO<->MAX232 <-----> MAX232<->NANO. По дальности пробивает неплохо. На 35 метрах провода из кусков телефонной лапши и чего попалось под руку работало на скорости 115200. 

Но, конечно, хотелось бы придумать что-то попроще и постандартнее.

inspiritus
Offline
Зарегистрирован: 17.12.2012

С эзернетом протокол придумывать не нужно и адресация тоже стандартная. По вайфаю вообще удобно.

vov4ik
Offline
Зарегистрирован: 10.09.2013

DsKTY пишет:

Вот тут и возникает вопрос "Что делать?".

Решил закинуть вопрос на форум. Может коллективный разум подкинет хорошую мысль.

Вариантов много один из них 

Проводное соединение Arduino при помощи RS485

DsKTY
Offline
Зарегистрирован: 30.07.2012

Да. RS485 по сути аналогичен RS232. 

И, похоже, что без дополнительных контроллеров выполняющих функцию I2C<->UART не удастся. Может даже обойтись просто чипом АТМега и микрухой вроде MAX232. Стоить будет меньше 2$ на штуку.