物联网的任意门——WRTnode2R 评测
扫描二维码
随时随地手机看文章
前言
现在正闹得沸沸扬扬的物联网造就了一大批相关的硬件产品,WRTnode 就是其中的一员。WRTnode 是MTK MT7688AN 核心 + STM32F103 MCU,运行 OpenWrt + RT-Thread 双系统的为Wi-Fi I.o.T设计的开源硬件系列。WRTnode2R 则是在第一代基础上做了改良而升级的二代产品。
话说刚看到 WRTnode2R 的时候,我觉得没什么了不起,不就是一个跑着 OpenWrt 系统的路由器嘛,市面上好多路由器都可以刷呢。再多了解了一下才发现没这么简单。作为商品化的路由器肯定要将利润最大化,控制成本,所以硬件都是最低要求,像 FLASH,RAM 什么的,比如 TP703n 4M FLASH 32M RAM,想要装点软件都不够,相比之下 WRTnode2R 的 32M FLASH 256M RAM 简直是土豪级别!再说硬件控制最有用的 GPIO,大部分路由器只有可怜的几个可引出的 GPIO,还需要找元件焊点引出,不稳定又不方便,还可能影响功能,而 WRTnode2R 提供近 50 个 GPIO 给你随便玩,随意做爱做的事!再有,即使路由器突破官方限制刷上了 OpenWrt 系统,OpenWrt 系统毕竟不是实时系统,硬件控制上有一定短板,然而罗未早已看穿,已为 WRTnode2R准备了 OpenWrt + RT-Thread 双系统,让 WRTnode2R 在享受 Linux 环境下的丰富软件的同时,又拥有实时控制的能力。
可以看出,对于物联网的“物”、“联”、“网”这三部分 WRTnode2R 都有能力胜任:
物——GPIO 及实时系统可以对终端器件进行控制及对传感器进行读取
联——WIFI 及网络功能可以让物和网联结起来,是门,是入口
网——即云端,本身的 Linux 系统可以作为服务器使用,提供云端功能
因此,WRTnode2R 在物联网的项目里可以自由担任各个角色,犹如机器猫的任意门,随意穿梭于物联网的各处。
开箱
出乎意料,WRTnode2R 竟然没有包装盒!而是很纯朴的麻布袋子的包装,非常有个性,很有“创客感”。不过我觉得这个是巴蜀一带的一个传统的特色吧,想起曾经去过成都入住的就是一个叫“布衣客栈”的地方。
打开后有泡沫软垫及泡泡膜袋子包装保护,取出后就是两样东西:核心板和底板。核心板长得像内存条一样,用的标准 miniPCI 接口,这也是很有特色的一个设计,我第一次见过。这样的设计使得在底板上的插拨很容易,又方便嵌入产品中使用。不像使用排针的插接方式,一来插拨困难,二来容易把针脚弄弯。
上电
开箱后迫不及待地上电看看效果,三个蓝灯好刺眼。后续咱来研究 LED 的开关控制,别被闪瞎眼。
参数
在继续研究之前,先了解一下板子的参数吧。这些数据自然是官方文档给的最准确了,摘录如下:
硬件
· CPU
o MTK MT7688AN mips24k
o 主频580M
· DDR2 256MB RAM; NOR FLASH 32MB ROM
· MCU
o STM32F103T8U6、5*12位AD、26*GPIO
o 10*PWM@36MHz、CAN、3个定时器
· 5个百兆网口,支持Wi-Fi 802.11n 150Mbps
· 支持PCI-e X1、USB 2.0 HOST、2*UART
· SPI master/slave
· SD-XC接口,可外接micro-SD卡
· 4*PWM + 10*PWM(由MT7688与STM32F103分别支持)
· I2S (192K/24bit)
· 46*GPIO(由MT7688与STM32F103分别支持)
· 尺寸 60*29mm
· 使用标准miniPCI接口封装,利于整合到产品中
软件
· 基于OpenWrt CC 15.05版本
o 默认网段改为192.168.8.1
o 添加wwan,端口为apcli0,并附加WRTnode系列无线管理工具:aps/vw/ia,以管理无线上联
o 添加MTK原厂驱动ralink-wifi 、ralink-ralink-mt76x8,并适配OpenWrt CC版本
o 增加WRTnode Package feeds
o 添加WRTnode2P设备(dts及相关配置),更新spi驱动
o 增加STM32 flash在线烧写stm32芯片,spi-bridge在线控制stm32芯片。
· MCU采用RT-Thread v2.1.0 beta版本
o 移植Maple代码,以兼容ArduinoAPI
o 提供通过OpenWrt在线烧写STM32固件的bootloader
核心板引脚定义
高清大图参考:http://wiki.wrtnode.cc/images/a/ab/2Rpinmap.jpg
[!--empirenews.page--]
底板针脚定义
高清大图参考:http://wiki.wrtnode.cc/images/1/15/2RSHLDPINMAP.jpg
网络及计算能力测评
参考官方 wiki:链接。
物联网之联——基础控制及联网测试
通过 WIFI 连接 WRTnode2R
搜索无线网络,找到 WRTnode2R 的 WIFI:
输入默认密码 12345678 就可以登录了:
登录 WRTnode2R web 控制台
上一步查看网关信息 192.168.8.1,可以在浏览器中访问它,进入 web 控制台:
通过 telnet 访问 WRTnode2R 控制台
同样,网关地址直接 telnet 可以进入系统:
通过串口访问 WRTnode2R 控制台
还需要了解串口的访问,救砖的时候用得着。
使用 usb 转 ttl 线,交叉连接 tx 和 rx,共地连接串口:
设置如下图,即可访问:
串口通信
在 OpenWRT 系统下,访问 ttyS0 即是对串口的访问:
设置 WRTnode2R 连接 WIFI
使用 aps 扫描无线网络,使用 setwifi 命令连接 wifi:
设置 WRTnode2R 的端口映射
这样就可以让电脑通过路由器来访问 WRTnode2R,而不需要连接到 WRTnode2R 的网络上来访问它了:
路由器上查看 WRTnode2R 的 IP
路由器的操作因人而异,这里是 TP-LINK 的控制台示例:
通过路由器远程连接 WRTnode2R
通过上述找到 WRTnode2R 在路由器上分配的 IP(可以设置为静态地址,从而不用每次再去路由上找地址了),使用 SSH 工具如 SecureCRT SSH 登录 WRTnode2R:
[!--empirenews.page--]
Telnet 控制台进行 LED 开关控制
是时候来操作 LED 了,关闭它,护眼啊:
Web 控制台进行LED 开关控制
另一种关闭方式,并且上一种方式只是临时的,重启会失效,这里的操作是永久的:
关完灯的效果
物联网之物——输入输出控制测试
RT-Thread 系统升级
更新的系统有更多的功能,用如下的命令来对 stm 固件进行更新,即 RT-Thread 系统的升级:
可以看看升级前后的功能区别,这是升级前的功能:
这是升级后的功能,多了 PWM 输出和模拟输入的功能:
GPIO 数字输出
使用 spi-bridge 工具操作,命令与 arduino 一样,是不是非常熟悉:
输出高电平效果:
输出低电平效果:
GPIO 数字输入
电路如下,接口分别接 GND 和 3.3V 进行测试:
数字输入的读取效果:
GPIO 模拟输入
测试电路如下,用电位器来分压做输入测试:
电位器从一端慢慢拧转到另一端时,循环读取模拟输入的结果如下(同时可以看到 Linux 系统与 RT-Thread 系统相结合的使用方法):
GPIO PWM 输出
如下语句三次输出 PWM 占空比为 0,50% 及 100%:
测试效果如下三个照片:
物联网之网——云端服务测试
软件安装
Opkg update:
文件系统工具安装:
[!--empirenews.page--]
vsftpd 服务安装:
FTP 测试
Vsftpd 的配置文件,启动停止命令,进程信息及监听端口:
Windows 下远程登录 FTP 的效果:
视频传输测试
将 USB 摄像头接到 USB 接口,执行如下命令后,可以用浏览器来查看摄像头的视频流,如下参数配置的视频播放过程很流畅,没有一点卡顿:
看看广角摄像头:
来一个纵深递归截图:
来点角度,差之毫厘谬以千里,友谊的小船说翻就翻了:
TF 卡访问测试
WRTnode2R 底板有一个 TF 卡槽,自然是极有用的,可以扩大存储空间,解决系统存储空间过小的问题。
找一个 TF 卡来测试一下:
TF 卡格式不对的时候,在系统中识别不出来:
需要将卡格式化为 ext3 格式,拿个读卡器接 USB 口可以识别出来:
识别出 sda 设备,用前面安装的磁盘工具将其格式化为 ext3 格式:
这时候可以来做一下 U 盘的 mount 实验:
再将 TF 卡插入卡槽,即可看到识别到 mmcblk0 的 TF 卡设备了:
可以用 mount 命令把 TF 卡设备挂载到系统中,也可以使用 web 控制台操作哦,更直观:
HTTP Web 测试
WRTnode2R 已有 uhttpd 服务安装好,它的 web 控制台 luci 就是运行于其中的,直接拿来运行我们自己的页面就可以啦。
在 windows 下写一个简单页面,通过 FTP 上传到 WRTnode2R 上:
测试的时候顺便测试 tf 卡了,做了一个软链接,把 tf 卡的目录链接到 www 目录下,这样有超大的空间随意使用:
将前面写好的 index.htm 放到 www 目录的子目录下(软链接的目录也同等对待),便可以在 windows 机器上远程访问“云”端的页面了:
HTTP Web 开关实验
只用 WRTnode2R 来显示个页面?太大材小用了!必须拿来点灯嘛!
步骤一:编辑一个 html 文件,放在 /www/lefonoff 目录下:
[!--empirenews.page--]
步骤二:就地取材,用 shell 脚本来当 cgi:
步骤三:访问页面,控制 LED:
HTTP Web PWM 调光实验
那么同样的,可以做 PWM 远程调光哦,很酷吧。
步骤一:编辑 html 文件放在 /www/ledpwm 目录下:
步骤二:写一个 cgi 脚本,这个脚本比 onoff 实验看起来简单多了是因为 html 文件中的调用方式不同:
步骤三:访问 web 页面:
HTTP Web 数据接口
云端的一个很有用的功能是接收和保存传感器数据。提供一个 web 接口,由远程的客户端访问接口,把数据存储在云端。现在我们就来做一个简单的实验。
步骤一:编辑 html 文件放在 /www/log_data 目录。显示数据用的 show_data.html,其实如果不需要在页面上显示数据这一步就可以略过了:
步骤二:编辑一个 CGI 脚本记录数据,这里简单的记录在一个文本文件中,复杂的可以操作数据库,同理从略:
若要 web 展示数据,这也有一个展示数据用的脚本示例:
步骤三:记录数据:访问记录数据的 CGI,使用 GET 方式传送数据。实际使用的时候传感器等通过 http 客户端来访问,这里测试就编辑地址栏的参数弄一些数据测试:
步骤四:展示数据:
总结
1. WRTnode2R 集成 OpenWrt 和 RT-Thread 双系统,既享受了 Linux 的丰富软件,又拥有实时系统的控制能力
2. 通过 spi-bridge 使两个系统无缝地配合
3. 使用 arduino 兼容的 API 来操作 GPIO,操作直观,入门快
4. 以上三个特征使得开发应用非常简单,缩短开发时间
5. 5个百兆网口,支持Wi-Fi 802.11n,5*12位AD、14路原生 PWM 及近50个 GPIO,加上双系统,使得WRTnode2R 在物联网应用上非常灵活
6. 使用标准miniPCI接口封装,利于整合到产品中
参考资料
1. WRTnode2R 官网:http://www.wrtnode.cc/html/hardware_2.html#wrtnode2r
2. WRTnode2R 官方 wiki:http://wiki.wrtnode.cc/index.php?title=WRTnode2%E7%B3%BB%E5%88%97
3. OpenWrt 官网:https://openwrt.org
本文系21ic原创,未经许可严禁转载