本帖最后由 ly87802541 于 2020-7-8 22:07 编辑
RTThread麻雀一号IoTnode(1)开箱
喜讯喜讯,本周一0518收到RTThread社区的麻雀一号开发板,还有配套无线WiFi烧录器。这个无线的编程器可真是破天荒第一遭,高贵冷艳接地气狂拽酷炫吊炸天,不俗套的说简直亮瞎了我的钛合金狗眼哈哈。
这次由RTThread社区,21IC专业电子论坛联合国产五大IC厂家,还有UCloud云服务商举办的应用创新设计大赛,主打IoT方向,面向国产mcu平台,应用RTOS为RTThreadOS这一国产RTOS中的战斗机。个人也用过几个RTOS,国外国内的都有,RTThreadOS还有培训经验,当时平台是imxrt1052和w601WiFi模块,云平台是中移物联网onenet。不夸张的说,RTThreadOS就是其中的No1,没有之一。凭借设计良好的大量IoT功能组件,庞大的各类软件包,在物联网领域绝对是荣耀级别的王者!
我个人的项目是IoTnode,一个物联网架构的智能家居应用产品,终端设备为智能插座和照明灯具。终端功能上不复杂,倒是云平台上开发比较麻烦点,要加油了,因为时间也不多了。
拿到板子后,发现因为麻雀一号主控上海博通BK7252是一颗WiFi/BLE二合一SOC,而且开发板上已经集成了大量音视频等多媒体外设,所以GPIO口是一个都没了。唯一可用的是一个uart和一个i2c共两个串行通信接口,我手里那个8继电器模块竟然是GPIO口控制,所以相当不幸了。后面估计要再购买一个i2c接口的继电器模块来扩展。
当然,最好是烧录器接口那几个PIN可以用来作为GPIO口使用,目前还没看完IC资料,不知道能否重新设置GPIO口功能。毕竟all.bin烧录完后,就有了OTA功能,这个烧录口就可以闲置了。如果不能利用来作为GPIO,实在太浪费。
本开发板相关的文件和资料,还有源码SDK开发包都已经打包好,随时查看,这里对有关软硬件资源类的介绍就不再赘言了。开箱就到此结束了,附美图两张如下。
图一
图二
RTThread麻雀一号IoTnode(2)env操作,boot烧录和OTA升级
继续学习,看过BK7252芯片数据表,查到P20到P23这几个JTAG端口PIN也是支持复用功能的,那么all.bin下载后,还是可以作为GPIO来驱动继电器,这就放心了。
首先,按照麻雀一号资料包里的教程,把资料包解压后,bsp工程是用官方提供的env工具软件来编译的。照做无误,编译出rtthread.bin。过程见下面附图。 图一 图二 图三
然后就是烧录镜像文件,这里用的是官方提供的高大上无线烧录器,一个字形容那就是十分的赞。 第一步,按照教程中指示的步骤生成all_cam_4M_UART1.20190828.bin,如下图所示。
第二步,连接好无线烧录器和麻雀一号开发板,并用USB线连接开发板和PC,查看一下串口号,我是COM12。如果之前没有安装CH340驱动的电脑,需要安装这个驱动先。 上电后,PC上WiFi搜索到BK_Wireless_Programer_0802这个热点,这就是无线烧录器提供的WiFi热点。然后在浏览器中登录站点192.168.169.1这个无线烧录器的默认IP,界面如下所示。
第三步,选择第一步生成的all_cam_4M_UART1.20190828.bin,然后点击“开始上传固件并擦除全部Flash”这个按钮,进行烧录all.bin,如下图所示。
完成后,麻雀一号自动设备重启,如下图所示。
这时候,我们可以用putty打开串口,并且按下reset按钮重启开发板,来看看烧录后的开发板运行状况,当然也可以用其他的串口工具软件如xshell和secureCRT等等的,如下图所示。
在msh提示符下,可以按下tab键,会显示出所有命令。比如test_lcd命令,输入命令回车后,开发板的显示屏会依次显示各种纯色,最后显示“hello,rtthread!”画面。
同时还可以测试一下WiFi命令,在msh中输入命令wifi w0 join 你的wifi名字 你的wifi密码,就可以连上你自己家里的WiFi路由器,然后输入命令mjpeg_test,回车后可以用摄像头照相,并且在端口5000上启动了一个tcp服务,对外提供流媒体服务。
此时可以用PC也连上路由器,Chrome浏览器输入地址192.168.0.238:5000,回车可以看到摄像头拍摄的视频,这里我拍的是我的笔记本电脑小黑和麻雀一号的无线烧录器。如下图所示。
最后是OTA升级操作,因为远程升级必须使用官方提供的OTA打包工具,生成后缀名为.rbl的固件,这里按照教程所说的步骤,打开OTA固件打包器软件。
第一步,修改好自己的路径,点击“开始打包”按钮,完成打包固件。如下图所示。
第二步,在官方提供的webserver软件中,选择你自己打包好的固件rtthread.rbl目录,和你自己PC的IP地址,点击“启动”按钮,启动这个HTTP服务器。如下图所示。
第三步,在msh提示符下,输入命令wifi w0 join 你的wifi名字 你的wifi密码,此时麻雀一号开发板应该和PC在同一个路由器下,处于同一个WiFi网络中。可以试试ping命令,看看是否互通,不通的话试试关掉防火墙。Ping通后,再输入命令http_ota http://192.168.0.236/rtthread.rbl,开始OTA升级,从PC下载固件并刷新Flash。如下图所示。
到此,麻雀一号的基本操作都已经结束。接下来是要熟悉SDK的工程结构,阅读相关的API文档,尤其是我的GPIO口控制继电器的实现。
总结一下,RTThreadOS的开发工具env是很方便的,编译流程和Linux风格很类似。
(3)UCloud接入
终于到了接入云端服务平台的时候,这次活动的主办方之一UCloud优刻得也是天朝大国著名的云服务商之一,为了本次活动提供自家云服务和vps主机。另外还给通过申请并注册的用户800元RMB,方便使用各类云服务,可谓是投入不惜资本。
关于接入UCloud,RTThread已经有相关的软件包,参见木兰其实就是码云Gitee链接,https://toscode.gitee.com/RT-Thread-Mirror/ucloud-iot-rtthread-package。记住是码云而不是马云鸭哈哈!
我们用官方env工具打开menuconfig来设置这个ucloud-iot-rtthread-package软件包,如下图使能它。
回车进入设置页面,看到四个设置条目,这里是接入UCloud最关键的四个参数,可以先记在纸上,之后代码中得用它们。如下图所示。 productSN、productSecret、deviceSN、deviceSecret这四个参数从哪里获取呢?当然是从UCloud云平台得到。
首先,注册UCloud,然后完成实名认证,最后登录。这次参加活动的童鞋们自然是都注册过了,所以不是问题。
继续看图说话,点击上图所示的UIoT Core物联网通信云平台,就可以创建产品和设备了,并且得到上面所说的那四个参数。如下图所示。
获取了四个参数后,再把它们配置到对应的位置,千万不要输入错误,最好是复制粘贴**!设置完成如下图所示。
然后,设置需要的各种功能,如下图所示。
功能选好之后,保存设置退出menuconfig。如下图所示。
这里保存后,就可以再次用scons工具来编译固件。如果编译没有报错,正确生成rtthread.bin,然后用OTA打包工具软件打包为rtthread.rbl,最后用MyWebServer软件再次进行OTA固件升级。这时候固件已经可以把麻雀一号连上UCloud的IoT core物联网通信云平台,并且通过MQTT测试例程发送十条消息到云平台,在云平台上还可以查看相关日志记录,方便调试MQTT消息数据。
当然,以上都是指正常编译的结果,可是因为麻雀一号bsp还没有完全做好对uiot SDK的Kconfig适配,这里scons编译时各种报错了,故而以上这些只是我的想象。为了继续完成项目和产品开发,必须换个思路继续往下进行,参见第(4)篇吧!
(4)microPython的MQTT连接UCloud
继续接入UCloud云平台的开发,因为上一篇中我使用了RTThread提供的麻雀一号SDK时,bsp还没有完全适配好所有的软件包,所以打算换个思路试试曲线救国。
按照文档所示,先从https://www.rt-thread.org/qa/icview-12305-1-1.html"宋体">下载microPython固件和搜索,安装vscode插件。
Vscode安装好RTThread的microPython插件后,可以看到已经包含了许多的例程,而且麻雀一号板上的硬件资源也很丰富,基本都可以在microPython中以硬件库machine方式直接使用。真是太良心,哈哈!如下图所示。
关于RTThread官方提供的vscode集成microPython插件,参见教程https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython。官方已经提供了四块板子的固件,还有一个QQ交流群703840633,感兴趣的童鞋们可以加入此群。
接下来,把下载的固件sparrow_one_board_all_2019_12_10.bin,用无线烧录器烧录到麻雀一号开发板上。然后用putty连上麻雀一号开发板,这时候已经是在microPython环境下。如下图所示。
microPython是作为RTThreadOS的一个任务运行的,而且RTThreadOS平台上还支持lua和jerryscript。感兴趣的童鞋们请自己研究。
到此我们已经准备好了microPython的编程环境,可以开始进行MQTT连接UCloud物联网云平台的程序开发。
这里我们可以先按照教程中建立demo工程的方法,体验一下麻雀一号LCD显示和音乐播放的例程。播放网易云音乐时,记得把WiFi名字和密码修改为你自己的。
之后,就可以在demo工程的基础上,写自己的APP。
(5)再次回归麻雀一号SDK开发
号外号外:巨坑巨坑!麻雀一号的microPython固件其实是巨坑!!!哈哈!
经过尝试后,发现这个固件源代码中,microPython的umqtt模块竟然被删除了!具体详情,参见GitHub上RTThread packages项目中microPython源码树如下图。真是叔可忍婶不可忍啊!于是连接UCloud成了梦幻泡影,咱们还得回到麻雀一号SDK的老路子上,继续苦逼的探索之旅。 我猜官方是为了避免重复,毕竟是实时系统嘛,同样功能的代码一份就够了,而SDK中已经移植了eclipse社区的MQTT知名客户端pahomqtt,当然是C语言版本。但是对于咱们想利用microPython的umqtt模块,快速简单连接云平台,就是个打击了哈哈。
其实上图的源码中,machine模块倒是基本功能都有了,我需要用到的模块如GPIO,iic,spi都没问题。真是可惜了,就差一个模块咱们任务就可以简单搞定它。
这里我没有继续去尝试,例如把umqtt模块的源码文件自己找到,并添加到源码树下,然后在SDK的env环境里用menuconfig工具中打开microPython包的相关设置选项,再次编译出这个固件并且重新烧录,大概就可以在microPython的交互解释器中直接导入umqtt模块,编写MQTT客户端连接云端服务的程序了。因为这也同样需要修改kconfig文件,何必多此一举呢。
既然如此也没啥可说的了,回到正途先,只能用SDK和C语言写APP代码,去连接UCloud云平台,实现我的申请方案------LED灯具和插座的控制。
方案流程大致分三步走,第一步当然要板子连接上WiFi网络,才能继续进行和云平台的对接。
第二步,板子MQTT客户端和云平台MQTT代理进行交互,实现消息的订阅和发布。
第三步,云平台进行发布操作消息,如LED和插座的开关操作,板子收到消息,并执行云平台发布的操作,控制LED灯的亮灭等等。
其他想法暂时放下,先完成主要功能,让我们冲鸭!
|