[uCOS/RTOS]

【RTOS】RT-Thread应用创新设计大赛------麻雀一号IoTnode

[复制链接]
2350|13
手机看帖
扫描二维码
随时随地手机跟帖
ly87802541|  楼主 | 2020-5-18 18:39 | 显示全部楼层 |阅读模式
本帖最后由 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开发包都已经打包好,随时查看,这里对有关软硬件资源类的介绍就不再赘言了。开箱就到此结束了,附美图两张如下。

图一
微信图片_20200518182400.jpg


图二
微信图片_20200518182317.jpg


RTThread麻雀一号IoTnode2env操作,boot烧录和OTA升级

继续学习,看过BK7252芯片数据表,查到P20P23这几个JTAG端口PIN也是支持复用功能的,那么all.bin下载后,还是可以作为GPIO来驱动继电器,这就放心了。

首先,按照麻雀一号资料包里的教程,把资料包解压后,bsp工程是用官方提供的env工具软件来编译的。照做无误,编译出rtthread.bin。过程见下面附图。
图一
cac3966a44edf770c8d5465a817a124.png
图二
34be6dfe67df00f6705a8c96a50da28.png
图三
8fadb3079babed8ca521d444a722d88.png

然后就是烧录镜像文件,这里用的是官方提供的高大上无线烧录器,一个字形容那就是十分的赞。
第一步,按照教程中指示的步骤生成all_cam_4M_UART1.20190828.bin,如下图所示。
d7115e978818a619af15f79d23cfe03.png

第二步,连接好无线烧录器和麻雀一号开发板,并用USB线连接开发板和PC,查看一下串口号,我是COM12。如果之前没有安装CH340驱动的电脑,需要安装这个驱动先。
上电后,PCWiFi搜索到BK_Wireless_Programer_0802这个热点,这就是无线烧录器提供的WiFi热点。然后在浏览器中登录站点192.168.169.1这个无线烧录器的默认IP,界面如下所示。
47a71d633eae21a8c90949db1f48609.png
067b4758499771db221ed43735fa535.png


第三步,选择第一步生成的all_cam_4M_UART1.20190828.bin,然后点击“开始上传固件并擦除全部Flash”这个按钮,进行烧录all.bin,如下图所示。
ed0c3659d6eacd175499955b14ba79f.png

完成后,麻雀一号自动设备重启,如下图所示。
dad91d1cecc81fb9b9758826700c4d6.png

这时候,我们可以用putty打开串口,并且按下reset按钮重启开发板,来看看烧录后的开发板运行状况,当然也可以用其他的串口工具软件如xshellsecureCRT等等的,如下图所示。
07dd5560ef041934560c57e5b1fcc35.png
1496368b0c8f9e34a0114ef8da8a715.png

msh提示符下,可以按下tab键,会显示出所有命令。比如test_lcd命令,输入命令回车后,开发板的显示屏会依次显示各种纯色,最后显示“hellortthread!”画面。
0ae785e770938cfc83d27bddaa3864d.jpg

同时还可以测试一下WiFi命令,在msh中输入命令wifi w0 join 你的wifi名字 你的wifi密码,就可以连上你自己家里的WiFi路由器,然后输入命令mjpeg_test,回车后可以用摄像头照相,并且在端口5000上启动了一个tcp服务,对外提供流媒体服务。

此时可以用PC也连上路由器,Chrome浏览器输入地址192.168.0.238:5000,回车可以看到摄像头拍摄的视频,这里我拍的是我的笔记本电脑小黑和麻雀一号的无线烧录器。如下图所示。
5f075ec7b901293826ad04929386dff.png

38098334e10976a4132fab10fdb36e6.png

最后是OTA升级操作,因为远程升级必须使用官方提供的OTA打包工具,生成后缀名为.rbl的固件,这里按照教程所说的步骤,打开OTA固件打包器软件。

第一步,修改好自己的路径,点击“开始打包”按钮,完成打包固件。如下图所示。
f6d6c49380f3711f36e1cef8936eec9.png

第二步,在官方提供的webserver软件中,选择你自己打包好的固件rtthread.rbl目录,和你自己PCIP地址,点击“启动”按钮,启动这个HTTP服务器。如下图所示。
d86f89141a5803c224c75b407a80aea.png

第三步,在msh提示符下,输入命令wifi w0 join 你的wifi名字 你的wifi密码,此时麻雀一号开发板应该和PC在同一个路由器下,处于同一个WiFi网络中。可以试试ping命令,看看是否互通,不通的话试试关掉防火墙。Ping通后,再输入命令http_ota http://192.168.0.236/rtthread.rbl,开始OTA升级,从PC下载固件并刷新Flash。如下图所示。
60564f878331901f84aa03d47bc0b03.png

3d629a2ff11e579d0dff2cd5fe5af02.png

到此,麻雀一号的基本操作都已经结束。接下来是要熟悉SDK的工程结构,阅读相关的API文档,尤其是我的GPIO口控制继电器的实现。

总结一下,RTThreadOS的开发工具env是很方便的,编译流程和Linux风格很类似。


(3)UCloud接入

终于到了接入云端服务平台的时候,这次活动的主办方之一UCloud优刻得也是天朝大国著名的云服务商之一,为了本次活动提供自家云服务和vps主机。另外还给通过申请并注册的用户800RMB,方便使用各类云服务,可谓是投入不惜资本。

关于接入UCloudRTThread已经有相关的软件包,参见木兰其实就是码云Gitee链接,https://toscode.gitee.com/RT-Thread-Mirror/ucloud-iot-rtthread-package。记住是码云而不是马云鸭哈哈!

我们用官方env工具打开menuconfig来设置这个ucloud-iot-rtthread-package软件包,如下图使能它。
00eb5c1c464bc7d5a9fd5652b793857.png

回车进入设置页面,看到四个设置条目,这里是接入UCloud最关键的四个参数,可以先记在纸上,之后代码中得用它们。如下图所示。
9181187a96df85039ffbacf0541ef90.png
productSNproductSecretdeviceSNdeviceSecret这四个参数从哪里获取呢?当然是从UCloud云平台得到。

首先,注册UCloud,然后完成实名认证,最后登录。这次参加活动的童鞋们自然是都注册过了,所以不是问题。
854bd0bbb9e9196e4c35173b4724b07.png

继续看图说话,点击上图所示的UIoT Core物联网通信云平台,就可以创建产品和设备了,并且得到上面所说的那四个参数。如下图所示。
3fa4f9692f4f19d84a5436738484e1a.png

170a5583203624dfcbb22f028784c4b.png

获取了四个参数后,再把它们配置到对应的位置,千万不要输入错误,最好是复制粘贴**!设置完成如下图所示。

0486828463dbb18e967d8013eefcfb0.png

然后,设置需要的各种功能,如下图所示。
cbf523859e839305e8e1b84f90399a9.png

功能选好之后,保存设置退出menuconfig。如下图所示。
d0f0a96781eb915f368ee362ffda16d.png

这里保存后,就可以再次用scons工具来编译固件。如果编译没有报错,正确生成rtthread.bin,然后用OTA打包工具软件打包为rtthread.rbl,最后用MyWebServer软件再次进行OTA固件升级。这时候固件已经可以把麻雀一号连上UCloudIoT core物联网通信云平台,并且通过MQTT测试例程发送十条消息到云平台,在云平台上还可以查看相关日志记录,方便调试MQTT消息数据。

当然,以上都是指正常编译的结果,可是因为麻雀一号bsp还没有完全做好对uiot SDKKconfig适配,这里scons编译时各种报错了,故而以上这些只是我的想象。为了继续完成项目和产品开发,必须换个思路继续往下进行,参见第(4)篇吧!

(4)microPythonMQTT连接UCloud

继续接入UCloud云平台的开发,因为上一篇中我使用了RTThread提供的麻雀一号SDK时,bsp还没有完全适配好所有的软件包,所以打算换个思路试试曲线救国。

查阅过官方社区的相关文档资料https://www.rt-thread.org/document/site/submodules/micropython/docs/micropython_for_sparrow_one_board/#_2,发现RTThread对麻雀一号已经提供了比较完善的microPython支持。其实microPython也可以做到MQTT链接云平台,这里使用的是umqtt模块。

按照文档所示,先从https://www.rt-thread.org/qa/icview-12305-1-1.html"宋体">下载microPython固件和搜索,安装vscode插件。
67518779dc55c347ea4806733e8a991.png
Vscode安装好RTThreadmicroPython插件后,可以看到已经包含了许多的例程,而且麻雀一号板上的硬件资源也很丰富,基本都可以在microPython中以硬件库machine方式直接使用。真是太良心,哈哈!如下图所示。

1e3386e5c4924b0a70bd7c65e638891.png

关于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环境下。如下图所示。
3fe9321fbda9a3c9c2cdf4cac6b7f5f.png

microPython是作为RTThreadOS的一个任务运行的,而且RTThreadOS平台上还支持lua和jerryscript。感兴趣的童鞋们请自己研究。

到此我们已经准备好了microPython的编程环境,可以开始进行MQTT连接UCloud物联网云平台的程序开发。

这里我们可以先按照教程中建立demo工程的方法,体验一下麻雀一号LCD显示和音乐播放的例程。播放网易云音乐时,记得把WiFi名字和密码修改为你自己的。
7f3d6e8e5126058f7a896022987205f.png

之后,就可以在demo工程的基础上,写自己的APP。




(5)再次回归麻雀一号SDK开发

号外号外:巨坑巨坑!麻雀一号的microPython固件其实是巨坑!!!哈哈!

经过尝试后,发现这个固件源代码中,microPython的umqtt模块竟然被删除了!具体详情,参见GitHub上RTThread packages项目中microPython源码树如下图。真是叔可忍婶不可忍啊!于是连接UCloud成了梦幻泡影,咱们还得回到麻雀一号SDK的老路子上,继续苦逼的探索之旅。
289c0a719f9626f01a3b00712db1c85.png
我猜官方是为了避免重复,毕竟是实时系统嘛,同样功能的代码一份就够了,而SDK中已经移植了eclipse社区的MQTT知名客户端pahomqtt,当然是C语言版本。但是对于咱们想利用microPython的umqtt模块,快速简单连接云平台,就是个打击了哈哈。

e65e24c6533fe2007f422ef714c4ff4.png
其实上图的源码中,machine模块倒是基本功能都有了,我需要用到的模块如GPIO,iic,spi都没问题。真是可惜了,就差一个模块咱们任务就可以简单搞定它。

这里我没有继续去尝试,例如把umqtt模块的源码文件自己找到,并添加到源码树下,然后在SDK的env环境里用menuconfig工具中打开microPython包的相关设置选项,再次编译出这个固件并且重新烧录,大概就可以在microPython的交互解释器中直接导入umqtt模块,编写MQTT客户端连接云端服务的程序了。因为这也同样需要修改kconfig文件,何必多此一举呢。

既然如此也没啥可说的了,回到正途先,只能用SDK和C语言写APP代码,去连接UCloud云平台,实现我的申请方案------LED灯具和插座的控制。

方案流程大致分三步走,第一步当然要板子连接上WiFi网络,才能继续进行和云平台的对接。

第二步,板子MQTT客户端和云平台MQTT代理进行交互,实现消息的订阅和发布。

第三步,云平台进行发布操作消息,如LED和插座的开关操作,板子收到消息,并执行云平台发布的操作,控制LED灯的亮灭等等。

其他想法暂时放下,先完成主要功能,让我们冲鸭!

麻雀一号IoTnode.pdf

480.65 KB

使用特权

评论回复

相关帖子

aozima| | 2020-5-18 19:17 | 显示全部楼层
围观楼主

使用特权

评论回复
21ic小喇叭| | 2020-5-22 14:35 | 显示全部楼层
感谢分享,如果使用过程中遇到问题,您可以电话联系板子厂家的客服,或者我们帮您询问一下厂家

小喇叭提醒您:

现在起到6月底,在21ic提交作品(记得把方案文档,作为附件上传),每个人都可以兑换3次礼物。

最晚7月5号以前提交作品哦

使用特权

评论回复
ly87802541|  楼主 | 2020-6-2 15:01 | 显示全部楼层
21ic小喇叭 发表于 2020-5-22 14:35
感谢分享,如果使用过程中遇到问题,您可以电话联系板子厂家的客服,或者我们帮您询问一下厂家

小喇叭提醒 ...

收到!

使用特权

评论回复
21ic小喇叭| | 2020-6-5 11:27 | 显示全部楼层
大大,我看您写的非常专业,您如果完成了作品,千万别忘记按比赛要求,做成文档,上传到论坛

文档模板在咱们参赛群里有,如果没找到,联系大掌柜单独发给您

提交作品以后,大掌柜给您寄礼品

使用特权

评论回复
ly87802541|  楼主 | 2020-6-7 21:03 | 显示全部楼层
21ic小喇叭 发表于 2020-6-5 11:27
大大,我看您写的非常专业,您如果完成了作品,千万别忘记按比赛要求,做成文档,上传到论坛

文档模板在咱 ...

麻鸭,鸭梨山大鸭哈哈

使用特权

评论回复
wandersky| | 2020-6-10 15:33 | 显示全部楼层
这个小麻省1号功能这么强大。

使用特权

评论回复
liushijia| | 2020-6-12 16:47 | 显示全部楼层
围观楼主,功能强大

使用特权

评论回复
guojunhope| | 2020-6-12 17:40 | 显示全部楼层
支持国产原创,牛!

使用特权

评论回复
ly87802541|  楼主 | 2020-7-5 16:34 | 显示全部楼层
坑爹的microPython固件啊,又要开始回去搞SDK了!

使用特权

评论回复
ly87802541|  楼主 | 2020-7-8 22:07 | 显示全部楼层
搞定了,开心!

使用特权

评论回复
pangkitty| | 2020-7-9 10:11 | 显示全部楼层
不容易啊~满心欢喜。哈哈哈

使用特权

评论回复
ly87802541|  楼主 | 2020-7-9 15:21 | 显示全部楼层
pangkitty 发表于 2020-7-9 10:11
不容易啊~满心欢喜。哈哈哈

总算逃过了追杀,连环夺命call

使用特权

评论回复
blooy41760| | 2020-7-9 16:53 | 显示全部楼层
ly87802541 发表于 2020-7-9 15:21
总算逃过了追杀,连环夺命call

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

336

帖子

5

粉丝