您的位置: 主页  >  新闻中心  >  行业新闻  > 以无线模组公司远距离WiFi模组为核心的无线数据采集系统设计

以无线模组公司远距离WiFi模组为核心的无线数据采集系统设计

发布日期:2021-12-21  浏览次数:2148
无线模组公司远距离WiFi模组为核心的无线数据采集系统设计,无线电数据采集是现代信息通信研究的重要内容。对于许多领域,如人难以到达的偏远环境、高腐蚀和对现场无法可循的有线连接环境,选择有线数据采集传输系统显然已无法满足数据采集和传输的需要。这种无线数据采集方式已成为一种有效的替代方法,它作为现代数据监测控制的基础技术,已被越来越多地应用于物联网、工业控制、环境监测等领域。CV520是系统级芯片,它结合了Wifi功能,以CV520强大的处理能力、低功耗和高速稳定的Wifi通讯等为特征。采用CV520主控芯片设计一套无线数据采集系统,采用CV520连接芯片S进行数据采集,并用无线模组公司远距离WiFi模组连接指定网络,利用Socket接口与上位机通信,将采集到的数据传送到上位计算机系统。

该无线数据采集系统的硬件结构主要由数据源模块、CV520模块和上位机三部分组成。通过SPI接口连接CV520和数据源模块,CV520模块在本设计中称为SPISlave(被动SPI设备),SPIActivity(SPIActivity);CV520通过AP(无线接入点);建立以太网络与主机连接。在系统运行过程中,数据源模块定期向CV520模块发送数据,CV520系统则在其中缓存数据;数据采集通过WiFi网络,在与主机连接时,仍能与主机保持连接。由上位机实现数据的存储和实时显示。当CV520用于SPISlave时,SPIMaster只能等待SPIMaster启动通信连接,并基于主机提供的时钟信号接收数据。ST是ST(意法半导体)开发的高性能微处理器,作为SPIMaster应用时,每个SPI控制器都能利用多个片选信号(CS0~CS2)连接多个被动SPI设备。在CV520和ST设备中,CS为片选信号,SCK为时钟信号,MOSI为数据输出线,MISO为从设备数据输出。

CV520主程序设计主要包括两个模块:无线模组公司远距离WiFi模组Wifi网络配置模块和线程与队列模块。而Wifi网络配置模块负责网络的配置,线程和队列模块负责实现无线数据采集系统的主要功能,即:SPI数据采集和网络数据发送。主要程序的设计过程具体包括以下几步:1。程序的初始化:NVS存储器的初始化和Wifi模式的配置。2.连接网络,Wifi网络配置模块连接到指定的AP,并获取AP分配的IP。3.创建三个线程:SPI数据接收线程被用来调用SPI底层驱动,以接收STM32F407发送的数据和缓存;数据发送线程创建Socket与上位PC的无线通讯连接模组,和SPI接收线程协作,向主机发送数据;WEB服务器线程向主机提供信息查询、使得计算机能够通过浏览器在CV520上获得运行信息。

无线模组公司远距离WiFi模组CV520芯片支持高速、稳定的WIFI通讯,支持三种模式:"AP"、"STA"、"AP+STA"。该方案采用STA模式,利用WIFI_init_sta()函数来配置STA模式。您需要配置WIFI帐号和口令来连接到指定的AP,然后才能进入STA模式。STA模式配置STA模式的配置流程显示了整个配置过程,使用函数WIFI_init_sta()完成STA模式配置,具体包括:创建用于在WIFI连接期间识别各种标志位的事件组标志。初始化硬件/软件:使用"tcpip_adapter_init()"函数来初始化TCP/IP适配层,用'event_loop_init()初始化事件调度器'清空IP信息,让事件回调函数从初始位置判断标志位。WIFI模块的底层参数信息通过“WIFI_init_config_tcfg=WIFI_INIT_CONFIG_DEFAULT()”语句对WIFI模块进行初始化。配置STA模式参数,将路由器的WIFI帐号、口令数据置于标准变量中。通过"WIFI_set_mode(WIFI_MODE_STA)"设置STA模式;WiFi_set_config(IF_WIFI_STA)WiFi_config)为STA模式设置配置信息;“WIFI_start()”语句启动WIFI状态机。

线程化设计以队列模块程序为例,主要包括三线程和一个队列的程序设计。三线程分别是SPI数据采集线程、数据发送线程和WEB服务线程,另外为了保证CV520系统能及时、高效地接收和发送数据,需要使用队列来保持SPI数据采集线程与数据发送线程之间的数据同步。

通过FreeRTOS的队列“queue”,实现了SPI数据采集线程与数据发送线程之间的数据同步。其中一个基本原理是,不同的线程任务或者中断程序都可以使用队列来向数据写入数据。事实上,该队列是一个固定大小的空间,任何线程任务都能读取和写入。语句“queue=xQueueCreate(BLOCK_NUM,sizeof(char*))”,该语句用于创建队列,FreeRTOS为线程的读取和写入指定了固定空间。而BLOCK_NUM将存储的数据单元数目与缓冲存储器空间数目一致。参数2设置一个数据单元的大小,在线程之间只需要传递存储空间的首地址。SPI数据采集线程程序CV520通过SPI协议与STM32F407进行数据传输,后者以一定时间间隔将数据字节发送给CV520。在充分考虑CV520有限的内存和SPI底层驱动机制的前提下,实现了SPI数据采集和线程间数据传输;在编程过程中,利用环形缓冲区将大小为M*NBytes、SPI信号线所接收的数据进行存储。在这里,M是一个单独的存储空间,N表示存储空间的数目。本设计中CV520的SPI底层驱动采用DMA机制,这样建立的环状缓冲区要求系统使用DMA存取的存储器空间。MALLOC_CAP_DMA需要使用heap_caps_malloc函数对单个存储器空间的选择好基于每个SPI周期发送数据的长度选择,也就是M为每个周期SPI发送数据长度的整数倍,同时为确保网络传输效率,在MTU的尺寸尽可能接近于1300(CV520不支持切分,并且碎片会影响效率),每一次发送长度是64Bytes,所以选择M为64*20=1280Bytes,存储空间的数目是N,从理论上选择N越大,系统运行中的缓存空间越大,SPI接收出错的概率就越低,但是因为CV520的内存空间有限,N会影响其它线程,实验中选择N是5。SPI数据采集程序主要包括:SPI驱动的初始化、初始环形缓冲的初始化、SPISlave读取程序。SPISlave驱动器通过操纵DMA和SPI控制器与SPIMaster进行通讯,为应用程序提供访问接口,详细的数据结构和程序设计可供参考。SPISlave的读取器流程是:1.循环调用spi_slave_transmit,通过spi_slave_interface_config_transmit将当前缓冲区和接收数据信息指定给底层驱动,SPI接收开始,线程进入挂起状态等待接收结束。2.在接收结束之后,线程继续运行,通过xQueueSendToBack将接收到的数据所在存储空间的一地址加入队列。将当前缓冲区切换为下一个环形缓冲区重复。

在STA模式下,数据发送线程设计了Socket接口和上位机建立通讯连接的两种方法,即“TCP模式”和“UDP模式”。TCP模式下传输的数据不易丢失,而UDP模式传输的数据易发生误判,所以这种连接采用TCP方式。在无线模组公司远距离WiFi模组CV520连接上WIFI并获得了AP所分配的IP之后,就可以通过Socket接口与上位机进行通信,发送所获数据。Socket是CV520与主机之间进行通信的接口。CV520主动向上位机发出连接请求,上位机在接通之前打开监听器的Socket接口,实时监视客户的请求,一旦连接建立,CV520与上位机就可以进行通讯。CV520与上位机通讯连接建立流程:1.定义下列Sock_fd:"sock_fd"监听套接口描述符;""client_fd""数据传输套接口描述符";"bind_fd"绑定IP/端口套接口描述符。用端口号保存本地IP的本地地址变量"my_addr";定义目标地址变量"client_addr""来保存目标机IP和端口号。2.使用socket(AF_INET,SOCK_STREAM,0)创建Socket监听。3.用Socket绑定本地IP、端口号、协议类型下面是以下主要程序:my_addr.sin_family=AF_INET;my_addr.sin_port=htons(PORT);my_addr.sin_addr.s_addr=htonl;bind_fd=bind(sock_fd,(structsockaddr*)&my_addrsizeof(my_addr));4.打开监听Socket,使系统处于监听状态,等待主机连接请求用“listen(sock_fd,10)”的语句监听。通过accept(sock_fd,(structsockaddr*)&client_addr,&sin_size)语句来创建通信socket。6.在确定连接被建立之后,在队列为空的情况下,调用xQueueReceive读取队列,直到该线程处于非空状态。从队列中获得数据存储空间的首地址,如果队列是非空的。使用write(newconn,(char*)tmp,BUF_SIZE)将数据发送给主机。如发送失败则返回-1,程序进入错误停止发送程序;如果发送数据成功将返回实际发送的字符数。

Web服务器线程程序设计Web是一种网络通信协议,是在单一TCP连接上实现全双工通信的协议。当无线模组公司远距离WiFi模组CV520连接到WIFI之后,将创建一个WEB服务器线程,用来向主机提供信息查询。主机发送HTTP请求后,系统会把从SPI接收到的数据和发送的数据信息返回给主机浏览器,方便用户查询在数据通信过程中是否有报文丢失。WEBServices线程程序设计的主要步骤是:1.创建Socket连接,绑定用于监听PC机连接的本地IP地址和80端口。在主机发出连接请求后,系统与主机进行连接,建立通信socket。2.CV520读取由主机发送的请求数据,并将其置于recv_buffer的字符类型数组中,使用strncmp(char*)recv_buffer语句,"GET",3)==0判断请求报文的前三个字符是否是"GET",若有,则执行以下命令:sprintf(disp、spi:%d;tcp:%d!\r
"spi_count,tcp_count);strcpy(htmldata,htmldata_h);strcat(htmldata,disp);strcat(htmldata,htmldata_t);写入(conn,htmldatastrlen(htmldata));disp是定制字符类型的数组,用来存储返回的数据;spi_count将统计系统收到的SPI数据,tcp_count为系统发送给主机的数据;htmldata是一个长度为200的字符类型数组;htmldata_h和htmldata_t定义如下:charhtmldata_h[]="《html>"head><其他需要返回的信息也可由用户自己定义。

本实验主要通过两块开发板进行系统搭建,一块是CV520-DevKitC,一块是Ai-ThinkerIDEV1.0,另一块是SPI连接到两个开发板。因为只需要单向发送,除去VCC和地线,只需要连接三条线。利用杜邦线按照电路接线连接好实物,硬件设备连接完毕后显示。其中每一色的杜邦线对应一条接线,黑色为地线,绿色为串行钟信号线,橙色为MOSI数据线,黄色为片选信号线。这个试验主要是验证无线模组公司远距离WiFi模组CV520和Wifi之间的连接是否正常,以及是否可以正常接收SPI数据,通过WiFi将数据发送给上位机,同时计算数据传输过程中的速率和丢包率。先测试CV520和WiFi的连接,CV520输出可通过串口调试工具进行打印,清楚地显示CV520当前正在运行的连接状态;在系统连接上电之后,即进入准备状态,按下CV520RST键,CV520自动连接到WiFi。从串口调试工具可以看到整个WiFi连接过程,可以看出,CV520系统首先是STA模式配置,在完成STA模式配置之后,输出当前的用户名和密码,然后AP为它分配IP地址。如果打印获得IP地址,就表明CV520连接AP成功,AP为192.168.2.30分配IP地址。使用串口打印的提示信息可以看到CV520系统的准备过程,其中,spi_taskon表示SPI数据接收线程打开;Data_trans_taskon表示数据发送线程打开;Da-ta_trans_tasklisten和Initial_SPIDone表示CV520系统已打开SPI的监听端口,并完成SPI初始化配置;Http_taskon指示WEB服务线程打开;Data_trans_taskaccept表示CV520系统与上位机已建立TCP连接且能够开始传输数据。如果你能看到由上位机接收的数据总字节的数目是38400Bytes,而且数据在从0开始到2之后又重新设置为0。主机会以.dat格式以.dat格式保存接收的数据,打开该文件可查看具体接收数据,每个数据间隔0.001,无需考虑浮点数存储错误。为了检验发送过程的成功率,接收和发送的数据量可通过浏览器访问CV520系统获得:其中spi:384000Bytes表明CV520系统从STM32F407接收到的SPI数据是384000Bytes。tcp:384000Bytes是指由TCP连接发送到CV520系统的数据,CV520系统接收到的数据量与发出的数据量一致,而且通过上位机软件可以看到上位机接收的总数据也是384000Bytes,CV520系统通过Wifi向主机发送的数据与上位机接收的数据一致,结果表明,在无线传输过程中数据没有丢失,丢失率为0%。另从可见的6.01S数据的接收时间为6.01S,经计算得出数据的传输速率为62.5KB/s(500Kbps)。试验结果表明,该设计方案是可行的。

例如,以ST连接CV520,CV520通过WIFE连接主机,对无线模组公司远距离WiFi模组CV520无线网络配置中的数据收发程序进行了详细的设计和说明,与此同时,为CV520系统设计了WEB服务程序,方便上位机查询信息。进行了硬件平台测试,验证了应用程序的正确性和驱动性能。试验结果表明,该无线数据采集与传输系统程序设计合理,使用方便,但其性能有待进一步优化和提高。今后还会进一步优化软硬件设计,提高抗干扰能力和数据传输效率,改善系统性能。
QQ咨询
微信咨询
联系电话
18681563125
返回顶部