В этом уроке мы создадим на печатной плате температурный индикатор с помощью Ардуино Нано, напишем скетч для устройства.
Компоненты
Чтобы создать этот проект, нам понадобятся:
- Печатная плата PCBWay
- Модуль TM1637
- Датчик температуры DS18B20
- Ардуино Нано
Очень часто нужно измерить и показать температуру пользователям устройств. Также бывает, что в этих проектах температура является критическим фактором и может влиять на безопасность систем.
Благодаря этому проекту вы узнаете, как сделать свою простую систему температурного индикатора, используя Arduino Nano, а также как можно сделать этот проект на печатной плате.
Схема соединения
Проект выполнен с использованием Arduino Nano, датчика DS18B20 и дисплея TM1637. Через эту цепь можно увидеть температуру, отображаемую на дисплее TM1637.
Электронная схема на основе макетной платы для создания устройства представлена ниже.
После сборки устройства на макетной плате мы получим вот такое устройство:
Через эту схему была спроектирована печатная плата. Электронная схема представлена ниже.
После создания электронной схемы делаем печатную плату, представленную ниже:
Код проекта
После изготовления печатной платы мы напишем программу для нашего индикатора температуры. Код ниже.
Не забудьте подключить необходимые библиотеки в IDE Arduino:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TM1637Display.h>
#define ONE_WIRE_BUS 8 // Digital Pin to connect the DS18B20 Sensor
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress sensor1;
TM1637Display display(2,3);
const uint8_t DEGREES[] = {0x0, 0x0,
SEG_A | SEG_B | SEG_G | SEG_F, // Degree Symbol
SEG_A | SEG_F | SEG_E | SEG_D, // C
};
unsigned int temperature = 0;
byte PreviousValue = 0;
void setup()
{
sensors.begin();
display.setBrightness(7); // set display to maximum brightness
if (!sensors.getAddress(sensor1, 0))
{
Serial.println("Sensor not found!");
}
}
void loop()
{
// Request sensor data
sensors.requestTemperatures();
int tempC = sensors.getTempC(sensor1); //Read temperature of DS18B20 Sensor
if(tempC != PreviousValue)
{
PreviousValue = tempC;
display.setSegments(DEGREES); //Display the Variable value
display.showNumberDec(tempC,false,2,0);
delay(2000);
}
}
Программа проверяет и выводит значение температуры.