Полное руководство по измерению температуры с помощью Arduino: методы и примеры кода

Измерение температуры — важнейший аспект многих проектов Arduino, от мониторинга окружающей среды до домашней автоматизации. В этой статье блога мы рассмотрим различные методы взаимодействия датчиков температуры с платами Arduino. Мы предоставим примеры кода для каждого метода, чтобы помочь вам начать работу над проектами по измерению температуры.

Метод 1: использование цифрового датчика температуры (DS18B20):
DS18B20 — это популярный цифровой датчик температуры, который обменивается данными по протоколу 1-Wire. Вот пример фрагмента кода для считывания данных о температуре с датчика DS18B20:

#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is connected to digital pin 2
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
void setup()
{
  // Start communication with the DS18B20 sensors
  sensors.begin();
}
void loop()
{
  // Request temperature data from all connected sensors
  sensors.requestTemperatures();
  // Read temperature from the first sensor
  float temperature = sensors.getTempCByIndex(0);
  // Print temperature value to the serial monitor
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println("°C");
  delay(1000); // Delay for 1 second
}

Метод 2: использование аналогового датчика температуры (LM35):
LM35 — популярный аналоговый датчик температуры, который обеспечивает выходное линейное напряжение, пропорциональное температуре окружающей среды. Вот пример фрагмента кода для считывания данных о температуре с датчика LM35:

#define LM35_PIN A0
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  // Read analog voltage from LM35 pin
  int sensorValue = analogRead(LM35_PIN);
  // Convert the analog value to temperature in Celsius
  float voltage = sensorValue * (5.0 / 1023.0); // Convert to voltage
  float temperature = voltage * 100.0;          // Convert to temperature
  // Print temperature value to the serial monitor
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println("°C");
  delay(1000); // Delay for 1 second
}

Метод 3. Использование датчика температуры I2C (TMP102):
TMP102 — это датчик температуры на базе I2C, обеспечивающий высокую точность и разрешение. Вот пример фрагмента кода для считывания данных о температуре с датчика TMP102:

#include <Wire.h>
#define TMP102_ADDR 0x48
void setup()
{
  Wire.begin();
  Serial.begin(9600);
}
void loop()
{
  // Request temperature data from TMP102 sensor
  Wire.beginTransmission(TMP102_ADDR);
  Wire.write(0x00); // Register address for temperature
  Wire.endTransmission();
  // Read temperature data (2 bytes) from TMP102 sensor
  Wire.requestFrom(TMP102_ADDR, 2);
  int16_t rawTemperature = (Wire.read() << 8) | Wire.read();
  // Convert raw data to temperature in Celsius
  float temperature = rawTemperature * 0.0625;
  // Print temperature value to the serial monitor
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println("°C");
  delay(1000); // Delay for 1 second
}

В этой статье мы рассмотрели три популярных метода взаимодействия датчиков температуры с платами Arduino. Мы предоставили примеры кода для каждого метода, что позволяет вам легко интегрировать возможности измерения температуры в ваши проекты Arduino. Независимо от того, выберете ли вы цифровой датчик температуры, например DS18B20, аналоговый датчик, например LM35, или датчик I2C, например TMP102, платформа Arduino предлагает невероятную гибкость для мониторинга и контроля температуры.