Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Компоненты и материалы

Arduino Nano R3 × 1
Перемычки (набор) × 1
Bluetooth-модуль HC-06 × 1
NTC-термистор × 1
Резистор 10 кОм × 1
Резистор 1 кОм × 1
Резистор 2.21 кОм × 1

Инструменты

Приложения и сервисы

О проекте

В этом уроке покажу, как сделать Arduino-контроллер температуры, отправляющий данные на Android через Bluetooth.

Необходимые детали:

Сборка делителя напряжения для термистора

Соберите схему (рисунок 1) для измерения неизвестного сопротивления термистора как функции температуры.

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 1 Делитель напряжения для оценки сопротивления термистора.

Эта схема позволяет Arduino измерить падение напряжения на известном резисторе и вычислить сопротивление термистора (рисунок 2).

raw = analogRead(analogPin);
if(raw) {
  ratio = raw * Vin;
  Vout = (ratio) / 1024.0;
  ratio = (Vin / Vout) - 1;
  R2 = R1 * ratio;
}

Рисунок 2 Код Arduino для вычисления сопротивления термистора.

Полученное сопротивление конвертируется в температуру по формуле Бета (рисунок 3).

ВАЖНО: Бета-коэффициент и Ro при 25°C указаны в даташите вашего термистора! Проверьте перед запуском!

Temp = Beta / log(R2 / (Ro * exp(-Beta / To)));
Temp = Temp - 273.15;

Рисунок 3 Код для перевода в температуру.

Подключение Bluetooth-модуля HC-06

Для подключения TX Arduino к RX модуля (3.3В) нужен делитель напряжения (рисунок 4).

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 4 Схема Arduino с HC-06.

Данные отправляются через Serial. В примере измеряется диапазон 25–75°C, при высокой температуре отсчитывается ~300 секунд, затем меняется сообщение (рисунок 5).

void setup() { Serial.begin(9600); }
void loop(){
  if(Temp >= 74) {
    for (int i = 0; i <= 30; i++) {
      Serial.print("Temperature >= 74 °C");
      delay(10000);
    }
    Serial.print("Heating Complete");
    delay(10000);
  } else if (Temp <= 26){
    Serial.print("Temperature <= 25 °C");
    delay(10000);
  } else {
    Serial.print("Temperature: ");
    Serial.println(Temp);
    delay(10000);
  }
}

Рисунок 5 Инициализация Serial и вывод значений.

Собранное устройство на макетной плате (рисунок 6).

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 6 Полное устройство на макетке.

Android-приложение через MIT App Inventor 2

Интерфейс (рисунок 7) и блоки программирования (рисунок 8).

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 7 Пользовательский интерфейс.

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 8 Блоки программирования.

Приложение в галерее: App Inventor Gallery

Можно сделать свои уведомления: звук при T < 25°C, оповещение через 5 мин при 75°C.

Опционально: пайка и 3D-корпус

Результат в рисунке 9. Отверстие сбоку для USB-питания. Длинные провода термистора — чтобы держать электронику подальше от измеряемого раствора.

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Рисунок 9 Готовое устройство.

Надеюсь, проект поможет понять основы Bluetooth-коммуникации. Вопросы и ошибки — пишите!

UPD: Исправлена ошибка в схеме делителя для Bluetooth.
UPD2: Если не загружается скетч — отключите Bluetooth-модуль.

Код

Temperature monitor with bluetooth module (Arduino)

// Temperature monitor with bluetooth module
int analogPin = 0;
int raw = 0;
int Vin = 5;
float Vout = 0;
float R1 = 10000; // ваш резистор
float Ro = 10000; // сопротивление термистора при 25°C
float R2 = 0;
float ratio = 0;
float Temp = 0;
float Beta = 3694; // ваш Beta
float To = 298.15; // 25°C в Кельвинах

void setup() {
  Serial.begin(9600);
}
void loop() {
  raw = analogRead(analogPin);
  if(raw) {
    ratio = raw * Vin;
    Vout = (ratio) / 1024.0;
    ratio = (Vin / Vout) - 1;
    R2 = R1 * ratio;
    Temp = Beta / log(R2 / (Ro * exp(-Beta / To)));
    Temp = Temp - 273.15;
    if(Temp >= 74) {
      for (int i = 0; i <= 30; i++) {
        Serial.print("Temperature >= 74 °C");
        delay(10000);
      }
      Serial.print("Heating Complete");
      delay(10000);
    } else if (Temp <= 26){
      Serial.print("Temperature <= 25 °C");
      delay(10000);
    } else {
      Serial.print("Temperature: ");
      Serial.println(Temp);
      delay(10000);
    }
  }
}

Схемы

Резистор R2 меняйте под ваш термистор. Ошибка растёт с разницей (R_unknown - R2).

Bluetooth-монитор температуры на Arduino Nano с NTC-термистором

Производственный процесс

  1. Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
  2. Создание монитора температуры ThingSpeak с Raspberry Pi и BrickPi
  3. Мониторинг домашней температуры с панелью управления на Raspberry Pi
  4. Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений
  5. Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
  6. Надежный счетчик кВт·ч на Sigfox с Arduino MKR Fox 1200
  7. Бесконтактный жестовый замок: APDS-9960 + Arduino для безопасного доступа
  8. Набор-компаньон для Arduino Nano — необходимые компоненты и инструменты для DIY-электроники
  9. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
  10. Точный тест времени реакции на Arduino UNO