色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 「超級干貨」STM32CubeMX學(xué)習(xí)教程之硬件I2C讀取光照度

          「超級干貨」STM32CubeMX學(xué)習(xí)教程之硬件I2C讀取光照度

          發(fā)布人:智能物聯(lián)研習(xí)社 時間:2021-09-29 來源:工程師 發(fā)布文章

          使用STM32 HAL庫讀寫環(huán)境光照度傳感器(BH1750)

          本文將教大家如何快速使用STM32HAL庫讀取光照度數(shù)據(jù)。


          實(shí)現(xiàn)功能:通過App實(shí)時監(jiān)測光照度數(shù)據(jù)。


          五分鐘免費(fèi)構(gòu)建物聯(lián)網(wǎng)應(yīng)用,立即免費(fèi)體驗(yàn):

           https://auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  


          一.使用STM32CubeMX創(chuàng)建一個新工程

          1.如下圖創(chuàng)建一個新工程:

          image-20210828120739333



          2.如下圖選擇自己現(xiàn)有的STM32開發(fā)板進(jìn)行開發(fā):

          image-20210828115324329



          3.配置時鐘源


          如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;


          如果使用默認(rèn)內(nèi)部時鐘(HSI),這一步可以略過;


          下面工程我使用的是內(nèi)部時鐘,因此這一步是不需要的。

          image-20210828114418492



          4.配置串口


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

          image-20210828115452591



          使PC的串口與USART2之間連接。(打印日志口,同時也作為程序下載口)


          接下來開始如下圖配置USART2:



          image-20210828115626599

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


          image-20210828115749857image-20210828120005508




          5.配置IIC口


          為了采集光照度數(shù)據(jù)(BH1750),單片機(jī)采用I2C協(xié)議和光照度模塊進(jìn)行通信,采用I2C1,配置如下圖所示:

          image-20210831142209738



          6.配置時鐘樹


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


          image-20210826180846723


          7.生產(chǎn)工程設(shè)置


          image-20210831142511954


          8.代碼生成設(shè)置


          最后設(shè)置生成獨(dú)立的初始化文件:


          image-20210826161522477


          9.生成代碼


          點(diǎn)擊GENERATE CODE即可生成MDK-V5工程如下:

          image-20210826162035145



          10.用KEIL5打開生成的代碼,然后開始添加自己要實(shí)現(xiàn)的功能函數(shù)。


          二.BH1750驅(qū)動程序設(shè)計

          1.硬件設(shè)計

          BH1750 照度檢測模塊搭載一個BH1750FVI,BH1750FVI是兩線式串行總線接口(IIC)的16位數(shù)字輸出型環(huán)境光強(qiáng)度傳感器,利用它的高分辨率可以探測較大范圍內(nèi)的光照強(qiáng)度變化(1lx - 65535lx)。


          BH1750的實(shí)物圖如下:


          image-20210831150108972

          BH1750的原理圖如下:

          image-20210831145811207


          管腳介紹


          名稱VCCGNDSCLSDAADDR

          功能描述3~5V供電參考地IIC時鐘線IIC數(shù)據(jù)線地址線

          2.軟件設(shè)計

          參考BH1750FVI數(shù)據(jù)手冊進(jìn)行編程。


          BH1750的器件地址由ADDR端口的高低電平?jīng)Q定。

          image-20210831151712403


          驅(qū)動程序底層使用 HAL 庫的 IIC 初始化文件,包含如下頭文件:


          image-20210831151922533

          發(fā)送命令的函數(shù)如下:

          image-20210831152009275


          接收光照強(qiáng)度數(shù)據(jù)的函數(shù)如下:

          image-20210831152106961


          根據(jù)數(shù)據(jù)手冊中給出的公式,編寫將從BH1750讀出的兩個字節(jié)數(shù)據(jù)轉(zhuǎn)換為對應(yīng)強(qiáng)度值的函數(shù)(數(shù)據(jù)轉(zhuǎn)換函數(shù)):



          驅(qū)動程序設(shè)計完成之后就可以開始進(jìn)行聯(lián)網(wǎng)功能的設(shè)計了。


          三.平臺產(chǎn)品創(chuàng)建

          ??進(jìn)入涂鴉智能IoT平臺點(diǎn)擊“創(chuàng)建產(chǎn)品”(點(diǎn)擊以下鏈接)。這里不用糾結(jié)產(chǎn)品品類的選擇,重點(diǎn)是為了拿到MCU-SDK文件,實(shí)際使用時可以根據(jù)具體的產(chǎn)品修改sdk內(nèi)部的pid即可適配自己的產(chǎn)品。


           auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  


          例如:點(diǎn)擊創(chuàng)建產(chǎn)品,選擇標(biāo)準(zhǔn)類目>電工>開關(guān)。

          (當(dāng)時為了測試用,所以選擇一個標(biāo)準(zhǔn)類目,也可以在平臺上選擇其它品類去創(chuàng)建也是可以的)



          image-20210823115534415

          選擇自定義方案,輸入產(chǎn)品名稱,選擇通訊協(xié)議為WIFI+藍(lán)牙,點(diǎn)擊創(chuàng)建產(chǎn)品。


          根據(jù)要實(shí)現(xiàn)的設(shè)備功能,創(chuàng)建好DP功能點(diǎn)。

          image-20210831142658185



          創(chuàng)建好DP點(diǎn)之后,點(diǎn)擊設(shè)備面板,選擇自由配置面板,方便開發(fā)調(diào)試,也可以選擇其它的面板。

          image-20210828102747617


          面板創(chuàng)建好之后,點(diǎn)擊硬件開發(fā),對接方式選擇“涂鴉標(biāo)準(zhǔn)模組MCU SDK開發(fā)”,模組選擇WB3S Wi-Fi&Bluetooth模組(在實(shí)際開發(fā)過程中可選擇手上已有的涂鴉模組即可),固件選擇通用固件。


          image-20210827104014520image-20210831143049655

          四.MCU SDK移植

          平臺產(chǎn)品創(chuàng)建完之后,我們會獲取到一個MCU SDK包,之后就可以快速移植到MCU了。

          在解壓后的文件夾中找到mcu_sdk相關(guān)源文件和頭文件,全部拷貝到我們創(chuàng)建好的工程模板里的MCU_SDK文件夾里;打開上面創(chuàng)建好的工程,將mcu_sdk的源文件添加進(jìn)對應(yīng)組里,同時添加include paths:

          image-20210531160912620


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


          image-20210531162650067

          uart_receive_input()為串口接收數(shù)據(jù)處理接口,只需將它放進(jìn)串口中斷即可,這里我們以串口1作為與模組通訊串口,調(diào)試中把串口2作為日志口,首先在main函數(shù)中添加串口1和串口2初始化代碼,并使能接收中斷(接收使能中斷已在串口初始化函數(shù)中體現(xiàn)):



          20210907171737319


          然后在stm32l4xx_it.c文件中添加中斷處理函數(shù),然后包含 mcu_api.h文件并將uart_receive_input()接口添加進(jìn)去,添加完成后,刪除error注釋即可:



          image-20210828104429211image-20210531162737760



          再來看下一個errror,由于我們上一步已經(jīng)通過中斷接收的形式實(shí)現(xiàn)了串口數(shù)據(jù)接收處理了,這個多字節(jié)處理我們可以不用,直接把error注釋刪除即可。

          image-20210531162850680


          下一個errror:


          image-20210531163026617

          按照提示將該接口放在main函數(shù)的while循環(huán)內(nèi)即可,別忘了在 main.c 中包含 wifi.h 頭文件。


          image-20210831143209965

          再來看下一個error:


          image-20210531163323771

          同樣的,按照提示將該函數(shù)放到main函數(shù)開頭部分即可。


          image-20210831143300925

          然后是串口發(fā)送相關(guān):

          image-20210531163756239


          這里只需實(shí)現(xiàn)串口1的數(shù)據(jù)發(fā)送函數(shù)然后放進(jìn)去即可。使用STM32 HAL庫里面的串口單字節(jié)發(fā)送函數(shù),以阻塞方式發(fā)送數(shù)據(jù)量,添加代碼如下:



          image-20210828105450016image-20210828105352813


          然后是DP數(shù)據(jù)點(diǎn)上報相關(guān)的:

          這里我們可以直接注釋掉error提示,在實(shí)際開發(fā)過程中再實(shí)現(xiàn)該功能即可。


          image-20210828105606863


          以下在主函數(shù)里面,添加光照度上報的數(shù)據(jù)。這里可以改成自己想要上報傳感器的數(shù)據(jù)。


          image-20210901155930522

          最后是產(chǎn)測相關(guān)的:



          一般開發(fā)者不涉及生產(chǎn)測試的話直接刪除注釋不用管就行。


          下圖這個紅色標(biāo)出的函數(shù)是進(jìn)行配網(wǎng)的,通過NUCLEO-L476開發(fā)板上的用戶按鍵進(jìn)行配網(wǎng)連接。


          image-20210831143448232


          修改完上述幾處地方后,再次編譯,顯示error全部消除,至此涂鴉MCU SDK就已移植完畢,后續(xù)可使用涂鴉模組調(diào)試助手進(jìn)行測試。涂鴉模組調(diào)試助手的使用方法可參考調(diào)試助手文檔。


          五.實(shí)驗(yàn)樣機(jī)測試展示

          image-20210831145405075

          通過之前配置好的面板,通過涂鴉智能APP進(jìn)行配網(wǎng)實(shí)時采集光照度傳感器的數(shù)據(jù)。

          image-20210831143630604

          五分鐘免費(fèi)構(gòu)建物聯(lián)網(wǎng)應(yīng)用,立即免費(fèi)體驗(yàn):

           https://auth.tuya.com/?_source=7c8653b7bd61bf9239a1a6c12e52124d  



          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: 嵌入式 工程師 STM32

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉