一、硬件組成如下圖所示:
硬件全家福:
STM32F407ZGT6+ESP8266
二、下載通用APP DEMO:
1.在應(yīng)用商店,搜索“機(jī)智云”APP。
通用APP Demo 又稱“機(jī)智云”APP
2.安裝、注冊、登陸后如下圖所示:
三、調(diào)試過程詳解:
創(chuàng)建數(shù)據(jù)點
生成MCU工程
下載MCU工程并根據(jù)開發(fā)板原理圖修改工程,修改的地方如程序中紅色加注釋的部分
main.c 中加入紅色標(biāo)出的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頭文件中增加以下內(nèi)容
/* 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中需要用戶添設(shè)備上電狀態(tài)代碼如下圖所示
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進(jìn)行程序燒寫, 5.打開APP操控體驗6.打開Xcom查看調(diào)試信息
四、注意事項:
1.正確找出開發(fā)板的UART2接口:本開發(fā)板中對應(yīng)關(guān)系如下:
UART2_TX:PA2,
UART2_RX:PA3,
2.保證與ESP8266模塊的管腳接線正確:
V3.3(接開發(fā)板3.3V);
GND(接開發(fā)板GND);
TX (接開發(fā)板的PA3管腳);
RX (接開發(fā)板的PA2管腳);
3.由于本次使用的ESP8266是原來機(jī)智云二代產(chǎn)品上的,可能正常聯(lián)上機(jī)智云,故沒有給ESP8266燒寫固件
上一篇:CC1101工作原理 基于與STM32的CC1101接口移植
下一篇:意法半導(dǎo)體的STM32F429微控制器上的一個μClinux項目實現(xiàn)
- 熱門資源推薦
- 熱門放大器推薦
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- LTC3806 反激式控制器改善了多輸出應(yīng)用的交叉調(diào)節(jié)
- BTS 723 GW智能高端電源開關(guān)典型應(yīng)用電路
- 具有正電源的 LT3091HDE 500mA LED 驅(qū)動器的典型應(yīng)用
- SG3525A驅(qū)動功率場效應(yīng)管用于脈寬調(diào)制器控制電路的典型應(yīng)用
- LTC2945IMS-1 隔離式寬范圍 I2C 功率監(jiān)視器的典型應(yīng)用
- 用于 LED 照明的 DC 到 DC 單路輸出電源
- STEVAL-ILL015V2,基于 LED2472G 和 STM32 HB LED 驅(qū)動器的評估板,具有診斷功能
- 使用 ROHM Semiconductor 的 BD45471 的參考設(shè)計
- MAP9004,使用 MAP9004 高壓交流 LED 驅(qū)動器的典型應(yīng)用電路,用于 4 通道復(fù)合解決方案
- LTC3100,具有電壓排序功能的單節(jié)電池雙輸出轉(zhuǎn)換器
- 意法半導(dǎo)體推出先進(jìn)的 1600 V IGBT,面向高性價比節(jié)能家電市場
- EDPF-NT+分散控制系統(tǒng)網(wǎng)絡(luò)防護(hù)解決方案
- 基于PLC控制的易驅(qū)變頻器在布袋除塵器上的應(yīng)用
- 如何利用伺服自動化實現(xiàn)成本降低和產(chǎn)能最大化?
- 壓力傳感器有哪些抗干擾措施?
- 破局!補(bǔ)盲dToF固態(tài)激光雷達(dá)輪番“出手”,禾賽FT120也要靠邊
- 利用正壓送風(fēng)壓力傳感器自動控制火災(zāi)風(fēng)口壓力
- 多個傳感器間相互位置關(guān)系校準(zhǔn)方法
- 樓宇自控BA系統(tǒng)傳感器有哪些?
- 常見壓力傳感器工業(yè)原理匯總
- 證監(jiān)會:同意了南亞新材科創(chuàng)板的IPO注冊
- 英宣布禁用華為5G設(shè)備!外交部回應(yīng)
- “Wi-Fi 6”技術(shù)先行者!華為新商標(biāo)曝光
- 上海貝嶺:參股企業(yè)新潔能IPO獲得證監(jiān)會核準(zhǔn)
- 除息首日填息逾6成,聯(lián)電8英寸產(chǎn)能維持近乎滿載
- 三星有意收購汽車半導(dǎo)體公司,NXP、TI、瑞薩在列
- 十字路口上的“激光雷達(dá)”?。ǜ綍h議程)
- “摻硅補(bǔ)鋰”電池技術(shù),如何做到讓汽車?yán)m(xù)航超1000公里?
- 臺積電:優(yōu)先供應(yīng)“車用芯片”,業(yè)界反應(yīng):不現(xiàn)實
- Seoul Viosys推出新型垂直腔面發(fā)射激光器 可用于汽車激光雷達(dá)