接上文,用USB-TTL分析了Lora模块基本功能后,就需要继续开始原理图设计了。毕竟USB-TTL难以实现模块的不同状态的配置和切换。
主芯片采用常用的STM32F103C8T6,并未采用L系列。一来考虑到对芯片的熟悉程度,二来系统耗电瓶颈可能未必在MCU这里,三来考虑成本问题,因此选用了最常用的STM32F103C8T6。
这里主要参考VDDA的电源设计,用磁珠隔离,并用1uF和0.1uF去耦。
其中磁珠可以选择常用磁珠。
https://item.taobao.com/item.htm?id=522576784852
MCU采用STM32F103C8T6,其中Y1为RTC时钟,而Y2为主时钟。
L1为VDDA的供电电路,实际为滤波磁珠;LORA_AUX连接到WKUP,软件设计时,可以用个LORA_AUX输出高电平,实现MCU唤醒。 BAT_VOLT连接到PA1, PA1和ADIN1复用,可以用来电压采集。
U2_TXD和U2_RXD用作调试串口,用来调试打印。而ADXL345采用SPI接口,用作备用功能。ADXL345为低功耗加速度传感器,可以用在振动监测或者触发监测上。
PB10, PB11复用为I2C2_SCL和I2C2_SDA,用来连接SHT20温湿度传感器,用来读取系统温湿度。
PB12连接SHT_CTL,用来开启或者关闭温湿度传感器,平时不使用时,关闭SHT_CTL,而需要采集温度时,再开启传感器,采集温度。
PB14连接的GET_VOLT用来获取电压信息。同样,为了降低功耗,GET_VOLT平时为高电平,对应的PMOS开启,当使能时,打开PMOS,读取对应的电池电压信息。
PA9,PA10连接U1_TXD和U1_RXD,通过跳线,连接LORA模块。 MCU_LED1和MCU_LED2连接调试LED。PA12为SWDIO, PA14为SWCLK.
PB3连接ALARM,用来开启报警装置。报警装置为12V供电,以保证报警声音强度。
PB6,PB7为 I2C1_SCL和I2C1_SDA, 这里连接OLED显示屏,也同样用作调试。
BOOT0接地,工作在正常模式。
VBAT为RTC后备电池。其中BAT54C在BAT1和3V3之间选通,当主电池有点时,VBAT从3V3取电,否则从BAT1取电。
Lora模块设计时,考虑到了可以单独供电用来调试Lora模块。调试时,目标板用5V供电,然后通过USB_TTL,可以分别调试LORA模块的休眠,唤醒以及两者之间的切换。
跳线帽J15用来单独测试LORA模块耗电情况,以便进行功耗计算。
BAT_VOLT采集电量,而GET_VOLT用来控制MOS开关采集电量。
Q3为SI2303,其封装如下:
1--G, 2---S, 3---D,NMOS, 导通时,电流从D流向S。
GET_VOLT为低电平时,Q3截止,无法获取BAT电压;
GET_VOLT为高电平时,Q3导通,可以通过R13/R16分压,读取电池电压,并根据电压,换算电量。
SOT23封装信息如下:
ADXL345采用SPI接口连接,用来读取设备振动数据。ADXL345还可以用来做跌落检测或者振动监测,具体都需要通过软件方法实现。
SHT20温湿度感应为性价比较高的一种温湿度传感器,这里采用I2C接口,并且用PMOS控制设备电源开启或者关闭。
报警电路采用升压模块,实现3.7V到12V升压,而且启动后,直接驱动蜂鸣器发声,具体功能还需要等待测试完成。其中ALARM驱动NMOS,因此为高电平启动。
备注:低电压控制高电压时,一定要采用NMOS或者NPN三极管,NMOS中,G>S启动,因此可以开启或者关闭D端电流。NPN中,B需要大于E和C,才能够达到饱和条件,因此,也可以控制5V或者12V开关。但是如果用错了管子(PMOS或者PNP),就可能会导致无法输出的现象,因为即使MCU输出到高电平,也无法达到需要关断输出的电压差。
硬件设计大致如上,具体功能还需要进一步调试验证。