Введение
Данное устройство предназначено для определения температуры на расстоянии. Так как я не нашел нужной мне готовой инструкции по сборке данного устройства, а покупать за 2+ тысячи не очень хотелось, было принято решение сделать все на ардуино (не дорого и не очень сложно).
Инструкция по сборке
Для сборки проекта нам понадобится:
- Датчик температуры DS18B20 1 метр. (Герметичный)
- Экран 0.96 128x64 OLED
- Breadboard
- Набор проводов Папа-Папа
- Микроконтроллер Arduino Uno
- Резистор
Для реализации проекта нам необходимо установить arduino IDE и сразу несколько библиотек:
- OneWire Arduino Library
- OLED I2C_OLED_I2C с поддержкой Русского и Украинского языков.
- Dallas temperature
Поговорим немного насчет макетной платы. Данную макетную плату используют для быстрой сборки схем без пайки и радиоэлементов и провод для соединения. Макетные платы бывают различных размеров, но в большинстве случаев они состоят из вот таких одинаковых блоков:
Схема электрических соединений гнезд изображена на правом рисунке: пять отверстий с каждой стороны, в каждом из рядов (в данном случае 30) электрически соединены между собой. Слева и справа находится по две линии питания: здесь все отверстия в столбце соединены между собой. Прорезь по середине предназначена для установки и удобного извлечения микросхем в корпусах. Для сборки схемы в отверстия вставляются радиодетали и перемычки.
После того как мы разобрались с макетной платой, теперь можно переходить к подключениям модулей. Для начала подключим дисплей следующим образом:
В данном случае мы подключили 5V к “+” на макетной плате (желтый провод), а GND к ”-” (белый провод), чтобы в последствии всё питание на модулях подключать к “+” и “-” на макетной плате.
Далее подключаем датчик температуры DS18B20 при помощи резистора как показано на фотографии ниже:
В нашем случае, для удобства мы подключили все провода датчика к макетной плате и оранжевым проводом “Папа-папа” подключили к Pin 10.
Половина дела сделано, осталось только подключить сигнализирующие устройства, а именно: светодиод x2 (красный для повышенной температуры, синий для пониженной) и обычный пьезоизлучатель(в простонародье “пищалка”). Светодиод подключается очень просто, “+” это длинный стержень, а минус это короткий стержень. Вставляем его в плату, подсоединяем обязательно к нему резистор и при помощи проводов “Папа-папа” подключаем короткий стержень синего светодиода к 5 пину, а короткий стержень красного светодиода к 12 пину.
Пищалку же просто подключаем черный провод к “-”, красный провод к 13пину.
Вот так все должно получится:
Самое главное (скетч)
#include <Wire.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h> //подключение библеотек для DS18B20
#define ONE_WIRE_BUS 10 // pin к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <OLED_I2C.h>
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).
Фото конечного продукта:
Комментарии (21)
Rigidus
21.11.2019 18:00Предлагаю сделать вторую часть, где устройство открывает и закрывает форточку, в зависимости от температуры.
seri0shka
21.11.2019 18:44+2С почином!
Программируемый терморегулятор W1209 весь целиком стоит примерно вдвое дешевле, чем применённый в статье экран. Правда, к нему нужно ещё сирену и лампочку. Но полученные знания тоже многого стоят.
vasiaplaton
21.11.2019 18:45+2Зачем писать статью про устройство из мешанины проводов и скетча, скомпилированного из 3 стандартных, тем более на этом ресурсе. Нет, я просто не понимаю, честно. Автор конечно молодец, для первого шага в ардуино неплохо, но зачем на хабр? Если кто знает адекватную причину, напишите, может я чего не понимаю.
ukrophik Автор
22.11.2019 06:57Спасибо за отзыв. Данная статья была написана исключительно для показа моей проделанной работы в рамках школьной проектной деятельности (я учусь в 11 классе).Я понимаю ваше негодование, я и не рассчитывал на положительные отзывы, проект действительно дошкольного уровня, но мне нужно было где-то выложить его в интернете и получить минимальный отзыв, а кроме хабра и гитхаба я ничего не знаю. Может быть вы подскажете где можно было выложить данное, если не на Хабре?
andetlt
22.11.2019 12:28Ну что за снобизм? Так можно все желание что-то делать отбить. Человек закупил деталей, собрал, запрограммировал, статью оформил. Большинство в этом возрасте вообще ничего делать не хотят. Представляю как он радовался, когда все заработало. Что мешало глянуть и закрыть, если такая простота вызывает негодование? Спасибо комментаторам, которые конструктивно покритиковали.
ukrophik Автор
22.11.2019 13:25Спасибо за комментарий. Каждой мнение имеет место быть, так что в конкретном случае я очень рад получить такую обратную связь(я на 1к просмотров даже не рассчитывал, а тут 4к просмотров и 15 комментариев(на данный момент), так что я считаю это успехом). А насчет желания, то оно не убавилось, наоборот появилось желание сделать другой проект, намного лучше, более продуманным, качественным, ну и полезным.
vasiaplaton
22.11.2019 17:02Я в 9 классе в качестве проекта по информатике запили робота на atmege и собственной плате. Ну это на самом деле не важно. Вообще говоря вы молодец, я начинал с ± таких же проектов и сейчас иногда поделываю такое. Но они либо разбираются через 2 часа, либо я залипаю в eagle и делаю плату. Очень советую вам через пару проектов уйти от ардуино, хотя бы из arduino ide, а там и на свои платы можно перейти. А можно и на пайку с макеткой, всяко лучше на бредборде проводки втыкать. Если захотите перейти на свои платы, то в интернете много гайдов. А так, если понравиться, то ни в коем случае не бросайте заниматься DIY, и никому не верьте, кроме себя)
solderman
21.11.2019 19:14+4Много странного
1 — Почему автономный? От Кроны автономности хватит минут на десять :)
2 — Для чего это устройство вообще может быть применимо?
3 — Сказ при устройство, или про то, как быстро макетировать? или зачем тут рассказ про бредборд.
ПРО ХАРДВАРЕ
4 — Если уж Вы так подробно рассказываете про то, как подключить питание к дисплею, почему бы не рассказать про то, куда подключать i2c линии и как их подтягивать к плюсу?
5 — подтяжка далласа: каким резистором?
6 — рассказано, куда подключать минусы светодиодов, но ни слова про плюсы. На фото кстати светодиоды включены между минусом и пином а не как в тексте.
7 — на фото в цепи светодиодов есть резисторы, в тексте про них ни слова
8 — кстати а какие это резисторы? И для чего они вообще, как Вы полагаете?
В целом по железу — ничто на бредборде и пинчиках на может считаться устройством — это только макет устройства. Только пайка, ибо контакты бредборда окисляются с неимоверной скоростью и Вы будете потом долго искать неконтакты и недоконтакты.
ПРО СОФТВАРЕ
9 — почему «лампочка :)» включается так затейливо ...(5,255);, а не ...(5,HIGH);, если выключается (5,LOW);?
10 — кстати, при подключении светодиода минусом к пину, как в тексте, светодиод будет светить при подаче на пин LOW!, а не как у Вас в программе. А так, как в программе будет работать, как на фото, а не в как тексте :)
11 — нижний предел в проверке включения сигнала 25, в проверке выключения сигнала 45
12 — что означает «Ntvgthfnehf» которое вы выводите на экран? Почему слово «Температура» надо набирать именно так?
13 — как можно запрашивать температуру с датчиков не запросив ее измерения и не выдержав положенной паузы ДО считывания температуры?
14 — зачем столько раз запрашивать температуру, и даже при ее выводе на экран? Почему бы не считать ее всего один раз в переменную и потом работать с нею?
15 — если уж есть проверка на выключение звука, почему бы не выключать светодиоды там же?
Короче НЕЗАЧЁТ!
Переделайте и приходите в следующий раз.
И больше ТАКОЕ не выставляйте в качестве примера для начинающих.
ukrophik Автор
22.11.2019 07:21Хотел ответить вам по пунктам, но косяков уж слишком много, так что проще будет поблагодарить вас за ТАКОЙ (в хорошем смысле этого слова) конструктивный отзыв и сделать выводы. Признаю проект действительно не о чем и руководство сделано ужасно, и если говорить по честному то цель моя была просто в написании данной статьи(для школьного проекта) и о качестве ее я задумывался в последний момент (и это была моя ошибка). В следующий раз буду стараться большее перед выкладыванием чего-либо на Хабре :)
kolu4iy
21.11.2019 22:44… а если посмотреть в бинокль, то можно снимать показания удаленно, да-да. Добавьте в заголовок.
P.S. в 90 я часто слышал от автомобилистов фразу "кроилово ведёт к попадалову". Так вот: это кроилово, честное слово. На дачу я себе купил изделие профессионалов. С сим картой, аккумулятором, удаленной настройкой (без интернета, по смс): это безопасно, и при отключении электричества ничего плохого не произойдет, а я об этом вовремя узнаю. И я понимаю, за что отдал 5 т.р.
c_kotik
23.11.2019 08:24Покритикую нетехническую часть. Если решил где публиковаться — нужно было изучиь аудиторию. Слава ардуинок на хабре лет так 5 назад отгремела, а все что после появляется не несет ничего нового и интересного. Особенно в таком тривиальном варианте. Публика ожидаемо негодует.
Barma2012
23.11.2019 14:12-1А я считаю — здорово, что вы смогли это сделать, и еще здоровее — что написали и оформили материал!
Не имеет значения, что для некоторых местных высокотехнологичных снобов ваша поделка — полный примитив. Они просто забыли. что когда-то сами были нубами. И видимо, их в то время никто не поддержал, не похлопал одобрительно по плечу, и не сказал «молодец!». Поэтому сейчас они пытаются отыграться на начинающих, делающих первые шаги.
Важно, что у вас всё получилось, и что всё заработало так, как вы хотели. Это самое главное!
balamutang
Для первого шага в ардуино неплохо
ukrophik Автор
Спасибо за коммент, я сам понимаю что данную статью можно было еще много как доделать, но время поджимало
iig
Если нет уверенности, что статья сделает мир хоть немного лучше — не нужно ее писать. "Не писал стихов — и не пиши!" (Ц)