Вариант беспроводного датчика температуры на attiny13. На фото можно разглядеть датчик ds18b20 с резистором , attiny13 на платке-переходнике, радиопередатчик с антенной, а так же кейс для батареек 3хААА Передатчик основан на примерах алгоритма передачи данных и на примерах считывания датчиков DHT11/22 и DS18B20 (смотрите примеры на Си для м/к) .

В отличии от других вариантов  реализации (Например nRF24LE1 или WI-FI ESP8266) беспроводной передачи данных - этот вариант может быть собран на очень дешевом микроконтроллере Attiny13, стоимость которого всего 50 центов !!

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

Так как передатчик не имеет внешних настроек,то все настройки задаются перед компиляцией прошивки. Для удобства разработан конструктор прошивки,который находится внизу  данной страницы. Данный подход упростит разработку устройств тем,кто плохо знаком с языком Си.

Поддерживаемые микроконтроллеры: Attiny85, Attiny45, Attiny25, Attiny13, Attiny2313(НЕТ АЦП !). Возможно добавить и другие м/к.

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

Если у Вас будет несколько передатчиков,то ключи должны быть у всех разные.

Выбор протокола:

В конструкторе можно выбрать два варианта протокола - зависит от того, какую библиотеку использовать:

Для троичного протокола необходима библиотека RemoteSwitch.

Для двоичного протокола - RCswitch.

Побробнее описано в статье алгоритма передачи данных.

Аналоговый вход (АЦП):

Передатчик может передавать состояние аналогового входа (АЦП), например с фоторезистора(датчика освещенности). Для этого необходимо задать ключ,если значение ключа равно нулю, то код, отвечающий за АЦП не компилируется и не занимает памяти в микроконтроллере. Размер кода в прошивке занимает примерно 60 байт.

Аналоговый вход находится на PB2(7 нога м/к). В Attiny2313 АЦП нет.

Схема подключения:

На схемах отображены только основные детали. К выводу PB0(5 нога)  для экономии энергии могут подключатся выводы питания датчиков и радиомодуля (через транзистор)- в этом случае они будут запитыватся только в момент опроса датчика. У Attiny2313 распиновка отличается -смотрите в даташите.

Вариант с DHT

radio dht

Вариант с DS18B20:

 

radio ds

Внимание !! Если датчик будет использоватся на улице(при минусовой температуре), то необходимо использование кварца ! Для этого необходимо пересчитать фьюзы и указать частоту кварца в соотсвествующем поле. Attiny13 кварц не поддерживает ! Для использования кварца необходимо поменять используемые выводы микроконтроллера соотсвествующей галкой , т.к. кварц подключается на выводы PB3, PB4 по стандартной схеме.

 

Экономия энергии при работе от батареи:

Микроконтроллеры Amtel умеют "засыпать" и включатся по прерыванию или по таймеру Watchdog - это может хорошо сэкономить заряд батареи или аккумулятора.

При использовании Watchdog время обновления и отправки данных может быть только кратно 8 секундам(8,16..64..256..).В обычном же режиме без использования Watchdog время кратно 5 секундам (используется обычный _delay_ms(5000)).

Если ,например, Attiny85 при работе 8мгц имеет потребление около 7 мА.(тут и ниже ток будет указан в милиамперах для удобства сравнения), а при работе на 1мгц(используя делитель на 8) 2 мА,то в спящем режиме ток падает до 0.01 мА !

У Attiny13 параметры экономии ещё лучше: при 9.6 мгц потребление около 5мА(5в) 2.5мА(3.3в), при 1.2 мгц(используя делитель на 8) - 1.5мА(5в) 0.7мА(3.3в), в спящем режиме до 0.005мА.

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

Прошивка микроконтроллера:

При генерации hex файла конструктор показывает командую строку для загрузки через утилиту avrdude.

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

При использовании делителя,возможно м/к откажется прошиваться - для исправления ситуации воспользуйтесь опцией -B 20.

При прошивке через плату Arduino необходимо указать СОМ порт.

Оптимизация размера прошивки:

При использовании Attiny13, где всего 1024 байт, могут возникнуть трудности с размером прошивки. Некоторые комбинации настроек могут уместить все необходимые функции:

1. Двоичный протокол занимает меньше кода,чем троичный.

2. Хотя ключи можно писать шестизначные, но если датчиков мало,то ограничтесь 5 значными значениями (до 32767).

3. Включение делителя может так же уменьшить код.

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

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

DS18B20DHT Авто DHT11 DHT22
Протокол: троичныйдвоичный
Ключ температура:
Ключ влажность: Только для датчиков DHT.
Ключ АЦП: 0 - АЦП не используется.
Частота м/к: Использовать делитель на 8.
Период обновления: х 5 = 60 сек =1 мин.
Период импульса: мкс.
Пауза между данными: мс.
Спящий режим, используя Watchdog
Поменять пины с PB3 на PB2 и PB4 на PB1, например для использования кварца.
Модель м/к:
Установка Fuse:

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





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