登录机智云开发中心:http://dev.gizwits.com/
点击右上角创建新产品
输入相应的产品信息后点击“保存”。
如果之前没有定义数据点则无法使用自动生成代码服务。
定义好产品后,选择左侧服务中的“MCU开发”(假设采用的MCU是STM32F103C8x),选中硬件方案中的“独立MCU方案”,再选择“硬件平台”中的“stm32f103c8x”,最后点击“生成代码包”,等待生成完毕下载即可。
注:因为硬件平台暂时没有"stm32g071rbx",可以选择“其他平台”选项,然后将生成的代码包移植到使用的平台,移植方法可以参考《GoKit3二次开发-通用平台版移植说明》,或者选择择“stm32f103c8x”,然后把生成的工程代码修改后移植到"stm32g071rbx"平台,本教程采用选择“stm32f103c8x”平台移植。
自动生成的代码已经根据用户定义的产品数据点信息,并针对STM32、ESP8266等平台,生成了对应的机智云串口协议层代码,用户只需要调用相应的API接口或添加相应的逻辑处理即可。代码框架如下图所示:
需要开发的部分为:
下行处理:例如LED灯开关、电机转速控制等。
上行处理:例如温湿度数据采集,红外传感器状态获取等。
配置处理:配置入网及恢复出厂设置。
下行处理:
首先要完成的是LED驱动开发,然后在Gizwits目录下的gizwits_product.c文件中的gizwitsEventProcess()函数中处理相应事件即可。
gizwits_product.c
修改前:
case EVENT_led_onoff: currentDataPoint.valueled_onoff = dataPointPtr->valueled_onoff; GIZWITS_LOG("Evt: EVENT_led_onoff %d \n", currentDataPoint.valueled_onoff); if(0x01 == currentDataPoint.valueled_onoff) { //user handle } else { //user handle } break;
修改后:
case EVENT_led_onoff: currentDataPoint.valueled_onoff = dataPointPtr->valueled_onoff; GIZWITS_LOG("Evt: EVENT_led_onoff %d \n", currentDataPoint.valueled_onoff); if(0x01 == currentDataPoint.valueled_onoff) { HAL_GPIO_TogglePin(USR_LED0_GPIO_Port, USR_LED0_Pin);//LED1 } else { HAL_GPIO_TogglePin(USR_LED0_GPIO_Port, USR_LED0_Pin);//LED1 } break;
上行处理:
首先要完成的是温湿度传感器驱动开发,然后在Gizwits目录下的gizwits_product.c文件中的userHandle()函数中实现传感器数据采集,用户只需并将采集到的数值赋值给对应用户区的设备状态结构体数据位即可。
gizwits_product.c
修改前:
void userHandle(void) { /* currentDataPoint.valuetemp = ;//Add Sensor Data Collection currentDataPoint.valuehumi = ;//Add Sensor Data Collection */ }
修改后:
extern short gizwits_temperature, gizwits_humidity; void userHandle(void) { currentDataPoint.valuetemp = gizwits_temperature;//Add Sensor Data Collection currentDataPoint.valuehumi = gizwits_humidity;//Add Sensor Data Collection }
配置处理:
除了数据的上行与下行处理外,还需要一些配置操作需要完成,如下:
配置入网
恢复出厂配置
我们提供了一个API接口,实现上述操作,定义如下:
int32_t gizwitsSetMode(uint8_t mode)
参数mode支持WIFI_RESET_MODE、WIFI_SOFTAP_MODE、WIFI_AIRLINK_MODE三种(详情见gizwits_protocol.h文件的 WIFI_MODE_TYPE_T),分别完成恢复出厂配置,进入softap配置模式,进入airlink配置模式操作。