收藏官网首页
查看: 37068|回复: 428

[资料] 3分钟教你创建手机APP远程温度监控应用,图形化编程!

 
发表于 2016-9-18 19:16:28 | 显示全部楼层 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 bigfanofloT 于 2016-9-23 17:22 编辑

版权所有,转载请注明出处http://club.gizwits.com/home.php?mod=space&uid=7261
对,你没有看错!!!3分钟教你创建手机APP远程温度监控应用图形化编程,自动代码生成,麻麻再也不用担心我不会编程了,纯傻瓜式开发方式!机智云,物联网智能硬件平台领导者,重新定义智能设备开发
下面基于机智云gokit V2.1硬件平台,教你如何把温湿度传感器数值通过单片机上报到云端,然后在自动生成的安卓手机APP上显示。
请看组图(后面附源码和PDF版教程下载):
首先登陆机智云开发者中心:
创建新产品。

演示1.png 44.png

添加数据点。
55.png

然后在MCU开发里面,下载生成的Keil MDK工程,使用Keil软件打开。
这里,我们从机智云官网下载Gokit V2.1 STM32底板 微信宠物屋源码,把里面的关于延时文件、RGBLED驱动文件和温湿度传感器驱动文件拷贝到我们的工程中来,并添加好文件和编译路劲。
33.png

后面附件会给出这几个驱动文件的官网和本地下载方式。
这里我们需要定义2个全局变量来保存读取的温湿度数值。
77.png

用户初始化函数,把用户驱动的初始化添加到这里。
66.png

用户数据处理接口,把温湿度的读取放到这里,并且填充数据结构以达到上报目的。这里注意的是延时函数的合理调用,不可上报过快。
88.png

我们在按键处理这里添加两个指示,因为生成的测试手机APP在配置入网时会有提示,这个不是必须的。如何触发配置入网模式?采用什么模式完全由用户代码决定,这里是为了配合测试用APP的提示。
99.png

下面是主函数,完全不需要用户修改。

10.png
MCU工程弄好后,编译并下载,这里不再赘述。
然后我们插上USB线连接电脑,打开串口调试助手可以看到调试信息;
到开发者中心下载测试APP,这里不再赘述,不清楚的请参考前期教程:
下面给出关键步骤调试信息。
一切就绪后,长按KEY2 2S进行配置连接路由器,我们使用的触发配置入网方式为长按KEY2,AirLink方式,当然用户可以自定义触发方式和配置方式。
11.PNG
Screenshot_2016-09-18-12-42-34-072_com.xpg.wifide.png
Screenshot_2016-09-18-12-42-27-520_com.xpg.wifide.png
22.png
这里给出演示视频:
超级简单有木有,so奔走相告吧
附件:
1.STM32底板,Gokit V2.1 微信宠物屋源码官方下载:
游客,如果您要查看本帖隐藏内容请回复
这个工程里面包含了Gokit上面外设的驱动文件。
2.STM32底板 Gokit V2.1,外设驱动打包下载:
游客,如果您要查看本帖隐藏内容请回复

3.本例程源码下载:
游客,如果您要查看本帖隐藏内容请回复
4.PDF版教程下载:
游客,如果您要查看本帖隐藏内容请回复






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

1

主题

8

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2017-12-27 22:39:13 | 显示全部楼层
bigfanofloT 发表于 2017-12-10 19:00
把你的代码发上来看看呗

int32_t uartWrite(uint8_t *buf, uint32_t len)
{
                uint8_t crc[1] = {0x55};
    uint32_t i = 0;
                  uint8_t aa=0x55;
    if(NULL == buf)
    {
        return -1;
    }

    for(i=0; i<len; i++)
    {
     // HAL_UART_Transmit_IT(&huart2, (uint8_t *)&buf, 1);
                HAL_UART_Transmit(&huart2, (uint8_t *)&buf, 1,50);
        //        while (huart2.State != HAL_UART_STATE_READY);//Loop until the end of transmission

        if(i >=2 && buf == 0xFF)
        {
                //        HAL_UART_Transmit_IT(&huart2, (uint8_t *)&crc, 1);
                        HAL_UART_Transmit(&huart2, (uint8_t *)&buf, 1,50);                       
                //        while (huart2.State != HAL_UART_STATE_READY);//Loop until the end of transmission
        }
    }

#ifdef PROTOCOL_DEBUG
    GIZWITS_LOG("MCU2WiFi[%4d:%4d]: ", gizGetTimerCount(), len);
    for(i=0; i<len; i++)
    {
        GIZWITS_LOG("%02x ", buf);

        if(i >=2 && buf == 0xFF)
        {
            GIZWITS_LOG("%02x ", 0x55);
        }
    }
    GIZWITS_LOG("\n");
#endif
               
                return len;
}
程序注掉的地方是中断发送的,这么写,程序运行有问题,按照你的换成轮询的就好了,而且咱们用CubeMx生成的hal_uart.h文件中的结构体UART_HandleTypeDef中是这样的
typedef struct
{
  USART_TypeDef                 *Instance;        /*!< UART registers base address        */

  UART_InitTypeDef              Init;             /*!< UART communication parameters      */

  uint8_t                       *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */

  uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */

  uint16_t                      TxXferCount;      /*!< UART Tx Transfer Counter           */

  uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */

  uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */

  uint16_t                      RxXferCount;      /*!< UART Rx Transfer Counter           */  

  DMA_HandleTypeDef             *hdmatx;          /*!< UART Tx DMA Handle parameters      */

  DMA_HandleTypeDef             *hdmarx;          /*!< UART Rx DMA Handle parameters      */

  HAL_LockTypeDef               Lock;             /*!< Locking object                     */

  __IO HAL_UART_StateTypeDef    State;            /*!< UART communication state           */
  
  __IO uint32_t                 ErrorCode;        /*!< UART Error code                    */
}UART_HandleTypeDef;
而官网生成的代码是这样的,我忘了是官网生成的还是你的一个教程里面的,是这样的typedef struct
{
  USART_TypeDef                 *Instance;        /*!< UART registers base address        */

  UART_InitTypeDef              Init;             /*!< UART communication parameters      */

  uint8_t                       *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */

  uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */

  __IO uint16_t                 TxXferCount;      /*!< UART Tx Transfer Counter           */

  uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */

  uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */

  __IO uint16_t                 RxXferCount;      /*!< UART Rx Transfer Counter           */

  DMA_HandleTypeDef             *hdmatx;          /*!< UART Tx DMA Handle parameters      */

  DMA_HandleTypeDef             *hdmarx;          /*!< UART Rx DMA Handle parameters      */

  HAL_LockTypeDef               Lock;             /*!< Locking object                     */

  __IO HAL_UART_StateTypeDef    gState;           /*!< UART state information related to global Handle management
                                                       and also related to Tx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */
  
  __IO HAL_UART_StateTypeDef    RxState;          /*!< UART state information related to Rx operations.
                                                       This parameter can be a value of @ref HAL_UART_StateTypeDef */

  __IO uint32_t                 ErrorCode;        /*!< UART Error code                    */
}UART_HandleTypeDef;
后面那部分不一样,不知道是不是这个原因导致的

点评

发送用轮询,接收用中断才是对的  详情 回复 发表于 2017-12-28 10:37

2

主题

140

帖子

893

积分

高级会员

Rank: 4

积分
893
发表于 2016-11-8 20:48:55 | 显示全部楼层
bigfanofloT 发表于 2016-11-8 20:39
要另外买仿真器Jlink或者STlink

我刚用你教的“3分钟教你创建WIFI远程控制应用,图形化编程,自动代码生.”控制了一个LED,我想用这样的办法控制STM32F103C8T6的全部输出(都用做输出),能不能指导一二?版主!因为其他的温湿度采集,马达正反转都有现成的,就是没有全部引脚定义并控制的,盼版主回复,谢谢!

点评

控制LED的话,原理是相通的,都属于开关量下发控制,你要控制多少个就在云端创建多少个数据点,然后把硬件搭建好,在MCU端编写底层驱动就可以了,照着葫芦画瓢,推荐使用STM32CubeMX图形化配置。  详情 回复 发表于 2017-2-9 15:37
 楼主| 发表于 2017-2-9 15:37:46 | 显示全部楼层
tianzuoan 发表于 2016-11-8 20:48
我刚用你教的“3分钟教你创建WIFI远程控制应用,图形化编程,自动代码生.”控制了一个LED,我想用这样的 ...

控制LED的话,原理是相通的,都属于开关量下发控制,你要控制多少个就在云端创建多少个数据点,然后把硬件搭建好,在MCU端编写底层驱动就可以了,照着葫芦画瓢,推荐使用STM32CubeMX图形化配置。
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

2

主题

29

帖子

294

积分

中级会员

Rank: 3Rank: 3

积分
294
发表于 2016-9-18 19:38:02 | 显示全部楼层
汉枫LPB120模块
我好久没上来
 楼主| 发表于 2016-9-18 19:41:06 | 显示全部楼层

嘿嘿,以后常来,机智云4.0超级简便
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
发表于 2016-9-19 08:28:47 | 显示全部楼层
系列教程,太棒了!

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
发表于 2016-9-19 09:06:23 | 显示全部楼层
汉枫LPB120模块
这么好的教程哪里找啊!

0

主题

4

帖子

284

积分

中级会员

Rank: 3Rank: 3

积分
284
发表于 2016-9-19 09:47:35 | 显示全部楼层
这都是硬件代码吗?没有微信版本的代码吗
 楼主| 发表于 2016-9-19 09:54:59 | 显示全部楼层
是他是他 发表于 2016-9-19 09:47
这都是硬件代码吗?没有微信版本的代码吗

坐等后期教程
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
 楼主| 发表于 2016-9-19 09:55:36 | 显示全部楼层
1112 发表于 2016-9-19 09:06
这么好的教程哪里找啊!

关注本论坛即可
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

4

帖子

1185

积分

金牌会员

Rank: 6Rank: 6

积分
1185
发表于 2016-9-20 08:47:13 | 显示全部楼层
谢谢LZ分享,新手学习~~

0

主题

7

帖子

551

积分

高级会员

Rank: 4

积分
551
发表于 2016-9-20 09:55:58 | 显示全部楼层
注册成为机智云开发者,手机加虚拟设备快速开发
下载 学习  下载 学习  下载 学习  下载 学习  下载 学习  

3

主题

38

帖子

550

积分

高级会员

Rank: 4

积分
550
发表于 2016-9-20 17:45:21 | 显示全部楼层
非常有用100个赞

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
发表于 2016-9-21 12:50:25 | 显示全部楼层
定义的全局变量好像不能在其他地方使用,怎么处理?
 楼主| 发表于 2016-9-21 13:06:35 | 显示全部楼层
1112 发表于 2016-9-21 12:50
定义的全局变量好像不能在其他地方使用,怎么处理?

截图看看,全局变量在另一个C文件使用到的话需要先用extern申明的,你看看编译器的提示
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

6

主题

33

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
发表于 2016-9-21 13:22:21 | 显示全部楼层
免费使用STM32、APP自动代码生成工具
bigfanofloT 发表于 2016-9-21 13:06
截图看看,全局变量在另一个C文件使用到的话需要先用extern申明的,你看看编译器的提示 ...

谢谢!再请教一个问题:怎么通过adc 输入转化成温度呢?传感器用的是热敏电阻;
 楼主| 发表于 2016-9-21 13:31:29 | 显示全部楼层
1112 发表于 2016-9-21 13:22
谢谢!再请教一个问题:怎么通过adc 输入转化成温度呢?传感器用的是热敏电阻; ...

看你用的模块,卖家会给出转换计算公式
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

7

帖子

551

积分

高级会员

Rank: 4

积分
551
发表于 2016-9-21 13:57:48 | 显示全部楼层
请问可以在后台查看一段时间内采集的温湿度数据吗 只能通过手机实时看吗
 楼主| 发表于 2016-9-21 14:12:40 来自手机 | 显示全部楼层
学徒攻城师 发表于 2016-9-21 13:57
请问可以在后台查看一段时间内采集的温湿度数据吗 只能通过手机实时看吗

可以支持的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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