Для термометра отлично подходит датчик температуры DS18B20. Он позволяет измерять температуру в домашних, так и в уличных условиях, потому что исполнен с водонепроницаемом корпусе. В качестве дисплея будем использовать матрицу 0.96 128X64 OLED.

Для создания термометра нам понадобятся следующие компоненты:
- Датчик температуры DS18B20 1 метр. (Герметичный)
- Экран 0.96 128X64 OLED,
- Breadboard
- Набор проводов Папа-Папа
- Микроконтроллер Arduino
Для реализации проекта нам необходимо установить сразу несколько библиотек:
- OneWire Arduino Library
- OLED I2C OLED_I2C с поддержкой Русского и Украинского языка.
- Dallas Temperature
Сборка:
1) OLED дисплей подключаем к arduino следующим образом:
| Arduino Uno | Экран 0.96 128X64 OLED |
|---|---|
| 5V | VCC |
| GND | GND |
| Pin 9 | SCL |
| Pin 8 | SDA |
Для удобства подключения можно использовать макетную плату.
2) Датчик температуры DS18B20 подключается к arduino следующим образом.
Распиновка для влагозащитного датчика DS18B20 с метровым проводом:
| Arduino UNO | Влагозащитный датчика DS18B20 |
|---|---|
| 5V | Красный провод ( 5V) |
| GND | Черный провод (GND) |
| Pin 10 | Желтый провод (Сигнальный) (Необходимо подтянуть резистором 4,7кОм к 5V ) |
В случае, если Вы будете использовать не влагозащитный датчик в корпусе to92.(Датчик температуры DS18B20 в корпусе TO-92)
Теперь необходимо записать скетч в arduino Скачать пример.
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <iarduino_OLED.h>
#define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
iarduino_OLED myOLED(0x78);
extern const uint8_t SmallFontRus[]; // Русский шрифт
extern const uint8_t MegaNumbers[]; // Подключение больших шрифтов
extern const uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов.
void setup()
{
sensors.begin();
myOLED.begin();
}
void loop()
{
sensors.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.setFont(SmallFontRus); // Устанавливаем русский шрифт
myOLED.print("Ntvgthfnehf", OLED_C, 0); // Выводим надпись "Температура"
myOLED.setFont(SmallFont);
myOLED.print("iarduino.ru", OLED_C, 55); // вывод текста
myOLED.setFont(MegaNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 1), OLED_C, 9); // Отображение температуры
myOLED.update();
delay(100);
}
Результаты:



Обсуждение