Fastbond-智能建筑 网页控制灯泡
网页控制家中电灯, 前端使用Vue开发, 公网可以访问. 使用HTTP协议作为API. 硬件使用ESP32, 美信的DS18B20, ADI的ADP151AUJZ实现的网页智能家居
标签
MPU
caoyi
更新2021-11-24
865

一. 项目介绍

这是我设计的智能家居IOT, 通过网页控制的灯泡亮灭, 并且实时显示温度的设备. API使用http://dweet.io/ 的免费API, 通过HTTP协议实现. 前端文件生成后挂载在Github上, 可以实现公网访问. 

硬件:

主控使用的是ESP32, 温度传感器是美信的DS18B20, 通过ADI的ADP151AUJZ输入电源, 通过CH304实现串口通信

软件:

使用Aduino IDE进行开发, 主要使用到了SPI, Ticker, ESP32wifi, Wire, time等模块

网页部分使用VUE开发, 开发IDE为VScode

通信部分使用 http://dweet.io/ 的免费API实现通信, 单片机和网页通过API读写数据实现数据的传输, 实现公网的控制

系统框图:FhRh6mC4nhA9J_yKKwbsf149kDNr

二. 项目用到的板卡、芯片、模块、仪器、设备等介绍

ADP151AUJZ-3.3-R7

ADP151 是一款超低噪声、低压差线性稳压器,工作电压范围为 2.2 V 至 5.5 V,并提供高达 200 mA 的输出电流。 200 mA 负载下 140 mV 的低压差提高了效率并允许在较宽的输入电压范围内工作。 ADP151 采用创新的电路拓扑结构,无需旁路电容器即可实现超低噪声性能,非常适合对噪声敏感的模拟和 RF 应用。 ADP151 还实现了超低噪声性能,而不会影响 PSRR 或瞬态线路和负载性能。 200 mA 负载下 265 μA 的低静态电流使 ADP151 适用于电池供电的便携式设备。

DS18B20

DS18B20 数字温度计提供 9 位至 12 位摄氏温度测量值,并具有带有非易失性用户可编程上下触发点的报警功能。 DS18B20 通过 1-Wire 总线进行通信,根据定义,该总线只需要一根数据线(和地线)即可与中央微处理器进行通信。 它的工作温度范围为 -55°C 至 +125°C,在 -10°C 至 +85°C 的范围内精度为 ±0.5°C。 此外,DS18B20 可以直接从数据线获取电源(“寄生电源”),无需外部电源。

关键性代码及说明

  1. WiFi配置

      WiFi.mode(WIFI_STA);
      WiFiMulti.addAP("HUAWEI-B311-xxx", "xxxx");
  2. 通过GET方法连接API获得按键信息并且控制LED灯
          int httpCode = http.GET();
    
          // httpCode will be negative on error
          if (httpCode > 0) {
            // HTTP header has been send and Server response header has been handled
            Serial.printf("[HTTP] GET... code: %d\n", httpCode);
    
            // file found at server
            if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
              String payload = http.getString();
    
              //size_t capacity=JSON_OBJECT_SIZE(2)+30;
              StaticJsonDocument<400> doc;
              //DynamicJsonDocument doc(capacity);
              
              deserializeJson(doc,payload);
    //          Serial.println(payload);
              bool keyBool1=doc["with"][0]["content"]["key1"];
              bool keyBool2=doc["with"][0]["content"]["key2"];
              Serial.println(keyBool1);
              String keyS=doc["by"].as<String>();
              Serial.println(keyS);
              if (keyBool1){Serial.println("key1 is on"); digitalWrite(LED1, LOW) ;}
              else         {Serial.println("key1 is off");digitalWrite(LED1, HIGH);}
              if (keyBool2){Serial.println("key2 is on"); digitalWrite(LED2, LOW) ;}
              else         {Serial.println("key2 is off");digitalWrite(LED2, HIGH);}
            }
          } else {
            Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
          }
    
          http.end();
        } else {
          Serial.printf("[HTTP} Unable to connect\n");
        }​

三. 功能演示结果及说明

  1. 开机显示ID
    Fn1bxG5BsHbnYnv7uUVJQLiKXm9z
  2. 同步数据, 并且显示温度
    FjkHMaYQfBrQALMW2PRfH4zfntCr
  3. 关闭LED
    FnSxlUhAypVFrScwPm7dY9xiJL3C
  4. 打开LED
    FrqjWjQg1YzLLGbGRc-s1y-ZBo-5

四. 对本活动的心得体会

  • 学会了如何使用温度传感器

  • 学习了原理图和PCB的绘制
  • 了解了IOT设备通过API配合前端的开发

附件下载
esp32iot.ino.wifiduino.bin
ESP32_Ardunio.pdf
PCB板图
frontend.zip
前端代码
团队介绍
曹轶 前端工程师
团队成员
caoyi
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号