该回购包含用于家庭IoT项目的多功能ESP8266传感器设备的构建说明。
板V5,部分人口组成。 Kicad产生的图像。
该传感器板满足我的大部分家庭自动化硬件需求。它适合廉价,可广泛的外壳(不需要3D打印),并且可以通过锂离子电池(包括电压监控,充电,反极性和包含的保护电路)或USB供电,如果USB和电池同时连接USB,则可以使用适当的电源共享。在软件方面,我将事情尽可能高:用于大多数用法方案的Tasmota;在需要的地方。通信利用Wi-Fi或Lora上的MQTT协议(我将董事会用作远程LORA传感器,又用作Lora-MQTT桥)。
该板专为以下传感器以及电动机/泵控制(用于自动植物浇水)而设计。 GPIO引脚仍然易于访问,因此该板也可以用作许多其他传感器的基础。
ESP8266的使用有一些限制,特别是围绕可用的GPIO,只有一个ADC端口。这意味着并非所有潜在功能都可以同时获得。是的,可以通过端口分离器或使用其他微控制器(例如ESP32)来克服这些限制;但是,对我来说,一部分乐趣是看到我只能使用ESP8266做多少,最终结果适合我所有的用例。
![]() | ![]() |
|---|---|
| V4,具有BME280(温度,压力和湿度),BH1750(LUX)和水分(通过音频插头)传感器。配备浇水泵(右下);当前未连接。 | V5,带有BME280和MH-Z19C(CO 2 )传感器 |
![]() |
|---|
| V5板的全新交付 |
您可以(应该?!)使用其他东西。我最初将其设计为了解物联网传感器和电路设计/制造的一种方式。我之所以坚持下去,是因为它在现成的板上提供了几个优势:
板可以直接从USB或锂离子电池供电。董事会V4和更早使用的Micro-USB; V5使用USB-C。董事会左侧的切口旨在容纳这样的1核18650爆炸案例(购买链接)。电池连接器是2针JST-PH(2mm螺距),但是如果您愿意,只需将电线直接焊接到连接器即可。
如果同时连接电池和USB,则功率共享电路可确保只有USB为板供电。电池与常见的3芯片TP4056模块的副本一起使用。如果您不使用电池并想绕过此电路(或者您不希望在USB连接时电池充电),则提供一个开关。该模块包括保护过度充电,过度递减,过电流和短路。请注意,在USB连接USB时,板的其余部分(而非电池)绕开了过电流和短路保护,因此电源共享电路是有效的。标准充电模块不包含电池极性保护,因此我还补充了它。
当跳线JP5(前)或JP6(背面)被桥接时,可以使用电池电压监视。这将正电池端子(通过电压分隔器)连接到ESP的唯一ADC引脚。该连接是可选的,因为水分传感器(当然还有其他传感器)也需要访问ADC。因此,与V5板同时监测电池电压和土壤水分传感器。
笔记
有一系列可能的LDO IC可供选择。由于其电流相对较高,掉落电压较低,因此我在XC6203P332PR上安顿下来。 V4董事会有两个替代监管机构的足迹,我打算测试稳定性,但不需要这些,并且在V5中被删除。
在PCB版本4上,我根据数据表将两个1μf触觉电容器与XC6203配对。几周后,我的两个木板上有一个电容器失败,导致了短路和大量烟雾(当时木板是在用USB驱动的)。在网上阅读了塔塔勒姆(Tantalum)恐怖故事后,我决定尝试将它们换成V5上的陶瓷,但没有其他问题。后来我发现这两个失败是我的错:我将零件相反!我敢肯定,有一个很好的理由是,塔塔勒姆斯(Tantalums)上的极性标记频段表示积极,而在铝制电容器和二极管上表示负面,表示负面,但它们却绊倒了这个新手。
方便地,XC6203P332PR也与白色ESP-12F适配器板兼容。它比提供的足迹要小,但仍然可以焊接到它上,几乎没有麻烦。如果使用板安装的调节器,请确保卸下板正面的中央零欧姆电阻。
我学会了关于ESP8266的电气灵敏度的艰难方法:在板的V3上,每当激活浇水电动机时,它都会重新启动。我在V4中使用组件重新定位(将电动机移至远离微控制器),在电动机连接旁边增加额外的电容器,增加功率痕迹宽度与信号迹线,并将地面平面上的循环降至最小,并将各组件的其余部分分开。
该板是为ESP-12F设计的。在焊接之前,我倾向于将芯片刷在程序板上,只是为了检查它的工作。
安装后,可以通过将USB-UART接口板连接到适当的引脚来以正常方式闪烁。
| 别针# | 港口 | 板连接 | 电阻* |
|---|---|---|---|
| 1 | 第 | 重置按钮 | |
| 2 | ADC | ADC(水分或电池) | |
| 3 | en | 芯片启用 | 主管或E-PU |
| 4 | IO16 | 深脚 | |
| 5 | IO14 | I2C SCL或SPI SCK | |
| 6 | IO12 | 水分VCC或SPI SDO-MISO | |
| 7 | IO13 | I2C SDA或SPI MOSI | |
| 8 | VCC | ||
| 15 | gnd | ||
| 16 | IO15 | Lora NSS | E-PD |
| 17 | IO2 | 板载LED和SPI SS | |
| 18 | IO0 | 闪存按钮 | e-pu |
| 19 | IO4 | 模式开关(GND:使用睡眠) | e-pu |
| 20 | IO5 | 水泵或Lora Dio | E-PD |
| 21 | rxd | CO 2 TX | |
| 22 | TXD | CO 2 rx |
*固定在引脚上的电阻:I:内部,E:外部,PU:上拉,PD:下拉
似乎有一些有关将RST连接到GPIO16的最佳方法的在线辩论,以便使用ESP8266的DeepSleep功能。我在谨慎的一边犯了错误,并在两者之间添加了二极管。
如果电压太低,ESP8266容易受到褐色的影响(可以在此处找到该问题的很好的解释)。首次应用功率时,调节器的电压的非瞬时增加,这可能导致引导问题。为了防止这种情况,我包括了一个可选的电压主管(TPS3839G33DBZ),该电压仅在电压高于适当的阈值时才将芯片启用销设置为高。但是,我还没有注意到Brown-Outs是一个问题,因此我有时会跳过此组件。
围栏中的一对配备洛拉的设备
在可用的GPIO方面,将ESP8266与Lora模块结合在一起是一种延伸。该板旨在与SX1276 LORA模块(示例链接)一起工作,并从这里大大依靠设计,通过将lora模块的三个销钉(Dio0、1和2)链接到ESP8266通过三个Diodes(分别是D9,D9,D10和D11),通过将所需端口链接到最小化所需端口。这种共享配置需要软件中的特殊处理。但是,对于简单的Lora通信,仅需要DIO0,因此对于迄今为止,我的Lora董事会已经桥接了D9,并且离开了D10和D11。
为了进行测试,您可以将普通的螺旋线天线(通常包括在模块购买)直接焊接到模块的天线销。不过,范围会很烂。为了获得更好的范围,请附上更高增益的天线(我使用此处购买的5DBI天线)。我在AE1上包括一个IPEX U.FL-R足迹。另外,SMA边缘安装的连接器非常适合板块J5板的边缘。这些可以如下连接(此示例使用板V4,但对于V5来说也是如此):顶部和底部。
笔记
ESP8266上可用一个ADC,测量范围从0V到1V。为了测量较高的电压,因此需要电压分隔器。在V5上,ADC可以用于连接到音频插孔的外围设备,或者如果关闭JP11或JP5,则可以监视电池电压。
通过音频插孔的连接通过R1 =470kΩ(组件R7),R2 =200kΩ(组件R8)的分隔线。这允许测量高达3.3V的电压(3.3V降低至约0.985V;校准信号以提高精度)。
电池连接与组件R7串联增加了330kΩ(组件R10)电阻,从而导致R1 =800kΩ。这将测量范围提高到5V。
我选择使用4极音频插孔(型号PJ313E)将水分传感器连接到板上。目前,四极中只有三个连接;第四是备用未来功能的备用。从音频插头的底座到尖端开始,当前连接是:
| 极 | 联系 |
|---|---|
| 1 | gnd |
| 2 | 没有连接 |
| 3 | 3.3V(来自GPIO12,通过JP3) |
| 4 | 通过3.3V电压分隔器到达ADC |
我选择的插座(或者可能是插座和使用的插头的组合)遇到了一个问题:默认情况下,它无法与所有四个杆进行连接。这可以在此处的顶部图像中看到,其中最深的接触脚针(Pole 4)未偏转。为了解决问题,我将插座的突出塑料前部剪断/归档(底部图像)
小型水泵和必要的柔性管道广泛可用。如上所述,他们是电动的虫子。因此,为什么泵的连接器位于ESP的板的最远角落,并屏蔽了两个电容器。它通常由GPIO5供电,通过N通道MOSFET供电,也可以使用可选的按钮SW5手动操作。
为了简单起见,由于小泵似乎能够在相当宽的电压范围内运行,因此泵当前正在为板提供任何电压(由电源共享电路状态定义)的任何电压提供:如果连接了USB,则将为5V减去Diodes d2 and D8的向前电压;如果电池供电,则电池电压将减去D8滴。在实践中,这确实没有太大的不同:在USB与电池供电时,在给定时间内会抽更多的水。
对于泵的板连接,DC-002插座有一个足迹。我考虑使用USB插座,但认为这是误导性的,因为输出电压并不总是对USB期望的5V。在上图所示的板上,我跳过了动力杰克插座,然后简单地连接了双针头插座。
我之所以选择这个项目盒,是因为它便宜,广泛可用,并且适合PCB和18650电池的尺寸合适。
需要8毫米M2.6螺钉将木板连接到盒子上。
| 财产 | 模块 | 板连接 | 数据表 | 购买链接* |
|---|---|---|---|---|
| 温度,压力,湿度 | BME280 | 直接(2.54毫米标头) | 关联 | |
| 勒克斯 | BH1750 | 直接(2.00毫米标题) | 关联 | aliexpress |
| CO 2 | MH-Z19C | 直接(2.54毫米标头) | 关联 | aliexpress |
| 水分 | “电容性土壤水分传感器v1.2” | 音频插头 | 链接(较旧版本) | aliexpress |
*我过去从这些链接中购买了这些链接,但没有保证。我也不打算在不可避免的情况下更新它们。
这是一个非常方便的温度,湿度和压力传感器。使用传感器的当前安装点,它部分位于外壳的外部。我觉得这很方便,因为我不必担心盒子内的气流。如果当前的几何形状冒犯了您,或者您需要一个更健壮的设备,传感器不会冒险损坏,请考虑在连接点上重新设计,或者选择带有内置笼子的替代传感器。
您可能会发现,焊接销钉妨碍了正确关闭外壳盖的方式。如果是这种情况,您可以在焊接前修剪它们,就像我在这里所做的那样。
传感器可以通过I2C或SPI进行通信;大多数人似乎都使用I2C,您不需要进行董事会更改。如果您想要SPI接口,请在后部关闭几个焊接桥,以连接其他引脚。在V5上,其中一种连接也为水分传感器提供动力,因此,如果您要同时同时运行BME280(带有SPI接口)和水分传感器,则需要进行更改。
笔记
这是一个简单可靠的光电二极管,结合了I2C接口。您可以以各种形式的因子购买,而轻球版本对于我们的目的特别方便。修剪内置连接器的塑料部件,现在可以将其直接插入板V5中的标准的2mm-pitch引脚标头中。轻球可以从传感器上弹出,直接安装在围栏的顶部。
笔记
这是我使用的最昂贵的传感器,但我认为与更便宜的VOC替代方案相比,这是值得的。它通过UART总线(SO ESP8266 PINS RX和TX)进行通信。因此,如果您试图刷新ESP或使用其串行接口,则需要确保传感器连接。
要在板V5上使用MH-Z19C,您需要在后部连接两个焊接桥。事后看来,当您不想要那些桥接的桥接时,我想不出一个好的用例,所以我可能只将垫子换成以后的任何版本上的连续痕迹。
笔记
为了阻止水分传感器不断运行并排出电池,它直接由GPIO12供电。将JP3的右垫桥接到中心垫上以建立连接。它不会吸收太多电流,因此我没有直接从GPIO PIN直接为传感器供电的问题。如果事实证明将来是一个褐色/稳定性问题,则需要将这种连接替换为MOSFET。
该董事会是在KICAD设计的,由JLCPCB制造。 board_v*目录中提供了KICAD文件和JLCPCB所需的信息。
请使用示意图理解;我知道这是丑陋而迫切需要分为多个部分的丑陋。请记住,这是我的第一个PCB设计!

板V5布局
为了方便起见,我在可能的情况下将Tasmota用于所有设备。 tasmota无法处理Lora,因此对于这些设备,我使用Micropython。
Web安装链接
确保安装Tasmota图像的“传感器”版本。
这是来自此读数顶部的V4设备的一些tasmota屏幕截图。
| 
这是我从控制接口中的默认设置更改的主要设置。在此处阅读有关这些和其他设置的信息。
笔记
POWER2 ONOutput Hi而不是Relay 2 。然后,它将在Tasmota的启动过程中较早设置,并在微控制器进入深度睡眠时仍关闭。在这里查找我的Lora Micropython软件和说明:https://github.com/brev-dev/lora_esp8266_sensor_mqtt_bridge。
尽管不受此存储库的覆盖,但这里有一些快速笔记,内容涉及这些设备在我完整的家庭设置中的位置。
我的家庭设置旨在实现这些目标:
为了在每个房间内进行温度控制,将辐射器插入了Tasmotizatized ESP8285智能插头中。
“集线器”是配备蚊子,肉眼,膨胀dB和Grafana的Raspberry Pi 4。我的鼻子流可以通过替换大部分(例如,乡亲耐心)来简化我的鼻子流,但我没有研究过。 InfluxDB和Grafana的组合用于存储和可视化历史数据(下面的示例),以及我们手机上的“ MQTT DASH”应用程序,以监视当前状态,更改温度和水分触发水平。 RPI软件堆栈利用Docker和IotStack来易于配置和维护。 Andreas Spiess在该主题上有一些很棒的视频,包括:#255,#295和#352。


