开源 | 嵌入式物联网应用开发 - 无线收发模块

上一篇文章讲述了ARM-Linux中控扩展模块的开发设计,上一篇文章的具体内容,请参考以下链接:

开源 | 嵌入式物联网项目开发 - ARM中控扩展模块

为了提高硬件模块的可重用性,对于终端设备模块的硬件,采用了无线收发模块+传感执行模块的方式进行设计。即一个无线收发模块可以跟不同的传感器模块或执行器模块配合使用,只需要烧录不同的设备端固件即可。无线收发模块如下图所示。

 

无线收发模块具有以下功能:

1、使用外部DC-5V电源供电。

2、具有2.4GHz和433MHz无线收发功能。

3、板载LED指示灯和物理按键,用来指示网络状态和重置模块。

4、网络管理功能:加入网络,退出网络,心态包维持,等等。

5、对外引出MCU的串口1和串口2,方便外接其他串口模块。

6、对外引出MCU的PWM,IIC,GPIO,外部中断接口,方便用户扩展。

7、模块尺寸:51mm * 42.5mm

 

硬件设计篇

无线收发模块使用DC-5V进行供电,模块自带LDO稳压芯片,DC-5V电源通过LDO稳压电路,为单片机及其他模块提供3.3V电源,LDO稳压电路如下图所示。

无线收发模块采用STM32F030C8T6作为主控芯片,这款芯片是Cortex-M0内核,主频48MHz,芯片自带64KB可编程Flash和8KB RAM,外设资源丰富,MCU控制电路如下图所示。

无线收发模块使用排母端子的方式对外引出MCU3路PWM引脚,一组IIC引脚,多组外部中断引脚和通用GPIO引脚。其中一边的排母端子作为固定模块使用,并没有芯片引脚连接,对外扩展引脚原理图如下图所示。

无线收发模块带有一个蓝色LED指示灯和物理按键,蓝牙LED指示灯用来指示网络状态,如入网状态,掉线状态,连接状态,等等。物理按键用来重置模块的出厂配置信息,并使模块重新回到配网状态,电路原理图如下图所示。

无线收发模块使用了MCU的SPI1和SPI2接口跟两款无线芯片进行通信,其中,SPI1接口连接SI4432这款433MHz无线模块,SPI2接口连接nRF24L01这款2.4GHz无线模块,SI4432模块和nRF24L01均使用焊接方式固定在无线收发模块上面,接口原理图如下所示。

 

以上就是ARM中控扩展模块的原理图描述,各个模块的原理比较简单,具体原理图和PCB的硬件工程可以到GitHub或Gitee上下载。

 

软件设计篇

 

无线收发模块的软件框架,是基于OSAL调度器进行设计的,关于OSAL调度器的内容,请参考以下文章。

开源 | 嵌入式物联网项目开发 - 基于任务和事件的OSAL调度器

 

为了让无线收发模块有更好的扩展性,模块并没有添加其他关于传感器和执行器的功能,只保留了最基本的无线收发功能和网络管理功能,例如恢复出厂设置,加入网络,退出网络,心跳包维持,等等。

无线收发模块可以通过板载物理按键重置自身的网络信息,用户连续按下板子上的物理按键5次,无线收发模块会把当前的网络配置信息恢复为出厂设置。物理按键的操作函数在key_task.c文件中实现,如下图所示。

为了更好地辨别出无线收发模块当前的网络状态(如配对状态,连接状态,断连状态),模块通过板子上的一颗蓝色LED进行显示,当网络状态发生改变时,LED的闪烁状态也会发生改变,在led_task.c文件中实现LED状态显示,如下图所示。

无线收发模块的网络管理功能,在net_task.c文件中实现,如入网操作,退出网络,心跳包维持,等等。无线收发模块通过入网操作,向主机请求网络ID和设备ID,当入网成功后,主机会通过心跳包的方式维持整个网络,如下图所示。

 

无线收发模块在入网的时候,需要向主机(即ARM中控扩展模块)请求网络信息,而主机的网络信息需要在ARM中控上对其预先进行配置,因此在ARM中控上设计了一个主机参数配置界面,用于对主机参数进行配置,如下图所示。

如图所示,点击【设置主机】按钮,弹出设置主机参数界面,可以使用该界面进行参数获取和参数设置,设置完成后,点击OK退出界面。【主机扫描】按钮是在从机入网时使用的,点击该按钮,主机会启动扫描,进入待入网状态,等待接收从机的入网请求。

 

系统软件之间的通信协议和AT指令集,请参考如下两篇文档:

《0-ARM中控扩展模块AT指令集.docx》

《1-嵌入式物联网系统通信协议.docx》

 

项目的开源地址:

https://github.com/embediot/Embedded-IoT-Project

https://gitee.com/embediot/Embedded-IoT-Project

猜你喜欢

转载自blog.csdn.net/wenjs0620/article/details/108116244