本教程是使用的STM32F103C8T6,并結(jié)合FreeRTOS和機智云撰寫的教程。其中使用操作系統(tǒng)主要是為了保證系統(tǒng)的穩(wěn)定性,否則當邏輯復(fù)雜之后,很容易造成系統(tǒng)崩潰,并且在教程中提供了例程模板,大家可以基于該例程模板上就行修改,就可以用到自己的項目中了。該教程主要參照正點原子的教程所撰寫,感謝正點原子提供的技術(shù)資料。由于是第一次寫博客,可能有些寫得不太好,希望能理解。
1、WIFI固件燒寫
這里使用的是正點原子的WIFI模塊,詳細資料請參照提供的正點原子的資料,這里簡單的說明下,首先把WIFI模塊的IO_0接地之后,用串口轉(zhuǎn)TTL模塊將固件燒錄到WIFI模塊即可。固件打包在本教程所在文件夾的固件資料里。這里只貼一張地址配置圖(需要注意WIFI模塊的FLASH大小,推薦使用32Mbit的WIFI模塊,其他容量的可能會出現(xiàn)問題):
1.1 固件下載
1.2 固件燒寫
機智云固件燒寫有2種方式:
第一種:第一種方式有4個部分,需要對地址進行配置,但是速度較快,我有幾次用這個方法更新的固件,有時候不能用,不知道具體原因。
第二種:只有一個固件文件,該方式更新簡單,但是速度較慢。我主要是使用這種方法。
2、創(chuàng)建新產(chǎn)品
2.1 創(chuàng)建產(chǎn)品項目
進入個人中心選擇創(chuàng)建新產(chǎn)品,填入相應(yīng)的產(chǎn)品信息,這里選擇WIFI模式。如下圖所示:
最后點擊保存,生成項目。
2.2 創(chuàng)建數(shù)據(jù)結(jié)點
點擊左側(cè)的數(shù)據(jù)點,然后根據(jù)提示創(chuàng)建并結(jié)合自己的需要創(chuàng)建數(shù)據(jù)點。
同時,提醒大家,在創(chuàng)建完結(jié)點后,注意點擊編輯按鈕,將現(xiàn)實名稱改文中文,否則在手機上是默認顯示英文的。
注釋說明:
可讀:表示手機只能看,不能修改數(shù)據(jù)。
可寫:手機既可以讀取單片機上傳的數(shù)據(jù),還可以通過手機設(shè)置,例如開關(guān)信號。
3、配置生成手機源代碼
大家可以根據(jù)自己需求是否選擇需要手機源碼,這里生成的源碼可以直接用于開發(fā),整個工程是完整的,需要自己進行UI設(shè)計,使界面更加美觀。即使不生成手機源碼,也是可以通過機智云一個公用的軟件進行使用。大家可以直接去應(yīng)用市場下載“機智云”這款A(yù)PP就可以使用了。下面簡單介紹下手機源代碼的生成。
首先選擇左邊欄的應(yīng)用配置,根據(jù)提示選擇IOS或者安卓,然后在選擇左邊欄的應(yīng)用開發(fā),選擇之前創(chuàng)建數(shù)據(jù)節(jié)點的應(yīng)用和填入Product Secret(點擊左邊欄的基本信息,在基本信息找到Product Secret,輸入賬號密碼即可查看Product Secret),最后點擊生成代碼包,稍等幾十秒,即可產(chǎn)生應(yīng)用的源代碼,根據(jù)自己能力,進行源代碼的修改,這里不做介紹。
4、配置MCU源代碼
點擊左邊欄的MCU開發(fā),在硬件平臺選擇其他平臺,然后輸入Product Secret,下載代碼包,在網(wǎng)頁端的操作就完成了,剩下就是導(dǎo)入工程,和開發(fā)自己的功能了。
5、添加機智云代碼到工程拷貝機智云代碼到工程文件中,將代碼包解壓,之后,將Gizwits文件夾拷貝到工程模板(在打包的資料中找)目錄下,其他的不需要動。若是自己的工程的話,請參照正點原子提供的教程或者在代碼包有一個名稱為MCU_COMMON_User_Guide _V0.5.PDF的開發(fā)文檔,完成串口,定時器的底層驅(qū)動代碼的導(dǎo)入。一般只需要導(dǎo)入Gizwits文件下里的內(nèi)容就行了。因為另一個已經(jīng)導(dǎo)入例程代碼中了。
5.2 修改工程源代碼
打開Gizwits 目錄下的gizwits_product.c文件,根據(jù)自己需要添加頭文件:
打開Gizwits 目錄下的gizwits_product.c文件,注釋掉整個void userHandle(void)函數(shù),這一部分將放到APPTasks.c中完成。
void userInit(void) 根據(jù)實際需要進行初始化。
添加MCU復(fù)位函數(shù)(void mcuRestart(void))
__set_FAULTMASK(1);NVIC_SystemReset();
添加串口驅(qū)動函數(shù)(int32_t uartWrite(uint8_t *buf, uint32_t len)),這里以串口2為例,
for(i=0; i{//USART_SendData(UART, buf);//STM32 test demo//Serial port to achieve the function, the buf sent to the moduleUSART_SendData(USART2,buf);while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢if(i >=2 && buf == 0xFF){//Serial port to achieve the function, the 0x55 sent to the module//USART_SendData(UART, 0x55);//STM32 test demoUSART_SendData(USART2,0x55);while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //循環(huán)發(fā)送,直到發(fā)送完畢}}
打開 gizwits_product.h 文件,添加函數(shù)申明 void gizTimerMs(void);
在APPTasks.h中可以通過宏定義的形式來打開或者關(guān)閉機智云服務(wù),主要是用在調(diào)試模塊的時候用。默認開啟。
到此整個工程代碼修改完畢,接下來就是看工程的結(jié)構(gòu)了。
本工程是以FreeRTOS進行編寫的,在該工程中加入了一些底層的驅(qū)動函數(shù),可以根據(jù)實際需要進行增減,在main函數(shù)中,已經(jīng)設(shè)計好了。
一些工程邏輯,包括接入機智云的處理任務(wù),void gizwits_task(void *pvParameters);
主要邏輯處理函數(shù) void function_task(void *pvParameters) ;這個函數(shù)調(diào)用了在APPTasks.c里面的子函數(shù),而幾乎所有的邏輯都是在APPTasks.c里面實現(xiàn)的;
按鍵處理任務(wù) void Key_task(void *pvParameters);OLED顯示任務(wù) void showUI_task(void *pvParameters);操作系統(tǒng)任務(wù)堆棧大小查看任務(wù) void Query_task(void *pvParameters);
若需要自己創(chuàng)建任務(wù)可以查看FreeRTOS任務(wù)創(chuàng)建那一塊。
6、任務(wù)功能介紹
6.1 OLED顯示任務(wù):
DisplayUI,這里主要是根據(jù)實際需要顯示一些想要的內(nèi)容,由于機智云使用的是全局變量,很方便數(shù)據(jù)的更新,因此可以在這里實現(xiàn)一些需要的數(shù)據(jù)顯示。比如在這里實現(xiàn)了項目名稱、時間、和溫濕度等的顯示。在codetab.h中可以添加漢字顯示代碼,實現(xiàn)漢字顯示的功能,
6.2 按鍵處理任務(wù)(KeyTask.c)
這個任務(wù)主要是處理用戶按鍵的接口,在這里已經(jīng)實現(xiàn)了機智云連接路由器的處理,
已經(jīng)運行時間統(tǒng)計的用戶按鍵。使用者可以根據(jù)需要添加其他功能。
6.3 主邏輯處理任務(wù)(APPTasks.c)
在這里包括:
系統(tǒng)功能初始化(void System_Init(void)),
任務(wù)邏輯(void MainTask(void)),
機智云數(shù)據(jù)上傳(void userHandle(void))等。
6.4 數(shù)據(jù)下行處理(APPTasks.c)
前面介紹完主要的邏輯關(guān)系之后,現(xiàn)在介紹手機下行數(shù)據(jù)的處理,所謂數(shù)據(jù)下行處理,即處理手機下發(fā)的數(shù)據(jù)。
打開gizwits_product.c文件,
在 int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len) 實現(xiàn)對手機下行數(shù)據(jù)的處理
注意:在這里一定、千萬不能使用延時功能,否則整個系統(tǒng)將崩潰,并且延時函數(shù)只能使用vTaskDelay(10);實現(xiàn)毫秒延時。
因此在這里主要處理一些開關(guān)量等簡單的功能,如果需要處理復(fù)雜的功能,請到主邏輯任務(wù)(void MainTask(void))中去處理。比如在這里實現(xiàn)了水泵、加濕器等的控制??刂频拇a只需要在//user handle下面添加我們的邏輯代碼就可以了,其他不用關(guān)心。
7、接入手機APP
7.1 接入說明
這里主要介紹Air_link模式,其它模式根據(jù)說明書操作。在前面功能介紹部分的按鍵任務(wù)中,已經(jīng)設(shè)置了通過按下key_up按鍵進入Air_link模式。
因此在我們已經(jīng)準備好有路由器或者手機熱點(注意手機只能是2.4G模式,若是5G模式,請修改成2.4G模式,否則機智云無法連接)的情況下,就可以通過手機接入機智云了:
7.2 接入步驟
打開手機APP“我的設(shè)置”界面的右上角,點擊“+”下的“一鍵配置”按鈕,然后根據(jù)提示完成WIFI的設(shè)置,硬件選擇“樂鑫”就可以了。
配置完成后,手機中將會出現(xiàn)之前在機智云創(chuàng)建的項目名稱,并且顏色會變成黃色,離線之后將變成灰色。如下圖所示:
點擊項目名稱就進入控制界面,控制設(shè)備了。如下圖所示:
-
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62139 -
機智云
+關(guān)注
關(guān)注
2文章
587瀏覽量
26392
發(fā)布評論請先 登錄
相關(guān)推薦
評論