Определить программно какие датчики подключны

igorcds
Offline
Зарегистрирован: 03.12.2013

Здравствуйте.

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

Спасибо.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

igorcds, пожалуй стоит указать о каких конкретно датчиках идёт речь.

igorcds
Offline
Зарегистрирован: 03.12.2013

любых, я имею ввиду чтобы не закоментировать неиспользованную часть кода вручную, а чтобы программа сама "слушала" пины и которые имеют какую либо входную информацию только чтобы та часть кода которая завязана на эти пины и работала.

к примеру PIR sensor и сонар Ultrasonic.

Если в коде будет отработка сонара, но сам сонар будет отключен, то в коде, где идет обработка информации по этому Ultrasonic - будет delay, а если 2-3 сонара.....

 

igorcds
Offline
Зарегистрирован: 03.12.2013

наверное использовать при запитке к примеру Ultrasonic не vcc пин, а цифровой пин и слушать echo....и если пин echo  имеет значение 0 или больше 3500, а вот что дальше сделать? ну поставлю на плюсовой пин LOW, а что с пином echo делать...ехо то все равно ожидает 50мс

внезапная потеря PIR sensorа наверное не влияет на работоспособность системы.

toc
Offline
Зарегистрирован: 09.02.2013

Может немного не в тему...
Наличие подключённого модуля nrf24l01 я определяю так:
1. устанавливаю номер канала (отличный от дефолтного)
2. считываю и сравниваю его
3. совпадает - модуль подключён, иначе нет.
(исплльзую библиотеку RF24).

Geronimo
Offline
Зарегистрирован: 06.05.2013

igorcds пишет:

наверное использовать при запитке к примеру Ultrasonic не vcc пин, а цифровой пин и слушать echo....и если пин echo  имеет значение 0 или больше 3500, а вот что дальше сделать? ну поставлю на плюсовой пин LOW, а что с пином echo делать...ехо то все равно ожидает 50мс

внезапная потеря PIR sensorа наверное не влияет на работоспособность системы.

а сонару хватит тока с цифрового пина?

igorcds
Offline
Зарегистрирован: 03.12.2013

да. действительно не хватит.

Geronimo
Offline
Зарегистрирован: 06.05.2013

Я бы начал решать задачу, с составления таблицы критериев, чтосчитать что датчик подключен

axill
Offline
Зарегистрирован: 05.09.2011

igorcds пишет:

любых

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

Исключение есть только для цифровых датчиков с однозначной идентификацией, например ds18b20

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

У i2c можно определить адрес и по нему тип датчика (из ограниченного множества).

Вот только памяти хватит для всех библиотек?

 

axill
Offline
Зарегистрирован: 05.09.2011

sav13 пишет:

У i2c можно определить адрес и по нему тип датчика (из ограниченного множества).

Вот только памяти хватит для всех библиотек?

адрес можно определить в 1-wire. В i2c адресс определить нельзя (в протоколе нет бродкаста с опросом адресов как в 1-wire), можно только делать перебор адресов в надежде, что на какой-то адрес кто то откликнется

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

мои 2 копейки

1) определиться с датчиками

2) определить ответы от датчиков (определить критерии)

3) выделить переменную стостояния датчика

4) в старт, проводить инициализацию датчика и проверку на ответ, если ответ получен - переменную состояния датчика в TRUE

5) в коде если TRUE - выполнять цикл, связанный с датчиком

Для i2c есть прога i2cSCANER (фактически перебор).В старте сканируете, если есть ожидаемый ответ - то TRUE. 

Если говорить об точности определения аналогово датчика, то смотреть к примеру есть или нет значение от него, понятно что какой именно датчик подключен проверить неполучиться, по будем знать что датчик подключен. А дальше по косвенным признакам определяем исправность \ соответсвие датчика