Термометр дом-улица • HamRadio
от Foxiss
Термометр дом-улица способен работать с двумя датчиками температуры и может измерять её в двух местах (например, в жилом помещении и на улице) с дискретностью 0,1 °С в пределах от -55 °С до +99,9 °С. Термометр дом-улица схема которого изображена на рисунке.
Его основные элементы — двадцати выводной микроконтроллер ATtiny2313A-PU (DD1), четырёхразрядный светодиодный индикатор СС56-12GWA (HG1) с общими катодами элементов каждого разряда и соединёнными для динамической индикации анодами одноимённых элементов всех разрядов и два цифровых датчика температуры DS18B20 (ВК1 и ВК2). Выводы анодов индикатора подключены к восьмиразрядному порту В микроконтроллера через ограничивающие ток резисторы R9—R16. Общие катоды разрядов индикатора, амплитуда импульсов тока которых может достигать 120 мА, коммутируют транзисторы VT1—VT4. Сигналы управления поступают на их базы с четырёх линий порта D микроконтроллера через резистивные делители напряжения.
Датчики температуры подключены к двум раздельным линиям порта А, сконфигурированным в программе как обычные линии дискретного ввода-вывода. Светодиод HL1 показывает, какой из двух опрашиваемых поочерёдно датчиков активен в данный момент. Он включён при работе датчика ВК2 и выключен при работе с ВК1. Но, если установить перемычку S1, программа станет работать только с датчиком ВК1. Интервал обновления информации о температуре 6 секунд. Если измеренная температура ниже нуля, в крайний левый разряд индикатора выводится знак минус. При температуре выше нуля этот разряд погашен. Для питания термометр дом-улица нужен источник стабилизированного постоянного напряжения 5 В, способный отдавать ток не менее 100 мА. Чертёж печатной платы термометр дом-улица показан на рисунке.
Она изготовлена из фольгированного с двух сторон стеклотекстолита. В переходные отверстия, показанные на рисунке залитыми, необходимо вставить и пропаять с двух сторон отрезки лужёного провода. Если изготовление платы с двухсторонней печатью покажется слишком сложным, можно сделать её односторонней, оставив печатные проводники только на стороне, противоположной той, где будут установлены детали. Печатные проводники на стороне деталей в этом случае нужно заменить перемычками из тонкого изолированного монтажного провода, установить которые можно и на стороне печатного монтажа.
Все резисторы в термометр дом-улица — С1 -4, конденсатор С2 — оксидный, остальные конденсаторы — керамические К10-7 или плёночные К73-17. Микроконтроллер ATtiny2313A-PU можно заменить на ATtiny2313V-10 или ATtiny2313-20 с последними индексами PU или PI. К термометр дом-улица приложены два варианта программы микроконтроллера: Termometr и Termometr2M. Они различаются лишь тем, что во втором варианте не предусмотрено управление светодиодом HL1. Конфигурация микроконтроллера должна быть запрограммирована согласно таблице.
В таблице конфигурации 1- не запрограммировано, 0 — запрограммировано
Перед выводом показаний каждого датчика на индикаторе появляется сообщение, состоящее из номера датчика (цифры 1 или 2), пробела и знака градуса Цельсия (°С). Если установкой перемычки S1 датчик ВК2 заблокировать, это сообщение выводиться не будет. Остановимся на одной важной, особенности. Датчики температуры подключены к разным линиям микроконтроллера, поэтому обмен информацией с каждым из них идёт по отдельной шине 1-Wire. Это позволяет использовать датчики температуры DS18B20, не зная их индивидуальных идентификационных кодов. Но считанные из датчиков результаты их работы далее обрабатываются и выводятся на индикатор одними и теми же подпрограммами. Термометр проверен в действии с одним и двумя датчиками температуры, в том числе при соединении их с платой жгутами свитых изолированных многожильных проводов длиной до 4,5 м. Термометр дом-улица показал хорошие результаты в работе прошивку можно взять здесь.
Рубрики Разное© 2023 HamRadio • Создано с помощью GeneratePress
Экономичный термометр дом-улица с индикатором от сотового телефона
Разное
ГлавнаяРадиолюбителюРазное
12 лет назад
Исходной причиной этой разработки стало желание иметь автономное, малогабаритное устройство, способное длительное время работать от батареи. Первой проблемой стал выбор индикатора для отображения измеренных значений температуры Светодиодные индикаторы не подошли по причине значительного потребления тока. Обычный многоразрядный семиэлементный ЖКИ потребляет значительно меньший ток, но на него приходится подавать слишком много управляющих сигналов, что требует применения многовыводного микроконтроллера Лучше всего подошел ЖКИ со встроенным контроллером, управляемый всего несколькими сигналами После долгих поисков я остановился на ЖКИ от сотового телефона Nokia 3310. В него встроен управляемый по интерфейсу SPI контроллер LPH7779 или PCD8544, протокол управления которым известен.
Технические характеристики индикатора
Размер экрана, мм …………30×22
Разрешение, пкс…………..84×48
Напряжение питания, В ……2,7…3,3
Рабочая температура, °С .. .-25…+70 Ток потребления, мкА . ……..300
Использовать в приборе микроконтроллер семейства PICmicro или AVR не хотелось по причине относительно большого тока потребления Выбор пал на семейство микроконтроллеров MSP430 фирмы Texas Instruments. В него входят 16-разрядные микроконтроллеры с развитой периферией. Что в данном случае самое важное, они специально предназначены для работы от батарей и имеют сверхнизкое энергопотребление. Ток, потребляемый примененным микроконтроллером MSP430F2011IPW при напряжении питания 3 В и тактовой частоте ядра 8 МГц, не превышает 2 мА. Схема термометра показана на рис. 1.
Рис. 1
Для питания узлов прибора напряжение гальванического элемента G1 нужно повысить до 3,3 В. Это делает повышающий преобразователь на специализированной микросхеме NCP1400ASN33T1 (DA1). При собственном токе потребления 60 мкА она поддерживает выходное напряжение неизменным при снижении напряжения элемента вплоть до 0,8 В.
Датчики DS1821 (ВК1, ВК2) измеряют температуру в интервале от -55 до + 125 °С с погрешностью не более 1 °С. Они могут работать и в режиме термостата, подавая сигналы включения и выключения нагревателя или охладителя при достижении заданных значений температуры, но в рассматриваемом приборе этот режим не используется.
Связь датчиков с микроконтроллером происходит по известному интерфейсу 1-Wire Но в отличие от других микросхем с таким интерфейсом эти датчики не имеют индивидуальных номеров, поэтому для связи с каждой из них требуется отдельная линия. Использованы линии Р1.6 и Р1.7 микроконтроллера DD1. Опрос датчиков производится периодически, его результаты выводятся на индикатор HG1.
Рис. 2
Печатная плата термометра и расположение деталей на двух ее сторонах показаны на рис. 2. В налаживании устройство не нуждается и начинает работать сразу, но до установки микроконтроллера на плату и подключения к ней индикатора желательно проверить работу преобразователя напряжения на микросхеме DA1 и убедиться, что напряжение на его выходе равно 3,3 В во всем интервале возможных значений напряжения гальванического элемента G1.
Программа микроконтроллера (файл termometr. txt) и файл печатной платы термометра в формате Sprint Layout можно скачать здесь
Автор: А. Николаев, г. Боготол Красноярского края
Мнения читателей
Вы можете оставить свой комментарий, мнение или вопрос по приведенному выше материалу:
Комнатный термометр и гигрометр своими руками с использованием PIC16F688
Четверг, 20 июля 2017 г. / Ибрар Айюб
Этот проект касается создания цифрового комнатного термометра и гигрометра на основе микроконтроллера, который отображает температуру и относительную влажность на 4 больших (1 дюйм) семисегментных светодиодных дисплеях, уровень яркости которых регулируется в зависимости от окружающего освещения. Он состоит из системы с замкнутым контуром, которая непрерывно оценивает условия окружающего освещения с помощью недорогого светозависимого резистора (LDR) и использует эту информацию для регулировки яркости дисплея. Недорогой датчик DHT11 используется для измерения температуры и относительной влажности. В этом проекте используется микроконтроллер PIC16F688, работающий на частоте 4 МГц, генерируемой внутренним источником. Отдельный чип драйвера дисплея (MAX7219) используется для управления и обновления данных дисплея на семи сегментных светодиодах.
Зачем нужна адаптивная регулировка яркости?
Автоматическая регулировка яркости семисегментных светодиодных дисплеев не только экономит электроэнергию, но и улучшает читаемость при любых условиях окружающего освещения.
Многие смартфоны, телевизоры высокой четкости, КПК, планшеты и экраны компьютеров теперь оснащены этой функцией. Он в основном затемняет дисплей в темной среде, но остается читабельным и приятным для глаз. Точно так же, когда уровень окружающего освещения повышается, дисплей становится ярче, чтобы улучшить читаемость. Этот проект отображает температуру и относительную влажность в помещении на больших 1-дюймовых семисегментных светодиодах, которые автоматически регулируют яркость в соответствии с условиями освещения в помещении. Так что, если вы поместите этот счетчик в своей спальне, вам не придется беспокоиться о том, чтобы выключить его в ночное время.
Он автоматически затемняется достаточно низко, чтобы не мешать вашему сну, сохраняя при этом удобочитаемость.Принципиальная схема
Для облегчения объяснения я разделил полную принципиальную схему на 3 части: Блок питания , Блок микроконтроллера и датчика и Блок драйвера дисплея .
Блок питания состоит из микросхемы стабилизатора LM7805 для получения регулируемого источника питания +5 В от настенного адаптера постоянного тока 9–15 В. Полная принципиальная схема блока питания показана ниже. LED1 — это светодиодный индикатор включения питания.
На следующей принципиальной схеме показано подключение датчика DHT11 и фоторезистора (также называемого светочувствительным резистором или LDR) к микроконтроллеру PIC16F688. DHT11 — это недорогой цифровой датчик для измерения температуры в диапазоне 0–50 °C с точностью ±2 °C и относительной влажности в диапазоне 20–95 % с точностью ±5%. Датчик имеет полностью откалиброванные цифровые выходы и собственный протокол 1-wire для связи.
Затем фоторезистор (R5) и R4 образуют цепь делителя напряжения, как показано на схеме. Аналоговое напряжение на R4 увеличивается пропорционально количеству света, падающего на фоторезистор. Сопротивление типичного фоторезистора составляет менее 1 кОм при ярком освещении. Его сопротивление может достигать нескольких сотен кОм в очень темных условиях. Следовательно, для данной настройки напряжение на резисторе R4 может варьироваться от менее 0,1 В (в темноте) до более 4,0 В (при очень ярком освещении). Микроконтроллер PIC16F688 считывает это аналоговое напряжение через канал АЦП AN2 (RA2) для определения уровня окружающего освещения.
Подробнее: Самодельный комнатный термометр плюс гигрометр с использованием PIC16F688
Категории: How To – DIY – Projects, Metering – Instrument Projects, Projects, Projects Temperature Measurement Projects
Изучение пользовательской прошивки на термометрах Xiaomi
Если мы чему-то и научились за эти годы, так это тому, что хакеры любят знать, какая температура. Серьезно. Прогулка по архивам здесь, в Hackaday, обнаруживает огромное количество сделанных на заказ гаджетов для записи, отображения и передачи текущих условий. От наружных метеостанций до ESP8266 с припаянным DHT11 — нет недостатка в известном уровне техники, если вы хотите начать собирать собственные данные об окружающей среде.
Очевидно, мы большие поклонники того, что можно сделать своими руками, в этом смысл всего веб-сайта. Но нельзя отрицать, что может быть трудно конкурировать с эффектом масштаба, особенно при работе с импортными товарами. Даже у самого опытного аппаратного хакера не возникнет проблем со сборкой чего-то вроде Xiaomi LYWSD03MMC. Всего за 4 доллара США за штуку вы получаете изящный энергоэффективный датчик со встроенным ЖК-дисплеем, который транслирует текущую температуру и влажность через Bluetooth Low Energy.
Возможно, вы могли бы построить свой собственный… но зачем?Это в значительной степени идеальная платформа для создания системы мониторинга окружающей среды всего дома, за исключением одной детали: она предназначена для работы в составе системы домашней автоматизации Xiaomi, а не обязательно в виде собранных вместе установок, которые используют такие люди, как мы. дом. Но это было до того, как Аарон Кристофель взялся за дело.
Мы впервые сообщили о его амбициозном проекте по созданию прошивки с открытым исходным кодом для этих недорогих датчиков в прошлом месяце, и неудивительно, что он вызвал большой интерес. В конце концов, люди берут существующие аппаратные средства, улучшают их и делятся с миром тем, как они это сделали, — это основной принцип этого сообщества.
Полагая, что такой хорошо продуманный проект заслуживает второго взгляда, и, честно говоря, потому что я хотел начать контролировать условия в своем собственном доме по дешевке, я решил заказать набор термометров Xiaomi и погрузиться в них.
Установка прошивки
Безусловно, одним из самых привлекательных аспектов прошивки Aaron «ATC» является простота ее установки. Вы ожидаете, что что-то подобное потребует вскрытия корпуса и подключения адаптера USB-UART, и хотя на самом деле вы может пойти по этому пути, если вам нужно, 99% пользователей будут использовать чрезвычайно умный инструмент для прошивки «Web Bluetooth».
Теоретически вы должны быть в состоянии установить прошивку ATC с любого компьютера с достаточно современным веб-браузером, но ваш пробег может отличаться от такой передовой функции. Мой рабочий стол Linux вообще не мог подключиться к термометрам, а попытка на Chromebook срабатывала лишь изредка. Лучше всего, вероятно, будет смартфон или планшет, и у меня не возникло проблем с прошивкой нескольких термометров с помощью моего Pixel 4a.
В общем, процесс перепрошивки занимает чуть меньше минуты. После того, как вы потянете за язычок на задней панели термометра, вы нажмете «Подключиться» на флешере и подождите, пока он не появится в списке локальных устройств Bluetooth. После подключения вам нужно нажать кнопку «Активировать», которая, по-видимому, устанавливает безопасное соединение, необходимое для исходной прошивки, прежде чем оно позволит выполнить обновление по беспроводной сети (OTA).
После завершения процесса активации вы выбираете двоичный файл прошивки, нажимаете «Начать перепрошивку» и ждете, пока индикатор выполнения не достигнет 100%. Это занимает около 30 секунд, после чего термометр должен немедленно перезагрузиться с новой прошивкой. Если он не проснется после процесса перепрошивки, Аарон говорит, что вы можете просто вытащить аккумулятор, и он должен разобраться сам. Я проделывал этот процесс несколько раз без необходимости вытаскивать батарею, так что, по-видимому, это довольно необычная проблема.
Если вам когда-нибудь понадобится, тот же процесс можно использовать, чтобы вернуть стоковую прошивку на устройство. У Аарона нет стокового образа прошивки в репозитории GitHub (вероятно, чтобы избежать претензии об авторских правах), но в документации он рассказывает вам, как вы можете извлечь его копию из официального файла обновления.
Теперь читатель, более склонный к безопасности, может задаться вопросом, что это означает, что какой-то воинствующий ботаник может разбить термометры людей Xiaomi. К сожалению, это так. Этот инструмент позволит любому, кто находится в зоне действия Bluetooth, прошить все, что он хочет, на Xiaomi LYWSD03MMC, независимо от того, установлена ли на нем специальная прошивка. Тем не менее, уже упоминалось о добавлении в прошивку ATC некоего механизма аутентификации для защиты от таких атак; что делает его значительно более безопасным, чем стандартная прошивка.
Освоение
Веб-инструмент для перепрошивки не только устанавливает прошивку ATC, но и предоставляет простой в использовании интерфейс для ее настройки. После подключения к устройству вы просто прокручиваете немного вниз и просто нажимаете на различные параметры, чтобы включить или отключить их.
Отключение странного смайлика в стиле ASCII было первым, что я сделал, и, будучи американским язычником, я также изменил дисплей на градусы Фаренгейта. Тот факт, что вы можете вводить значения смещения для температуры и влажности, удобен, хотя в будущем это может стать ненужным, поскольку Аарон говорит, что в списке TODO есть более надежная процедура калибровки.
Отображение уровня заряда батареи на экране — интересная функция, которая включена по умолчанию, но лично я ее отключил. Проблема в том, что процент заряда батареи и относительная влажность должны иметь меньший набор цифр в нижней правой части ЖК-дисплея. Они переключаются туда и обратно каждые пять секунд или около того, что на практике кажется достаточно быстрым, чтобы иногда сбивать с толку, на какой из них вы смотрите. Кроме того, если батарея CR2032 внутри должна работать до года, мне действительно нужно так часто видеть уровень заряда батареи?
Сначала меня немного смутил «Интервал рекламы». Я предположил, что это будет то, как часто термометр отправляет пакеты BLE, но на практике он отправляет их каждые несколько секунд независимо от того, на что вы меняете этот параметр. Что этот параметр на самом деле изменяет, так это то, как часто обновляются передаваемые данные о температуре. По умолчанию это одна минута, поэтому вы должны ожидать получить 20 или около того пакетов, которые будут содержать одинаковые значения температуры и влажности, прежде чем они будут обновлены. Установка интервала обновления на 10 секунд даст вам более детализированные данные, но, по-видимому, за счет времени автономной работы.
Пользовательские сборки
Хотя Аарон не вдается в подробности на странице проекта, довольно легко скомпилировать собственную прошивку для термометра, которую затем можно прошить с помощью веб-инструмента. В Linux все, что мне нужно было сделать, это извлечь tar-архив Xiaomi Telink TLSR825X и добавить каталог в мою переменную окружения $PATH. Оттуда я мог собрать прошивку ATC и начать копаться в коде.
Пользовательские имена находятся всего в нескольких строках кода.Если вы занимаетесь низкоуровневым программированием на C, в репозитории GitHub есть ряд проблем, с которыми вы, вероятно, могли бы помочь. Похоже, что сейчас основной задачей является создание постоянного флэш-хранилища, которое проложит путь к сохранению конфигурации при замене батареи и более продвинутым функциям, таким как локальное ведение журнала температуры.
Для моих собственных целей было достаточно легко найти часть кода, которая изменяет имя устройства Bluetooth. Если вы собираетесь расставить их по всему дому, увидеть что-то вроде «ATC_BEDROOM», безусловно, будет полезнее, чем схема именования по умолчанию, в которой используются последние символы MAC-адреса.
Извлечение данных
Теперь, чтобы внести ясность, вам не нужно для установки прошивки Аарона, чтобы использовать данные с этих термометров в ваших собственных проектах. Есть по крайней мере один инструмент, который позволяет вам извлекать данные о температуре, влажности и уровне заряда батареи с датчиков из коробки, и они также поддерживаются в ESPHome. Но проблема со стоковой прошивкой заключается в том, что вам нужно фактически подключаться к каждому датчику, чтобы считать его данные, что является медленным и энергоемким процессом. Одним из основных улучшений прошивки Аарона является то, что данные постоянно выводятся в открытом виде в виде рекламы BLE; это означает, что любое находящееся поблизости устройство может прослушивать значения прямо из воздуха, не устанавливая соединение или сопряжение.
Для этого есть несколько пакетов, на которые стоит обратить внимание. На момент написания этой статьи был запрос на добавление поддержки прошивки ATC в aioblescan, простой инструмент Python 3, который будет выгружать данные из пакетов BLE на терминал.
Небольшой сценарий позволит вам легко проанализировать вывод aioblescan и перетасовать информацию так, как вы считаете нужным.Мне также повезло с py-bluetooth-utils, библиотекой, предназначенной для работы с рекламой BLE. Основываясь на некоторых примерах, включенных в проект, я придумал этот минимальный сценарий, который должен помочь вам начать работу:
#!/usr/bin/env python3 импорт системы из даты и времени импортировать дату и время импортировать bluetooth._bluetooth как bluez из импорта bluetooth_utils (toggle_device, enable_le_scan, parse_le_advertising_events, disable_le_scan, raw_packet_to_str) # Используйте 0 для hci0 dev_id = 0 toggle_device(dev_id, Истина) пытаться: носок = bluez.hci_open_dev(dev_id) кроме: print("Не удается открыть Bluetooth-устройство %i" % dev_id) поднимать # Установите для фильтра значение «True», чтобы видеть только один пакет на устройство enable_le_scan (носок, filter_duplicates = False) пытаться: def le_advertise_packet_handler (mac, adv_type, данные, rssi): data_str = raw_packet_to_str(данные) # Проверить преамбулу ATC если data_str[6:10] == '1a18': темп = int(data_str[22:26], 16) / 10 гул = int(data_str[26:28], 16) batt = int(data_str[28:30], 16) print("%s - Устройство: %s Температура: %sc Влажность: %s%% Батарея: %s%%" % \ (datetime.