发新帖我要提问
12
返回列表
打印
[创新制造展示]

【21ic第三届设计大赛】+冗余执行系统(STM32+阿里云)

[复制链接]
楼主: 奋斗小范
手机看帖
扫描二维码
随时随地手机跟帖
21
奋斗小范|  楼主 | 2019-6-16 21:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
最近忙其他事,懈怠了几天。说一下方案上的改动,及目前进度


改动:
主控制器未动。
从控制器在原来串口显示及控制基础上,
增加网络显示及控制,即将当前主控制器状态、AD值、LED状态上传至云端,
可以在APP显示,并能通过APP重启。
目前APP界面:(简单做了一下,有那么一点点丑



进度:
对接阿里云以及APP功能基本实现,
细节待完善,如JSON解析器及MQTT相关,
近几天完善整理后与大家分享其中的过程。

使用特权

评论回复
22
奋斗小范|  楼主 | 2019-6-17 21:08 | 只看该作者
本帖最后由 奋斗小范 于 2019-6-17 21:09 编辑

此次对接尝试了三种方案均实验通过:
①直接支持阿里云的WiFi模组。
②MQTT协议WiFi模组。
③TCP协议WiFi模组。
这三种①-③,由易到难,经试验均已实现。
本次以最简单的第一种方案为例,进行对接
(有需要了解用的哪家的模组,请留联系方式,或者直接百度,避免广告嫌疑······)


最简单的这种直连阿里云模组,大概需要以下几个步骤:
使用串口与WiFi模组进行通讯,使用AT指令。
1、设置阿里云三元组(前面有提到过)。
使用AT指令:AT+ILOPSET=<product_key>,<product_secret>,<device_secret>,<device_name>
2、设置阿里云服务器站点。
使用AT指令:AT+ILOPDOMAIN=<mode>
3、配网,根据自己的需要选取合适方式进行配网。
本次使用awss路由配网模式:AT+ILOPAWSSTART
4、启动阿里云服务。
使用AT指令:AT+ILOPSTART
5、上传数据:
本次使用JSON协议进行数据传输:AT+ILOPSNDJSON=<method>,[<event_id>,]<data_len>
以上命令在成功执行后,均会返回OK。

至此,你会发现在之前建好的项目中测试设备上线,并有接收到数据。

再多说一句,直连云的WiFi模组就相当于傻瓜式操作,用到的时候一学就会,在此就不再详细说明。
如果有需要可以相互学习~~

使用特权

评论回复
23
奋斗小范|  楼主 | 2019-6-19 22:51 | 只看该作者
本帖最后由 奋斗小范 于 2019-6-19 23:40 编辑

JSON解析器增加完成。

在增加过程中,没注意内存的分配,导致内存溢出,上电就进HardFault_Handler,查了好一会才找到原因确实难为这20k的RAM了······
直接从JSON官网下载解析器源代码。
http://www.json.org/
将其C代码直接加入工程,从中调用相关函数。

接收WiFi模组发来的数据,从中截取JSON格式数据,并使用JSON解析器解析:
 if(USART_RX_STA&0x8000)
                {
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                        USART_printf(USART1,"RX_BUF:%s\r\n",USART_RX_BUF);
                        USART_printf(USART1,"len=%d\r\n",len);
                        j=len;
                        
                        for(i=0;i<j;i++)
                        {
                                if(USART_RX_BUF[i]=='{')
                                {
//                                        USART_printf(USART1,"{=%d\r\n",i);
                                        m=i;
                                }
                                if(USART_RX_BUF[i]=='}')
                                {
//                                        USART_printf(USART1,"}=%d\r\n",i);
                                        n=i;
                                }
                        }
                        if(n>m)
                        {
                                for(i=m;i<=n;i++)
                                {
                                        Message[i-m]=USART_RX_BUF[i];
                                }
                                Message[i+1]='\0';
                                USART_printf(USART1,"Message=%s\r\n",Message);
                        }
                        
                        root = cJSON_Parse(Message);
//                        USART_printf(USART1,"cJSON_Parse\r\n");
                        if(root != NULL)
                        {
                                LightSwitch = cJSON_GetObjectItem(root,"LightSwitch")->valueint;
                                USART_printf(USART1,"LightSwitch=%d\r\n",LightSwitch);
                                if(LightSwitch)
                                {
                                        USART_printf(USART1,"主控电源打开\r\n");
                                }
                                else
                                {
                                        USART_printf(USART1,"主控电源关闭\r\n");
                                }
                                cJSON_Delete(root);
                        }
                        else
                        {
//                                printf("Error before: [%s]\n\r",cJSON_GetErrorPtr());
                                USART_printf(USART1,"Error before: [%s]\n\r",cJSON_GetErrorPtr());
                        }
                        USART_RX_STA=0;
                }


目前已实现的功能:
1、从控制器将主控制器状态、AD值以及LED状态上传至阿里云,并在APP显示。
2、使用APP可以控制主从控制器之间相互切换,其他功能待考虑中。
到目前为止,对接阿里云基本完成,待整理细节后,会对帖子进行重新编辑(现在帖子编辑的有点乱),以及最后的视频展示和总结。

使用特权

评论回复
24
xinlei222| | 2019-6-20 12:06 | 只看该作者
奋斗小范 发表于 2019-6-8 11:52
②从控制器:工程图片:
初始化:
主控制器监控:采用定时对比LED工作状态(灭、3Hz闪烁、常亮)与AD值,若 ...

学习一下

使用特权

评论回复
25
xinlei222| | 2019-6-20 12:07 | 只看该作者
学习一下

使用特权

评论回复
26
奋斗小范|  楼主 | 2019-6-20 13:13 | 只看该作者

一起学习!加油!

使用特权

评论回复
27
zhangmangui| | 2019-6-22 20:12 | 只看该作者
很好   学习了   这个水平高

使用特权

评论回复
28
奋斗小范|  楼主 | 2019-6-26 08:53 | 只看该作者
正式开始整理相关内容及代码。

使用特权

评论回复
29
奋斗小范|  楼主 | 2019-6-29 20:52 | 只看该作者
本帖最后由 奋斗小范 于 2019-7-2 19:12 编辑

4)制作心得和总结。
   本次选取的题目冗余执行系统,在这接近一个月的制作工程中,从最开始的完成基础功能,到最后对接阿里云,并可通过APP进行显示及控制,这其中有以前的经验,也有现学现卖的东西,总之这过程让我受益匪浅,对新事物的兴趣又重新被激起。并且本次制作的东西,后期可以经过简单处理转化为实际应用的产品,后期会考虑尝试。



5)视频展示。
①中期作品视频展示。
主控制器视频:

从控制器视频:



②最终作品视频展示。
基础项目1:

基础项目2:

加分项目1+2:

加分项目3:

阿里云部分:




   本次设计所有基础项目及加分项目均已实现,后面增加的阿里云部分,是为了实现系统的远端监控及控制,这是一个冗余系统
必须具备的功能。













使用特权

评论回复
30
奋斗小范|  楼主 | 2019-6-30 18:14 | 只看该作者
本帖最后由 奋斗小范 于 2019-7-1 11:31 编辑

修整一段时间,可能后期会继续更新,考虑如何将其转化为一种产品。

使用特权

评论回复
31
奋斗小范|  楼主 | 2019-7-2 19:24 | 只看该作者
好久没动手了,画了一半才发现有些丑,布局布线也有问题,第一版先这样,最主要的是再不发优惠券要过期了


使用特权

评论回复
32
奋斗小范|  楼主 | 2019-7-13 12:45 | 只看该作者

使用特权

评论回复
33
liushiming82| | 2019-9-27 09:33 | 只看该作者
楼主,能否把阿云里部分详细说一下,谢谢

使用特权

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

本版积分规则