Введение


Данное устройство предназначено для определения температуры на расстоянии. Так как я не нашел нужной мне готовой инструкции по сборке данного устройства, а покупать за 2+ тысячи не очень хотелось, было принято решение сделать все на ардуино (не дорого и не очень сложно).

Инструкция по сборке


Для сборки проекта нам понадобится:

  • Датчик температуры DS18B20 1 метр. (Герметичный)
  • Экран 0.96 128x64 OLED
  • Breadboard
  • Набор проводов Папа-Папа
  • Микроконтроллер Arduino Uno
  • Резистор

Для реализации проекта нам необходимо установить arduino IDE и сразу несколько библиотек:

  • OneWire Arduino Library
  • OLED I2C_OLED_I2C с поддержкой Русского и Украинского языков.
  • Dallas temperature

Поговорим немного насчет макетной платы. Данную макетную плату используют для быстрой сборки схем без пайки и радиоэлементов и провод для соединения. Макетные платы бывают различных размеров, но в большинстве случаев они состоят из вот таких одинаковых блоков:

image

Схема электрических соединений гнезд изображена на правом рисунке: пять отверстий с каждой стороны, в каждом из рядов (в данном случае 30) электрически соединены между собой. Слева и справа находится по две линии питания: здесь все отверстия в столбце соединены между собой. Прорезь по середине предназначена для установки и удобного извлечения микросхем в корпусах. Для сборки схемы в отверстия вставляются радиодетали и перемычки.

После того как мы разобрались с макетной платой, теперь можно переходить к подключениям модулей. Для начала подключим дисплей следующим образом:

image

image

В данном случае мы подключили 5V к “+” на макетной плате (желтый провод), а GND к ”-” (белый провод), чтобы в последствии всё питание на модулях подключать к “+” и “-” на макетной плате.

Далее подключаем датчик температуры DS18B20 при помощи резистора как показано на фотографии ниже:

image

image

В нашем случае, для удобства мы подключили все провода датчика к макетной плате и оранжевым проводом “Папа-папа” подключили к Pin 10.

Половина дела сделано, осталось только подключить сигнализирующие устройства, а именно: светодиод x2 (красный для повышенной температуры, синий для пониженной) и обычный пьезоизлучатель(в простонародье “пищалка”). Светодиод подключается очень просто, “+” это длинный стержень, а минус это короткий стержень. Вставляем его в плату, подсоединяем обязательно к нему резистор и при помощи проводов “Папа-папа” подключаем короткий стержень синего светодиода к 5 пину, а короткий стержень красного светодиода к 12 пину.

Пищалку же просто подключаем черный провод к “-”, красный провод к 13пину.

Вот так все должно получится:

image

Самое главное (скетч)


#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).

Фото конечного продукта:

image

Комментарии (21)


  1. balamutang
    21.11.2019 16:31
    +1

    Для первого шага в ардуино неплохо


    1. ukrophik Автор
      21.11.2019 17:09
      -2

      Спасибо за коммент, я сам понимаю что данную статью можно было еще много как доделать, но время поджимало


      1. iig
        21.11.2019 23:39

        Если нет уверенности, что статья сделает мир хоть немного лучше — не нужно ее писать. "Не писал стихов — и не пиши!" (Ц)


  1. IronHead
    21.11.2019 17:58
    +1

    Датчик отвалился — будет пищать всегда


  1. Rigidus
    21.11.2019 18:00

    Предлагаю сделать вторую часть, где устройство открывает и закрывает форточку, в зависимости от температуры.


  1. seri0shka
    21.11.2019 18:44
    +2

    С почином!
    Программируемый терморегулятор W1209 весь целиком стоит примерно вдвое дешевле, чем применённый в статье экран. Правда, к нему нужно ещё сирену и лампочку. Но полученные знания тоже многого стоят.image


  1. vasiaplaton
    21.11.2019 18:45
    +2

    Зачем писать статью про устройство из мешанины проводов и скетча, скомпилированного из 3 стандартных, тем более на этом ресурсе. Нет, я просто не понимаю, честно. Автор конечно молодец, для первого шага в ардуино неплохо, но зачем на хабр? Если кто знает адекватную причину, напишите, может я чего не понимаю.


    1. ukrophik Автор
      22.11.2019 06:57

      Спасибо за отзыв. Данная статья была написана исключительно для показа моей проделанной работы в рамках школьной проектной деятельности (я учусь в 11 классе).Я понимаю ваше негодование, я и не рассчитывал на положительные отзывы, проект действительно дошкольного уровня, но мне нужно было где-то выложить его в интернете и получить минимальный отзыв, а кроме хабра и гитхаба я ничего не знаю. Может быть вы подскажете где можно было выложить данное, если не на Хабре?


    1. andetlt
      22.11.2019 12:28

      Ну что за снобизм? Так можно все желание что-то делать отбить. Человек закупил деталей, собрал, запрограммировал, статью оформил. Большинство в этом возрасте вообще ничего делать не хотят. Представляю как он радовался, когда все заработало. Что мешало глянуть и закрыть, если такая простота вызывает негодование? Спасибо комментаторам, которые конструктивно покритиковали.


      1. ukrophik Автор
        22.11.2019 13:25

        Спасибо за комментарий. Каждой мнение имеет место быть, так что в конкретном случае я очень рад получить такую обратную связь(я на 1к просмотров даже не рассчитывал, а тут 4к просмотров и 15 комментариев(на данный момент), так что я считаю это успехом). А насчет желания, то оно не убавилось, наоборот появилось желание сделать другой проект, намного лучше, более продуманным, качественным, ну и полезным.


        1. vasiaplaton
          22.11.2019 17:02

          Я в 9 классе в качестве проекта по информатике запили робота на atmege и собственной плате. Ну это на самом деле не важно. Вообще говоря вы молодец, я начинал с ± таких же проектов и сейчас иногда поделываю такое. Но они либо разбираются через 2 часа, либо я залипаю в eagle и делаю плату. Очень советую вам через пару проектов уйти от ардуино, хотя бы из arduino ide, а там и на свои платы можно перейти. А можно и на пайку с макеткой, всяко лучше на бредборде проводки втыкать. Если захотите перейти на свои платы, то в интернете много гайдов. А так, если понравиться, то ни в коем случае не бросайте заниматься DIY, и никому не верьте, кроме себя)


          1. ukrophik Автор
            22.11.2019 18:04

            Хорошо, спасибо за совет, приму к сведению))


  1. 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 — если уж есть проверка на выключение звука, почему бы не выключать светодиоды там же?

    Короче НЕЗАЧЁТ!
    Переделайте и приходите в следующий раз.
    И больше ТАКОЕ не выставляйте в качестве примера для начинающих.


    1. vasiaplaton
      21.11.2019 19:22
      +1

      Яростно плюсую.


    1. ukrophik Автор
      22.11.2019 07:21

      Хотел ответить вам по пунктам, но косяков уж слишком много, так что проще будет поблагодарить вас за ТАКОЙ (в хорошем смысле этого слова) конструктивный отзыв и сделать выводы. Признаю проект действительно не о чем и руководство сделано ужасно, и если говорить по честному то цель моя была просто в написании данной статьи(для школьного проекта) и о качестве ее я задумывался в последний момент (и это была моя ошибка). В следующий раз буду стараться большее перед выкладыванием чего-либо на Хабре :)


  1. antonluba
    21.11.2019 21:30
    -1

    На изиэлектрониксе хорошо бы зашло


  1. kolu4iy
    21.11.2019 22:44

    … а если посмотреть в бинокль, то можно снимать показания удаленно, да-да. Добавьте в заголовок.


    P.S. в 90 я часто слышал от автомобилистов фразу "кроилово ведёт к попадалову". Так вот: это кроилово, честное слово. На дачу я себе купил изделие профессионалов. С сим картой, аккумулятором, удаленной настройкой (без интернета, по смс): это безопасно, и при отключении электричества ничего плохого не произойдет, а я об этом вовремя узнаю. И я понимаю, за что отдал 5 т.р.


  1. avs24rus
    22.11.2019 04:20

    Фото конечного продукта:

    Сильно сказано!


  1. c_kotik
    23.11.2019 08:24

    Покритикую нетехническую часть. Если решил где публиковаться — нужно было изучиь аудиторию. Слава ардуинок на хабре лет так 5 назад отгремела, а все что после появляется не несет ничего нового и интересного. Особенно в таком тривиальном варианте. Публика ожидаемо негодует.


    1. ukrophik Автор
      23.11.2019 15:06

      Спасибо за информацию, буду иметь в виду.


  1. Barma2012
    23.11.2019 14:12
    -1

    А я считаю — здорово, что вы смогли это сделать, и еще здоровее — что написали и оформили материал! image
    Не имеет значения, что для некоторых местных высокотехнологичных снобов ваша поделка — полный примитив. Они просто забыли. что когда-то сами были нубами. И видимо, их в то время никто не поддержал, не похлопал одобрительно по плечу, и не сказал «молодец!». Поэтому сейчас они пытаются отыграться на начинающих, делающих первые шаги.

    Важно, что у вас всё получилось, и что всё заработало так, как вы хотели. Это самое главное! image