久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2025|回復: 0
打印 上一主題 下一主題
收起左側

具有Web GUI與Wi-Fi的智能調節器控制管理系統設計資料

[復制鏈接]
跳轉到指定樓層
樓主
具有Web GUI的智能調節器管理系統,可控制設備周圍的空氣溫度并提高風扇速度。控制單元連接到Wi-Fi網絡,可以通過其中的任何設備進行管理。此外,未來還計劃在幾個控制單元之間提供某種類型的網狀網絡通信。系統基于ESP8266 SoC。軟件完全模塊化結構。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機程序源碼:
  1. /*
  2. * AirConditioner.cpp
  3. */

  4. #include "AirConditioner.h"

  5. /* AirConditioner */
  6.                         bool AirConditioner::power;
  7.                         bool AirConditioner::mode;
  8.                         byte AirConditioner::speed;
  9.                         byte AirConditioner::set_temp;
  10.                         byte AirConditioner::delta_temp;
  11.                    float AirConditioner::cur_temp;
  12.                     byte AirConditioner::PowerPin;
  13.                         byte AirConditioner::LowSpeedPin;
  14.                         byte AirConditioner::MedSpeedPin;
  15.                         byte AirConditioner::HiSpeedPin;
  16.         Thermometer* AirConditioner::sensor;

  17. AirConditioner::AirConditioner(byte PowerPin, byte LowSpeedPin, byte MedSpeedPin, byte HiSpeedPin, byte SensorPin, byte SensorResolution) {

  18.         this->PowerPin                = PowerPin;
  19.         this->LowSpeedPin        = LowSpeedPin;
  20.         this->MedSpeedPin        = MedSpeedPin;
  21.         this->HiSpeedPin        = HiSpeedPin;

  22.         this->initGPIO();

  23.         this->sensor                = new Thermometer(SensorPin, SensorResolution);

  24.         this->power                        = PowerOff;
  25.         this->mode                        = Cooling;
  26.         this->speed                        = LowSpeed;
  27.         this->set_temp                = set_temp_def;
  28.         this->delta_temp        = delta_temp_def;
  29.         this->cur_temp                = 0;


  30. }

  31. void AirConditioner::initGPIO() {
  32.         pinMode(this->PowerPin, OUTPUT);
  33.         noPullup(this->PowerPin);
  34.         digitalWrite(this->PowerPin, Off);

  35.         pinMode(this->LowSpeedPin, OUTPUT);
  36.         noPullup(this->LowSpeedPin);
  37.         digitalWrite(this->LowSpeedPin, Off);

  38.         pinMode(this->MedSpeedPin, OUTPUT);
  39.         noPullup(this->MedSpeedPin);
  40.         digitalWrite(this->MedSpeedPin, Off);

  41.         pinMode(this->HiSpeedPin, OUTPUT);
  42.         noPullup(this->HiSpeedPin);
  43.         digitalWrite(this->HiSpeedPin, Off);
  44. }

  45. void AirConditioner::start() {

  46.         this->executeConditioner.initializeMs(1000, AirConditioner::execConditioner).start();
  47. }

  48. void AirConditioner::setPower(bool power) {

  49.         digitalWrite(AirConditioner::PowerPin, power);
  50. }
  51. void AirConditioner::setSpeed(byte speed) {

  52.         switch (speed) {
  53.                 case 0x01:
  54.                         digitalWrite(AirConditioner::LowSpeedPin, On);
  55.                         digitalWrite(AirConditioner::MedSpeedPin, Off);
  56.                         digitalWrite(AirConditioner::HiSpeedPin,  Off);
  57.                         break;
  58.                 case 0x02:
  59.                         digitalWrite(AirConditioner::LowSpeedPin, Off);
  60.                         digitalWrite(AirConditioner::MedSpeedPin, On);
  61.                         digitalWrite(AirConditioner::HiSpeedPin,  Off);
  62.                         break;
  63.                 case 0x03:
  64.                         digitalWrite(AirConditioner::LowSpeedPin, Off);
  65.                         digitalWrite(AirConditioner::MedSpeedPin, Off);
  66.                         digitalWrite(AirConditioner::HiSpeedPin,  On);
  67.                         break;
  68.                 default:
  69.                         digitalWrite(AirConditioner::LowSpeedPin, Off);
  70.                         digitalWrite(AirConditioner::MedSpeedPin, Off);
  71.                         digitalWrite(AirConditioner::HiSpeedPin,  Off);
  72.                         break;
  73.         }
  74. }

  75. void AirConditioner::updateTemp() {

  76.         AirConditioner::cur_temp = AirConditioner::sensor->getTemp();
  77. }
  78. void AirConditioner::execThermostat() {

  79.         bool enabled_by_scheduler = getSchedulerStatus();

  80.         if(enabled_by_scheduler) {
  81.                 if(AirConditioner::power == PowerOn && !AirConditioner::sensor->sensor_error) {
  82.                         if(AirConditioner::mode == Cooling){
  83.                                 if(AirConditioner::cur_temp >= (AirConditioner::set_temp + AirConditioner::delta_temp))
  84.                                         AirConditioner::setSpeed(AirConditioner::speed);
  85.                                 else
  86.                                         AirConditioner::setSpeed(Stopped);
  87.                         }
  88.                         if(AirConditioner::mode == Heating) {
  89.                                 if(AirConditioner::cur_temp <= (AirConditioner::set_temp - AirConditioner::delta_temp))
  90.                                         AirConditioner::setSpeed(AirConditioner::speed);
  91.                                 else
  92.                                         AirConditioner::setSpeed(Stopped);
  93.                         }
  94.                 }
  95.                 else if(AirConditioner::power == PowerOn && AirConditioner::sensor->sensor_error) {
  96.                         AirConditioner::setSpeed(Stopped);
  97.                         AirConditioner::setPower(Off);
  98.                 }
  99.                 else
  100.                         AirConditioner::setSpeed(Stopped);
  101.         }
  102.         else
  103.                 AirConditioner::setSpeed(Stopped);
  104. }
  105. void AirConditioner::execConditioner() {

  106.         AirConditioner::updateTemp();
  107.         AirConditioner::execThermostat();
  108. }

  109. float AirConditioner::getTemp() {

  110.         return AirConditioner::cur_temp;
  111. }

  112. String AirConditioner::getSettings() {

  113.         DynamicJsonBuffer jsonBuffer;
  114.         JsonObject& root = jsonBuffer.createObject();

  115.         JsonObject& settings           = jsonBuffer.createObject();
  116.         root["settings"]                   = settings;
  117.         settings["power"]                   = (bool) this->power;
  118.         settings["mode"]                   = (bool) this->mode;
  119.         settings["speed"]                   = this->speed;
  120.         settings["set_temp"]           = this->set_temp;
  121.         settings["set_temp_min"]   = set_temp_min;
  122.         settings["set_temp_max"]   = set_temp_max;
  123.         settings["set_temp_def"]   = set_temp_def;
  124.         settings["delta_temp"]           = this->delta_temp;
  125.         settings["delta_temp_min"] = delta_temp_min;
  126.         settings["delta_temp_max"] = delta_temp_max;
  127.         settings["delta_temp_def"] = delta_temp_def;

  128.         String jsonString;
  129.         root.printTo(jsonString);

  130.         return jsonString;
  131. }
  132. void AirConditioner::setSettings(String jsonString) {

  133.         if(jsonString.length() != 0) {
  134.                 DynamicJsonBuffer jsonBuffer;

  135.                 JsonObject& root = jsonBuffer.parseObject(jsonString);
  136.                 JsonObject& settings = root["settings"];

  137.                 this->power = settings["power"];
  138.                 this->setPower(this->power);
  139.                 this->mode = settings["mode"];

  140.                 if((settings["speed"] >= Stopped) && (settings["speed"] <= HiSpeed))
  141.                         this->speed = settings["speed"];
  142.                 else
  143.                         this->speed = Stopped;

  144.                 if((settings["set_temp"] >= set_temp_min) && (settings["set_temp"] <= set_temp_max))
  145.                         this->set_temp = settings["set_temp"];
  146.                 else
  147.                         this->set_temp = set_temp_def;

  148.                 if((settings["delta_temp"] >= delta_temp_min) && (settings["delta_temp"] <= delta_temp_max))
  149.                         this->delta_temp = settings["delta_temp"];
  150.                 else
  151.                         this->delta_temp = delta_temp_def;

  152.                 Settings.save(this->getSettings(), DEV_SETTINGS);
  153.         }
  154. }

  155. String AirConditioner::getState() {

  156.         DynamicJsonBuffer jsonBuffer;
  157.         JsonObject& root = jsonBuffer.createObject();

  158.         byte speed = 0x00;
  159.         if(digitalRead(LowSpeedPin))
  160.                 speed = 0x01;
  161.         if(digitalRead(MedSpeedPin))
  162.                 speed = 0x02;
  163.         if(digitalRead(HiSpeedPin))
  164.                 speed = 0x03;

  165.          JsonObject& status = jsonBuffer.createObject();
  166.                  root["status"] = status;

  167.                 status["power"] = (bool) digitalRead(PowerPin);
  168.                  status["mode"] = (bool) this->mode;
  169.                 status["speed"] = speed;
  170.          status["set_temp"] = this->set_temp;

  171.            JsonObject& info = jsonBuffer.createObject();
  172.                    root["info"]        = info;

  173.            info["cur_temp"] = (float) this->cur_temp;
  174.          info["err_sensor"] = (bool) this->sensor->sensor_error;

  175.         String jsonString;
  176.         root.printTo(jsonString);

  177.         return jsonString;
  178. }

  179. void AirConditioner::stopModule() {

  180.         if(this->executeConditioner.isStarted())
  181.                 this->executeConditioner.stop();

  182.         this->setSpeed(Stopped);
  183.         this->setPower(PowerOff);
  184. }
  185. void AirConditioner::saveConfig() {

  186.         Settings.save(this->getSettings(), DEV_SETTINGS);
  187. }
  188. void AirConditioner::onSystemRestart() {
  189.         this->stopModule();
  190.         this->saveConfig();
  191. }
復制代碼


全部資料51hei下載地址:
Smart-Air-master.zip (7.39 MB, 下載次數: 5)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频精品免费 | 综合五月婷 | 精品国产一区二区三区久久久蜜月 | 日本一卡精品视频免费 | 久久99国产精品 | 男女免费网站 | 久久久一二三区 | 精品国产欧美 | 在线中文字幕亚洲 | japanhdxxxx裸体| 国产传媒 | 91精品久久久久久久久 | 日韩一区二区在线观看 | 久久久久久99 | 国产在线视频一区二区 | 国产精品永久免费观看 | 成人精品视频99在线观看免费 | 视频1区| 成人精品国产一区二区4080 | 91精品国产乱码麻豆白嫩 | 亚洲av毛片 | 亚洲精品区 | 操久久 | 精品无码久久久久久国产 | 在线视频一区二区三区 | 欧美.com| 国产色 | 欧美 日韩 亚洲91麻豆精品 | 免费一二区| 中文一区| 日韩在线视频播放 | 日韩欧美在线一区 | 91深夜福利视频 | 一区二区在线观看av | 久久精品亚洲欧美日韩久久 | 亚洲91av | 激情黄色在线观看 | 亚洲精品自在在线观看 | 成人h片在线观看 | 粉嫩国产精品一区二区在线观看 | 亚洲一区二区av |