В виду нехватки в хозяйстве термометров и в виду избытка халявных термодатчиков и еще кое-валяющихся без дела деталек, решил сбацать себе этот девайс. Как известно из прошлого поста, датчик измеряет не только температуру но и влажность. Для меня практическая польза от этой фичи сомнительна, но поскольку кому-то возможно пригодится — решил задействовать и её. Кстати это пожалуй один из самых моих долгих проектов: софт писался месяц(!). Разработка затянулась главным образом из-за нехватки свободного времени и глючности кое-какого компилятора от кое-какой фирмы. Но обо всём по-порядку.

Термометр на SHT21

Ни каких экзотический возможностей у термометра нет — просто показывает температуру с влажностью и индикатор заряда батареи.  Отображение данных происходить на экране от телефона сименс. О том как его подключить к микроконтроллеру я писал ранее. Я выбрал этот дисплей как наиболее экономичный из всех у меня имеющихся + он очень тонкий и им легко управлять при помощи микроконтроллера. Единственный недостаток: при напряжении ниже 2-х вольт на нем уже ничего не разобрать (хотя контроллер стабильно работает и при 1.8 в). Именно поэтому при разряде батареи примерно до 2 вольт на экране будет показан индикатор полного разряда батареи. Я не пожалел времени для того чтобы нарисовать (а точнее срисовать!) большие красивые циферки для отображения температуры и маленькие строгие циферки для отображения влажности. Что из этого получилось хорошо видно на первой картинке и на картинке ниже

Термометр на SHT21

Печатная плата ? Не, не слышал. Да и зачем она тут если деталек то раз, два и обчелся. Хороший монтаж + качественный корпус и ничего этому девайсу не страшно. Тем более в футбол я им играть не планирую.  Все детальки соединены МГТФом 0.07 мм — самым лучшим монтажным проводом на свете. Только зачищать его сложновато, но это всего лишь единственный его минус. Ни какого держателя для батарейки у меня не предусмотрено (в виду ограниченности места в корпусе) поэтому провода припаивались напрямую. В качестве флюса использовал паяльную кислоту, ибо с канифолью припаиваться не хотело при относительно низкой температуре паяльника, а перегревать батарейку я не решился. Все открытые контакты были тщательно заизолированы скотчем перед тем как засунуть все это дело в корпус. Лишние ноги контроллеру я откусил (за исключением тех которые нужны для прошивки), а сам корпус приклеил суперклеем. Дисплей кстати тоже держится на нем. В итоге снаружи девайс выглядит гораздо красивей чем изнутри :-) Еще важно не забыть проделать отверстие в корпусе для датчика, если мы хотим измерять температуру не внутри корпуса устройства. Сам корпус называется G1906 (~2$), а вот так он выглядел в самом начале моих издевательств над ним:

Термометр на SHT21

Самое сложное тут это проделать вот такую вот прямоугольную дыру. Я делал так: сначала нарисовав прямоугольник а потом по контуру делал дырки обычным сверлом которым сверлю платы. После высверливания 100500 дырок, прямоугольник выламывается, а края зачищаются напильником. Кстати это пожалуй самая ровная дыра из всех что мне доводилось делать :-) Теперь перейдем к схеме:

Термометр на SHT21

Всё достаточно просто и банально кроме небольшой изюминки управления электропитанием. Её я подсмотрел в каком то журнале: Замыкаем кнопку, девайс стартует, выставляет на ноге логическую единицу тем самым поддерживая транзистор в открытом состоянии, а через пять секунд на ноге появляется логический ноль и транзистор закрывается отрубая питания всего устройства. Все гениально и просто. Перед использованием нужно покрутить резистор R4 таким образом чтоб при трёх вольтах питающего напряжения на его щётке подключенной к PC0 было напряжение 1.1 вольта. Иначе уровень зарядки будет отображаться не верно. Лучше всего использовать многооборотный резистор. им проще подстроить десятые доли вольта. Микроконтроллер работает на частоте 8 мгц от внутреннего генератора. Всего девайс потребляет 5 мА, а это значит что батарейки (CR2032) должно хватить надолго.

И вот мы добрались до самой интересной части проекта: до софта. Пользуясь случаем хотелось бы излить тонны ненависти на создателей компилятора  микропаскаль. Подобной кривизны я еще не видел.  После того как моя программа стала занимать более ~10кб флеш памяти начались необъяснимые глюки, которые я мастерски преодолевал при помощи запихивания разнообразных костылей. В моей программе можно найти не нужную инициализацию UART (без нее не работает), настройку портов через ассемблерные вставки а также некоторые другие интереснейшие вещи! Больше на микропаскале я не пишу чего и вам желаю.

Скачать исходник