从5方面描述STM32F407+ESP8266连接机智云过程

发布时间:2024-06-04  

一、硬件组成如下图所示:

硬件全家福:

STM32F407ZGT6+ESP8266


二、下载通用APP DEMO:

1.在应用商店,搜索“机智云”APP。

通用APP Demo 又称“机智云”APP

2.安装、注册、登陆后如下图所示:

三、调试过程详解:

创建数据点

生成MCU工程

下载MCU工程并根据开发板原理图修改工程,修改的地方如程序中红色加注释的部分

main.c 中加入红色标出的GPIO初始化代码

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct;

/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOE_CLK_ENABLE();

__HAL_RCC_GPIOH_CLK_ENABLE();

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOF_CLK_ENABLE(); //GPIOF CLK Enable:Used to Ctrol LED

/*Configure GPIO pins : KEY2_Pin KEY1_Pin */

GPIO_InitStruct.Pin = KEY2_Pin|KEY1_Pin;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLUP;

HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOE, LED1_Pin|LED0_Pin, GPIO_PIN_SET);

/*Configure GPIO pins : LED1_Pin LED0_Pin */

GPIO_InitStruct.Pin = LED1_Pin|LED0_Pin;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

}

main.h头文件中增加以下内容

/* USER CODE BEGIN Private defines */

#define LED1_Pin GPIO_PIN_9

#define LED1_GPIO_Port GPIOF

#define LED0_Pin GPIO_PIN_10

#define LED0_GPIO_Port GPIOF

/* USER CODE END Private defines */

gizwits_product.c中需要用户添设备上电状态代码如下图所示

void userInit(void)

{

memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));

/** Warning !!! DataPoint Variables Init , Must Within The Data Range **/

currentDataPoint.valueValve = 0;

currentDataPoint.valueLED0 = 1;

currentDataPoint.valueLED1 = 1;

currentDataPoint.valueState = 1;

currentDataPoint.valueValue = 5;

}

gizwits_product.c中需要用户添加的代码如下图所示

int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len)

{

uint8_t i = 0;

dataPoint_t *dataPointPtr = (dataPoint_t *)gizdata;

moduleStatusInfo_t *wifiData = (moduleStatusInfo_t *)gizdata;

protocolTime_t *ptime = (protocolTime_t *)gizdata;

#if MODULE_TYPE

gprsInfo_t *gprsInfoData = (gprsInfo_t *)gizdata;

#else

moduleInfo_t *ptModuleInfo = (moduleInfo_t *)gizdata;

#endif

if((NULL == info) || (NULL == gizdata))

{

return -1;

}

for(i=0; inum; i++)

{

switch(info->event[i])

{

case EVENT_Valve:

currentDataPoint.valueValve = dataPointPtr->valueValve;

GIZWITS_LOG("Evt: EVENT_Valve %d ", currentDataPoint.valueValve);

if(0x01 == currentDataPoint.valueValve)

{

//user handle

HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin); //led1闪烁 ,没有阀,用灯替代

HAL_Delay(500);

HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin); //led0闪烁 没有阀,用灯替代

HAL_Delay(500);

}

else

{

//user handle

HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET); //熄灭led1

HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET); //熄灭led0

}

break;

case EVENT_LED0:

currentDataPoint.valueLED0 = dataPointPtr->valueLED0;

GIZWITS_LOG("Evt: EVENT_LED0 %d ", currentDataPoint.valueLED0);

if(0x01 == currentDataPoint.valueLED0)

{

//user handle

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET); //点亮led0

}

else

{

//user handle

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET); //熄灭led0

}

break;

case EVENT_LED1:

currentDataPoint.valueLED1 = dataPointPtr->valueLED1;

GIZWITS_LOG("Evt: EVENT_LED1 %d ", currentDataPoint.valueLED1);

if(0x01 == currentDataPoint.valueLED1)

{

//user handle

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET); //点亮led1

}

else

{

//user handle

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET); //灭掉led1

}

break;

case WIFI_SOFTAP:

break;

case WIFI_AIRLINK:

break;

case WIFI_STATION:

break;

case WIFI_CON_ROUTER:

break;

case WIFI_DISCON_ROUTER:

break;

case WIFI_CON_M2M:

break;

case WIFI_DISCON_M2M:

break;

case WIFI_RSSI:

GIZWITS_LOG("RSSI %d ", wifiData->rssi);

break;

case TRANSPARENT_DATA:

GIZWITS_LOG("TRANSPARENT_DATA ");

//user handle , Fetch data from [data] , size is [len]

break;

case WIFI_NTP:

GIZWITS_LOG("WIFI_NTP : [%d-%d-%d %02d:%02d:%02d][%d] ",ptime->year,ptime->month,ptime->day,ptime->hour,ptime->minute,ptime->second,ptime->ntp);

break;

case MODULE_INFO:

GIZWITS_LOG("MODULE INFO ... ");

#if MODULE_TYPE

GIZWITS_LOG("GPRS MODULE ... ");

//Format By gprsInfo_t

#else

GIZWITS_LOG("WIF MODULE ... ");

//Format By moduleInfo_t

GIZWITS_LOG("moduleType : [%d] ",ptModuleInfo->moduleType);

#endif

break;

default:

break;

}

}

return 0;

}

4.程序烧录:使用FlyMCU进行程序烧写, 5.打开APP操控体验6.打开Xcom查看调试信息

四、注意事项:

1.正确找出开发板的UART2接口:本开发板中对应关系如下:

UART2_TX:PA2,

UART2_RX:PA3,

2.保证与ESP8266模块的管脚接线正确:

V3.3(接开发板3.3V);

GND(接开发板GND);

TX (接开发板的PA3管脚);

RX (接开发板的PA2管脚);

3.由于本次使用的ESP8266是原来机智云二代产品上的,可能正常联上机智云,故没有给ESP8266烧写固件


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>