本文基于RT-Studio,采用搭积木的方式实现一个简单的互联型家庭网关,采集各类传感器数据并传输至云端。硬件除了Psoc6-evaluationkit-062S2开发板之外,还有一块RW007 WIFI模块,本来斥巨资购买的AHT10温湿度传感器已经到货,但是由于RW007把Psoc6-evaluationkit-062S2开发板全部的pin都用了,so,放弃真实的数据采集,测试传输几个数据到云端。
一、硬件环境
RW007 是由上海睿赛德电子科技有限公司开发的高速 WiFi 模块,模块基于 Realtek RTL8710BN(Ameba Z 系列) WIFI SOC,使用 SPI/UART 与主机通信 ,支持 IEEE 802.11b/g/n 网络、 WEP/WPA/WPA2 加密方式和 STA 和 AP 模式。
主要特性
1.Cortex-M4 高性能 MCU
2.可自由选择的 AT SPI 双模式,工作模式可由主机配置
3.SPI 时钟高达 30Mbps,UART 波特率高达 6Mbps。
4.SPI 模式下有效以太网带宽高达上传 1MBytes/s,下载 1MBytes/s
5.内置 Bootloader,支持固件升级、安全固件功能。
6.支持快速连接、airkiss 配网
7.支持存储多达 5 条连接信息
Psoc6-evaluationkit-062S2是 RT-Thread 联合英飞凌推出的一款集成32位双核CPU子系统( ARM Cortex-M4 和 ARM Cortex-M0)的开发板,其具有单周期乘法的150-MHz Arm Cortex-M4F CPU (浮点和存储器保护单元),100-MHz Cortex M0+ CPU,带单周期乘法和MPU,可以充分发挥 PSoC6 双核芯片性能。
二、工程配置
基于RT-Studio创建Psoc6-evaluationkit-062S2的RT-Thread工程就不介绍了,毕竟有现成的Psoc6-evaluationkit-062S2 BSP。
(一)wifi配置
根据Psoc6-evaluationkit-062S2的电路图,知道用的是spi0,所以硬件配置中打开spi0,并且配置好跟rw007对接的针脚,输入SSID和password即可。
(二)onenet配置
OneNET 软件包是 RT-Thread 针对 OneNET 平台连接做的的适配,通过这个软件包,可以让设备在 RT-Thread 上非常方便的连接 OneNet 平台,完成数据的发送、接收、设备的注册和控制等功能。
OneNET 软件包依赖paho-mqtt、webclient和cJSON软件包,所以在RT-Studio中选择OneNET 软件包后自动加上依赖包。
OneNET 软件包配置主要是填入OneNET设备信息和鉴权信息。
上面要填的信息来自于OneNET设备页面,直接copy即可。
(三)编译
配置好后保存,然后编译,感觉flash占用有点大。
make -j8 all
arm-none-eabi-size --format=berkeley "rtthread.elf"
text data bss dec hex filename
1309004 48 60816 1369868 14e70c rtthread.elf
Used Size(B) Used Size(KB)
Flash: 1309052 B 1278.37 KB
RAM: 60864 B 59.44 KB
22:08:25 Build Finished. 0 errors, 0 warnings. (took 1s.376ms)
三、测试
固件烧入完成后,reset Psoc6-evaluationkit-062S2。
RW007也起来了,接下来手动加入WiFi。
网络连上后,onenet注册起来。
msh />onenet_mqtt_init
[D/onenet.mqtt] Enter mqtt_connect_callback!
[D/mqtt] ipv4 address port: 6002
[D/mqtt] HOST = '183.230.40.39'
[I/onenet.mqtt] RT-Thread OneNET package(V1.0.0) initialize success.
msh />[I/mqtt] MQTT server connect success.
[D/onenet.mqtt] Enter mqtt_online_callback!
刚好OneNET 软件包里有个上传本地数据的demo,那就跑起来。
msh />onenet_upload_cycle
[D/onenet.sample] buffer : {"temperature":52}
msh />[D/onenet.sample] buffer : {"temperature":56}
[D/onenet.sample] buffer : {"temperature":56}
[D/onenet.sample] buffer : {"temperature":19}
[D/onenet.sample] buffer : {"temperature":11}
[D/onenet.sample] buffer : {"temperature":51}
[D/onenet.sample] buffer : {"temperature":43}
[D/onenet.sample] buffer : {"temperature":5}
[D/onenet.sample] buffer : {"temperature":8}
[D/onenet.sample] buffer : {"temperature":93}
[D/onenet.sample] buffer : {"temperature":30}
此时OneNET的数据流如下:
回到Psoc6-evaluationkit-062S2开发板,看看系统状态,1M的SRAM就是爽,随便用。
msh />free
total : 970000
used : 31232
maximum : 34240
available: 938768
ps看看进程。