РадиоКот :: Многомер «Солянка»
Например TDA7294

РадиоКот >Конкурсы >пкпч2014 >

Теги статьи: Добавить тег

Многомер «Солянка»

Автор: Noblako, vaganovav@chelcom.ru
Опубликовано 18.09.2014
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2014"

Прежде всего спешу поздравить кота с днем рождения, пожелать дальнейшего процветания, хороших статей и побольше публикаций интересных разработок! В чем, я думаю, мы все вместе будем помогать и наполнять этот замечательный ресурс!


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

 Итак, прибор может:
1. Показывать точное время, дату, день недели(GPS модуль Ublox NEO6M).
2. Отображать давление (датчик BMP085).
3. Отображать температуру и влажность в помещении (датчик SHT21).
4. Отображать температуру на улице (всем известный DS18B20 от Dallas).
5. Ну и бонусом, включает и отключает нагрузку (в моем случае это RGB светодиодная лента над столом).

 

Схема устройства (кликабельно):

«Сердцем» устройства является микроконтроллер atmega16u4. Почему он? Да просто валялось их три штуки, надо куда-то девать. Запитывается все это хозяйство от блока питания 12В 2А. Само устройство потребляет немного, а вот RGB лента покушать любит, и чем длиннее рулон этой ленты, тем неуемней аппетит. Пробегусь кратенько по применяемым модулям, которые бросил в «солянку»:


GPS модуль NEO6M от компании Ublox.

Это, пожалуй, самая дорогая деталь в этом устройстве. При первом подключении его к ПК через адаптер, модуль исправно шлет кучу данных со скоростью 9600 baud rate, причем делает это, даже если еще не обнаружил спутники.

Но данные типа: $GPRMC, $GPVTG, $GPGGA … и т.д. нам не нужны, поэтому через фирменную программу u-center настраиваем наш модуль таким образом, чтобы он отсылал нам единственную строчку с пометкой $GPZDA. В ней-то и хранятся так нужные нам время и дата в стандартном формате протокола NMEA.

День недели решено было вычислить программно, благо это несложно (как всегда ответ был найден в одной из веток на радиокоте).
Итак, качаем программу u-center (распространяется абсолютно бесплатно, без каких либо ограничений), устанавливаем, подключаем наш GPS модуль(через адаптер) и ждем примерно 3-5 минуты пока девайсина не найдет спутники. И вот спутники найдены, железка нашла себя во времени и пространстве, а мы в свою очередь, будто очутились в главном центре управления полетами Роскосмоса.

В принципе программа имеет дружественный интерфейс и разобраться в ней будет несложно. Совсем вкратце поясню что там и как. Заходим View->Messages View (или просто жмем F9)- вылетает окно сообщений модуля.

Наводим курсор на ненужные сообщения и левой кнопкой мыши выбираем пункт Disable – отключить. По сути вырубаем все активные сообщения, кроме $GPZDA, его надо включить(Enable), если он не активный. Осталось дело за малым, сохранить все эти настройки в памяти GPS модуля. Для этого заходим View-> Configuration View (или попросту жмем Ctrl+F9), где в CGF(Configuration) должна выскочить табличка с предложением сохранить изменения.

Жмакаем Yes(Да!) и в этой же программе, или через Hyper Terminal проверяем, что бы наш модуль слал только данные времени и даты.

Настройки эти сохранятся, даже если мы отключим питание, так что после проделанных выше процедур, модуль можно смело впаивать в устройство.


Датчик влажности и температуры в помещении SHT21.
Тоже не дешевый элемент «солянки», но зато довольно точный. Покупал его на E-bay уже распаянным на плате.

Сам датчик работает с напряжением 3.3 Вольта, но на купленной мной плате уже стоял преобразователь уровней из 5В–>3.3В , так что лишнего ничего городить не пришлось. Вообще просто шикарную статью о нем написал некий Михаил и тоже на РадиоКоте, за что ему огромное спасибо!


Датчик давления BMP085.
Довольно дешевый и точный датчик. Сейчас уже продается более продвинутый его аналог BMP180(проверено, работать будет без переделки прошивки). Он тоже покупался уже распаянным на плате с преобразователем 5В–>3.3В.

Благодаря этому датчику мне пришлось перейти на язык программирования Си. Ведь получить данные об атмосферном давлении с него очень непросто – придется перелопатить столько математики, что делать на ассемблере это мазохизм полный. За это отдельное ему спасибо – переход на Си стал новым шагом в моем самообразовании.


Датчик температуры на улице DS18B20 от Dallas.
Изначально планировалось измерять температуру датчиком давления BMP085 (благо он это умеет), но вынести на улицу я его не смог, потому что от старого термометра пробираясь сквозь плитку и откосы пластикового окна шло всего ДВА провода, а для BMP085 требуется ЧЕТЫРЕ. Прокладывать недостающие провода мне не улыбалось и я решил применить старый добрый DS18B20 по двухпроводной схеме в режиме паразитного питания.

Предложенная в ДШ схема от Dallas мне не понравилась и я замутил свою – работает на отлично!

 

Кнопка управления.
Здесь она используется всего одна, сенсорная, на основе микросхемы ТTР223-6.
Однажды купил ее все на том же E-bay и теперь использую ее во многих устройствах.

Правда в целях экономии, покупаю ее не в виде платы, а отдельными компонентами и травлю платы сам по несколько штук. Себестоимость такой «чудо-кнопки» снижается до 8 руб./штука.

Микросхема ТТР223-6 очень гибко настраивается под ваши нужды. Подбором конденсатора С8 (смотри главную схему) можно увеличить/уменьшить чувствительность кнопки, а выводами TOG и AHLB сделать ее кнопкой с фиксацией или без, с высоким активным уровнем или низким.
Вот вырезка из даташита :

В общем, очень рекомендую – зачетный кнопарь!
Программа написана так, что КОРОТКОЕ касание зоны кнопки плавно включает подсветку дисплея и отображает данные со всех датчиков устройства. Повторное КОРОТКОЕ касание переводит многомер в режим отображения только уличной температуры БОЛЬШИМИ ЦИФРАМИ с минимальной задней подсветкой. Очень удобно, издалека видно, какая там за окном температура!
ДЛИННОЕ касание включает нагрузку, подключенную к устройству. В моем случае это RGB светодиодная лента. Вы же можете сделать что–то свое, например, подключить лампу на 220В, разумеется через тиристор и опторазвязку на МОС3063, либо вкорячить релюху через транзистор.

 

Подсветка на RGB ленте.
Здесь я мудрить не стал и купил готовый модуль управления RGB светодиодами с IR пультом все у тех же китайцев.

Все это дело расколупал, плату перерисовал и перенес все это на свое устройство. Единственное, что добавил, так это резисторы в цепь затворов полевых транзисторов (R12,R14,R16) – думаю, так будет надежней.

 

Программа «солянки».
Это первый законченный мой проект, написанный на языке Си. До этого много лет кодил на ассемблере. Написана в CodeVisionAVR (хорошая среда разработки, кто бы что ни говорил). В программе «солянки» нет диспетчера задач или флагового автомата – все крутится в обычном цикле. Раз в секунду, по очереди опрашивается один из датчиков и отображаются на четырехстрочном дисплее либо уличная температура крупными цифрами, либо все датчики вместе, но мелкими.
В последний момент решено было подправить программу: вместо отображения времени включения RGB подсветки, выводить информацию о том, чья очередь сегодня мыть посуду. Да, да, да, даже грозный папа в нашей семье стоит у раковины раз в три дня. Как только купит посудомойку – верну все как было (в исходниках дежурство закомментировано, а оставлено время включения подсветки).

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

Многомер исправно работает с июля этого года, ни разу не зависал и не подводил меня некорректной работой. Исходники программы содержат комментарии – думаю разберетесь. Если что, после конкурса отвечу на все ваши вопросы в соответствующей ветке форума. Фьюз биты настроены так: Low 0xDE , High 0xD9.

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

 

Всем удачи! Всем пока!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Файлы:
Схема,прошивка, печатка


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

71 9 4
2 0 1