簡介:本文將教大家如何使用STM32HAL庫快速開發和涂鴉WIFI模組通信,接入涂鴉云,
實作功能:通過APP實時監測溫濕度資料
程式下載路徑:demo程式,
demo(定時采集資料)程式,
一.使用STM32CubeMX創建一個新工程
1、如下圖創建一個新工程:

2、如下圖選擇自己現有的STM32開發板進行開發:

3、配置時鐘源
如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
如果使用默認內部時鐘(HSI),這一步可以略過;
下面工程我使用的是內部時鐘,因此這一步是不需要的,

4、配置串口
NUCLEO-L476RG板載ST-Link并且虛擬了一個串口,原理圖如下:

使PC的串口與USART2之間連接,(USART2為列印日志口,同時也作為程式下載口)
接下來開始如下圖配置USART2:

使用串口1和涂鴉模組WB3S通信(單片機和WB3S串口通信,采用透傳的模式),串口1配置如下圖所示:


5、配置IIC口
為了采集溫濕度的資料(SHT30),單片機采用IIC協議和溫濕度模塊進行通信,采用I2C2,配置如下圖所示:

6、配置時鐘樹
STM32L4的最高主頻到80M,所以配置PLL,最后使HCLK=80Mhz即可:

7、生產工程設定

8、代碼生成設定
最后設定生成獨立的初始化檔案:

9、生成代碼
點擊GENERATE CODE即可生成MDK-V5工程如下:

10.用KEIL5打開生成的代碼,然后開始添加自己要實作的功能函式,
二.SHT30驅動程式設計
(1)硬體設計
溫濕度檢測我們選取涂鴉的SHT30模塊來實作,涂鴉三明治溫濕度傳感功能板為三明治開發板的應用部分,方便開發者快速實作溫濕度硬體產品原型的一款開發板,功能板主要包含一顆 SENSIRION 溫濕度傳感器 SHT30-DIS,通過 I2C 協議進行通信,I2C時鐘頻率最高支持1MHz,

關鍵器件介紹
| 器件 | 說明 |
|---|---|
| U1(SHT30-DIS) | SENSIRION 溫濕度傳感器,作業電壓 2.4~5.5V,濕度精度 ±2%RH,溫度精度 ±0.3℃,封裝 8 腳 DFN |
涂鴉三明治溫濕度傳感功能板需要用到的管腳介紹
| I/O | 說明 |
|---|---|
| VCC | 電源供電腳 |
| GND | 電源參考地 |
| SCL | I2C時鐘信號 |
| SDA | I2C資料信號 |
| INT | 告警信號,預留 |
電源技術要求
-
電源供電電壓參照傳感器作業電壓范圍:2.4~5.5V
-
非測量狀態典型電流:0.2uA
-
低功耗連續測量模式典型電流:800uA
(1)原理圖
涂鴉三明治溫濕度傳感功能板的原理圖如下所示:

(2)PCB圖
涂鴉三明治溫濕度傳感功能板的 PCB 如下圖所示:

注意事項
-
功能板為應用部分,需配合控制板與電源板使用,
-
電源介面不要觸碰 I/O 管腳,避免擊穿模塊對應 I/O 口,
-
傳感器本體附著灰塵與油污等會導致測量精度下降,
-
傳感器本體不能與清潔劑接觸,例如洗板水,
-
不能使用會釋放化學分子的材料包裝,否則可能受污染導致資料偏移或完全損壞,
(2)軟體設計
為了測量溫濕度,選取涂鴉的SHT30溫濕度模塊來實作,STM32通過硬體I2C與之通信,
呼叫SHT3x_reset復位模塊:
/** * @brief 復位SHT30 * @param none * @retval none */ void SHT3x_Reset(void) { SHT3x_Send_Cmd(SOFT_RESET_CMD); HAL_Delay(20); }呼叫SHT3x_Init初始化模塊:
/* 描述:SHT3x初始化函式,并將其設定為周期測量模式 * 引數:無 * 回傳值:初始化成功回傳0,初始化失敗回傳1 */ uint8_t SHT3x_Init(void) { uint8_t ret; ret = SHT3x_Send_Cmd(MEDIUM_2_CMD); return ret; }呼叫 SHT3x_Get_Humiture_periodic獲取溫濕度值:
/* 描述:溫濕度資料獲取函式,周期讀取,注意,需要提前設定周期模式 * 引數Tem_val:存盤溫度資料的指標, 溫度單位為°C * 引數Hum_val:存盤濕度資料的指標, 溫度單位為% * 回傳值:0-讀取成功,1-讀取失敗 ********************************************************************/ uint8_t SHT3x_Get_Humiture_periodic(double *Tem_val,double *Hum_val) { uint8_t ret=0; uint8_t buff[6]={0}; uint16_t tem,hum; double Temperature=0; double Humidity=0; ret=SHT3x_Send_Cmd(READOUT_FOR_PERIODIC_MODE); Delay_us(4); ret=HAL_I2C_Master_Receive(&hi2c2, SHT3x_ADDR_READ, buff, 6, 0xFFFF); /* 校驗溫度資料和濕度資料是否接收正確 */ if(CheckCrc8(buff, 0xFF) != buff[2] || CheckCrc8(&buff[3], 0xFF) != buff[5]) { printf("CRC_ERROR,ret = 0x%x\r\n",ret); return 1; } /* 轉換溫度資料 */ tem = (((uint16_t)buff[0]<<8) | buff[1]);//溫度資料拼接 Temperature= (175.0*(double)tem/65535.0-45.0) ; // T = -45 + 175 * tem / (2^16-1) /* 轉換濕度資料 */ hum = (((uint16_t)buff[3]<<8) | buff[4]);//濕度資料拼接 Humidity= (100.0*(double)hum/65535.0); // RH = hum*100 / (2^16-1) /* 過濾錯誤資料 */ if((Temperature>=-20)&&(Temperature<=125)&&(Humidity>=0)&&(Humidity<=100)) { *Tem_val = Temperature; *Hum_val = Humidity; return 0; } else return 1; }
三.平臺產品創建
??進入涂鴉智能IoT平臺,點擊創建產品,這里不用糾結產品品類的選擇,重點是為了拿到MCU-SDK檔案,實際使用時可以根據具體的產品修改sdk內部的pid即可適配自己的產品,
例如:點擊創建產品,選擇標準類目->電工->開關,(當時為了測驗用,所以選擇一個標準類目,也可以在平臺上選擇其它品類去創建也是可以的)

-
選擇自定義方案,輸入產品名稱,選擇通訊協議為WIFI+藍牙,點擊創建產品,
-
根據要實作的設備功能,創建好DP功能點,

-
創建好DP點之后,點擊設備面板,選擇自由配置面板,方便開發除錯,也可以選擇其它的面板,


-
面板創建好之后,點擊硬體開發,對接方式選擇“涂鴉標準模組MCU SDK開發”,模組選擇WB3S Wi-Fi&Bluetooth模組(在實際開發程序中可選擇手上已有的涂鴉模組即可),韌體選擇通用韌體,


四.MCU SDK移植
平臺產品創建完之后,我們會獲取到一個MCU SDK包,之后就可以快速移植到MCU了,
在解壓后的檔案夾中找到mcu_sdk相關源檔案和頭檔案,全部拷貝到我們創建好的工程模板里的MCU_SDK檔案夾里;打開上面創建好的工程,將mcu_sdk的源檔案添加進對應組里,同時添加include paths:

點擊編譯,會崩出幾個error,接下來就需要按照出error的地方注釋提示一步步修改代碼,

uart_receive_input()為串口接收資料處理介面,只需將它放進串口中斷即可,這里我們以串口1作為與模組通訊串口,除錯中把串口2作為日志口,首先在main函式中添加串口1和串口2初始化代碼,并使能接收中斷(接收使能中斷已在串口初始化函式中體現):


-
然后在stm32l4xx_it.c檔案中添加中斷處理函式,然后包含 mcu_api.h檔案并將
uart_receive_input()介面添加進去,添加完成后,洗掉error注釋即可:

再來看下一個errror,由于我們上一步已經通過中斷接收的形式實作了串口資料接收處理了,這個多位元組處理我們可以不用,直接把error注釋洗掉即可,

下一個errror:

按照提示將該介面放在main函式的while回圈內即可,別忘了在 main.c 中包含 wifi.h 頭檔案,

再來看下一個error:

同樣的,按照提示將該函式放到main函式開頭部分即可,

然后是串口發送相關:

這里只需實作串口1的資料發送函式然后放進去即可,使用STM32 HAL庫里面的串口單位元組發送函式,以阻塞方式發送資料量,添加代碼如下:


然后是DP資料點上報相關的:
這里我們可以直接注釋掉error提示,在實際開發程序中再實作該功能即可,

以下在主函式里面,添加溫度和濕度上報的資料,這里可以改成自己想要上報傳感器的資料,

最后是產測相關的:

一般開發者不涉及生產測驗的話直接洗掉注釋不用管就行,
下圖這個紅色標出的函式是進行配網的,通過NUCLEO-L476開發板上的用戶按鍵進行配網連接,

修改完上述幾處地方后,再次編譯,顯示error全部消除,至此涂鴉MCU SDK就已移植完畢,后續可使用涂鴉模組除錯助手進行測驗,涂鴉模組除錯助手的使用方法可參考除錯助手檔案,
五.實驗樣機測驗展示

通過之前配置好的面板,通過涂鴉智能APP進行配網實時采集溫濕度傳感器的資料,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/301362.html
標籤:其他
下一篇:292. Nim 游戲【找規律】
