本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

适用于 HomeKit 和 Alexa的ESP32 泳池温度计

发布时间:2021-07-29
分享到:

适用于 HomeKit 和 Alexa的ESP32 泳池温度计

发布时间:2021-07-29
分享到:

在本教程中,我将向您展示如何制作可与 Apple HomeKit 和 Alexa 配合使用的泳池温度计。

设计构想:

由于温度计需要靠电池供电,所以必须尽可能降低功耗。另外为了保持外观整洁,该设备需要特别注意太阳能电池板不能太大。

由于这些情况,我采用了在 Homebridge 上安装 HTTPWebHooks 插件并将温度计添加为温度传感器的方式。借助 Homebridge Alexa Skill,Amazon Echo 设备也可以使用 Sensor。

这样做可以将测量到的温度保存在 Homebride 内,而不是保存在 ESP 上。因此,ESP 只需要向 HTTPWebHooks 插件发出 HTTP 请求并在接下来的 10 分钟内进入深度睡眠,然后再次启动并将当前温度读取/发送到 Homebridge

补给品
电子产品:

  • ESP32
  • DS18B20 温度传感器
  • 迷你太阳能板 (6V / 65mA / 0.4W)
  • 锂聚合物电池 (3.7V / ~800mAh)
  • TP4056 电池充电器模块
  • 电压调节器(MCP1700-3302E)
  • 100uF电解电容
  • 100nF陶瓷电容
  • 4.7k 欧姆电阻
  • 3x6 电路/条板
  • 跳线

案件:

  • 妮维雅护理霜 - 可选
  • PVC 棒 (20mm x 100mm)
  • O 形圈 (75mm x 2.5mm)
  • O 形圈 (20mm x 3.5mm) - 可选
  • M16 螺栓 - 可选

工具:

  • 烙铁
  • 焊锡丝
  • 焊膏
  • 钻孔机
  • 4mm 钻头
  • M16 螺纹刀具 - 可选
  • 热胶
  • 硅酮

第 1 步:编码
温度计的代码非常简单:

  1. 建立 WiFi 连接
  2. 禁用蓝牙以降低功耗
  3. 从传感器读取温度
  4. 向带有当前传感器温度的 Homebridge 发出 HTTP 请求
  5. 断开 WiFi 连接并在接下来的 10 分钟内进入深度睡眠

10分钟结束后,整个过程重新开始。

#include <HTTPClient.h>
#include <ESPAsyncWebServer.h>
#include <esp_bt.h>
#include <esp_wifi.h>
#include <esp_sleep.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 4

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASS";
HTTPClient sender;

#define uS_TO_S_FACTOR 1000000ULL  /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP  600        /* Time ESP32 will go to sleep (in seconds) */

float temperature;

void push(){  
  if (sender.begin("http://IP_OF_YOUR_HOMEBRIDGE:51828/?accessoryId=esp32&value=" + String(temperature)))
  {
    int httpCode = sender.GET();
    if (httpCode > 0) 
    {
      if (httpCode == HTTP_CODE_OK) {
        String payload = sender.getString();
        Serial.println(payload);  
      } 
    }
    else
    {
      Serial.printf("HTTP-Error: ", sender.errorToString(httpCode).c_str());
    }
    sender.end(); 
  }
  else
  {
    Serial.printf("Error establishing HTTP connection!");
  }

}

void setup() {
  Serial.begin(115200);
  
  WiFi.disconnect(true);
  delay(1000);
  WiFi.mode(WIFI_STA);
  delay(1000);
  
  WiFi.begin(ssid, password);
  btStop();
  esp_bt_controller_disable();
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    Serial.print(".");
  }

  Serial.println("Connected!");
  sensors.begin();

  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  sensors.requestTemperatures();
  Serial.print(sensors.getTempCByIndex(0));
  Serial.println(" °C");
  
  temperature = sensors.getTempCByIndex(0);
  push();
  WiFi.mode(WIFI_OFF); 
  esp_deep_sleep_start();
}
 
void loop() {
}

第 2 步:接线

在上图中,您可以看到温度计的接线方式。如果这就是构建它所需的全部内容,则可以跳过步骤 2 - 4。否则,继续阅读,您将确切地知道要做什么以及要注意什么。

第 3 步:稳压器

要做的第一件事是构建电压调节板。尽管我只使用了出厂时未连接引脚的电路板,但我强烈建议使用已连接所有引脚的电路板。这样你就不必用焊线将它们连接起来,这会变得非常混乱。

由于很难看出实际电压调节板的图片中发生了什么,我添加了另一张数字形式的电路板图片。

我建议使用具有 3x6 引脚的电路板。这样您就可以有足够的空间放置组件和电线,而无需弯曲组件的任何引线。

  • 步骤1 :焊接电解电容

根据您焊接电解电容器的方向,您将以某种方式放置稳压器。这是因为电解电容是有极性的。因此,白色/灰色条纹一侧的引线是负极,稍后应连接到 GND。

GND 引线应连接到左侧通道,另一条引线应连接到右侧通道。保持中间车道空着很重要!您可能会稍微弯曲电容器的引线,使它们适合两个外部通道。

  • 步骤2 :添加陶瓷电容器

陶瓷电容没有极性。因此,将其焊接到板上的方向无关紧要。只需确保您再次使用外车道。

  • 步骤3 :连接稳压器

最后,您必须将电压调节器连接到电路板上。现在重要的是,您如何连接电解电容器。如果电容器的白色/灰色条纹在左侧,则稳压器的圆形面必须面向电容器。如果条纹在右侧,则稳压器的平坦面必须面向电容器。

如果您完成了这 3 个步骤,则电压调节板已完成,您可以继续为其余部分接线。

第 4 步:制作温度计杆

准备将温度传感器连接到 ESP 的杆

这是通过在整个杆上钻一个 4 毫米的孔并在奶油罐底部的中心钻另一个孔来完成的(直径取决于杆的尺寸以及是否要拧上杆)。

如果您想将杆拧到温度计主体上,您现在还需要将螺纹切到杆的一端,然后将 O 形环滑到螺纹底部。

完成后,您可以将温度传感器线的末端穿过杆和罐的底部(如图所示从下方穿过)。接下来,您还可以将螺钉放在杆上以将其连接到罐子上。

现在你必须在罐子里面放一些硅胶来密封它。硅胶干燥后,将大 O 型圈放在罐子上,拧上盖子,然后将其放在水下几个小时,以检查是否有水渗入。

第 5 步:设置温度传感器

如果准备好杆,您可以继续将温度传感器连接到 ESP。

黑线必须连接到 ESP 的 GND 引脚。

橙色/黄色线必须连接到 4.7k 欧姆电阻器和 ESP 的引脚 4。

红线必须连接到电阻器的另一端大约。连接到电阻器后还剩下 5 厘米的额外电线。此线将在下一步中连接。

如果您订购的 DS18B20 有 4 根而不是 3 根,则可以忽略从 Sensor 出来的白线。

第 6 步:电池充电器 / 电池 / ESP / 电压调节板

现在是时候将电池充电器与电池、ESP 和电压调节板连接起来了。

让我们再次从电压调节板开始。接地通道必须连接到 ESP 的 GND 引脚之一和电池充电器的 OUT- 引脚。

之后,将电池充电器的 Out+ 引脚连接到电压调节板的中心通道。

完成后,电压调节板的电源通道必须连接到 ESP 的 3.3V 引脚以及来自我们在上一步中添加的温度传感器的电源线。

现在剩下的就是将电池连接到电池充电器。您可以看到电池和充电器之间有一个额外的连接器。这不是必需的,我只是添加它进行测试。如果电池太小,我只需要更换电池,而不必将其重新焊接到充电板上。

此时,如果您的电池已充电,温度计应该已经可以工作了。无论如何,我建议通过充电板的 micro-USB 端口为电池充电,直到电池充满电(当充电板的蓝色 LED 亮起时)。

提示:正如您在我的图片中看到的,我在所有连接处都涂了一些热胶,用来对温度计做防水处理。

第 7 步:连接太阳能板

现在,温度计已经开始工作,是时候连接太阳能电池板了。

为此,在罐子的盖子上钻两个小孔(取决于太阳能电池板的连接器的位置)并将电线拉过它们。如果完成,您可以将 连接到电池充电板,如上一步的图片所示。

现在唯一剩下的就是在太阳能电池板的边缘放一些硅胶,这样它就被密封起来了。

如果完成,您就可以开始了!只需拧上盖子,就可以使用温度计了。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论