Перейти к содержанию

Термометр на TM1637 с датчиком LM35 / DS18B20

Термометр Ардуино на TM1637 и датчиком DHT22

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

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль дисплея TM1637
  • датчик DS18B20 / LM35 / DHT22 (DHT11)
  • макетная плата
  • коннекторы
  • библиотека TM1637Display.h и DHT.h
  • библиотека DallasTemperature.h и OneWire.h

Дополнительные материалы на эту тему:

  1. Часы с будильником на дисплее TM1637
  2. Как подключить дисплей TM1637 к Ардуино
  3. Как подключить датчик DS18B20 к Ардуино

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

Термометр на Arduino с дисплеем TM1637 и DS18B20

Термометр на Arduino с дисплеем TM1637 и DS18B20

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

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


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

#include "OneWire.h"
#include "DallasTemperature.h"
OneWire oneWire(15);
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();
  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);
}

Термометр на Arduino с дисплеем TM1637 и LM35

Термометр на Arduino с дисплеем TM1637 и LM35

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

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

#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);
}

Термометр на Arduino с дисплеем TM1637 и DHT22

Термометр на Arduino с дисплеем TM1637 и DHT22

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

Скетч термометра с датчиком DHT22 на дисплее TM1637

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

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);
}

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

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

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

newzaym
➜