【睿赛德 RW007 WiFi 模块试用连载】计划提醒机


关注了“发烧友”公众号,在6月5日闲来无事,看睿赛德RW0007在试用,想着最近项目也不是很忙,就审请了一块,直接进入正题吧。

项目描述:

背景:由是一个WIFI通信模块,那么可以上传到服务器的后台一些数据。另外,在简单看了RW07可以上传到微信小程序。那么也可以尝试下。根据手头硬件条件,可以上传温湿度及万年历,还可以做一些类似"便签"功能,于是定位了这次的试用项目:计划提醒机。

  • rt-thread版本:4.0.3(本打算基于nano来弄的,时间有些紧,暂时先用标准版实现,若还有时间,再用nano版来实现)
  • 操作系统:win10
  • IDE:MDK5
  • 硬件:基于自己项目PCB及硬件/换成探索者开发板
  • 芯片:基于stm32l431rct6/换成stm32F407zgt6

试用过程:

基于stm32l431rct6 SPI试用:

  1. 拿到RW07,先把带的插针都焊在板子上。 如下图:
    在这里插入图片描述

  2. 连接到硬件平台:这个模块是基于SPI,所以要手工把板子上接口引出来,接到模块上。基本的管脚对应如下表所示:

    PCB管脚Demo功能
    PA1D13clk
    PB4D12miso
    PB5D11mosi
    PD2D10cs
    PB7D9busy
    PB8D8reset

    接好之后,如下图所示:
    在这里插入图片描述

  3. 配置Rt-thread,打开SPI,如下图所示:
    在这里插入图片描述

  4. 配置RW07软件包,这里要注意管脚要与第2步硬件连接对应起来。如下图所示:
    在这里插入图片描述

  5. 开启 WiFi 框架,并保存配置,如下图所示:
    在这里插入图片描述

至此,重新编译程序,遇到问题了,提示内存空间不够,经过查询,rw007需要60多K的内存。看来spi这种方案行不通了。能不能基于串口AT指令实现,基于串口AT的试用。

基于串口AT的试用

很遗憾,此版本的RW007不支持串口AT.

基于探索者试用

  1. 先从rt-thread中分离出F407程序文件,作为程序的模板文件。
    进入到C:\Users\guangod\Desktop\rt-thread\bsp\stm32\stm32f407-atk-explorer中找到对应开发板的demo目录后,进入ENV工具执行menuconfig配置界面,执行scons --dist分离出工程文件。分离出来后会在stm32f407-atk-explorer文件夹下,出现一个dist文件夹,将文件夹下的文件拷贝到桌面上,这个就是rt-thread程序的模板文件
  2. 连接硬件平台,基本的管脚分配如下:如下图所示:
    在这里插入图片描述
PCB管脚DEMO功能
PA5D13clk
PA6D12miso
PA7D11mosi
PC4D10cs
PC5D9busy
PB0D8reset

3.配置rt-thread rw007这部分基本的L431的配置步骤一样,不再叙述!唯一需要注意的是要根据自己板子脚分配情况,设置spi相关的管脚,如下图所示:
在这里插入图片描述

4.编译后,下载到板子里,可以看到打印出来的命令中多了个wifi,如下图所示:
在这里插入图片描述
依着指令的顺序,逐条测试一下,就可以。
wifi及wifi help其实是一样的指令,就是打印wifi测试指令的。
wifi scan ssid:是查找wifi路由信息,如下图所示:
在这里插入图片描述

wifi join ssid password:加入wifi,这也是最常用的命令
在这里插入图片描述
wifi ap ssid password:创建ap结点,暂时用不到
wiif disc :断开连接,如下图所示:在这里插入图片描述
wifi ap_stop:断开ap,暂时用不到
wifi status:网络状态查询
在这里插入图片描述
wifi smartconfig:没有任何打印,应该是进入智能配网模式,用手机的AirKiss试了几遍,没有成功!现在也用不到。
至此,完成了wifi指令的测试,wifi模块是正常工作的。硬件没有问题,在此期间遇到用5V电源供电,模块一直没有进入正常的状态,一看开发板供电电压是6-16V,换了个12v的供电电源才解决。下面进入程序的编写工作。

相关资料阅读
lwip组件

在l431时,想办法缩减代码编译后的占用的空间,发现占用量最大的就是这个lwip。能不能缩减它呢?经过几天的折腾,难度比较大,也因此放弃了项目所使用的PCB及IC,转而使用开发板。这一部分rt-thread的编程手册没有,看了下官网的文档,倒是有点介绍,做下记录。

  • 什么是lwip?有什么用?
    lwip是一个轻量级的TCP/IP协议栈。只实现了tcp/ip一部分,适用于嵌入式系统看了下之前使用4G模块是没有使用这个协议栈的,但肯定也会有这个协议栈的存在,并且这个协议栈就集成在了4G模块里,然后通过AT指令的形式来使用,虽然是简化了操作,但底层对lwip还是知之甚少。
    由于是简化的tcp/ip所以大部分的知识都可以在《网络原理》找到,就不详细说了。这点自己还是有基础的。
  • rt中的lwip内存堆分配
    pbuf网络数据缓冲区,为什么不需要在不同的网络层不同数据结构频繁拷贝??
    不同层级在申请 pbuf 时,因为入参 layer 的不同,会给 pbuf 设置一个 offset 。这个 offset 可以在其他层级进行处理时直接向对应的空间区域填充数据,而不需要进行拷贝操作。pbuf成为在不同网络层间可见的数据结构。
  • rt中关于lwip的配置?
    由src/include/lwip/opt.h,src/lwipopts.h,rtconfig.h 三个文件共同作用的结果。参考位置在E:\rw007\rw007test\rt-thread\components\net\lwip-2.0.2\src\include\lwip
wifi管理框架

WLAN 框架主要由三个部分组成:

  • DEV 驱动接口层,为 WLAN框架提供统一的调用接口。
  • Manage 管理层为用户提供 WIFI 扫描,连接,断线重连等具体功能。 由引可见,wifi框架层已经实现连网的功能,所以直接用就可以。
  • Protocol协议负责处理 WIFI 上产生的数据流,可根据不同的使用场景挂载不同通讯协议,如 LWIP 等。
  • 基本框架如下图所示:
    在这里插入图片描述
  • 第一部分 app 为应用层。是基于 WLAN 框架的具体应用,如 WiFi 相关的 Shell 命令。
  • 第二部分 airkiss、 voice 为配网层。提供无线配网和声波配网等功能。
  • 第三部分 WLAN manager 为 WLAN 管理层。能够对 WLAN 设备进行控制和管理。具备设置模式、连接热点、断开热点、启动热点、扫描热点等 WLAN 控制相关的功能。还提供断线重连,自动切换热点等管理功能。
  • 第四部分 WLAN protocol 为协议层。将数据流递交给具体协议进行解析,用户可以指定使用不同的协议进行通信。
  • 第五部分 WLAN config 为参数管理层。管理连接成功的热点信息及密码,并写入非易失的存储介质中。
  • 第六部分 WLAN dev 为驱动接口层。对接具体 WLAN 硬件,为管理层提供统一的调用接口。

官网已经有详细的资料了,就不再详细展开,这部分就是代码的基础,代码通过shell 命令已经实现配网等操作,基本需要做的就是实现程序来配网,完成后,再根据rw007spi命令上传数据就可以了。

效果及代码:

完整代码:gitee仓库

心得体会:

前期,折腾l431的时间太多了,虽说知道是lwip组件占用的空间最大,但想要减掉它,几乎是不可能的。又尝试的串口AT,多方查资料,才知道此版本的不支持AT.又等新的开发板等了一段时间才到。又遇到工作项目的问题,虽然只是完成了部分,但以后项目空余时间会再补齐,所说的功能。不过从实现的这些来看,加入rtOS后,确实操作要方便了不少。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值