| Ваш IP: 3.238.186.43 | Online(47) - гости: 34, боты: 13 | Загрузка сервера: 3.73 ::::::::::::

ESP32 + Bluetooth — терморегулятор

На базе ESP32  используя сеть Bluetooth можно создать простой терморегулятор. В качестве датчика температуры используется цифровой датчик DS18B20. Вся информация и органы регулирования температуры выводятся в Android приложение.

Регулировка температуры может быть пределах от 10 до 50 °С. Гистерезис 1 °С (может быть изменен в скетче). Для управления нагревательным элементом используется вывод ESP32 D22 к которому можно подключить реле (модуль реле, максимальный выходной ток вывода ESP32 не должен превышать 40 мА).

Перед загрузкой скетча рекомендую ознакомится со статьей  — ESP32 DevKit v1 Wi-Fi Bluetooth ESP32-WROOM-32 (Arduino IDE).

#include <BluetoothSerial.h>   // Входит в состав Arduino IDE 
#include <OneWire.h>           // Входит в состав Arduino IDE 
#include <EEPROM.h>            // Входит в состав Arduino IDE 
  OneWire  ds(15); // Вход датчика D15
  BluetoothSerial BL;
 
  float temper;
  int w,reg,buf[2],i,wb,rele,k;
  unsigned long buff,times,times1;
  const int gis = 1; // int гистерезис
  String BT_CALLBACK = "";
 
void setup() {
  Serial.begin(9600);
  EEPROM.begin(100); // под EEPROM выделить 100 ячеек памяти 
  BL.register_callback(BTCallback);
  BL.begin("ESP32",false); // Имя Вашего устройства Bluetooth
  BL.setTimeout(100);
  Serial.println("Bluetooth OK");
  pinMode (2, OUTPUT);  // LED
  pinMode (22,OUTPUT);  // выход рег. реле D22
  reg=EEPROM.read(0);
}
 
void loop() {
/////// ПРИЕМ ДАННЫХ /////////////////////////  
   if(BL.available()){
    for (i=0;i<1;i++) { 
      buf[0] = BL.parseInt(); 
      buf[1] = BL.parseInt();}    
      times=millis();times=millis();wb=1;w=1;
      }
 
///////////// обработка команд /////////////////// 
   if(buf[0]>10&&wb==1){ wb=0;
     if(buf[0]==102){reg++;if(reg>50){reg=50;}}
     if(buf[0]==101){reg--;if(reg<10){reg=10;}}
     }
 
//////////// reg temp
     if(reg >= temper + gis){rele=1;digitalWrite(22,HIGH);}
     if(reg <= temper - gis){rele=0;digitalWrite(22,LOW);} 
 
     blue();
 
//////////////// EEPROM
  if(millis()-times>5000&&w==1){EEPROM.write(0,reg);times=millis();w=0;EEPROM.commit();}
 
  /////// измерение температуры 1 раз в секунду
  if(k==0){digitalWrite(2,LOW);}
  if(k==1){digitalWrite(2,HIGH);}
  if(k>1){k=0;}
  if(millis()-times1>1000){temper = dsRead(0);times1=millis();k++;}
  delay(20);
}// loop
 
float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  } 
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] << 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}
 
void blue(){
  //////// отправка данных в android
   BL.print(temper,1);
   BL.print(":");
   BL.print(reg);
   BL.print(":");
   BL.println(rele);
  }
 
void BTCallback(esp_spp_cb_event_t event, esp_spp_cb_param_t *param){
    if(event == ESP_SPP_SRV_OPEN_EVT){BT_CALLBACK = "BTonConnect";}
    else if(event == ESP_SPP_CLOSE_EVT){ESP.restart();}
    else if(event == ESP_SPP_DATA_IND_EVT){BT_CALLBACK = "BTonReceivedStart";}
    else if(event == ESP_SPP_WRITE_EVT){BT_CALLBACK = "BTonWrite";}
}

Приложение — app-debug.apk

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=264

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

Войти с помощью: 

Случайные статьи

  • Активный регулятор тембра на транзисторах

    Активный регулятор тембра на транзисторах

    Регулятор тембра на транзисторах BC109 обладает хорошим качеством звучания, низким шумом. Схема не содержит дорогостоящих элементов, проста в сборке. Источник — http://www.eleccircuit.com/active-tone-controls-by-transistor/Подробнее...
  • Стерео усилитель 2*12Вт на TDA7263М

    Стерео усилитель 2*12Вт на TDA7263М

    Стерео усилитель на базе микросхемы TDA7263М  относится к классу АВ и используется в основном в бытовой HI-FI технике. Микросхема имеет защиту от КЗ по переменному току, снабжена тепловой защитой: температура срабатывания тепловой защиты 145°С. TDA7263M имеет в своем составе систему MUTE которая позволяет избежать шумов и щелчков громкоговорителей в момент …Подробнее...
  • Устройство защиты цепей постоянного тока от перегрузок

    Устройство предназначено для защиты от перегрузки (по силе тока) и коротких замыканий в цепи нагрузки. Его подключают между источником питания постоянного тока и потребителем. Во многих системах управления нагрузкой электронных блоков являются электромагнитные механизмы, в которых возможно частичное замыкание между собой витков обмотки или полное короткое замыкание цепи обмотки. Данное …Подробнее...
  • Устройство для автоматического поддержания автомобильной аккумуляторной батареи в заряженном состоянии во время хранения

    В статье Н.Герцена («Радио», 7/2000, стр.36) описано устройство для автоматического поддержания автомобильной аккумуляторной батареи в заряженном состоянии во время хранения. Достоинством устройства (рис.1) является то, что оно не содержит электромеханических реле. Транзисторы VT1, VT3, VT4 и стабилитрон VD5 образуют последовательный стабилизатор напряжения. Напряжение, которое устройство поддерживает на батарее, устанавливают резистором …Подробнее...
  • DAC WM8804 + AK4396 — 24bit 192kHz (Arduino)

    DAC WM8804 + AK4396 — 24bit 192kHz (Arduino)

    Внешний звуковой ЦАП собран на недорогих компонентах, в качестве ресивера используется WM8804, ЦАП на AK4396. ЦАП имеет микроконтроллерное управление на базе платформы Arduino. Входной цифровой сигнал для внешнего ЦАПа имеет формат S/PDIF (цифровой аудио интерфейс разработанный фирмами SONY/PHILIPS, предназначен для передачи цифрового сигнала между аудио устройствами), ресивер на WM8804 преобразует …Подробнее...