機智雲接入教程(基於FreeRTOS)

說明

本教程是使用的STM32F103C8T6,並結合FreeRTOS和機智雲撰寫的教程。其中使用操作系統主要是爲了保證系統的穩定性,否則當邏輯複雜之後,很容易造成系統崩潰,並且在教程中提供了例程模板,大家可以基於該例程模板上就行修改,就可以用到自己的項目中了。該教程主要參照正點原子的教程所撰寫,感謝正點原子提供的技術資料。由於是第一次寫博客,可能有些寫得不太好,希望能理解。

WIFI固件燒寫

這裏使用的是正點原子的WIFI模塊,詳細資料請參照提供的正點原子的資料,這裏簡單的說明下,首先把WIFI模塊的IO_0接地之後,用串口轉TTL模塊將固件燒錄到WIFI模塊即可。固件打包在本教程所在文件夾的固件資料裏。這裏只貼一張地址配置圖(需要注意WIFI模塊的FLASH大小,推薦使用32Mbit的WIFI模塊,其他容量的可能會出現問題):

  1. 固件下載
    固件下載
  2. 固件燒寫
    機智雲固件燒寫有2種方式:
    第一種:第一種方式有4個部分,需要對地址進行配置,但是速度較快,我有幾次用這個方法更新的固件,有時候不能用,不知道具體原因。
    第二種:只有一個固件文件,該方式更新簡單,但是速度較慢。我主要是使用這種方法。
    在這裏插入圖片描述
    在這裏插入圖片描述

創建新產品

  1. 創建產品項目
    進入個人中心選擇創建新產品,填入相應的產品信息,這裏選擇WIFI模式。如下圖所示:
    在這裏插入圖片描述
    在這裏插入圖片描述
    最後點擊保存,生成項目。

  2. 創建數據結點
    點擊左側的數據點,然後根據提示創建並結合自己的需要創建數據點。提示:其中可讀,表示手機只能看,不能修改數據。可寫表示,手機既可以讀取單片機上傳的數據,還可以通過手機設置,例如開關信號。其它類型大家應該能看懂。
    同時,提醒大家,在創建完結點後,注意點擊編輯按鈕,將現實名稱改文中文,否則在手機上是默認顯示英文的。
    在這裏插入圖片描述

  3. 配置生成手機源代碼
    大家可以根據自己需求是否選擇需要手機源碼,這裏生成的源碼可以直接用於開發,整個工程是完整的,需要自己進行UI設計,使界面更加美觀。即使不生成手機源碼,也是可以通過機智雲一個公用的軟件進行使用。大家可以直接去應用市場下載“機智雲”這款APP就可以使用了。下面簡單介紹下手機源代碼的生成。
    首先選擇左邊欄的應用配置,根據提示選擇IOS或者安卓,然後在選擇左邊欄的應用開發,選擇之前創建數據節點的應用和填入Product Secret點擊左邊欄的基本信息,在基本信息找到Product Secret,輸入賬號密碼即可查看Product Secret),最後點擊生成代碼包,稍等幾十秒,即可產生應用的源代碼,根據自己能力,進行源代碼的修改,這裏不做介紹。
    在這裏插入圖片描述

  4. 配置MCU源代碼
    點擊左邊欄的MCU開發,在硬件平臺選擇其他平臺,然後輸入Product Secret,下載代碼包,在網頁端的操作就完成了,剩下就是導入工程,和開發自己的功能了。
    在這裏插入圖片描述

添加機智雲代碼到工程

  1. 拷貝機智雲代碼到工程文件中
    接下來將代碼包解壓之後,將Gizwits文件夾拷貝到工程模板(在打包的資料中找)目錄下,其他的不需要動,若是自己的工程的話,請參照正點原子提供的教程或者在代碼包有一個名稱爲MCU_COMMON_User_Guide _V0.5.PDF的開發文檔,完成串口,定時器的底層驅動代碼的導入。一般只需要導入Gizwits文件下里的內容就行了。因爲另一個已經導入例程代碼中了。
    在這裏插入圖片描述
  2. 修改工程源代碼
    打開Gizwits 目錄下的gizwits_product.c文件,根據自己需要添加頭文件:
    在這裏插入圖片描述
    打開Gizwits 目錄下的gizwits_product.c文件註釋掉整個void userHandle(void)函數,這一部分將放到APPTasks.c中完成。
    在這裏插入圖片描述void userInit(void) 根據實際需要進行初始化。
    在這裏插入圖片描述
    添加MCU復位函數(void mcuRestart(void))代碼

__set_FAULTMASK(1);
NVIC_SystemReset();
在這裏插入圖片描述
添加串口驅動函數(int32_t uartWrite(uint8_t *buf, uint32_t len)),這裏以串口2爲例,

for(i=0; i<len; i++)
{
//USART_SendData(UART, buf[i]);//STM32 test demo
//Serial port to achieve the function, the buf[i] sent to the module
USART_SendData(USART2,buf[i]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //循環發送,直到發送完畢
if(i >=2 && buf[i] == 0xFF)
{
//Serial port to achieve the function, the 0x55 sent to the module
//USART_SendData(UART, 0x55);//STM32 test demo
USART_SendData(USART2,0x55);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //循環發送,直到發送完畢
}
}
在這裏插入圖片描述
打開"gizwits_product.h"文件,添加函數申明void gizTimerMs(void);
在這裏插入圖片描述
在APPTasks.h中可以通過宏定義的形式來打開或者關閉機智雲服務,主要是用在調試模塊的時候用。默認開啓。
在這裏插入圖片描述
到此整個工程代碼修改完畢,接下來就是看工程的結構了。(本工程是以FreeRTOS進行編寫的)在該工程中加入了一些底層的驅動函數,可以根據實際需要進行增減,在main函數中,已經設計好了,一些工程邏輯,包括接入機智雲的處理任務,void gizwits_task(void *pvParameters);主要邏輯處理函數void function_task(void *pvParameters),這個函數調用了在APPTasks.c裏面的子函數,而幾乎所有的邏輯都是在APPTasks.c裏面實現的;按鍵處理任務void Key_task(void *pvParameters);OLED顯示任務void showUI_task(void *pvParameters);操作系統任務堆棧大小查看任務void Query_task(void *pvParameters);
在這裏插入圖片描述
若需要自己創建任務可以查看FreeRTOS任務創建那一塊。

任務功能介紹

  1. OLED顯示任務:
    DisplayUI,這裏主要是根據實際需要顯示一些想要的內容,由於機智雲使用的是全局變量,很方便數據的更新,因此可以在這裏實現一些需要的數據顯示。比如在這裏實現了項目名稱、時間、和溫溼度等的顯示。在codetab.h中可以添加漢字顯示代碼,實現漢字顯示的功能,
    在這裏插入圖片描述
  2. 按鍵處理任務(KeyTask.c)
    這個任務主要是處理用戶按鍵的接口,在這裏已經實現了機智雲連接路由器的處理,
    已經運行時間統計的用戶按鍵。使用者可以根據需要添加其他功能。
    在這裏插入圖片描述
  3. 主邏輯處理任務(APPTasks.c)
    在這裏包括系統功能初始化(void System_Init(void)),任務邏輯(void MainTask(void)),機智雲數據上傳(void userHandle(void))等。
    在這裏插入圖片描述
  4. 數據下行處理(APPTasks.c)
    前面介紹完主要的邏輯關係之後,現在介紹手機下行數據的處理,所謂數據下行處理,即處理手機下發的數據。打開gizwits_product.c文件,在int8_t gizwitsEventProcess(eventInfo_t *info, uint8_t *gizdata, uint32_t len)實現對手機下行數據的處理,(注意:在這裏一定、千萬不能使用延時功能,否則整個系統將崩潰,並且延時函數只能使用vTaskDelay(10);實現毫秒延時。)
    在這裏插入圖片描述
    因此在這裏主要處理一些開關量等簡單的功能,如果需要處理複雜的功能,請到主邏輯任務(void MainTask(void))中去處理。比如在這裏實現了水泵、加溼器等的控制。控制的代碼只需要在//user handle下面添加我們的邏輯代碼就可以了,其他不用關心。
    在這裏插入圖片描述

接入手機APP

  1. 接入說明
    這裏主要介紹Air_link模式,其它模式根據說明書操作。
    在前面功能介紹部分的按鍵任務中,已經設置了通過按下key_up按鍵進入Air_link模式。
    因此在我們已經準備好有路由器或者手機熱點(注意手機只能是2.4G模式,若是5G模式,請修改成2.4G模式,否則機智雲無法連接)的情況下,就可以通過手機接入機智雲了:
    在這裏插入圖片描述
  2. 接入步驟
    打開手機APP“我的設置”界面的右上角,點擊“+”下的“一鍵配置”按鈕,然後根據提示完成WIFI的設置,硬件選擇“樂鑫”就可以了。
    配置完成後,手機中將會出現之前在機智雲創建的項目名稱,並且顏色會變成黃色,離線之後將變成灰色。如下圖所示:
    在這裏插入圖片描述
    點擊項目名稱就進入控制界面,控制設備了。如下圖所示:
    在這裏插入圖片描述

資料鏈接

例程代碼:
以下給出來使用到的硬件鏈接:(說明:不是打廣告)
正點原子的WIFI模塊:鏈接:WIFI模塊資料鏈接
信德電子的OLED模塊:鏈接:OLED模塊資料鏈接
自己畫的一塊板子,裏面集成了WIFI、OLED、W25Q、蜂鳴器、LED、按鍵、NRF24L01等硬件:圖片:在這裏插入圖片描述
鏈接:原理圖鏈接
例程源代碼鏈接:機智雲接入教程和例程源代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章