Термометр на Ардуино с дисплеем TM1637

Проект термометра на Arduino с модулем TM1637 и DS18B20 или цифровым датчиком температуры DHT22 / DHT11 — простой проект для начинающих. Мы решили сделать краткий обзор сразу трех вариантов термометра на 4 символьном светодиодном индикаторе TM1637. На этой странице мы разместили схемы сборки проектов с программами для микроконтроллера Ардуино и модулем дисплея TM1637.

Arduino термометр с модулем TM1637

Для этого проекта потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль дисплея TM1637
  • датчик DS18B20 / LM35 / DHT11
  • макетная плата
  • резистор 4,7 кОм
  • провода «папа-папа», «папа-мама»

Для выбора сенсора обратите внимание на их характеристики. Сенсор ds18b20 имеет диапазон измерения температуры -55 … +125°C с погрешностью не более 0,5 градуса. Датчик lm35 не имеет возможности измерять отрицательные температуры и имеет погрешность измерений в 2°C. Цифровой датчик температуры DHT22 измеряет в диапазоне -40 … +150°C и кроме того имеет возможность измерять влажность воздуха.

Arduino термометр на TM1637 и DS18B20

Термометр на модуле TM1637 с датчиком DS18B20
Термометр на модуле TM1637 с датчиком температуры DS18B20

В первом варианте проекта использован герметичный датчик DS18B20. Мы уже рассматривали подключение сенсора DS18B20 к Arduino, который взаимодействует с микроконтроллером Ардуино с помощью библиотеки DallasTemperature.h. На схеме изображено подключение датчика к плате, помните, что при сборке термометра необходимо добавить резистор 4,7 кОм между контактами 5V и Data датчика.

#include "TM1637Display.h"
TM1637Display display(3, 2); // CLC, DIO

#include "OneWire.h"
#include "DallasTemperature.h"
OneWire oneWire(15); // порт подключения датчика (A1)
DallasTemperature ds(&oneWire);

const uint8_t C[] = {
  SEG_B | SEG_A | SEG_F | SEG_G,
  SEG_A | SEG_D | SEG_E | SEG_F
};

void setup() {
  ds.begin(); // инициализация датчика ds18b20
  Serial.begin(9600);
  display.setBrightness(4); // яркость от 0 до 7
}

void loop() {
  ds.requestTemperatures();
  int t = ds.getTempCByIndex(0);

  Serial.print("Temperature: ");
  Serial.println(t);

  display.showNumberDecEx(t, (0x80 >> 0), false, 2, 0);
  display.setSegments(C, 2, 2);

  delay(100);
}

Пояснения к коду:

  1. информация о температуре дополнительно выводится на монитор порта;
  2. порты подключения дисплея и сенсора указываются в программе.



Arduino термометр на TM1637 и датчиком LM35

Термометр на модуле TM1637 с датчиком LM35
Термометр на модуле TM1637 с датчиком температуры LM35

В этом примере мы используем показания с аналогового датчика LM35 для создания термометра на основе модуля TM1637. Этот датчик не требует калибровки или подстройки для обеспечения точности, электрический сигнал сенсора LM35 пропорционален градусам Цельсия. Будем отображать температуру на первых двух сегментах дисплея, а на двух других будет отображаться значок градуса.

#include "TM1637Display.h"
TM1637Display display(3, 2); // CLC, DIO

const uint8_t C[] = {
  SEG_B | SEG_A | SEG_F | SEG_G,
  SEG_A | SEG_D | SEG_E | SEG_F
};

void setup() {
  pinMode(A1, INPUT);
  Serial.begin(9600);
  display.setBrightness(4); // яркость от 0 до 7
}

void loop() {
  int t = analogRead(A1);
  int temp = (t / 1023.0) * 5.0 * 1000 / 10;

  Serial.print("Temperature: ");
  Serial.println(temp);

  display.showNumberDecEx(temp, (0x80 >> 0), false, 2, 0);
  display.setSegments(C, 2, 2);

  delay(100);
}

Пояснения к коду:

  1. яркость дисплея меняется от 0 до 7 в команде display.setBrightness();

Arduino термометр на TM1637 и датчиком DHT22

Подключение TM1637 и DHT22 к Ардуино
Термометр на модуле TM1637 с датчиком температуры DHT22

Третий вариант. При сборке проекта также можно использовать датчик температуры DHT11, но сенсор DHT22 обеспечивает наибольшую точность измерения для создания термометра. Схема сборки при этом не изменится, а в программе необходимо будет изменить только тип используемого датчика. Вам остается только собрать схему с модулем TM1637 и загрузить программу в микроконтроллер Arduino Uno.

#include "TM1637Display.h"
TM1637Display display(3, 2); // CLC, DIO 
 
#include "DHT.h"
DHT dht(8, DHT11);

const uint8_t C[] = {
  SEG_B | SEG_A | SEG_F | SEG_G,
  SEG_A | SEG_D | SEG_E | SEG_F
};

void setup() {
  dht.begin();
  Serial.begin(9600);
  display.setBrightness(4); // яркость от 0 до 7
}

void loop() {
  int t = dht.readTemperature();

  Serial.print("Temperature: ");
  Serial.println(t);

  display.showNumberDecEx(t, (0x80 >> 0), false, 2, 0);
  display.setSegments(C, 2, 2);

  delay(100);
}

Пояснения к коду:

  1. можно использовать датчик DHT11, внеся изменения в программе;
  2. при подключении нескольких дисплеев — у каждого модуля должно быть свое имя в программе и указаны пины подключения, например:
    TM1637Display display1 (3, 2);
    TM1637Display display2 (4, 5);

Заключение. Кроме представленных в этом обзоре вариантов термометра на плате Ардуино с модулем четырехразрядного дисплея, на нашем сайте вы можете также найти проект термометра на дисплее LCD 1602 или метеостанцию с блютуз модулем. В случае возникновения вопросов по сборке или программированию термометра на базе микроконтроллера Arduino — оставляйте их в комментариях к этой записи.



10 Replies to “Термометр на Ардуино с дисплеем TM1637 и DS18B20”

  1. Применил про мини, с теми же точками подключения кажет 27 градусов, и с датчиком и без него, где я накосячил?

    1. Да там в целом он просто не совпадает со входом который записан в программу. По схеме «10», по коду «15».

      1. Скажите, а как загрузить скетч на Arduino Nano. Скетч грузится, но температура постоянная — 27 .

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.