Введение
Данное устройство предназначено для определения температуры на расстоянии. Так как я не нашел нужной мне готовой инструкции по сборке данного устройства, а покупать за 2+ тысячи не очень хотелось, было принято решение сделать все на ардуино (не дорого и не очень сложно).
Инструкция по сборке
Для сборки проекта нам понадобится:
- Датчик температуры DS18B20 1 метр. (Герметичный)
- Экран 0.96 128×64 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).
Фото конечного продукта:
ссылка на оригинал статьи https://habr.com/ru/post/476900/
Добавить комментарий