Автономное устройство на ардуино, сигнализирующее об повышении (понижении) температуры

от автора

Введение

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

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

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

  • Датчик температуры DS18B20 1 метр. (Герметичный)
  • Экран 0.96 128×64 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


ссылка на оригинал статьи https://habr.com/ru/post/476900/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *