收藏官网首页
查看: 229829|回复: 190

[资料] 从0开始玩转Gokit3 SOC(3)温湿度远程监控应用-数值量上报

 

321

主题

1054

帖子

4513

积分

论坛元老

Rank: 8Rank: 8

积分
4513
QQ
跳转到指定楼层
#
发表于 2017-1-4 19:08:52 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 bigfanofloT 于 2017-1-4 19:12 编辑

本应用基于机智云gokit3 SOC硬件平台,演示了如何通过通过板载DHT11温湿度传感器感知温湿度,然后上报到云端,从而可在手机APP端监控的应用。
分为以下三步:
1.     机智云开发者中心创建产品;
2.     机智云开发者中心生成SOC方案工程;
3.     移植温湿度传感器DHT11驱动,编写用户应用;
视频:
首先在机智云开发者中心创建产品。


填写好产品信息后新建数据点,我们建立如下温、湿度数据点:
然后我们在开发向导里面,生成soc工程:
下载生成的工程,解压后,其目录如下:
各个文件作用如下:
生成的工程包含了基本的框架,需要用户自己添加驱动和应用逻辑,本例来说就是温湿度传感器DHT11的底层驱动和应用,生成的工程文件夹名太长,为了方便改为soc_esp8266_HumTemp。
这里,我们从机智云官网下载Gokit3 SOC微信宠物屋源码,把里面的关于底板RGB5050 全彩LED的驱动文件hal_rgb_led.hhal_rgb_led.c文件以及传感器DHT11的驱动文件hal_temp_hum.c和hal_temp_hum.h拷贝到我们的工程中来。
下载源码:

http://dev.gizwits.com/zh-cn/developer/resource/hardware?type=GoKit
解压后找到如下4个LED和温湿度传感器的驱动c和h文件:
把它们拷贝到生成的工程里面对应位置:
接下来就是修改生成的工程源码了,我这里使用Subelime Text文本编辑器修改;

找到..\app\user目录的主函数user_main.c文件,首先添加2个驱动头文件路劲:
把传感器和RGB LED初始化函数放到voidICACHE_FLASH_ATTR user_init(void)里面:
在按键回调函数里面添加如下代码,是为了适应测试APP的提示;
在这里添加1个宏定义,用于控制定时采集温湿度;
在如下函数里面添加用户代码:定时读取温湿度,然后上报到云端;
工程修改完毕后,按照教程
搭建开发环境、编译代码、烧录。
工程源码下载:
游客,如果您要查看本帖隐藏内容请回复
PDF教程:
游客,如果您要查看本帖隐藏内容请回复



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

3

主题

36

帖子

751

积分

高级会员

Rank: 4

积分
751
推荐
发表于 2017-1-5 14:12:18 | 只看该作者
过来看看,支持一下!!!

3

主题

11

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
推荐
发表于 2017-10-9 03:31:36 | 只看该作者
bigfanofloT 发表于 2017-10-1 17:13
把你的发上来看看

这个就是系统自动生成的新代码,未按照该贴编辑前可以编译,按照该贴修改以后报错无法编译,谢谢。

/**
****************************************
* @file         user_main.c
* @brief        The program entry file
* @author       Gizwits
* @date         2017-07-19
* @version      V03030000
* @copyright    Gizwits
*
* @note         机智云.只为智能硬件而生
*               Gizwits Smart Cloud  for Smart Products
*               链接|增值ֵ|开放|中立|安全|自有|自由|生态
*               www.gizwits.com
*
****************************************/
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "gagent_soc.h"
#include "user_devicefind.h"
#include "user_webserver.h"
#include "gizwits_product.h"
#include "driver/hal_key.h"
#if ESP_PLATFORM
#include "user_esp_platform.h"
#endif

#ifdef SERVER_SSL_ENABLE
#include "ssl/cert.h"
#include "ssl/private_key.h"
#else
#ifdef CLIENT_SSL_ENABLE
unsigned char *default_certificate;
unsigned int default_certificate_len = 0;
unsigned char *default_private_key;
unsigned int default_private_key_len = 0;
#endif
#endif

/**@name User timers related parameters
* @{
*/
#define USER_TIME_MS 1000                                                   ///< Timing time in milliseconds
LOCAL os_timer_t userTimer;                                                 ///< User timer structure
/**@} */

/**@name Key related definitions
* @{
*/
#define GPIO_KEY_NUM                            2                           ///< Defines the total number of key members
#define KEY_0_IO_MUX                            PERIPHS_IO_MUX_GPIO0_U      ///< ESP8266 GPIO function
#define KEY_0_IO_NUM                            0                           ///< ESP8266 GPIO number
#define KEY_0_IO_FUNC                           FUNC_GPIO0                  ///< ESP8266 GPIO name
#define KEY_1_IO_MUX                            PERIPHS_IO_MUX_MTMS_U       ///< ESP8266 GPIO function
#define KEY_1_IO_NUM                            14                          ///< ESP8266 GPIO number
#define KEY_1_IO_FUNC                           FUNC_GPIO14                 ///< ESP8266 GPIO name
LOCAL key_typedef_t * singleKey[GPIO_KEY_NUM];                              ///< Defines a single key member array pointer
LOCAL keys_typedef_t keys;                                                  ///< Defines the overall key module structure pointer   
/**@} */

/**
* Key1 key short press processing
* @param none
* @return none
*/
LOCAL void ICACHE_FLASH_ATTR key1ShortPress(void)
{
    GIZWITS_LOG("#### KEY1 short press ,Production Mode\n");
   
    gizwitsSetMode(WIFI_PRODUCTION_TEST);
}

/**
* Key1 key presses a long press
* @param none
* @return none
*/
LOCAL void ICACHE_FLASH_ATTR key1LongPress(void)
{
    GIZWITS_LOG("#### key1 long press, default setup\n");
   
    gizwitsSetMode(WIFI_RESET_MODE);
}

/**
* Key2 key to short press processing
* @param none
* @return none
*/
LOCAL void ICACHE_FLASH_ATTR key2ShortPress(void)
{
    GIZWITS_LOG("#### key2 short press, soft ap mode \n");

    gizwitsSetMode(WIFI_SOFTAP_MODE);
}

/**
* Key2 button long press
* @param none
* @return none
*/
LOCAL void ICACHE_FLASH_ATTR key2LongPress(void)
{
    GIZWITS_LOG("#### key2 long press, airlink mode\n");
   
    gizwitsSetMode(WIFI_AIRLINK_MODE);
}

/**
* Key to initialize
* @param none
* @return none
*/
LOCAL void ICACHE_FLASH_ATTR keyInit(void)
{
    singleKey[0] = keyInitOne(KEY_0_IO_NUM, KEY_0_IO_MUX, KEY_0_IO_FUNC,
                                key1LongPress, key1ShortPress);
    singleKey[1] = keyInitOne(KEY_1_IO_NUM, KEY_1_IO_MUX, KEY_1_IO_FUNC,
                                key2LongPress, key2ShortPress);
    keys.singleKey = singleKey;
    keyParaInit(&keys);
}

/**
* @brief user_rf_cal_sector_set

* Use the 636 sector (2544k ~ 2548k) in flash to store the RF_CAL parameter
* @param none
* @return none
*/
uint32_t ICACHE_FLASH_ATTR user_rf_cal_sector_set()
{
    return 636;
}

/**
* @brief program entry function

* In the function to complete the user-related initialization
* @param none
* @return none
*/
void ICACHE_FLASH_ATTR user_init(void)
{
    uint32_t system_free_size = 0;

    wifi_station_set_auto_connect(1);
    wifi_set_sleep_type(NONE_SLEEP_T);//set none sleep mode
    espconn_tcp_set_max_con(10);
    uart_init_3(9600,115200);
    UART_SetPrintPort(1);
    GIZWITS_LOG( "---------------SDK version:%s--------------\n", system_get_sdk_version());
    GIZWITS_LOG( "system_get_free_heap_size=%d\n",system_get_free_heap_size());

    struct rst_info *rtc_info = system_get_rst_info();
    GIZWITS_LOG( "reset reason: %x\n", rtc_info->reason);
    if (rtc_info->reason == REASON_WDT_RST ||
        rtc_info->reason == REASON_EXCEPTION_RST ||
        rtc_info->reason == REASON_SOFT_WDT_RST)
    {
        if (rtc_info->reason == REASON_EXCEPTION_RST)
        {
            GIZWITS_LOG("Fatal exception (%d):\n", rtc_info->exccause);
        }
        GIZWITS_LOG( "epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\n",
                rtc_info->epc1, rtc_info->epc2, rtc_info->epc3, rtc_info->excvaddr, rtc_info->depc);
    }

    if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1)
    {
        GIZWITS_LOG( "---UPGRADE_FW_BIN1---\n");
    }
    else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2)
    {
        GIZWITS_LOG( "---UPGRADE_FW_BIN2---\n");
    }

    keyInit();
   
    userInit();

    gizwitsInit();  

    //user timer
    os_timer_disarm(&userTimer);
    os_timer_setfn(&userTimer, (os_timer_func_t *)userHandle, NULL);
    os_timer_arm(&userTimer, USER_TIME_MS, 1);

    GIZWITS_LOG("--- system_free_size = %d ---\n", system_get_free_heap_size());
}

3

主题

11

帖子

255

积分

中级会员

Rank: 3Rank: 3

积分
255
推荐
发表于 2017-10-9 03:35:51 | 只看该作者
bigfanofloT 发表于 2017-10-1 17:13
把你的发上来看看

gen_misc.sh version 20150511

boot mode: new
app:1
spi speed: 40 MHz
spi mode: QIO
spi_size_map:6
make[1]: Entering directory '/home/cobetckoe/workspace/logive/app/user'
DEPEND: xtensa-lx106-elf-gcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -DICACHE_FLASH -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../..//app/gagent/inc -I ../..//app/Gizwits -I ../..//app/Utils user_json.c
/bin/sh: 2: cannot create .output/eagle/debug/obj/user_json.d.26294: Permission denied
DEPEND: xtensa-lx106-elf-gcc -M -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -DICACHE_FLASH -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle -I ../..//app/gagent/inc -I ../..//app/Gizwits -I ../..//app/Utils user_main.c
/bin/sh: 2: cannot create .output/eagle/debug/obj/user_main.d.26299: Permission denied
xtensa-lx106-elf-gcc -Os -g -Wpointer-arith -Wundef -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections   -DICACHE_FLASH   -I include -I ./ -I ../../include/ets -I ../include  -I ../../include -I ../../include/eagle -I ../..//app/gagent/inc -I ../..//app/Gizwits -I ../..//app/Utils  -o .output/eagle/debug/obj/user_main.o -c user_main.c
user_main.c: In function 'user_rf_cal_sector_set':
user_main.c:152:30: error: 'dataPoint_t' has no member named 'valuetemp'
              currentDataPoint.valuetemp = curTemperature;
                              ^
user_main.c:153:30: error: 'dataPoint_t' has no member named 'valuehum'
              currentDataPoint.valuehum = curHumidity;
                              ^
../../Makefile:321: recipe for target '.output/eagle/debug/obj/user_main.o' failed
make[1]: ** [.output/eagle/debug/obj/user_main.o] Error 1
make[1]: Leaving directory '/home/cobetckoe/workspace/logive/app/user'
../Makefile:307: recipe for target '.subdirs' failed
make: ** [.subdirs] Error 2

0

主题

3

帖子

58

积分

注册会员

Rank: 2

积分
58
175#
发表于 2024-4-9 12:40:56 | 只看该作者
免费使用STM32、APP自动代码生成工具
非常好,谢谢分享,值得学习

0

主题

7

帖子

139

积分

注册会员

Rank: 2

积分
139
173#
发表于 2022-5-4 12:16:42 | 只看该作者
好好学习一下,多了一个恩路

0

主题

9

帖子

855

积分

高级会员

Rank: 4

积分
855
172#
发表于 2021-12-25 10:02:14 | 只看该作者
你好,请发一下源码

0

主题

3

帖子

106

积分

注册会员

Rank: 2

积分
106
170#
发表于 2021-3-16 17:39:37 | 只看该作者
注册成为机智云开发者,手机加虚拟设备快速开发
真不错1111111111111111111111111111111111

0

主题

6

帖子

57

积分

注册会员

Rank: 2

积分
57
168#
发表于 2021-1-13 11:38:52 | 只看该作者
学习一下,谢谢

0

主题

1

帖子

17

积分

新手上路

Rank: 1

积分
17
165#
发表于 2020-5-4 12:54:24 | 只看该作者
注册成为机智云开发者,手机加虚拟设备快速开发
66666666666666

0

主题

15

帖子

292

积分

中级会员

Rank: 3Rank: 3

积分
292
164#
发表于 2020-4-23 22:58:25 | 只看该作者
温湿度远程监控应用-数值量上报感谢楼主分享

0

主题

1

帖子

33

积分

新手上路

Rank: 1

积分
33
160#
发表于 2019-12-20 11:11:05 | 只看该作者
免费使用STM32、APP自动代码生成工具
已学习谢谢分享

0

主题

1

帖子

23

积分

新手上路

Rank: 1

积分
23
158#
发表于 2019-8-19 10:09:19 | 只看该作者
非常不错,有时间弄一下玩玩

0

主题

23

帖子

853

积分

高级会员

Rank: 4

积分
853
157#
发表于 2019-8-9 13:37:02 | 只看该作者
温度采样一直不是很准, 希望有所帮助,谢谢!

0

主题

5

帖子

53

积分

注册会员

Rank: 2

积分
53
156#
发表于 2019-8-8 21:19:07 | 只看该作者
66666666666666666666666666
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

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