收藏官网首页
查看: 598|回复: 18

[经验] STM32F407+ESP8266连接机智云过程详解

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
发表于 2018-6-14 16:32:42 | 显示全部楼层 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 Seasonic 于 2018-7-3 15:42 编辑

要求:通过手机上的机智云通用APP,点亮开发板载LED0、LED1
摘要
  • 硬件组成:STM32F407ZGT6+esp8266(乐鑫)
  • 软件APP:机智云开发都者中心下载的通用APP Demo;Xcom串口调试助手;Keil V5;
  • 调试过程详解:
  • 注意事项:
  • 使用机智云后的几点建议:
一、硬件组成如下图所示

硬件全家福:开发板(STM32F407ZGT6)+ESP8266

硬件全家福:开发板(STM32F407ZGT6)+ESP8266
(硬件全家福:开发板(STM32F407ZGT6)+ESP8266)
该开发板IO口配置:
KEY1:                 PE4;
KEY2:                 PA0;

LED0:                 PF10;
LED1:                 PF9;


二、下载通用APP DEMO:
  • 下载页面:
    https://download.gizwits.com/zh-cn/p/98/99
  • 根据自己的手机系统,选择下载相应的APP,如下图所示:


从机智云下载中心下载通用APPl

从机智云下载中心下载通用APPl


3.安装、注册、登陆后如下图所示:

Demo APP

Demo APP



三、调试过程详解:
  • 创建数据点
  • 生成MCU工程
  • 下载MCU工程并根据开发板原理图修改工程,修改的地方如程序中红色加注释的部分
main.c 中加入红色标出的GPIO初始化代码
  1. static void MX_GPIO_Init(void)
  2. {

  3.   GPIO_InitTypeDef GPIO_InitStruct;

  4.   /* GPIO Ports Clock Enable */
  5.   __HAL_RCC_GPIOE_CLK_ENABLE();
  6.   __HAL_RCC_GPIOH_CLK_ENABLE();
  7.   __HAL_RCC_GPIOA_CLK_ENABLE();
  8. <font color="#ff0000">        __HAL_RCC_GPIOF_CLK_ENABLE();            //GPIOF CLK  Enable:Used to Ctrol LED</font>

  9.   /*Configure GPIO pins : KEY2_Pin KEY1_Pin */
  10.   GPIO_InitStruct.Pin = KEY2_Pin|KEY1_Pin;
  11.   GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  12.   GPIO_InitStruct.Pull = GPIO_PULLUP;
  13.   HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  14.         
  15.         /*Configure GPIO pin Output Level */
  16. <font color="#ff0000">  HAL_GPIO_WritePin(GPIOE, LED1_Pin|LED0_Pin, GPIO_PIN_SET);

  17.         /*Configure GPIO pins : LED1_Pin LED0_Pin */
  18.   GPIO_InitStruct.Pin = LED1_Pin|LED0_Pin;
  19.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  20.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  21.   HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);</font>

  22. }
复制代码
main.h头文件中增加以下内容
  1. /* USER CODE BEGIN Private defines */
  2. <font color="#ff0000">#define LED1_Pin GPIO_PIN_9
  3. #define LED1_GPIO_Port GPIOF
  4. #define LED0_Pin GPIO_PIN_10
  5. #define LED0_GPIO_Port GPIOF</font>
  6. /* USER CODE END Private defines */
复制代码

gizwits_product.c中需要用户添设备上电状态代码如下图所示
  1. void userInit(void)
  2. {
  3.     memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));
  4.    
  5.     /** Warning !!! DataPoint Variables Init , Must Within The Data Range **/
  6.    
  7.       currentDataPoint.valueValve = 0;
  8.       currentDataPoint.valueLED0 = 1;
  9.       currentDataPoint.valueLED1 = 1;
  10.       currentDataPoint.valueState = 1;
  11.       currentDataPoint.valueValue = 5;
  12. }
复制代码

gizwits_product.c中需要用户添加的代码如下图所示
  1. int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len)
  2. {
  3.   uint8_t i = 0;
  4.   dataPoint_t *dataPointPtr = (dataPoint_t *)gizdata;
  5.   moduleStatusInfo_t *wifiData = (moduleStatusInfo_t *)gizdata;
  6.   protocolTime_t *ptime = (protocolTime_t *)gizdata;
  7.   
  8. #if MODULE_TYPE
  9.   gprsInfo_t *gprsInfoData = (gprsInfo_t *)gizdata;
  10. #else
  11.   moduleInfo_t *ptModuleInfo = (moduleInfo_t *)gizdata;
  12. #endif

  13.   if((NULL == info) || (NULL == gizdata))
  14.   {
  15.     return -1;
  16.   }

  17.   for(i=0; i<info->num; i++)
  18.   {
  19.     switch(info->event[i])
  20.     {
  21.       case EVENT_Valve:
  22.         currentDataPoint.valueValve = dataPointPtr->valueValve;
  23.         GIZWITS_LOG("Evt: EVENT_Valve %d \n", currentDataPoint.valueValve);
  24.         if(0x01 == currentDataPoint.valueValve)
  25.         {
  26.           //user handle
  27.              <font color="#ff0000">HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);                //led1闪烁 ,没有阀,用灯替代      
  28.              HAL_Delay(500);
  29.              HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);                //led0闪烁  没有阀,用灯替代      
  30.              HAL_Delay(500);</font>
  31.         }
  32.         else
  33.         {
  34.           //user handle
  35.              <font color="#ff0000"> HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);                //熄灭led1        
  36.               HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET);                //熄灭led0        </font>
  37.         }
  38.         break;
  39.       case EVENT_LED0:
  40.         currentDataPoint.valueLED0 = dataPointPtr->valueLED0;
  41.         GIZWITS_LOG("Evt: EVENT_LED0 %d \n", currentDataPoint.valueLED0);
  42.         if(0x01 == currentDataPoint.valueLED0)
  43.         {
  44.           //user handle
  45.              <font color="#ff0000">HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);        //点亮led0      </font>  
  46.         }
  47.         else
  48.         {
  49.           //user handle   
  50.             <font color="#ff0000"> HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);            //熄灭led0</font>        
  51.                                        
  52.         }
  53.         break;
  54.       case EVENT_LED1:
  55.         currentDataPoint.valueLED1 = dataPointPtr->valueLED1;
  56.         GIZWITS_LOG("Evt: EVENT_LED1 %d \n", currentDataPoint.valueLED1);
  57.         if(0x01 == currentDataPoint.valueLED1)
  58.         {
  59.           //user handle
  60.            <font color="#ff0000">  HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);                //点亮led1 </font>                       
  61.         }
  62.         else
  63.         {
  64.           //user handle   
  65.             <font color="#ff0000"> HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);                     //灭掉led1</font>               
  66.         }
  67.         break;




  68.       case WIFI_SOFTAP:
  69.         break;
  70.       case WIFI_AIRLINK:
  71.         break;
  72.       case WIFI_STATION:
  73.         break;
  74.       case WIFI_CON_ROUTER:

  75.         break;
  76.       case WIFI_DISCON_ROUTER:

  77.         break;
  78.       case WIFI_CON_M2M:

  79.         break;
  80.       case WIFI_DISCON_M2M:
  81.         break;
  82.       case WIFI_RSSI:
  83.         GIZWITS_LOG("RSSI %d\n", wifiData->rssi);
  84.         break;
  85.       case TRANSPARENT_DATA:
  86.         GIZWITS_LOG("TRANSPARENT_DATA \n");
  87.         //user handle , Fetch data from [data] , size is [len]
  88.         break;
  89.       case WIFI_NTP:
  90.         GIZWITS_LOG("WIFI_NTP : [%d-%d-%d %02d:%02d:%02d][%d] \n",ptime->year,ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);
  91.         break;
  92.       case MODULE_INFO:
  93.             GIZWITS_LOG("MODULE INFO ...\n");
  94.       #if MODULE_TYPE
  95.             GIZWITS_LOG("GPRS MODULE ...\n");
  96.             //Format By gprsInfo_t
  97.       #else
  98.             GIZWITS_LOG("WIF MODULE ...\n");
  99.             //Format By moduleInfo_t
  100.             GIZWITS_LOG("moduleType : [%d] \n",ptModuleInfo->moduleType);
  101.       #endif
  102.     break;
  103.       default:
  104.         break;
  105.     }
  106.   }

  107.   return 0;
  108. }
复制代码
  
4.程序烧录:使用FlyMCU进行程序烧写,   
5.打开APP操控体验
6.打开Xcom查看调试信息
QQ截图20180615140629.jpg QQ截图20180615142208.jpg


四、注意事项:
  • 正确找出开发板的UART2接口:本开发板中对应关系如下:UART2_TX:PA2,UART2_RX:PA3,
  • 保证与ESP8266模块的管脚接线正确:V3.3(接开发板3.3V);
                                                                    GND(接开发板GND);
                                                                    TX     (接开发板的PA3管脚);
                                                                    RX     (接开发板的PA2管脚);   
3.由于本次使用的ESP8266是原来机智云二代产品上的,可能正常联上机智云,故没有给ESP8266烧写固件,关于固件烧写的内容,请参阅论坛的相关文档。

智能天然气传感器 - 机智云WiFi类设备接入协议文档-MCU方案.pdf

152.51 KB, 下载次数: 12, 下载积分: 威望 1

有关命令可以在本文档中进行查询,解析

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-15 13:06:25 | 显示全部楼层
wlzx059 发表于 2018-6-14 19:07
详解的有点简单啊。。。。。

今天继续写,这个编辑环境还不太适应,看着好的,一保存和原来的不一样,加个超链接都格式会变,谢谢你的赏光

点评

期待教程的再次发布  详情 回复 发表于 2018-6-17 10:37

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2018-6-15 18:08:05 | 显示全部楼层
请问这个是什么原因啊 硬件是照着上面的图接的串口2
KEY1 PRESS ,Production Mode
MCU2WiFi[1147169:   9]: ff ff 00 05 13 11 00 00 29
Warning:gizProtocolResendData 1147370 1147169 0
Warning: timeout, resend data
MCU2WiFi[1147388:   9]: ff ff 00 05 13 11 00 00 29
Warning:gizProtocolResendData 1147594 1147393 1
Warning: timeout, resend data
MCU2WiFi[1147612:   9]: ff ff 00 05 13 11 00 00 29
KEY2 PRESS ,Soft AP mode
MCU2WiFi[1153529:  10]: ff ff 00 06 09 12 00 00 01 22
Warning:gizProtocolResendData 1153730 1153529 0
Warning: timeout, resend data
MCU2WiFi[1153749:  10]: ff ff 00 06 09 12 00 00 01 22
Warning:gizProtocolResendData 1153956 1153755 1
Warning: timeout, resend data
MCU2WiFi[1153975:  10]: ff ff 00 06 09 12 00 00 01 22

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-20 11:01:08 | 显示全部楼层
Genius 发表于 2018-6-20 10:51
插入图片 需要插入图片的位置  点击 图片

参考:

非常感谢你的指导。
发表于 2018-6-20 10:53:22 | 显示全部楼层
汉枫LPB120模块
Seasonic 发表于 2018-6-20 10:10
想上传程序传不上,附件的最大为5M,这个怎么解?

那是因为会员等级的问题。   等级越高,上传的附件越大。

不过建议咯, 要是源码之类的  云盘分享会好一点
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
发表于 2018-6-20 10:51:42 | 显示全部楼层
Seasonic 发表于 2018-6-15 14:27
请教一下,怎么上传的截图在编辑里不显示,一出来就在文档的末尾,没有在指定的位置上啊。 ...

插入图片 需要插入图片的位置  点击 图片

参考:
http://club.gizwits.com/thread-3245-1-1.html
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-20 10:10:56 | 显示全部楼层
Genius 发表于 2018-6-14 17:19
感谢分享~~~很受用

想上传程序传不上,附件的最大为5M,这个怎么解?

点评

那是因为会员等级的问题。 等级越高,上传的附件越大。 不过建议咯, 要是源码之类的 云盘分享会好一点  详情 回复 发表于 2018-6-20 10:53

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-20 10:10:33 | 显示全部楼层
Genius 发表于 2018-6-14 17:19
感谢分享~~~很受用

想上传程序传不上,附件的最大为5M,这个怎么解?

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-20 10:05:36 | 显示全部楼层
caikan 发表于 2018-6-20 09:54
非常感谢楼主分享!

不客气,大家共同学习,进步,一个小的项目做完,写写文档,是一个捋顺,总结的过程,日积月累,有利提升。

1

主题

26

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2018-6-20 09:54:07 | 显示全部楼层
教您5分钟接入机智云,实现傻瓜式开发
非常感谢楼主分享!

1

主题

22

帖子

508

积分

高级会员

Rank: 4

积分
508
发表于 2018-6-17 10:37:13 | 显示全部楼层
Seasonic 发表于 2018-6-15 13:06
今天继续写,这个编辑环境还不太适应,看着好的,一保存和原来的不一样,加个超链接都格式会变,谢谢你的 ...

期待教程的再次发布

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-16 21:53:03 | 显示全部楼层
哎哟喂17 发表于 2018-6-15 18:08
请问这个是什么原因啊 硬件是照着上面的图接的串口2
KEY1 PRESS ,Production Mode
MCU2WiFi[1147169:   9]: ...

你这看着是MCU给WIFI发了,WIFI没有回,这种情况你检查一下接线的牢靠性,我开始也是因为杜邦线不牢靠,出现过这个问题

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-15 14:33:52 | 显示全部楼层

代码中打成红色的部分显示这个代码:<font color="#ff0000">没有变成红色。

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-15 14:27:55 | 显示全部楼层

请教一下,怎么上传的截图在编辑里不显示,一出来就在文档的末尾,没有在指定的位置上啊。

点评

插入图片 需要插入图片的位置 点击 图片 参考: http://club.gizwits.com/thread-3245-1-1.html  详情 回复 发表于 2018-6-20 10:51
发表于 2018-6-15 14:23:21 | 显示全部楼层
汉枫LPB120模块
我要快速回复
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

1

主题

22

帖子

508

积分

高级会员

Rank: 4

积分
508
发表于 2018-6-14 19:07:40 | 显示全部楼层
详解的有点简单啊。。。。。
发表于 2018-6-14 17:28:27 | 显示全部楼层
Seasonic 发表于 2018-6-14 17:25
还得感谢机智云团队,给设备安上了翅膀,可以远程操控,由于个人水平局限性,写帖很生疏,也有很多错误, ...

一看排版 就觉得你是个认真细心的小伙子
没想到还很谦虚
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

10

主题

69

帖子

788

积分

高级会员

Rank: 4

积分
788
 楼主| 发表于 2018-6-14 17:25:36 | 显示全部楼层
Genius 发表于 2018-6-14 17:19
感谢分享~~~很受用

还得感谢机智云团队,给设备安上了翅膀,可以远程操控,由于个人水平局限性,写帖很生疏,也有很多错误,还望大家多多指正。

点评

一看排版 就觉得你是个认真细心的小伙子 没想到还很谦虚  详情 回复 发表于 2018-6-14 17:28
发表于 2018-6-14 17:19:49 | 显示全部楼层
感谢分享~~~很受用
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

© 2011-2017 Gizwits ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表