bigfanofloT 发表于 2016-9-18 19:16:28

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

本帖最后由 bigfanofloT 于 2016-9-23 17:22 编辑

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


添加数据点。
然后在MCU开发里面,下载生成的Keil MDK工程,使用Keil软件打开。这里,我们从机智云官网下载Gokit V2.1 STM32底板 微信宠物屋源码,把里面的关于延时文件、RGBLED驱动文件和温湿度传感器驱动文件拷贝到我们的工程中来,并添加好文件和编译路劲。
后面附件会给出这几个驱动文件的官网和本地下载方式。这里我们需要定义2个全局变量来保存读取的温湿度数值。
用户初始化函数,把用户驱动的初始化添加到这里。
用户数据处理接口,把温湿度的读取放到这里,并且填充数据结构以达到上报目的。这里注意的是延时函数的合理调用,不可上报过快。
我们在按键处理这里添加两个指示,因为生成的测试手机APP在配置入网时会有提示,这个不是必须的。如何触发配置入网模式?采用什么模式完全由用户代码决定,这里是为了配合测试用APP的提示。

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

MCU工程弄好后,编译并下载,这里不再赘述。然后我们插上USB线连接电脑,打开串口调试助手可以看到调试信息;到开发者中心下载测试APP,这里不再赘述,不清楚的请参考前期教程:http://club.gizwits.com/thread-3546-1-1.html下面给出关键步骤调试信息。一切就绪后,长按KEY2 2S进行配置连接路由器,我们使用的触发配置入网方式为长按KEY2,AirLink方式,当然用户可以自定义触发方式和配置方式。这里给出演示视频:http://v.youku.com/v_show/id_XMTcyOTIxNzIzNg==.html?oldhttp://player.youku.com/player.php/sid/XMTcyOTIxNzIzNg==/v.swf超级简单有木有,so奔走相告吧!附件:1.STM32底板,Gokit V2.1 微信宠物屋源码官方下载:**** Hidden Message *****这个工程里面包含了Gokit上面外设的驱动文件。2.STM32底板 Gokit V2.1,外设驱动打包下载:**** Hidden Message *****
3.本例程源码下载:**** Hidden Message *****4.PDF版教程下载:**** Hidden Message *****





风雨流年 发表于 2017-12-27 22:39:13

bigfanofloT 发表于 2017-12-10 19:00
把你的代码发上来看看呗

int32_t uartWrite(uint8_t *buf, uint32_t len)
{
                uint8_t crc = {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;
后面那部分不一样,不知道是不是这个原因导致的

tianzuoan 发表于 2016-11-8 20:48:55

bigfanofloT 发表于 2016-11-8 20:39
要另外买仿真器Jlink或者STlink

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

bigfanofloT 发表于 2017-2-9 15:37:46

tianzuoan 发表于 2016-11-8 20:48
我刚用你教的“3分钟教你创建WIFI远程控制应用,图形化编程,自动代码生.”控制了一个LED,我想用这样的 ...

控制LED的话,原理是相通的,都属于开关量下发控制,你要控制多少个就在云端创建多少个数据点,然后把硬件搭建好,在MCU端编写底层驱动就可以了,照着葫芦画瓢,推荐使用STM32CubeMX图形化配置。

hxrong 发表于 2016-9-18 19:38:02

我好久没上来

bigfanofloT 发表于 2016-9-18 19:41:06

hxrong 发表于 2016-9-18 19:38
我好久没上来

嘿嘿,以后常来,机智云4.0超级简便

gongxiaoxin 发表于 2016-9-18 19:56:41

赞一个 好~~~~~~~~~~~~

逆境的小猪 发表于 2016-9-18 23:49:56

顶。。。。。。。。。。。。

hebmagic 发表于 2016-9-19 08:28:47

系列教程,太棒了!

1112 发表于 2016-9-19 09:06:23

这么好的教程哪里找啊!

是他是他 发表于 2016-9-19 09:47:35

这都是硬件代码吗?没有微信版本的代码吗

bigfanofloT 发表于 2016-9-19 09:54:59

是他是他 发表于 2016-9-19 09:47
这都是硬件代码吗?没有微信版本的代码吗

坐等后期教程

bigfanofloT 发表于 2016-9-19 09:55:36

1112 发表于 2016-9-19 09:06
这么好的教程哪里找啊!

关注本论坛即可

牛屎 发表于 2016-9-20 08:47:13

谢谢LZ分享,新手学习~~

学徒攻城师 发表于 2016-9-20 09:55:58

下载 学习下载 学习下载 学习下载 学习下载 学习

anymax 发表于 2016-9-20 17:45:21

:lol:lol:lol非常有用100个赞

armadyne 发表于 2016-9-20 21:14:24

:):):):):):)

1112 发表于 2016-9-21 12:50:25

定义的全局变量好像不能在其他地方使用,怎么处理?

bigfanofloT 发表于 2016-9-21 13:06:35

1112 发表于 2016-9-21 12:50
定义的全局变量好像不能在其他地方使用,怎么处理?

截图看看,全局变量在另一个C文件使用到的话需要先用extern申明的,你看看编译器的提示

1112 发表于 2016-9-21 13:22:21

bigfanofloT 发表于 2016-9-21 13:06
截图看看,全局变量在另一个C文件使用到的话需要先用extern申明的,你看看编译器的提示 ...

谢谢!再请教一个问题:怎么通过adc 输入转化成温度呢?传感器用的是热敏电阻;

bigfanofloT 发表于 2016-9-21 13:31:29

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

看你用的模块,卖家会给出转换计算公式

学徒攻城师 发表于 2016-9-21 13:57:48

请问可以在后台查看一段时间内采集的温湿度数据吗 只能通过手机实时看吗

bigfanofloT 发表于 2016-9-21 14:12:40

学徒攻城师 发表于 2016-9-21 13:57
请问可以在后台查看一段时间内采集的温湿度数据吗 只能通过手机实时看吗

可以支持的
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 3分钟教你创建手机APP远程温度监控应用,图形化编程!