立创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程序、阿里云对接等)虽然也有挑战,但有了稳定的硬件基础,软件调试就会顺利很多。祝你也能做出自己满意的物联网小作品!