Электронный термометр на ленте адресных светодиодов

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
Страницы: (7) [1] 2 3 ... Последняя »  К последнему непрочитанному [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
dlrex
1.03.2023 - 23:14
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
493
В новогодние праздники тут была статейка в которой показывали термометр на заводской трубе. Меня это заинтересовало. Тем более что схемка для реализации такого устройства элементарная. Как и программа для контроллера.

В той теме я об этом и сказал. Кое-кого это заинтересовало и народ стал просить схему. Начало года у меня выдалось довольно напряжным — обстановка в мире не способствовала образованию свободного времени для хобби, но на днях я всё же сделал это устройство. И сейчас расскажу, как это можно повторить.

П.С. 16 картинок и чуток текста

Электронный термометр на ленте адресных светодиодов
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
dlrex
1.03.2023 - 23:15
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Схемка будет вот такая:

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:15
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Первым делом нужно собрать необходимые детальки. Их не так уж и много:
Микроконтроллер ESP-12E.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:16
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Можно взять даже ESP-01, только его использовать немного напряжно (нужен программатор. Да ещё и стабилизатор припаять надо с 5V на 3.3V). Зато схемка будет немного меньше. Да и дешевле этот контроллер. Кто захочет, может заморочиться – там нет ничего сложного.
Так что буду использовать ESP-12E. Вернее, его китайский аналог. Сейчас эта штука стоит 140-170 рублей на AliExpress, а покупал я эти платки года четыре назад по цене 107 рублей. Это было (да и есть) даже дешевле чем китайский аналог Arduino Nano V3. Её, кстати, тоже можно использовать, только у неё возможностей меньше. Но на термометр хватит.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:16
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Ещё возьмём светодиодную ленту с адресными светодиодами WS2812B. Цена её, при 60 светиков на метр без пыле-влаго защиты, в нашем не самом дешёвом в городе магазине «Радио» 550 рублей за метр. Берём два метра. На самом деле у меня были остатки ленты с предыдущих проектов, но цену я посмотрел, чтобы сориентировать тех, кто захочет повторить конструкцию.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:17
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Ещё нам понадобиться термодатчик. У меня есть кучка DS18B20 - его и возьму. Тем более, что есть у меня датчик в герметичном исполнении. У нас он стоит 145 рублей:

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:18
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Ещё понадобятся два резистора: на 270 Ом и 4.7кОм. Стоят рублей пять за оба. Мощность может быть любая. На 0.125 вполне пойдут. Можно даже SMD взять, если хотите заморочиться.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:18
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Теперь надо всё это дело спаять или собрать на макетной плате без пайки. Платка такая у меня на работе оказалась занята под другой проект, поэтому буду паять.
Первым делом подготавливаем термодатчик. К нему надо подпаять резистор. Резистор на 4.7К подпаиваем между красным проводом (питание) и жёлтым (сигнал)

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:19
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Теперь подпаяем резистор на 270Ом к ленте светодиодов (к контакту DIN).
На фото он уже затянут в термоусадку.
Обратите внимание на то, к какому концу ленты подпаиваться. Направление ленты указано стрелочкой-треугольником. Резистор подпаиваем к контакту DIN. Питание 5 вольт соответственно к выводу +5V, а землю к выводу GND.
Ленту, кстати, нужно обрезать, оставив отрезок со 101-им светодиодом. Длина такой ленты будет ~168см. Ха, мой рост!
Как уже многие догадались, диапазон измерений этого термометра будет от -50 до +50 градусов Цельсия. Один светодиод = 1 градус. Это что бы не усложнять программу. Хотя есть в ардуиновском С-подобии функция «map», с помощью которой можно легко и просто отмасштабировать диапазон измерений на ленту любой длины. Ну а выбранного мной диапазона хватит почти везде. У нас в эту зиму ниже -38 не опускалась температура, да и больше 35 летом редко поднимается. Так что, как говориться: «хватит за глаза и за уши!».

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:20
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Теперь, согласно схеме, подсоединяем красный провод датчика температуры к выводу контроллера 3V3, чёрный к выводу GND, а жёлтый – к выводу D2. Этот вывод может быть и любой другой цифровой, у меня это просто исторически так сложилось. С других проектов.
Провод питания с ленты цепляем к выводу VIN, землю к выводу контроллера GND, а сигнальный к выводу D7. Это тоже исторически сложилось, а так можно использовать и другие цифровые выводы. Только, конечно, в программе надо это будет учесть.
В итоге получается вот такая сляпаная наскоро хренатень:

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:21
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Врубаем её, загнав внутрь сляпанную наскоро прогу.
На фото видно, что я подпаял ещё и USB-разъём для внешнего питания, но оказалось, что он лишний. Мой вариант устройства, даже если зажечь все светики белым светом на полной яркости, не дотягивал по току даже до двух ампер (1.8А). Так что двухамперная зарядка от телефона, подключенная к микро-USB контроллера в качестве блока питания устройства, вполне подойдёт. На самом деле устройство и до ампера не дотягивает, если работает в штатном режиме с моей программой (0.8А). Но есть ленты, в которых светики на полной мощности потребляют по 60мА каждый (при ярком белом свете). Так что тут всё зависит от ленты.
На фото контроллер уже показывает красным цветом температуру 28 градусов. Но одним цветом и без шкалы – это как-то некрасиво.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:22
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Можно подключиться к COM-порту и проверить выдаваемую датчиком температуру (скорость порта 115200). Это я датчик в руках подержал – он ещё не совсем остыл. Так температура в комнате 25-26 градусов.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:22
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Загоняем готовую программу в контроллер и приступаем к испытаниям. Ну или к демонстрации устройства – народ повеселил (внерабочее время естественно).
Тут комнатная температура 25 градусов:

Это сообщение отредактировал dlrex - 1.03.2023 - 23:23

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:23
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
А тут в кружке горячая вода из куллера и шкала вся заполнена.
Как видите, теперь прога отображает отрицательную температуру синим, ноль – белым, положительную – красным. А риски шкалы через каждые пять градусов выделяются другими цветами (голубым и розовым вроде как).

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:24
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Теперь в кружке снег, но так как датчик только что из кипятка, то показывает ноль. Обычно снег до этого показывал -2 градуса. До окна далековато – длины провода датчика не хватает. Да и в день измерений было где-то -5, не так уж и холодно.
Измерение температуры происходит с частотой раз в три секунды. Тут вообще надо соблюсти золотую середину, ибо если часто опрашивать датчик, то он нагревается и начинает завышать температуру. Надо это учитывать. И думается мне, что для домашнего термометра и три секунды – это довольно часто, но так оставил.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:25
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
В итоге что? В итоге мы, я думаю, убедились, что устройство работает. Народ сказал, что можно и не так ярко, а то слепит глаза. В проге это можно быстро исправить.
Что ещё остаётся? Разве что осталось времянку перепаять более культурно что ли?
Как видите, теперь термодатчик подключается к гнезду Stereo-Jack 3.5мм (обычные гнездо и штекер от наушников). Лучше брать их подороже, а то дешёвые нихрена не контачат и разваливаются прямо в руках. Я на этом обжёгся в этом проекте. А вообще рекомендую взять гнездо и штекер RG11 (телефонный). Они как-то получше будут и безопаснее в плане включения и отключения «на ходу». А то мало ли что?
Лента подцеплена через разъём от компьютерного вентилятора. Хотел взять трёх-пиновый, но не нашёл в ближайшем доступе их. Только четырёх-пиновые были на дохлых материнках и вентиляторах, но и так нормально. Разъёмы приклеены к плате с помощью термоклея. Пайка между лентой и разъёмом залита лаком.

Электронный термометр на ленте адресных светодиодов
 
[^]
dlrex
1.03.2023 - 23:25
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Осталось только нарисовать в каком-либо CADе корпус для устройства и распечатать его на 3D-принтере, но этим я займусь как-нибудь потом, когда появится настроение и время для этого.
Вообще контроллер позволяет сделать ещё очень многое с этим термометром. Например, он способен подключиться к роутеру через Wi-Fi, или сам поднимать точку доступа. После чего он способен поднять Web-сервер, на котором будет показывать текущую температуру. Или с которого можно задавать цвета шкалы термометра. Ну или вообще в праздничные дни превращать это устройство в гирлянду с различными спецэффектами. Всё ограничивается только его памятью и вашей фантазией.
 
[^]
dlrex
1.03.2023 - 23:26
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Код

Прога:
#include <OneWire.h>             // Подключаем нужные библиотеки
#include <DallasTemperature.h>
#include <Adafruit_NeoPixel.h>

#define DS18B20PIN     4   // пин D2 к нему подключен датчик
#define PIN            13  // Лента на пин D7
#define NUMPIXELS      101 // Количество светиков в ленте

OneWire oneWire(DS18B20PIN); // Запуск протокола OneWire
DallasTemperature sensor(&oneWire); // запускаем датчик температуры
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Параметры ленты

void setup()
{
 Serial.begin(115200);  // Задаём скорость последовательного порта
 sensor.begin();        // Инициализирую библиотеку работы с датчиком
 strip.begin();         // Инициализирует библиотеку работы с лентой
}

void loop()
{
 sensor.requestTemperatures();
 int8_t tempinC = round(sensor.getTempCByIndex(0));  // Округляем температуру до целого числа
 Serial.print("Temperature = ");                     // И выводим
 Serial.print(tempinC);                              // её
 Serial.println("ºC");                               // в консоль

 for (byte i=0; i<NUMPIXELS; i++) {
   byte tmp = tempinC + 50;
   if (i <= tmp) {
        if (i <= 50) {
                     strip.setPixelColor(i, strip.Color(0,0,100)); // Холодрыгу выводим синим
        }
        else {
                     strip.setPixelColor(i, strip.Color(100,0,0)); // Тепло красным
        }
      }
   else {
      strip.setPixelColor(i, strip.Color(0,0,0)); // Все остальные светики не горят
   }
 
 }

 for (byte i=0; i<=50; i +=5) {

   strip.setPixelColor(i, strip.Color(100,100,250));   // Рисуем шкалу по 5 градусов
   strip.setPixelColor(i+50, strip.Color(250,100,100));

 }

 strip.setPixelColor(50, strip.Color(250,250,250)); // Рисуем белым ноль.

 strip.show(); // Засветить всю ленту.
 
 delay(3000);   //Ждём три секунды и повторяем цикл
}
 
[^]
dlrex
1.03.2023 - 23:26
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Осталось только дать ссылочку на архив с прогой, библиотеками и дополнительными фотографиями. Ну и кучку ссылок, что будут полезны как для начинающих, так и для продолжающих, а то подробности работы в Arduino IDE в своей статье я опустил. А профи и сами подобное уже тыщу раз делали. smile.gif
Ссылка на архив с прогой, библиотеками и дополнительными фото: https://drive.google.com/file/d/1uapSWbQNIb...iew?usp=sharing
Ссылка на даташит DS18B20: https://www.digchip.com/datasheets/parts/da...DS18B20-pdf.php
Ссылка на даташит WS2812B: https://components101.com/displays/ws2812b-...essable-rgb-led
Ссылка на описание ESP-12E: https://datasheet4u.com/datasheet-pdf/AI-Th....php?id=1258546
Как программировать ESP в Arduino IDE: https://robot-on.ru/articles/proshivka-esp8...rez-arduino-ide
Как работать с DS18B20 на ESP: https://espsmart.ru/blog/19-podkljuchenie-d...-k-esp8266.html
Как работать с лентами WS2812B с помощью контроллера ESP: https://esp8266.ru/esp8266-ws2812-arduino/
FAQ по работе с лентами адресных светодиодов: https://alexgyver.ru/ws2812_guide/


П.С. Если что, то готов ответить на вопросы, по мере своих слабых сил, разумеется. smile.gif

Всё!

Это сообщение отредактировал dlrex - 1.03.2023 - 23:28
 
[^]
alexruso
1.03.2023 - 23:30
17
Статус: Offline


Хохмач

Регистрация: 13.06.13
Сообщений: 732
Нифигасе! Молодец

Размещено через приложение ЯПлакалъ
 
[^]
koreshkoresh
1.03.2023 - 23:30
139
Статус: Offline


Приколист

Регистрация: 16.01.12
Сообщений: 364
Внимательно прочитал весь текст, хотя нихрена в этом не понимаю😄
Зелёнка ТСу за прямые руки. Всегда плюсую на ЯПе рукожопские темы

Размещено через приложение ЯПлакалъ
 
[^]
mufaso
1.03.2023 - 23:31
29
Статус: Online


Ярила

Регистрация: 3.08.14
Сообщений: 1149
Интересно, спасибо. делать этого я конечно не буду.
 
[^]
Синтетик
1.03.2023 - 23:38
26
Статус: Online


Ярила

Регистрация: 15.11.17
Сообщений: 21266
Отлично. Вот только ESP-12 это маркировка модуля, а микроконтроллер на нём еsp8286. Да, зануда. Для такой задач модуль избыточный. При желании на нём можно поднять даже веб интерфейс.
 
[^]
dlrex
1.03.2023 - 23:38
4
Статус: Offline


Инженегр

Регистрация: 24.11.13
Сообщений: 9270
Цитата (mufaso @ 2.03.2023 - 00:31)
Интересно, спасибо. делать этого я конечно не буду.

Да там делать-то, если повторять по уже готовому - часа два с перекурами на кофе. smile.gif
Только Arduino IDE надо настроить предварительно.
 
[^]
ias1906
1.03.2023 - 23:39
12
Статус: Offline


Заслуженный Похуист России

Регистрация: 30.06.13
Сообщений: 2579
а где цыферьки для градусов? pray.gif
акуеешь так каждый раз диодики пересчитывать! shum_lol.gif

"Если руки золотые- то совсем не важно, откуда они растут!"©

Это сообщение отредактировал ias1906 - 1.03.2023 - 23:58

Электронный термометр на ленте адресных светодиодов
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 33037
0 Пользователей:
Страницы: (7) [1] 2 3 ... Последняя » [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх