Беспроводной DIY датчик температуры и влажности с e-paper дисплеем
Всем привет! Сегодня хочу рассказать читателям о своем DIY проекте датчика температуры и влажности с e-ink дисплеем. Это будет некая обзорная статья об этапах создания устройства, будет много картинок. Идея этого проекта родилась около двух лет назад, примерно тогда я увлекся беспроводными автономными устройствами. Целью проекта было создание небольшого девайса для знакомства и изучения дисплеев на электронных чернилах. Было решено на плату добавить датчик температуры, что бы можно было выводить какие то полезные данные на экран, ну и передавать данные далее в систему умного дома.
Первая версия устройства была сделана на микроконтроллере atmega328 и радио-модуле nRF24L01. Очень быстро стало понятно что для работы с e-ink дисплеем не хватает памяти, а энергопотребление устройства довольно большое.
Тест первой версии устройства:
Используется датчик температуры и влажности SHT20. Питание от двух батареек CR2430 (6V) через step down converter.
Следующая версия устройства, была разработана на nRF52832. Для этой версии был выбран радио-модуль от компании Holyiot YJ-16048. Характеристики радио-чипа: ARM Cortex-M4F с ОЗУ 512кб 64кб. Встроенный приемопередатчик 2,4 ГГц, поддержка BLE, ANT, ESB (совместимо с nRF24L01). Подробнее об этой версии рассказано тут.
В этом варианте, проблем с хранением в памяти микроконтроллера большого количества данных — не было. Наличие в nRF52 режима DC-DC, для работы радио в режиме с оптимизацией питания (экономия до 40%), позволило сократить максимальное пиковое потребление до 7-8 мА. Вторая версия датчика, как и первая планировалась как модуль для разработки, поэтому вопрос выбора корпуса не ставился.
Тест работы прототипа второй версии.
Так же используется датчик температуры и влажности SHT20. Питание от двух батареек CR2450 через step down конвертер TPS62745DSSR с малым энергопотреблением.
Вторая версия датчика показала хорошие результаты: низкое потребление, длительное время работы на одном комплекте батареек, возможность хранения и вывода «тяжелой» графики.
Естественно проект захотелось довести до состояния законченного устройства. Поэтому первым этапом, стал корпус. Для возможности установки в корпус был переработан дизайн платы. Модель корпуса была разработана в программе SolidWorks. Первые корпуса я печатал на бытовом SLA принтере Anycubic Foton. Плюсами была высокая точность печати и простота пост-обработки корпуса (полировка). Из минусов (на тот момент) печати корпуса полимерной смолой — была хрупкость. Не то чтобы напечатанная модель разваливалась в руках, но если собранное устройство (с батарейками) уронить, то скорее всего корпус треснет (что и случилось однажды).
Также из-за этого свойства материала, были проблемы с закручиванием винтов для соединения двух частей корпуса. После нескольких десятков вкручиваний — выкручиваний винтов в отверстиях под резьбу выработался материал стенок и винты стали прокручиваться. Выше в скобках я написал — «на тот момент», так что сейчас дела обстоят гораздо лучше. На рынке стали появляться смолы, по вполне разумной цене и с отличными прочностными характеристиками.
Тест работы прототипа третьей версии:
В этой версии был расширен список сенсоров. Помимо SHT20, ПО может работать и с датчиками si7021, HTU21D, а так же с BME280 (отдельная версия платы).
Начиная с этой версии, устройство может работать от одной батарейки. Работа через step down конвертер или напрямую от батареек, устанавливается перемычками. Так же, с помощью перемычек, устанавливается последовательность подключения двух батареек: последовательное или параллельное. Плюс к этому, расширен список радио-модулей и разработаны версии плат под радио-модули EBYTE и MINEW.
Для работы в более экономичном режиме, была добавлена поддержка чипов nRF52810 и nRF52811, что позволило сократить потребление в спящем режиме до 1,7 — 2 мкА.
Чтобы придать корпусу больше прочности, было решено разработать модель корпуса под печать на FDM принтере. Сама модель была упрощена, а из дизайна удалены грани.
Ввиду того, что прочность материалов для FDM печати — выше, была уменьшена толщина стенок, а все зазоры между корпусом и платой были минимизированы.
В настоящий момент, разработаны 3 варианта корпуса, под разные батарейки. От самого тонкого, для батареек СК2430 до максимально прочного, под две батарейки CR2477. Все варианты моделей корпусов доступны на GitHub этого проекта.
Так же было переработано ПО, была добавлена функция конфигурирования устройства через систему Умного дома, что избавило от необходимости перепрошивать устройство.
В настоящий момент, можно настраивать:
- интервалы опроса сенсора температуры и влажности
- интервалы чтения уровня заряда батарейки
- привязка к другим устройствам для передачи данных
- включение режима автономной работы без интеграции в умный дом.
- Так же, в интерфейс была добавлена поддержка нескольких языков и возможность инверсии цвета экрана .
Тест работы обновленной третьей версии.
В видеоролике демонстрируется работа устройства с радиосетью MySensors и конфигурирование устройства через отправку параметров из системы умного дома.
Данный проект и сейчас продолжает активно развиваться. Уже есть прототип четвертой версии, точнее наверное это уже ответвление, так как четвертая версия — существенно переработана по железу. Также, на основе этого проекта родилось еще несколько аналогичных проектов под другие размеры экранов.
Информацию по данному проекту можно найти на GitHub. Проект открытый, на гитхаб доступы файлы для изготовления плат, схемы, модели корпусов и программный код.
По мере того, как мои проекты будут готовы, я обязательно буду о них рассказывать.
Если вам интересно все что связано с DIY, вы являетесть DIY разработчиком или хотите только начать, вам интересно использование DIY девайсов приглашаю всех заинтересованных в телеграм чат — DIYDEV.
Всем, кто хочет делать устройства, начать строить автоматизацию своего дома, я предлагаю познакомиться с простым в освоении протоколом Mysensors — телеграм-чат MySensors
А тем кто ищет достаточно взрослые решения для домашней автоматизации приглашаю в телеграм-чат Open Thread. (что такое Thread?)
Всем, как всегда добра!
- Беспроводные технологии
- Разработка под Arduino
- Умный дом
- DIY или Сделай сам
Самодельный датчик температуры.
Всем привет, на просторах драйва и рено клуба.Нашел очень интересную статью(renault-club.by/clio/t_datchik.php) Решил написать в свой борт журнал.
Вот инструкция в txt формате:ТУТ Скачать:yadi.sk/i/g-E0wNS339AwjL
Чтобы Сделать Самодельный Датчик Температуры За Бортом Необходимо:
1.Покупаем NTC термистор с сопротивление 3 кОм и обычный резистор на 15 кОм
2.Соединяем параллельно детали и припаиваем к ним выходные провода.
3.Далее, используя старый датчик как макет, изготавливаем форму для литья.Старый датчик вталкиваем в пластилин.И пластилин примет
форму датчика температуры, вот и все форма нового датчика температуры готова.
4.В подготовленную форму размещаем сам датчик(который мы сделали из термистора и резистора в 1 пункте.), кусочек пластика
в качестве уха крепления и заливаем эпоксидкой.
5.При желании эпоксидку можно подкрасить, используя пасту из стержня шариковой ручки .
6.После затвердевания смолы вынимаем заготовку из формы и обрабатываем напильником края .
7.Проверяем исправность датчика тестером, после чего он готов для установки в авто.
Для подключения датчика в зеркале настоятельно рекомендую использовать пайку и заизолировать место соединения термоусадкой.
8.Вот и все наш самодельный датчик температуры готов!
15 января 2017 Метки: своими руками
Автономное устройство на ардуино, сигнализирующее об повышении (понижении) температуры
Данное устройство предназначено для определения температуры на расстоянии. Так как я не нашел нужной мне готовой инструкции по сборке данного устройства, а покупать за 2+ тысячи не очень хотелось, было принято решение сделать все на ардуино (не дорого и не очень сложно).
Инструкция по сборке
Для сборки проекта нам понадобится:
- Датчик температуры DS18B20 1 метр. (Герметичный)
- Экран 0.96 128×64 OLED
- Breadboard
- Набор проводов Папа-Папа
- Микроконтроллер Arduino Uno
- Резистор
- OneWire Arduino Library
- OLED I2C_OLED_I2C с поддержкой Русского и Украинского языков.
- Dallas temperature
Схема электрических соединений гнезд изображена на правом рисунке: пять отверстий с каждой стороны, в каждом из рядов (в данном случае 30) электрически соединены между собой. Слева и справа находится по две линии питания: здесь все отверстия в столбце соединены между собой. Прорезь по середине предназначена для установки и удобного извлечения микросхем в корпусах. Для сборки схемы в отверстия вставляются радиодетали и перемычки.
После того как мы разобрались с макетной платой, теперь можно переходить к подключениям модулей. Для начала подключим дисплей следующим образом:
В данном случае мы подключили 5V к “+” на макетной плате (желтый провод), а GND к ”-” (белый провод), чтобы в последствии всё питание на модулях подключать к “+” и “-” на макетной плате.
Далее подключаем датчик температуры DS18B20 при помощи резистора как показано на фотографии ниже:
В нашем случае, для удобства мы подключили все провода датчика к макетной плате и оранжевым проводом “Папа-папа” подключили к Pin 10.
Половина дела сделано, осталось только подключить сигнализирующие устройства, а именно: светодиод x2 (красный для повышенной температуры, синий для пониженной) и обычный пьезоизлучатель(в простонародье “пищалка”). Светодиод подключается очень просто, “+” это длинный стержень, а минус это короткий стержень. Вставляем его в плату, подсоединяем обязательно к нему резистор и при помощи проводов “Папа-папа” подключаем короткий стержень синего светодиода к 5 пину, а короткий стержень красного светодиода к 12 пину.
Пищалку же просто подключаем черный провод к “-”, красный провод к 13пину.
Вот так все должно получится:
Самое главное (скетч)
#include #include #include #include //подключение библеотек для DS18B20 #define ONE_WIRE_BUS 10 // pin к которому подключен DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); #include OLED myOLED(8, 9, 8); // Подключение дисплея, 8 pin-SDA, 9pin-SCL extern uint8_t RusFont[]; // Русский шрифт extern uint8_t BigNumbers[]; // Большие цифры extern uint8_t SmallFont[]; // Маленький шрифт void setup() < pinMode(13, OUTPUT); // Объявить pin 13 как выход pinMode(12, OUTPUT);// Объявить pin 12 как выход pinMode(5, OUTPUT); // Объявить pin 5 как выход sensors.begin();// Включение датчика myOLED.begin();// Включение дисплея myOLED.setFont(RusFont); >void loop() < if (sensors.getTempCByIndex(0)>70)< //Проверка датчика температуры(при температуре >70 будет включаться лампочка и сирена) digitalWrite(5,255);// Включение лампочки tone(13, 2500); // Включаем звук 2500 Гц delay(400);// Пауза 0.4 сек digitalWrite(5,LOW);// Выключение лампочки > else < digitalWrite(5,LOW); >if (sensors.getTempCByIndex(0) <25)< //Проверка датчика температуры(при температуре <45 будет включаться лампочка и сирена) digitalWrite(12,255); // Включение лампочки tone(13, 2500); // Включаем звук 2500 Гц delay(400); // Пауза 0.4 сек digitalWrite(12,LOW); // Выключение лампочки >else < digitalWrite(12,LOW); >if ((sensors.getTempCByIndex(0)<70) and (sensors.getTempCByIndex(0)>45)) < noTone(13); // Выключаем звук >sensors.requestTemperatures(); myOLED.clrScr(); // Очищаем экран myOLED.setFont(RusFont); myOLED.print("Ntvgthfnehf", CENTER, 0); // Вывод текста русскими буквами myOLED.setFont(SmallFont); myOLED.print("vk.com/tupo_izi123", CENTER, 55); // Вывод текста myOLED.setFont(BigNumbers); myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 10); // Отображение значения температуры, с точностью до десятых myOLED.update(); delay(100); >
В данном скетче у меня выставлена температура выше 70 и ниже 45 градусов, вы же можете поставить любую другую (от -55 до +125 °C).
Фото конечного продукта:
- Разработка робототехники
- Разработка под Arduino
- DIY или Сделай сам
Самодельный датчик температуры StarLine 6-го поколения
Здравствуйте уважаемые читатели. В этой записи я расскажу вам как сделать простой и в то же время надёжный внешний температурный датчик двигателя (…и не только) для автосигнализаций StarLine шестого поколения (A66, A96, B66, B96, E66, E96, S66, S96, X96v2 и т.д.).
Внешний датчик температуры двигателя необходим для полноценной реализации функции дистанционного/автозапуска двигателя особенно в таких сигнализациях (StarLine A66, E66, B66, S66), где эта функция является опцией.
Данная запись будет интересна тем, кто желает самостоятельно сделать датчик температуры, сэкономив на покупке нового оригинального датчика от StarLine при этом проявив свои технические навыки и способности.
Вся информация имеет ознакомительный характер. Автор записи настоятельно рекомендует приобретать оригинальный датчик температуры от Starline в случаи если же Вы не имеете никаких тех. навыков (пайка, монтаж и т.п.), в противном случаи есть риск повреждение компонентов, а так же выход из строя электрооборудования авто или сигнализации в дальнейшем. Автор записи за все Ваши действия, ответственность — не несёт!
Итак, нам понадобятся следующие компоненты, приобрести их можно в электро- и радио- технических магазинах.
Все компоненты были подобраны наиболее максимально схожие по тех.характеристикам к оригиналу.
— Кабельный наконечник ТМЛ 10-8-5 или ТМЛ 10-6-5 или ТМЛ 10-5-5. Вторая цифра указывает на диаметр крепёжного отверстия соответственно (8, 6, 5), поэтому рекомендуется изначально определить место для крепления нашего будущего термодатчика, после чего определиться с наконечником. Первая и третья цифра отвечают за сечение и диаметр внутренней полости наконечника.
Кабельный наконечник ТМЛ будет являться корпусом для нашего термодатчика. Медный корпус хорошо передаёт тепло, а лужённое покрытие защищает от коррозии.
Не рекомендуется использовать чисто медный наконечник без защитного покрытия, так как медь химически не устойчива к коррозии и окислению, особенно при контакте с алюминиевой ГБЦ…
На Ford Focus 3 с 2-х литровым мотором советую ТМЛ 10-6-5, готовый термодатчик можно будет закрепить на ГБЦ, рядом с патрубком ТНВД.
— KTY81/2xx — Термистор с положительным температурным коэффициентом, от компании Philips (NXP), так же подойдет любой другой терморезистор из серии KTY81/2.
Пожалуй один из самых популярных и в то же время надёжных PTC-резисторов.
Данный терморезистор способен работать в широком диапазоне температур от -55 до 150 градусов по цельсию.
Сопротивление исправного датчика при 25 градусов тепла составляет примерно 2 кОм.и чем выше температура, тем больше сопротивление соответственно.
Сам датчик исполнен в корпусе SOD-70, ширина корпуса не более 5 мм, что весьма вполне удобно для монтажа внутри кабельного наконечника ТМЛ 10. Есть исполнение и для поверхностного монтажа (KTY82)… но для него потребуется изготовление площадки, с последующей пайкой элемента и проводов. Этот вариант не подходит, так как потребует больше времени и затрат.
— Любой многопроволочный двужильный провод из марок: ШВВП, КСПВГ, КСПЭВГ или импортный аналог калибром AWG 24. Длина провода 2-3 метра в зависимости от расположения датчика…но лучше взять с запасом для подстраховки. Рекомендованное максимальное сечение провода не больше 0,22 мм2, в противном случаи могут возникнуть сложности с обжимкой контактов разъёма.
Самый популярный провод это ШВВП, но проблема в том, что производится этот провод с минимальным сечением 0,5 мм2, в этой записи я постараюсь описать процесс обжимки/опрессовки данного провода с сечением 0,5 мм2.
На Ford Focus 3 с двухлитровым мотором, достаточно 3 метра провода, с запасом.
Внимание! Применение жёстких МОНОжильных проводов в автомобиле — недопустимо! Так как данный тип провода не предназначен для работы в условиях постоянной вибрации.
— Двухпиновый разъём вилка Molex MicroBlade с шагом контактов 2 мм (корпус арт.51004-0200)(контакты арт. 50011-8000). Настоятельно рекомендую использовать этот разъём, так как именно этим разъёмом комплектуется штатный датчик температуры StarLine. Другие двухпиновые разъёмы не встанут без доработки.
Если же по каким-то причинам не нашли данный разъём, подойдёт и похожий разъём с шагом контактов 2 мм, например — JST PHR-2, только в этом случаи придётся доработать сам разъём в процессе обжимки провода, что бы он мог подключиться к центральному блоку StarLine. Учтите, в таком случаи эффект надёжной фиксации не может быть гарантирован.
Так же нам понадобится:
— Любой теплопроводящий клей типа АлСил-5, Радиал и т.п.
Теплопроводный клей можно сделать и самостоятельно имея под рукой необходимые компоненты схожие по составу: термопаста, термостойкий автогерметик ( например КПТ-8 и АвтоСил 11225)
— Термоусадочная трубка 6 мм, 4 мм.
— Электроизоляционный лак — Цапонлак или Шеллак.
Порядок действий:
1) В первую очередь проверяем на исправность сам датчик KTY81/2xx. Для проверки нам нужен мультиметр или любой другой прибор измеряющий электрическое сопротивление. Согласно даташиту сопротивление датчика при 25 градусов тепла должно быть около 2 кОм.
Сам датчик KTY81 — является терморезистором с положительно температурным коэффициентом, следовательно если же мы датчик отпустим в горячую воду, то сопротивление будет расти. И наоборот…отпустим в воду со льдом — сопротивление будет уменьшаться…
После того как убедились в исправности датчика приступаем к следующему пункту.
2) Подготовить провод. Аккуратно снимите изоляцию с наружной оболочки длиной 10-20 мм. Изоляцию следует снимать аккуратно не повредив изоляцию самих жил, для этого воспользуйтесь острым ножом или спец. инструментом. Далее снимите изоляцию (2-3 мм) с самих проводников.
Возможно Вам потребуется не одна попытка что бы добиться максимально качественного результата…
3) Теперь Вам предстоит проявить навыки пайки, здесь нужно быть не менее аккуратным нежели, чем в предыдущем пункте.
Здесь могу Вам дать рекомендации: используйте только легкоплавкие припои типа ПОС-61 или ПОС-63.с температурой плавления до 190 градусов. Будет лучше, если Вы воспользуйтесь паяльником с регулировкой температуры. С ним у вас будет меньше риска перегреть контакты и добиться максимально хорошего результата.
Откусите лишнюю часть контактов с самого датчика…оставив по 2-3 мм от корпуса.
Предварительно облудите зачищенные кончики жил провода. После приступайте к самой пайке провода к терморезистору.
Рекомендую использовать «штатив для пайки» он же «третья рука» для фиксации терморезистора в неподвижном состоянии. Аккуратно припаяйте жилы к контактам терморезистора. Старайтесь не перегревать элементы пайки. Старайтесь дозировать припой в оптимальном количестве…дабы пайка получилась аккуратно и надёжной.
4) По окончанию «горячих» процедур наносим на место пайки слой изолирующего лака — например Цапонлак, либо любой другой. После того как лак высохнет.одеваем отрезок термоусадки с диаметром 4 мм и прогреваем ее тепловоздушным феном.или на крайний случай — зажигалкой.
5) Теперь необходимо воспользоваться теплопроводным клеем (не путать с «термоклеем»)…»Заправляем» внутреннюю полость наконечника теплопроводным клеем.
Если же у Вас отсутствует теплопроводный клей, то его можно сделать самостоятельно смешав необходимые компоненты — термопасту и термостойкий автогерметик в пропорции 2 к 1. Важно, чтоб компоненты были схожие о составу, это необходимо для получения однородного состава. Рекомендую использовать Автосил 11225 и КПТ-8
Использование пистолетных термоклеев и синтетических клеев — недопустимо, так как они не предназначены для работы в условиях высоких температур, а так же обладают низким коэффициентом теплопроводности.
6) После Вам необходимо максимально «утопить» терморезистор с проводом во внутреннюю полость наконечника, которая заполнена клеем. По окончанию, излишки клея удалить. Постарайтесь делать эту процедуру без замедлений, до того как засохнет клей.
7) Устали? Отдыхаем от проделанной работы, а теплопроводному клею даём застыть. После того как клей застыл. По желанию можно одеть отрезок термоусадочной трубки на наконечник для эстетики и более надёжной конструкции термодатчика. Будет ещё лучше, если термоусадка будет самоклеющийся.
8) Заключительный этап: осталось собрать двухпиновый разъём на другом конце провода.
Как я рекомендовал ранее, используйте разъём вилку Molex MicroBlade. Если же у Вас отсутствует этот разъём подойдёт и более популярный JST PHR. Оба разъёма имеют расстояние 2 мм между контактами. Отличие Molex MicroBlade в том, что он обладает более лучшей фиксацией, по этой причине возможно его и StarLine применяет в своих автосигнализациях. Оба разъёма несовместимы друг с другом без доработок, хотя внешне похожи. Поэтому я кратко опишу как «подружить» вилку JST PHR с розеткой (на плате ц.б. Starline) Molex MicroBlade.
Первое что необходимо, это разделать другой конец провода. Снимаем оболочку 10мм…далее снимаем изоляцию с проводников длиной 5 мм.
Должно получиться так:
Провод с сечением не более 0,22 мм2 (AWG24) будет проще опрессовать в разъёме. Об этом пишут в документации разъёма.
Если используете провод ШВВП сечением 0,5 мм2 необходимо уменьшить сечение «механическим» способом именно в том месте где будет опрессовываться/обжиматься разъём-вилка. Здесь несложно догадаться, что необходимо практически в два раза уменьшить количество медных проволочек в жиле…к примеру у нас 10 проволочек в одной жиле…следовательно удаляем половину…остаётся 5 проволочек…что соответственно будет равно сечению 0,25-0,22мм2. Простая арифметика)) Для удаления лишних проволочек можно воспользоваться бокорезами или острым ножом.
Вот такие хитрости нужно применять…когда нет провода/кабеля/шнура с нужным сечением…но и это ещё не всё…Когда разобрались с проводом приступаем к обжимке контактов. Если у Вас для опрессовки отсутствует специальные клещи — кримпер, то можно воспользоваться обычными круглогубцами или хирургическим пинцетом.
Если всё отлично, продолжаем собирать разъём. Обжатые контакты вставляем в корпус вилки. Предварительно можно надеть термоусадочную трубку (4 мм) на провод рядом с разъёмом и прогреть её. Этот метод уменьшает риск возникновения так называемого капиллярного эффекта в проводе.
Обладатели Molex MicroBlade могут уже подключать готовый датчик температуры к центральному блоку StarLine и проверить его работу. В случаи JST PHR придётся немного подточить корпус в некоторых местах, периодически «примеряя» разъём к центральному блоку. Главное не убрать лишнее, иначе вилка будет сидеть не плотно в разъёме центрального блока сигнализации.
Сделать самодельный датчик температуры не так уж и сложно имея под рукой необходимые компоненты и материалы.
Готовое изделие можно использовать при температуре от -55 до +150С
Что это будет нам стоить?
Вспомогательные расходные материалы в учёт не берутся.
Провод ШВВП 3 м — 30 руб
Термодатчик — 90 руб
Наконечник — 20 руб
Разъём с контактами — 10 руб
Итого: примерно 150 руб
Цена готового изделия от StarLine — 290-900 руб
И напоследок…
В идеале датчик температуры двигателя (автосигнализации) желательно интегрировать в систему охлаждения ДВС на выходе из ГБЦ. Именно это место является наиболее горячим в системе и практически все датчики температуры устанавливаются в том месте. Для этого необходимо датчик совершенно другой конструкции…подобной той, как устроены обычные автомобильные датчики температуры ДВС. Датчики такой конструкции способны более точно и быстро измерять температуру, так как расположены непосредственно в системе охлаждения.
Возможно, что в будущем о создании датчика такой конструкции мы ещё напишем в следующих записях…)))