
立创EDA实战基于STM32与E22-400T30S LoRa模块的10km远程土壤监测系统设计最近想养好多肉但总因为忘记浇水而失败。作为一个懒人我决定用技术解决问题——做一个能自动监测土壤湿度并远程提醒我的系统。更重要的是我希望这个系统能覆盖我老家院子里的几块地距离得有几百米普通的Wi-Fi或蓝牙根本够不着。于是我设计了一套基于LoRa无线技术的远程土壤监测系统。核心是STM32单片机和亿佰特的E22-400T30S LoRa模块实测传输距离能达到7-8公里完全满足需求。整个硬件设计我都是用立创EDA完成的从原理图到PCB再到打样焊接。今天我就把这个项目的硬件设计思路、关键电路和踩过的坑手把手分享给你。无论你是想做个类似的农业监测项目还是单纯想学习如何将STM32、LoRa模块和传感器集成到一块板子上这篇教程都能给你清晰的指引。1. 系统架构与核心器件选型在动手画原理图之前咱们得先搞清楚整个系统是怎么工作的以及为什么要选这些芯片和模块。1.1 系统是如何工作的整个系统分为两大硬件部分节点Node和网关Gateway。节点你可以把它想象成一个“侦察兵”部署在需要监测的土壤附近比如花盆、农田里。它的任务是用传感器采集土壤湿度、空气温湿度。把数据显示在本地的小OLED屏幕上。通过LoRa无线模块把数据打包发送出去。网关它更像一个“指挥部”通常放在有网络的地方比如家里。它的任务是用LoRa无线模块接收所有节点发来的数据。把数据显示在本地屏幕上。通过Wi-Fi模块ESP-01S将数据上传到阿里云服务器这样你的手机APP就能看到了。这样一来哪怕节点在偏远的山区没有手机网络它也能通过LoRa把数据传到几公里外的网关再由网关通过Wi-Fi上传到互联网。1.2 为什么选这些核心器件主控芯片STM32我选择了一款功耗较低的STM32。节点在户外靠电池供电低功耗至关重要。STM32性能足够强大能轻松驱动传感器、屏幕和LoRa模块而且开发资料丰富成本也合适。无线模块亿佰特 E22-400T30S这是实现超远距离通信的关键。选型时我纠结过E22-400T33S距离更远但成本太高。E22-400T20S成本低但距离不理想。E22-400T30S在距离和成本之间取得了很好的平衡理论传输10km实测7-8km非常稳定。它支持透明传输像串口一样简单收发数据也支持设置加密通道用起来很灵活。云端与APP阿里云生活物联网平台飞燕平台对于物联网项目自己搭建服务器太麻烦。阿里云的这个平台提供了从设备接入、数据存储到APP开发的整套服务能极大缩短开发周期。注意器件选型一定要结合实际需求。不要一味追求高性能够用且成本合理才是好设计。我这个项目就曾在T33S和T20S之间摇摆最终T30S是最优解。2. 硬件电路设计详解接下来我们深入每个核心电路部分看看在立创EDA里具体是怎么画的。2.1 电源管理电路系统的能量心脏节点设备可能长期在户外工作所以供电设计必须可靠且灵活。我的设计支持两种供电、两种充电方式。供电部分输入源一路来自锂电池如3.7V另一路来自USB接口5V。切换开关使用了一个船型开关来手动切换供电模式。拨到一边用电池拨到另一边用USB。稳压芯片无论输入是3.7V还是5V后级电路STM32、传感器等通常需要稳定的3.3V。这里我用了经典的AMS1117-3.3线性稳压芯片将输入电压稳到VCC_3.3V。充电部分充电芯片使用TP4056锂电池充电管理芯片。它非常常用充电电流可以通过一个电阻来设定。充电输入支持通过Micro USB接口或太阳能板接口为锂电池充电。这对于户外长期部署非常有用接上一块小太阳能板就能实现能源自给。重要提醒E22-400T30S模块的工作电压范围是3.3V-5.5V。如果你使用标称3.7V的锂电池其电压在放电时会逐渐降低可能低于3.3V导致LoRa模块工作不稳定。因此强烈建议为节点使用5V的电池或电池组或者确保你的电源电路在电池供电时也能输出高于3.3V的电压。2.2 LoRa模块接口电路通信的桥梁E22-400T30S模块与STM32的连接非常简单主要是串口UART。核心连接TX- 接STM32的RX引脚RX- 接STM32的TX引脚AUX- 可接STM32的一个GPIO用于判断模块忙闲状态本项目未使用M0,M1- 接STM32的两个GPIO用于设置模块工作模式工作模式设置 M0和M1引脚的电平组合决定了模块的四种工作模式00, 01, 10, 11。我使用的是00模式即“普通传输模式”。在此模式下模块的串口和无线功能完全打开实现透明传输——你从STM32串口发送什么数据模块就通过无线发出什么数据无线接收到什么数据就从串口原样输出给STM32无需关心复杂的LoRa协议对初学者极其友好。实用建议 为了方便调试和未来切换模式比如进入配置模式你可以在M0和M1引脚的通路上各串联一个两位拨码开关。这样不需要重新烧写程序通过拨动开关就能改变模块模式搭配厂家提供的调试助手软件使用会非常方便。2.3 传感器与主控电路数据的来源与大脑主控电路 围绕STM32最小系统搭建包括晶振、复位电路、Boot模式选择电路和调试下载接口如SWD。这部分是标准设计立创EDA的元件库里有丰富的STM32型号和封装直接调用即可。土壤湿度检测电路创新点 我没有使用外购的土壤湿度传感器探头而是利用PCB本身的铜箔设计了一个简易的检测电极。检测原理在PCB上绘制两个紧密相邻但互不连接的铜箔图案作为电极。当PCB板插入土壤中土壤中的水分会改变两个电极之间的电阻。信号转换将这个电阻变化通过一个简单的分压电路转换成电压变化。AD采集将这个电压接入STM32的ADC模数转换器引脚。STM32内部ADC将这个模拟电压值转换为数字量数字量的大小就反映了土壤的湿度。(上图展示了PCB上设计的铜箔电极样式)这种方法成本极低并且将传感器和主控板集成在一起避免了外接探头的麻烦和额外成本非常适合DIY项目。其他外设OLED屏幕接口预留一个I2C接口的0.96寸OLED屏幕插座用于本地显示数据。ESP-01S Wi-Fi模块接口仅网关在网关上除了LoRa模块还需要一个Wi-Fi模块连接互联网。我选择了小巧便宜的ESP-01S为其预留了UART接口和供电引脚。3. PCB设计要点与实战心得原理图设计只是第一步把电路变成可以生产的PCB板更需要细心和技巧。3.1 板型与布局规划考虑实际应用我的节点设备需要插入土壤所以我把PCB设计成了长条形一端是尖头便于插入另一端较宽放置电池和主要芯片。形状可以在立创EDA的“板框”层中自由绘制。模块化布局将电源部分、主控部分、LoRa模块、传感器电极分区放置。特别是LoRa模块的天线部分要尽量靠近板边并且周围不要铺铜或放置其他金属元件以保证信号质量。3.2 布线、打样与焊接电源线加粗给电源路径特别是从电池/USB输入到AMS1117再到各模块的VCC的导线设置更宽的线宽比如20-30mil以减少压降和发热。利用立创EDA的“嘉立创下单”功能设计完成后可以直接在软件内生成Gerber文件并下单打样。对于简单双面板嘉立创常有免费打样活动能省下不少成本。焊接顺序建议先焊接电源部分AMS1117、TP4056通电测试3.3V输出正常后再焊接STM32和外围阻容元件最后焊接贴片的LoRa模块和OLED插座。LoRa模块引脚较密需要一把好用的烙铁和细心。4. 系统测试与效果展示硬件焊接完成后就是激动人心的测试阶段了。上电与基础测试先不插LoRa和传感器只给主控板上电编写一个简单的程序测试OLED屏幕能否点亮串口能否打印信息。LoRa模块点对点测试准备两个节点或一个节点一个网关分别烧写简单的收发程序。将它们的M0、M1都设置为00模式。在一个节点的程序中让STM32通过串口定时向LoRa模块发送数据另一个节点接收并打印。从同一个房间开始测试逐步拉远距离。传感器数据采集测试编写ADC读取程序将PCB的电极部分插入潮湿和干燥的土壤中观察ADC值的变化并建立湿度百分比的大致对应关系。系统联调将节点放置在阳台花盆网关放在室内。节点采集土壤数据并通过LoRa发送网关接收后通过ESP-01S上传到阿里云。你可以在阿里云物联网平台的后台看到实时上传的数据。(阿里云物联网平台后台数据显示)当我第一次在手机APP上看到从阳台传回的土壤湿度数据时那种成就感是无与伦比的。实测在市区复杂环境中节点与网关相距近1公里通信依然稳定在开阔地带距离达到了7-8公里。5. 总结与注意事项回顾这个项目从构思到硬件完成用了差不多一周的业余时间。最后再分享几个硬件设计上容易踩的坑电压一定要算清楚这是最重要的教训。务必确认每个芯片、模块的工作电压范围并保证在你的供电方案下尤其是电池供电时电压始终满足要求。LoRa模块对电压比较敏感。PCB板型要为功能服务不要只追求美观或规整。像我这个需要插入土壤的节点特殊的板型就是功能的一部分。善用模块化设计像E22、ESP-01S这种模块尽量使用现成的封装并参考官方推荐电路。这能避免很多低级错误。调试接口不能省务必留出STM32的SWD调试接口和至少一个串口调试接口。在程序调试阶段它们是你的“眼睛”和“救命稻草”。希望这个详细的硬件设计教程能帮你打开思路。物联网硬件开发就是这样从需求出发选择合适的器件耐心地完成每一部分电路最后将它们整合成一个能可靠工作的整体。剩下的软件部分STM32程序、阿里云对接等虽然也有挑战但有了稳定的硬件基础软件调试就会顺利很多。祝你也能做出自己满意的物联网小作品