Для термометра отлично подходит датчик температуры 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); }
Результаты:
Обсуждение