收藏官网首页
查看: 9001|回复: 5

【Gokit3】SOC方案添加电机,DH11温湿度传感器,红外驱动详解

15

主题

135

帖子

2159

积分

金牌会员

Rank: 6Rank: 6

积分
2159
跳转到指定楼层
楼主
发表于 2018-8-30 10:42:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 Seasonic 于 2018-10-30 15:27 编辑



       最新生成的SOC代码中,与原来的略有不同,特别是在DH11温度,湿度传感器的数据添加中,应特别注意,具体参考以一下文件及函数,原来网站上提供的相关PDF内容已不再适用。

1、user_main.c中添加如下内容:
  1. #include "driver/hal_rgb_led.h"          //RGB_LED头文件,新加内容
  2. #include "driver/hal_motor.h"            //Motor头文件,新加内容
  3. #include "driver/hal_temp_hum.h"        //Tempeture头文件,新加内容
  4. #include "driver/hal_infrared.h"        //infrared头文件,新加内容
复制代码
  1. void ICACHE_FLASH_ATTR user_init(void)
  2. {
  3.     uint32_t system_free_size = 0;

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

  11.     struct rst_info *rtc_info = system_get_rst_info();
  12.     GIZWITS_LOG( "reset reason: %x\n", rtc_info->reason);
  13.     if (rtc_info->reason == REASON_WDT_RST ||
  14.         rtc_info->reason == REASON_EXCEPTION_RST ||
  15.         rtc_info->reason == REASON_SOFT_WDT_RST)
  16.     {
  17.         if (rtc_info->reason == REASON_EXCEPTION_RST)
  18.         {
  19.             GIZWITS_LOG("Fatal exception (%d):\n", rtc_info->exccause);
  20.         }
  21.         GIZWITS_LOG( "epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\n",
  22.                 rtc_info->epc1, rtc_info->epc2, rtc_info->epc3, rtc_info->excvaddr, rtc_info->depc);
  23.     }

  24.     if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1)
  25.     {
  26.         GIZWITS_LOG( "---UPGRADE_FW_BIN1---\n");
  27.     }
  28.     else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2)
  29.     {
  30.         GIZWITS_LOG( "---UPGRADE_FW_BIN2---\n");
  31.     }

  32.     keyInit();
  33.         /*RGB灯的初始化*/
  34.         rgbGpioInit();        // 新加代码WHP
  35.         rgbLedInit();        // 新加代码WHP

  36.         /*电机的初始化*/
  37.         motorInit();        // 新加代码WHP
  38.         
  39.         /*温度湿度传感器初始化*/
  40.         dh11Init();         // 新加代码WHP

  41.         /*红外初始化*/
  42.         irInit();                //新加代码WHP

  43.     gizwitsInit();  

  44.     GIZWITS_LOG("--- system_free_size = %d ---\n", system_get_free_heap_size());
  45. }
复制代码

2、gizwits_product.c中添加如下内容:
  1. #define USER_TIME_MS     100//新添加代码:?更改定时器间隔为100ms
  2. #define TH_TIMEOUT       (1000/USER_TIME_MS)//新添加代码:温湿度采集间隔为1S(1000ms)
  3. #define INF_TIMEOUT      (500/USER_TIME_MS)//新添加代码:红外采集间隔为500ms
复制代码
  1. int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len)
  2. {
  3.     uint8_t i = 0;
  4.     dataPoint_t * dataPointPtr = (dataPoint_t *)data;
  5.     moduleStatusInfo_t * wifiData = (moduleStatusInfo_t *)data;

  6.     if((NULL == info) || (NULL == data))
  7.     {
  8.         GIZWITS_LOG("!!! gizwitsEventProcess Error \n");
  9.         return -1;
  10.     }

  11.     for(i = 0; i < info->num; i++)
  12.     {
  13.         switch(info->event[i])
  14.         {
  15.         case EVENT_LED_OnOff :
  16.             currentDataPoint.valueLED_OnOff = dataPointPtr->valueLED_OnOff;
  17.             GIZWITS_LOG("Evt: EVENT_LED_OnOff %d \n", currentDataPoint.valueLED_OnOff);
  18.             if(0x01 == currentDataPoint.valueLED_OnOff)
  19.             {
  20.                 //user handle
  21.                 rgbControl(255, 0, 0);//红灯亮,新加代码WHP
  22.             }
  23.             else
  24.             {
  25.                 //user handle
  26.                 rgbControl(0, 0, 0);//灯灭,新加代码WHP;
  27.             }
  28.             break;

  29.         case EVENT_LED_Color:
  30.             currentDataPoint.valueLED_Color = dataPointPtr->valueLED_Color;
  31.             GIZWITS_LOG("Evt: EVENT_LED_Color %d\n", currentDataPoint.valueLED_Color);
  32.             switch(currentDataPoint.valueLED_Color)
  33.             {
  34.             case LED_Color_VALUE0:
  35.                 //user handle
  36.                     rgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B);
  37.                 break;
  38.             case LED_Color_VALUE1:
  39.                 //user handle
  40.                 rgbControl(255, 165, 0);
  41.                 break;
  42.             case LED_Color_VALUE2:
  43.                 //user handle
  44.                 rgbControl(160, 32, 240);
  45.                 break;
  46.             case LED_Color_VALUE3:
  47.                 //user handle
  48.                 rgbControl(255, 110,180);
  49.                 break;
  50.             default:
  51.                 break;
  52.             }
  53.             break;

  54.         case EVENT_LED_R:
  55.             currentDataPoint.valueLED_R= dataPointPtr->valueLED_R;
  56.             GIZWITS_LOG("Evt:EVENT_LED_R %d\n",currentDataPoint.valueLED_R);
  57.             //user handle
  58.             rgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B);
  59.             break;
  60.         case EVENT_LED_G:
  61.             currentDataPoint.valueLED_G= dataPointPtr->valueLED_G;
  62.             GIZWITS_LOG("Evt:EVENT_LED_G %d\n",currentDataPoint.valueLED_G);
  63.             //user handle
  64.             rgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B);
  65.             break;
  66.         case EVENT_LED_B:
  67.             currentDataPoint.valueLED_B= dataPointPtr->valueLED_B;
  68.             GIZWITS_LOG("Evt:EVENT_LED_B %d\n",currentDataPoint.valueLED_B);
  69.             //user handle
  70.             rgbControl(currentDataPoint.valueLED_R, currentDataPoint.valueLED_G, currentDataPoint.valueLED_B);
  71.             break;
  72.         case EVENT_Motor_Speed:
  73.             currentDataPoint.valueMotor_Speed= dataPointPtr->valueMotor_Speed;
  74.             GIZWITS_LOG("Evt:EVENT_Motor_Speed %d\n",currentDataPoint.valueMotor_Speed);
  75.             //user handle
  76.             motorControl(currentDataPoint.valueMotor_Speed);
  77.             break;

  78.         case WIFI_SOFTAP:
  79.             break;
  80.         case WIFI_AIRLINK:
  81.             break;
  82.         case WIFI_STATION:
  83.             break;
  84.         case WIFI_CON_ROUTER:
  85.             GIZWITS_LOG("@@@@ connected router\n");

  86.             break;
  87.         case WIFI_DISCON_ROUTER:
  88.             GIZWITS_LOG("@@@@ disconnected router\n");

  89.             break;
  90.         case WIFI_CON_M2M:
  91.             GIZWITS_LOG("@@@@ connected m2m\n");
  92.                         setConnectM2MStatus(0x01);

  93.             break;
  94.         case WIFI_DISCON_M2M:
  95.             GIZWITS_LOG("@@@@ disconnected m2m\n");
  96.                         setConnectM2MStatus(0x00);

  97.             break;
  98.         case WIFI_RSSI:
  99.             GIZWITS_LOG("@@@@ RSSI %d\n", wifiData->rssi);
  100.             break;
  101.         case TRANSPARENT_DATA:
  102.             GIZWITS_LOG("TRANSPARENT_DATA \n");
  103.             //user handle , Fetch data from [data] , size is [len]
  104.             break;
  105.         case MODULE_INFO:
  106.             GIZWITS_LOG("MODULE INFO ...\n");
  107.             break;
  108.             
  109.         default:
  110.             break;
  111.         }
  112.     }
  113.     system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0);
  114.    
  115.     return 0;
  116. }
复制代码
  1. void ICACHE_FLASH_ATTR userHandle(void)
  2. {
  3.     /*
  4.     currentDataPoint.valueInfrared = ;//Add Sensor Data Collection
  5.     currentDataPoint.valueTemperature = ;//Add Sensor Data Collection
  6.     currentDataPoint.valueHumidity = ;//Add Sensor Data Collection
  7.     currentDataPoint.valueAlert_1 = ;//Add Sensor Data Collection
  8.     currentDataPoint.valueAlert_2 = ;//Add Sensor Data Collection
  9.     currentDataPoint.valueFault_LED = ;//Add Sensor Data Collection
  10.     currentDataPoint.valueFault_Motor = ;//Add Sensor Data Collection
  11.     currentDataPoint.valueFault_TemHum = ;//Add Sensor Data Collection
  12.     currentDataPoint.valueFault_IR = ;//Add Sensor Data Collection

  13.     */
  14.         uint8_t ret=0;
  15.         uint8_t curTemperature=0;
  16.         uint8_t curHumidity=0;
  17.         uint8_t curIr=0;
  18.         static uint8_t thCtime=0;
  19.         static uint8_t irCtime=0;

  20.         thCtime++;
  21.         irCtime++;

  22.         /*新添加代码:红外传感器数据获取*/
  23.         if(INF_TIMEOUT<irCtime)
  24.         {
  25.                 irCtime=0;

  26.                 curIr=irUpdateStatus();
  27.                 currentDataPoint.valueInfrared=curIr;
  28.         }

  29.         /*新添加代码:温湿度传感器数据获取*/
  30.         if(TH_TIMEOUT<thCtime)
  31.         {
  32.                 thCtime=0;
  33.                 ret=dh11Read(&curTemperature,&curHumidity);

  34.                 if(0==ret)
  35.                 {
  36.                         currentDataPoint.valueTemperature=curTemperature;
  37.                         currentDataPoint.valueHumidity=curHumidity;
  38.                 }
  39.                 else
  40.                 {
  41.                         os_printf("@@@ dh11Read error! \n");
  42.                 }
  43.         }

  44.     system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0);
  45. }
复制代码
以上代码已经下载到gokit3功能板上已经验证,可以从APP端正常与设备连接,并操控,温度,湿度数据均能正常上传。

563

主题

1222

帖子

8097

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8097
沙发
发表于 2018-8-30 12:29:38 | 只看该作者
最新生成的SOC代码中,与原来的略有不同,特别是在DH11温度,湿度传感器的数据添加中,应特别注意,具体参考以一下文件及函数,原来网站上提供的相关PDF内容已不再适用。


能列举一下有哪几个资料(麻烦提供链接)不再适用不?  
我这边找人改一下。
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

15

主题

135

帖子

2159

积分

金牌会员

Rank: 6Rank: 6

积分
2159
板凳
 楼主| 发表于 2018-8-30 12:56:25 | 只看该作者
Genius 发表于 2018-8-30 12:29
最新生成的SOC代码中,与原来的略有不同,特别是在DH11温度,湿度传感器的数据添加中,应特别注意,具体参 ...


这个函数手动添加后在APP端还是看不到温度,湿度数据;
该程序中所对应的包含文件,也应一并写入的gizwits_product.c当中,
三个宏定义也应写入到gizwits_product.c当中。

http://club.gizwits.com/thread-4562-1-1.html


15

主题

135

帖子

2159

积分

金牌会员

Rank: 6Rank: 6

积分
2159
地板
 楼主| 发表于 2018-8-30 14:08:25 | 只看该作者

点评

多谢啦 这边已联系博主修正内容 嘿嘿~~~  详情 回复 发表于 2018-9-4 09:41

563

主题

1222

帖子

8097

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8097
5#
发表于 2018-9-4 09:41:24 | 只看该作者
注册成为机智云开发者,手机加虚拟设备快速开发
Seasonic 发表于 2018-8-30 14:08
也可以参考这一篇:http://club.gizwits.com/thread-7898-1-1.html

多谢啦  这边已联系博主修正内容 嘿嘿~~~
1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

15

帖子

170

积分

注册会员

Rank: 2

积分
170
6#
发表于 2019-3-2 11:57:23 | 只看该作者
博主您好,我刚接触机智云好多地方不懂,想请问一下有没有数据点创建的截图呢,我想照着做一遍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

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

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