Для создания беспроводных устройств на базе радиомодуля со встроенным микроконтроллером nRF24LE1 необходимо долго разбираться в его архитектуре(SDK) и c его компилятором, но не всем подсилу такое. Для этого нужно время... Ниже находится конструктор прошивки для nRF24LE1, который сразу реализует основной функционал для умного дома. Конструктор данный момент поддерживает:
 -Подключение датчика влажности DHT11/22, AM2321. температуры DS18B20 , LM75 или  давления BMP085/180.
-Управление разнообразными нагрузками(например реле). Максимальное количество подключаемых нагрузок равно количеству свободных gpio радиомодуля.
 -Чтение входов АЦП, например для аналогового датчика освещенности(фоторезистор)
Конструктор позволяет назначить любые возможные свободные выводы радиомодуля на данные функции.

-Чтение состояния цифровых входов, например состояние механических датчиков.

Настройка беспроводной части

Для полноценного функцианирования беспроводного модуля необходимо задать несколько параметров:

-Адрес(физический) в виде 5 байт для приема и передачи. Конструктор указывает пример для настройки arduino с библиотекой RF24 , например используя Ehternet шлюз или USB переходник. С 2 по 5 байты адреса приема и передачи одинаковые.
-Необходимо задать номер канала от 0 до 125.По умолчанию установлен 100 канал.
-Необходимо включить или выключить автопотверждения приема (AutoAck).
Все параметры, указанные выше должны быть идентичны серверной части -иначе работать не будет !
-Задаем по порядку номер клиента, по умолчанию номер 1. Номер клиента необходим для индефикации беспроводного клиента в эфире. Номер передается всегда в первом байте пакета.
В данный момент опции настройки CRC не выведены и настроены на 16бит.
Мощность передачи установлена на максимум.

В исходящий пакет можно включить 3 счетчика: счетчик передач, счетчик ошибок передач и счетчик принятых команд(например можно узнать пришла ли команда)

Опции настройки датчиков

В данный момент можно выбрать три варианта датчика: это датчик влажности DHT11/22, температуры DS18B20 или датчика давления BMP085/180. Вывод для подключения датчика  можно указать в соответствующем поле. По умолчанию там порт 3 (P0.3).

Для датчика  BMP085/180 в данный момент используется програмный i2c. SDA соотвествует полю установки вывода датчиков. SCL будет следущий за ним.

Для экономии ресурсов и размера передаваемого пакета возможно данные передавать не в виде float , а в виде переменной int - для этого необходимо включить соответствующую галку. Данные будут приходить умноженные на 10. У датчика BMP085/180 данные необходимо делить на 1.322.

Подключение нагрузок

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

Для того чтобы назначить вывод для управления необходимо его перечислить в поле "Pinы для режима на вывод" через запятую.

Команда(пакет данных) для управления нагрузками выглядит так:

1 10 5 1 - что значит команда устанавливает единицу на первом беспроводном модуле на 5 GPIO вывод радиомодуля (точнее его микроконтроллера). 10 - это id команды, назначенный в прошивке.

Аналогично управление PWM(ШИМ) выводами:

1 11 1 205 - что значит команда устанавливает уровень PWM на 205 на выводе 1(p0.3). Доступно 2 PWM вывода на радиомодуле: второй находится на p0.2 и имеет вывод номер 0 (ноль).

В данный момент пределитель PWM установлен на 10, т.е. при частоте м/к частота PWM ровна 160 кгц. Если необходим другой делитель, то возможно добавление в конструктор соотвествующей настройки.

Аналоговые входы

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

Аналоговые входы возможны только на входах 0 по 10 радиомодуля !

Цифровые входы

В поле "Pinы для режима на ввод" можно указать выводы радиомодуля, с которых будет считываться логическое состояние. Можно указать несколько входов через запятую. Данные входов будут находится внутри отправляемого структуры пакета.

Режим термостата

Радиомодуль может управлять температурой используя подключенные датчики. Реле (или другое исполнительное устройство) подключается на выход радимодуля,указанное в поле конструктора, по умолчанию там вывод 10(P1.2).

По умолчанию температура срабатывания установлена в 22 градуса. А температура отключения - 24 градуса.

Эти параметры легко изменить подав команду радиомодулю:

1 15 30 35 - что значит подаем команду 1 радиомодулю, устанавливаем температуру(код 15)  нижний предел включения 30 градусов. верхний предел выключения 35 градусов.

Режим "влагостата"

Режим аналогичен режиму термостата. Управляется аналогично:

1 16 50 80 - что значит подаем команду 1 радиомодулю, устанавливаем влажность (код 16)  нижний предел включения 50 процентов. верхний предел выключения 80 процентов.

Сохранение настроек в энергонезависимую память

Настройки сохраняются в энергонезависимой память командой 1 18 0 0. В данный момент поддерживается сохранение настроек термостата и влагостата.

Спящий режим

В данный момент поддерживается спящий режим Register retention, который снижает энергопотребление с 5 мА до 250 мкА 20мкА!!

Еще один режим энергопотребления - Memory retention, который снижает энергопотребление до 1 мкА !!

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

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

Настройка серверной части

Конструктор автоматически генерирует структуру , которую можно сразу вставить в код сервера, например в Ehternet шлюз, а так же в WI-FI шлюз (Новое !) В данный момент Wi-FI шлюз реализует достаточно большой функционал и не требует написания/правки кода для настройки.

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

Конструктор находится на стадии доработки. Возможны ещё другие дополнительные "фишки". Вы можете предложить добавить ещё что-то.

Исправлена ошибка не рабочего спящего режима ! !

Конструктор прошивки:

Управление беспроводной частью:
250 kb/c1 Mb/c2 Mb/c
Номер клиента:
Номер канала:
Адрес: R W
Включить AutoAck.
Включить Dynamic Payloads.
Счетчики: Передач. Ошибок.Принятых команд.
Не будем принимать данные, только передача.
Настройка GPIO и датчики:
Без датчиковDHT11/22DS18B20BMP085/180 LM75 AM2321
Pin для подключения датчика:
Без float.
Pinы для режима на вывод:
Pinы для режима на ввод:
Вкл АЦП Номера пинов и разрядность АЦП.
Режим термостата
Режим влагостата
Спящий режим: НетRegister retentionMemory retention
Интервал в секундах для спящего режима
Контроль питания: Нет2.3в.2.5в.2.7в.
Отладка.(Для администратора)












Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.