▲ 更多精彩內容 請點擊上方 藍字 關注我們吧!
在物聯網應用中,無線是不可或缺的一環,而這些應用不僅對功耗很敏感,對于成本也很嚴格。目前,絕大廠商都有自己的無線MCU產品,每家無線MCU各具特色,也是競爭比較激烈的一塊市場。
不過,雖然說工程師選擇變多了,但也容易眼花繚亂。在實際開發中,也有會面對許多問題。今天,我們就“下了血本”,搞到一些形態各異的無線開發板,包括藍牙、Wi-Fi或者藍牙帶CAN的開發板,讓工程師實際上手試用產品,并給出自己的實際開發體驗。
Beetle ESP32 C6迷你開發板測評
作者:DavidZH
更多相關測評:https://www.eeworld.com.cn/a9yLaLG
開 箱
有幸獲得EEWORLD 的FireBeetle 2 ESP32 C6 Mini 開發板, 和一個一元硬幣的大小差不多,這么小的板子看看隱藏了多大的智慧;
一、板載資源了解
正面可以看見一個RST 復位按鍵+一個BOOT 按鍵,采用TYPE-C 口方式;反面則集成鋰電池充電管理芯片TP4057 和LDO RT9080;
通過資料了解FireBeetle 2 ESP32 C6 Mini 是采用樂鑫的ESP32C6 20MHZ 的WIFI 6 ,且支持TWT 的低功耗,因此板載的預留BAT 接口,可以對WIFI 6 的低功耗特性進行測試;
外圍的晶振配合電容組成了最小系統;
二、板載外設
麻雀雖小,五臟俱全;FireBeetle 2 ESP32 C6 Mini 雖然體積小,但外設資源卻不少;
如圖所示可以看出ADC, UART, I2C, SPI, JTAG.SDIO 都有,雖然采用復用,對于單獨進行驗證芯片還是不錯的選擇;
按照如上的外設資源進行逐個驗證。
三、 MCU 資源
FireBeetle 2 ESP32 C6 Mini 的最大特點是采用ESP32 C6, WIFI6 的特性中有TWT 的低功耗,相對于WIFI 4或者WIFI5 在IOT 的應用中有天然優勢;
另外該芯片支持多種協議,在后期進行Matter over wifi 或者Matter over Thread 也是不錯的選擇,但具體是否能有描述的這么第的功耗,需要進一步驗證;
搭載ESP32-C6芯片,支持Wi-Fi、BLE、Zigbee、Thread通訊協議
支持Wi-Fi 6協議,更低延遲,更低功耗
超低功耗,deep-sleep 14uA
集成鋰電池充電功能
支持電池電壓檢測,了解設備電量信息
主控ESP32 C6 支持的無線 特性如下:
WIFI協議:IEEE 802.11b/g/n/ax
IEEE 802.11ax (20 MHz-only non-AP mode)
WIFI頻寬:2.4 GHz 頻帶支持 20 MHz 和 40 MHz 頻寬
WIFI模式:Station 模式、SoftAP 模式、SoftAP+Station 模式和混雜模式
WIFI頻率:2.4GHz
幀聚合: TX/RX A-MPDU, TX/RX A-MSDU
藍牙
藍牙協議:Bluetooth 5、Bluetooth mesh
藍牙頻率:125 Kbps、500 Kbps、1 Mbps、2 Mbps
目前依然是延續了樂鑫的產品,WiFi+藍牙的SOC; 對于是否支持WiFi的WPA3 加密,以及相關應用協議的支持和藍牙5 支持的應用有待探索。
Arduino 開發環境搭建
FireBeetle 2 ESP32 C6 Mini 采用的是樂鑫ESP32 C6 ,主要的開發環境有如下幾種;
ESP-IDF+VSCODE
ESP-IDF+Platform IO
Micropython 及其類似
Arduino
以上四種方式都可以對ESP32-C6 進行軟件開發和驗證, 主要看自己的熟悉程度;
以下以Arduino 為IDE 的開發環境進行搭建;主要是官方和第三方都有非常多庫可以直接用;
一、安裝Arduino 開發環境;
在Arduino 官方下載,選擇V2.3 以上版本,否則無法支持到ESP32 C6 芯片;
二、安裝ESP32-C6 的相關支持;
在開發板中選擇ESP32 然后安裝3.0 的版本;3.0 的版本才支持ESP32 C6, 更新會花費很長時間, 由于網絡原因可能要很久;
可以在Windows 的Microsoft store 中安裝Watt Tookit 工具,可以加速, 具體功能自行研究。
三、Arduino 的配置:
將Beetle ESP32 C6 Mini Mini 通過TypeC 口與PC 相連;打開Arduino 后進行配置;
1、選擇開發板類型和COM 口;
在文件-示例中可以看見相關例子;
在工具中有燒錄的相關配置,一般默認就可以;
新建工程BeetleESP32C6 保存;會出現:BeetleESP32C6 和libraries 文件夾,前者放ino 的編程文件, 后者放庫文件(IDE 自己安裝的庫或者第三方庫都可以)
工程文件:
點擊下載,即可以完成將生成的可執行文件下載到ESP32 C6;
我們可以發現Arduino 的工程目錄下并沒有生成可執行文件, 需要進行如下操作;
在工具-導出已經編譯的二進制文件;
此時在工作目錄下就有生成相應的可執行文件;可以采用樂鑫的官方工具進行燒錄;
還有就是如果按照官方的開發板支持包,可以在Arduino 中直接尋找,不用在網上胡亂搜索;在首選項->其他開發板管理;
連接Beetle ESP32 C6 Mini 與USB 轉UART 功能;
外設之 SPI 驅動ST7789 TFT
Beetle ESP32 C6 Mini 的SPI 外設有一組硬件的資源如下:
SCK->GPIO23
MOSI->GPIO22
MISO->GPIO21
CS 則可以設計為任何其他GPIO 管腳;
對于TFT 屏幕驅動,一般會選擇LVGL+TFT_eSPI 實現,通過查詢可以知道TFT_eSPI 目前還沒有支持到Esp32-C6 所有直接采用ST7789 庫來驅動。
總結:對于驅動屏幕而言,最好是采用RTOS+GUI 進行事件調度。
N32WB45xL-EVB全功能評估板測評
作者:yang8555u
更多相關測評:https://www.eeworld.com.cn/aKqnjr5
一、開箱
前幾日收到了寄過來的開發板,今日終于有空來做一個開發板的分享。
拆開快遞后,是一個印有國民技術商標的白色紙盒,內附國民技術的開發板N32WB452一枚及配件USB-A轉USB MINIUSB連接線。
包裹的紅色泡沫棉我已經去掉啦,開發板到手很開心,開箱圖如下:
可以看到開發板已經板載了NS-LINK調試器(在左下角),左側中部區域則是開發板的主控,N32WB452LEQ6,QFN88腳封裝。板子上還自帶藍牙天線、觸摸按鍵、多路LED燈、蜂鳴器、SPI-FLASH、電位器等一系列外設,方便用戶評估開發板的各項外色號,如GPIO,I2C,SPI,BLE,UART等等。N32WB452LEQ6作為一個雙核MCU,為M4+M0的架構,主頻最大可達144MHz,144KB的RAM和512KB的ROM,可謂資源豐富,非常適合做智能指紋鎖、藍牙網關等應用。
開發板正面圖如下:
開發板反面圖如下:
二、下載配套資料
在國民技術的FTP站點中(ftp://58.250.18.138),可以下載N32WB452的各項資料。
以WIN10為例,在此電腦中添加網絡位置
點擊后,填寫ftp://58.250.18.138/:
一路點下來,并命名好,即可看到文件夾:
開發板的相關資料在ftp://58.250.18.138/國民技術產品資料/無線連接產品/N32WB452xx_V2.0.0
將其復制到本地電腦中即可。
三、運行例程
keil默認大家都會裝,就不再說明,本次我用的是MDK 5.37版本。
在如圖所示目錄中,安裝開發板的Keil支持包,即Nationstech.N32WB452_DFP.1.0.3.pack
安裝完畢后,打開RT-Thread例程,RT_Thread1_ThreadCreation,雙擊工程文件,并運行:
在左側APP目錄中,添加printf打印函數,以方便觀察程序運行時間
在使用USB數據線連接開發板后,編譯并下載至開發板,即可看到D1/D10兩個LED燈交替閃爍,并在串口調試助手中有數據打印出:
串口助手界面:
成功!例程已經成功運行在開發板上了!
在RT-Thread完整版中點燈及ADC的使用
上一次發帖,我曾經請教過論壇里的各位,想試圖找到N32WB452的RT-Thread的完整版系統SDK,可惜收獲的回答是No。在獲得這個回答后,曾考慮過移植RT-Thread到N32WB452上,但發現,RTThread的官方移植的N32G457的SDK也是可以直接下到N32WB452里的,個人推測因為都是國民技術的芯片,且寄存器、處理器內核都是一樣的,所以能通用。當然了,N32WB452對比N32G457,多出了藍牙外設,藍牙外設的有關例程暫時只支持keil,不支持RT-Thread Studio,我嘗試移植藍牙組件到RT-Thread SDK下使用,暫時沒有成功,因為牽涉到太多文件的修改,這個就放在后期再做嘗試。
回到主題,本期及后幾期帖子,都會評測RT-Thead在N32WB452上的相關運行實驗。
##一、創建工程
在RT-Thread官網,下載RT-Thread Studio,并在SDK管理器中,下載N32G45X的開發板支持包,如圖所示:
下載完成后,即可創建RT-Thread新工程,如圖:
##二、修改工程文件
在board.h中,修改FLASH大小為512,如圖:
打開drv_gpio.c文件,將PIN_NUBERS一欄由64改為100,否則,某些引腳我們想使用的時候將找不到,如圖:
##三、GPIO的使用
參考N32WB452的原理圖,可以知道在開發板中央的四個LED燈D1/D10/D11/D12和輕觸按鈕K04的位號及對應連接的引腳,考慮到使用方便,我們將其在main.c中預先聲明。
可見我們已經聲明了對應的引腳,這些對應數字的來源請參考drv_gpio.c中的定義。
接下來就是以RT-Thread的PIN設備的方法進行點燈,首先設置D12引腳為輸出模式,然后在while循環中,不斷重復引腳高電平與低電平。延時設定為200毫秒切換一次,如果需要修改,修改speed變量即可。D1/D10/D11點燈的方式與D12一致,便不再贅述。
##四、ADC的使用
關于RT-Thread的ADC,咱還沒整明白,所以這部分依舊采用N32的官方庫函數進行開發。
本次ADC的測量,是測量開發板板載的電位器的電壓,電位器的位號為RP1,通過查詢原理圖,我們可以得知電位器的ADC測量引腳為PB2。
則在庫函數中,初始化并配置PB2引腳,并以0.5秒的頻率不斷輸出ADC的測量值,及對應轉換的電壓(不準,離萬用表測量的電壓有20-40mv的偏差)。
在RT-Thread中使用I2C讀取溫濕度傳感器數據
本期主題是通過RT-Thread的I2C API,對板載的HDC2010溫濕度傳感器讀取數據和手頭上自備的一個HDC1080溫濕度傳感器讀取數據。
默認N32的工程已經創建好,就不再重復描述。
#一、I2C配置
在工程根目錄,打開RT-Thread Settings,如圖:
打開后,開啟軟件模擬I2C選項,如圖:
在硬件菜單配置中,使能軟件模擬的I2C1,并設定引腳為47腳和48,如圖:
(該引腳的來由是板載的溫濕度傳感器HDC2010對應的I2C2_SDA/I2C2_SCL引腳,并參考drv_gpio.c)。
在開發板上J24/J23處,安裝短路帽。
#二、HDC2010溫濕度傳感器驅動編寫
參考HDC2010的官方手冊,鏈接為:http://www.ti.com/cn/lit/gpn/hdc2010 。HDC2010的濕度精度為±2%,溫度精度為典型值 ±0.2°C,算是性價比很高的一款器件。
在手冊中,列出了HDC2010的I2C地址,我們右移一位后可得通信I2C地址為0x40(RT-Thread可自動移位地址以完成讀寫)
手冊中詳細羅列了I2C讀取的時序、操作。
在7.6章節,可以看到公開的寄存器地址及其說明,在本次實驗中,我們需要的用到溫度相關寄存器,濕度相關寄存器,配置相關寄存器,器件ID相關寄存器。其他寄存器暫未用到。
7.6.2章節,介紹了溫度值轉換實際溫度的轉換公式,如圖:
7.6.3章節,介紹了濕度值轉換實際溫度的轉換公式,如圖:
7.6.17章節,介紹了配置的各個選項及其說明,如圖:
在充分閱讀手冊后,我們的HDC2010驅動編寫將會更加得心應手。
雅特力AT32WB415系列測評
作者:KING_阿飛
更多相關測評:https://www.eeworld.com.cn/aC04GuL
在FreeRTOS中點燈
很榮幸能獲得雅特力AT32WB415系列藍牙BLE 5.0 MCU的評測機會,為此按照我以前的評測的習慣,附上我的Github:,所有評測代碼均開源分享。
一、了解板子資源
雅特力的單片機,這次是我第一次使用,按照我之前的經驗。一定要去看數據手冊,這個很重要。資料地址:雅特力科技 : 32位微控制器的創新領導者! (arterytek.com) 相比其他國產MCU廠商,雅特力的資料庫十分齊全,便于我們開發,這里給雅特力點贊
我們知道在這次給我送測的板子,是板載下載器的。
具體的芯片資源,我就不在這里給出,感興趣的小伙伴可以去官網查看。
二、移植FreeRTOS
我們首選下載FreeRTOS的源文件,我們可以去FreeRTOS的官網下載:https://www.freertos.org 也可以在官方給的中間件中找到對應的源文件,這里我使用官網下載的最新源碼包(FreeRTOS LTS 202012.04)進行移植。
然后在,keil中添加文件FreeRTOS的文件,將相關文件添加。注意:內存那里我們懸著heap_4,雖然我們芯片是ARM-M4帶MPU,但是不支持FPU,所以我們這里使用CM3的port。
3.還要再添加一個FreeRTOSConfig.h文件,可以去Github上面看我的(My_AT32WB415_Demo\Middlewares\freertos\FreeRTOS\FreeRTOS-Kernel\include)。
4.最后記得把FreeRTOS的頭文件引入。
三、點燈
代碼大家直接去Github上面就可以看到,在這里我就不放出。
移植MCU控制藍牙,藍牙固件燒錄
一、藍牙固件代碼燒錄
雅特力AT32WB415是合體芯片,一個MCU加一個藍牙,中間連接了一個串口,帶2個UART, 其中UART21與MCU USART3連接。我們可以通過ArteryICPProgrammer這個軟件燒入固件代碼。這里我用到的版本是V3.0.03,第一次下載請給AT-Link固件升級一下,這個軟件就可以升級。
頁面中 第一個固件就是藍牙的,另一個就是我們MCU的固件。
官方的藍牙固件包在其頁面下就可以找到雅特力科技 : 32位微控制器的創新領導者! (arterytek.com)
該工程是ARM9的工程,需要安裝Legacy Support才能夠編譯, 用戶可根據自己的環境在以下
路徑進行下載: www2.keil.com/mdk5/legacy,這里我把我編譯的bin文件放在倉庫中,大家需要的可以自取。
官方文件中的指南里面就講的比較清楚,我在這里不過多贅述。講幾個需要注意的點:藍牙的地址是0x000000的、在復位是應該有一個時序的問題,需要先復位MCU在復位藍牙、我們手機的藍牙必須使用類似LightBlue這類的軟件才可以連接,直接是無法連接上,這部分我也沒有涉及過,屬于知識盲區了。希望有人可以在這方面研究一下。
二、MCU代碼的移植
其實在,官方里面的文檔也寫了,我們沒必要繼續重復造輪子了(其實就是懶)
具體的移植步驟就不多說,也比較簡單,有問題可以在評論區提出。這里講一些我在移植過程中的問題,這樣的效果更好。
FreeRTOS卡死:在Debug發現會一直等待,研究發現是官方的at32_button_press這個按鍵檢測的函數里面的延時是delay_ms,這里我改成FreeRTOS里面的延時。
所有的代碼我也不在這里放出來了,全部在Github上有,而且能夠看到每次的變化,也知道我添加了哪些文件。
WDT 看門狗分析及應用
一、看門狗
看門狗由一個12位的遞減計數器和一個8位的預分頻器所組成,它由低速內部LICK提供時鐘;因為這個時鐘獨立于主時鐘,所以它可運行于深睡眠和待機模式。它可以被當成看門狗用于在發生錯誤時復位整個系統,或作為一個自由定時器為應用程序提供超時管理。通過用戶系統數據可以配置看門狗是否自啟動。在調試模式下,計數器可以被凍結。
我們關注一下命令寄存器和重裝載寄存器。
我們再看一下,喂狗超時時間計算,先看一張表:
再看計算公式:
安信可藍牙開發板PB-02-Kit 測評
作者:jinglixixi
更多相關測評:https://www.eeworld.com.cn/a0enfTK
開箱上電
安信可PB-02-Kit藍牙開發板是基于安信可PB-01模組而開發的,主打目標是智能照明。PB-02-Kit自帶板載天線,RGB燈珠和冷暖燈珠,以供開發者調節和測試。
PB-02-Kit支持BLE Mesh組網,支持使用AT指令,支持SDK二次開發,支持天貓精靈語音直連控制,支持安卓/IOS APP控制以及微信小程序控制。
PB-02共有六路 PWM,可自行調節 RGB七彩燈和兩路冷暖燈珠調節,并將模組的全部可用 IO 以排針的方式引出,以便于開發者的開發和調試。
此外,它集成豐富的資源,包括 AT 指令、SDK 二次開發,支持藍牙 mesh 組網,以及安卓/IOS APP控制以及微信小程序控制,還支持天貓精靈語音直連控制;多個開發板互聯,可用于 Mesh 組網調試,2.54mm 排針引出全部 GPIO/PWM/SPI/ADC 等接口,可自由搭配外設。
在軟件開發方面,它支持以Keil進行開發,并提供UART 接口來燒錄固件。
該開發板配備的硬件資源有:
1)標準 micro USB
2)以2.54mm 間距排針來提供 PWM/SPI/GPIO/ADC 接口
3)自帶 R/G/B 三合一燈珠和冷/暖燈珠
4)自帶復位按鍵和1個用戶按鍵
開發板的幾何尺寸為30mm(W)*45.5mm(H),外觀如圖1和圖2所示。
圖1開發板正面
圖2開發板背面
開發板各管腳的功能定義為:
序號
引腳名稱
功能說明
1
ANT
天線引腳(注:PB-02 默認用的板載天線,無需外接)
2
RST
復位
3
P20
GPIO20,所有功能均可配置/ AIO /麥克風偏置輸出 *注:不支持中斷功能
4
P18
GPIO18,所有功能均可配置/ AIO / PGA 差分正輸入 *注:不支持中斷功能
5
P23
GPIO23,所有功能均可配置 *注:不支持中斷功能和ADC 功能。
6
SW1
6 SW1 GPIO24,所有功能均可配置/測試模式啟動配置[0]。
7
SW2
GPIO25, 所有功能均可配置/測試模式啟動配置[1], 此引腳 高電平上拉,開機啟動進入測試模式。
8
P31
GPIO31,所有功能均可配置 *注:不支持中斷功能和 ADC 功能
9
P14
GPIO14,所有功能均可配置/ AIO
10
P15
GPIO15,所有功能均可配置/ AIO
11
P34
GPIO34,所有功能均可配置 *注:不支持中斷功能和 ADC 功能
12
P00
GPIO00,所有功能均可配置/ JTAG_TDO *注:不支持 ADC 功能
13
P01
GPIO01,所有功能均可配置/ JTAG_TDI *注:不支持 ADC 功能
14
P02
GPIO02,所有功能均可配置/ JTAG_TMS *注:不支持 ADC 功能
15
P03
GPIO03,所有功能均可配置/ JTAG_TCK *注:不支持 ADC 功能
16
TM
燒錄模式選擇,此引腳高電平上拉,開機啟動進入燒錄模式
17
TXD
串口 URAT_TXD
18
RXD
串口 URAT_RXD
19
GND
接地
20
3V3
電源供電,典型值 3.3V
那么上電后什么現象呢?
結果是沒有什么變化,即使是電源指示燈被點亮也沒有。
圖3上電效果
隨后又查看了一下原理圖,還別說就是沒有電源指示燈!
圖4開發板原理圖
還能指望啥呢?
看設備管理器吧,還別說有一個虛擬出的串口,見圖5所示。
圖5虛擬串口
這個串口又會帶來啥信息呢?
設置好參數并打開串口,所給出的信息也不過如此,見圖6所示。
圖6上電效果
AT指令測試
在初始的開發板上是支持AT指令測試的,只用借助串口調試工具即可。
1) AT指令
AT 指令可以細分為三種格式類型:
類型
指令格式
描述
查詢指令
AT+ ?
查詢命令中的當前值。
設置指令
AT+ =<…>
設置用戶自定義的參數值。
執行指令
AT+
執行某些參數不可變的功能。
當只輸入“AT”指令,則返回“OK”,見圖1所示。
圖1“AT”指令
2) 查詢名稱
使用“AT+NAME?”指令可進行名稱查詢,返回的內容為“ai-Thinker”,見圖2所示。
圖2查詢名稱
3) 開關回顯
使用“ATE0”指令可關閉回顯,用“ATE1”指令則打開回顯,指令的執行結果如圖3和圖4所示。
注:打開回顯 (參數將會保存到芯片內,下次上電無需再行設置。)
圖3關閉回顯
圖4打開回顯
4) 重啟模組
使用“AT+RST”指令可重啟模組,其返回內容如圖5所示。
圖5重啟模組
5) 設置睡眠模式
睡眠模式共有3種模式,即:
0:進入淺睡眠并且下次上電不會自動進入淺睡眠狀態(AT+SLEEP=0)
1:進入淺睡眠并且下次上電會自動進入淺睡眠狀態
2:進入深度睡眠模式
在進入深度睡眠模式后會將模塊RX設為喚醒引腳,UART發送任意數據即可喚醒模塊。
注:進入深度睡眠模式后模組將不能收發數據
使用“AT+SLEEP”指令可設置睡眠模式,其返回內容如圖6所示。
圖6設置睡眠模式
遺憾的是,對于其它的指令幾乎就沒有什么相應了。例如對波特率的設置,則會出現報錯,什么對波特率是不能設置的。
圖7波特率設置
在用1_COMAT_V1008.hexf更新了固件后,所支持的指令明顯得到增加,見圖8至圖10所示。
圖8HELP指令
圖9 GMR指令
圖10查詢波特率
串行通訊及使用
串行通訊是一種主要的數據傳送方式,也是在沒有顯示器件的情況下僅有的調試觀察手段。
1. 串口通訊的初始化
要使用串口通信必須對串口進行初始化,其初始化的函數為:
int hal_uart_init(uart_Cfg_t cfg)
{
if(m_uartCtx.enable)
return PPlus_ERR_BUSY;
memset(&m_uartCtx, 0, sizeof(m_uartCtx));
if(cfg.hw_fwctrl)
return PPlus_ERR_NOT_SUPPORTED;
m_uartCtx.cfg = cfg;
uart_hw_config();
m_uartCtx.enable = TRUE;
hal_pwrmgr_register(MOD_UART, NULL, uart_hw_config);
return PPlus_SUCCESS;
}
2.字節數據發送
在串口通信中,最主要的函數是字節數據發送,它可以解決常規print函數所不能解決的問題,因為print函數所輸出的內容通常是字符型的,而進行外設控制其指令多是二進制的指令,為此只有字節數據發送函數可以解決此類問題。
使用該函數可產生下圖所示的輸出效果,說明發送字節數據成功。
有了發送字節數據的基礎,要想用其控制MP3語音播放模塊便也不難了,只需將控制指令存放到數組中,然后按序輸出即可。
當然,在輸出字符串類的信息時還是使用LOG比較方便。
SparkFun Pro nRF52840 Mini藍牙開發板測評
作者:御坂10032號
更多相關測評:https://www.eeworld.com.cn/ar5yT8O
開箱及其搭建開發環境
大家好,很榮幸能夠獲取到這次來之不易的測評機會。由于快遞原因我是在21號拿到這個板子的。 昨天研究了一下如何搭建開發環境。今天就整理了一下給大家做一個開箱和搭建環境的教程.
這篇報告包括以下兩個部分:
開箱
搭建開發環境(這款開發板實際上中文資料不是很多。所以在花費了一些時間來整理資料)
正面照
背面照:
這款開發板的內核時基于Arm Cortex-M4. 具有1MB的Flash 和 256K的Ram. 同時支持低功耗藍牙。以及藍牙5的Mesh. 同時支持USB模式。 外設提供了對UART 和 I2C以及SPI,ADC. PWM,RTC 和PWM的支持。數據參考
這款開發板還是非常小巧的,上電后需要手動將開關撥動到On。這時芯片才會正常工作,同時這個開發板提供了一個外部供電的小插槽,可以非常方便的使用電池供電,比如一節18650電池。電壓范圍在2.5到3.6V
環境搭建
本文默認你已經安裝好了Arduino IDE
SparkFun Pro nRF52840 Mini藍牙開發板 ADC
Arduino實現ADC的功能非常簡單,所以近幾篇類似IIC,USART,SPI等外設的功能。我們都快速實現。并且使用對應協議的傳感器來實現Demo功能。
今天要實現的是使用這塊開發板上的ADC功能來讀取氣體質量傳感器的電壓輸出,并且通過串口發送給上位機。
根據原理圖得知, 這款開發板上一共有8個Pin可以用于ADC的輸入,如下圖所示
數據手冊上也是清楚的說明了當前的ADC,大意是說,12位的ADC具有8個通道
接下來我們開始編碼部分。Sparkfun其實也為我們提供了Demo示例。通過下圖我們可以打開官方提供的demo
SparkFun Pro nRF52840 Mini 藍牙鍵盤
本章我們將學習如是使用SparkFun Pro nRF52840 Mini 來快速構建一個HID設備藍牙鍵盤。
在開始之前,說一句題外話。 不得不說這個nRF52840 的Arduino庫實在是太好用了, 如果自己DIY的話,非常推薦購買這個芯片的單片機來DIY具有藍牙功能的作品。
在上章節我們已經詳細的介紹了如何使用SparkFun Pro nRF52840 Mini實現藍牙數據的發送,那么本節我們看下如何基于上節的代碼實現藍牙鍵盤的功能
本章提供的代碼是一個演示使用nRF52840模塊的HID鍵盤應用程序的示例。HID鍵盤在各種電子設備中廣泛使用,從計算機到智能手機,為用戶提供無縫的輸入體驗。
功能:
藍牙連接: 代碼建立了BLE連接,使Bluefruit52模塊能夠與其他藍牙設備進行無線通信。
HID鍵盤仿真: 通過HID功能,模塊可以仿真標準鍵盤,從而向連接的設備發送按鍵信息。
LED控制: 代碼包括根據連接設備發送的命令來控制LED的功能,展示了雙向通信的可能性。
實現:
設置:
代碼初始化Bluefruit模塊,并設置必要的BLE服務,包括設備信息服務(DIS)和HID。
它配置廣告數據包以宣布HID鍵盤服務,并開始廣告以進行設備發現。
連接間隔和功率設置經過優化,以實現性能和兼容性。
主循環:
循環檢查來自串行監視器的鍵盤輸入。當輸入字符時,它將使用HID功能將其作為按鍵發送。
代碼處理按鍵按下和釋放,確保鍵盤行為正常。
回調:
定義一個回調函數來回顯當前的藍牙連接狀態。
接下來我將介紹如何實現上述涉及的功能
設置:
我們可以保留上節的大部分功能函數,僅僅需要在初始化藍牙連接之后,初始化HID設備
上圖為對比HID的初始化和沒有HID的初始化。左側為帶HID設備的初始化,右側為僅僅只有藍牙功能的初始化。而實現這么多功能只需要引入bluefruit.h 庫, bluefruit.h 內封裝了我們所需的所有功能
主循環:
在程序的主循環中,程序會一直從串口檢測是否有數據輸入,如果有數據輸入的話,則把數據的輸入作為鍵盤的輸入。并且發送的遠程的藍牙設備同時改變按鍵的按下狀態,使其在下一次循環的時候釋放這個按鍵并且等待下一次按下。
void loop()
{
// Only send KeyRelease if previously pressed to avoid sending
// multiple keyRelease reports (that consume memory and bandwidth)
if ( hasKeyPressed )
{
hasKeyPressed = false;
blehid.keyRelease();
// Delay a bit after a report
delay(5);
}
if (Serial.available())
{
char ch = (char) Serial.read();
// echo
Serial.write(ch);
blehid.keyPress(ch);
hasKeyPressed = true;
// Delay a bit after a report
delay(5);
}
setKeyboardLedCallback function主要是用于藍牙的狀態顯示,當藍牙未連接的時候,LED會一直處于閃爍狀態。當藍牙連接成功之后LED將停止閃爍。
歡迎將我們設為“星標”,這樣才能第一時間收到推送消息。
領領取自動駕駛、輔助駕駛等方面免費資料包!
掃碼添加小助手回復“進群”
和電子工程師們面對面交流經驗
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.