用STM32人工智能開發(fā)板打造人臉識別項目
▲硬件介紹
電源電路:開發(fā)板采用USB 5v供電,從左至右依次是輸入、接地、輸出。此外C2和C3是輸出濾波電容,作用是抑制自激振蕩,如果不接這兩個電容,通常線性穩(wěn)壓器的輸出會是個振蕩波形。
C4是輸入電容,對于交流電壓整流輸入,它們的第一個作用是把單向脈動電壓轉(zhuǎn)換成直流電壓,在本圖中輸入已經(jīng)是 5V直流電源了,它們的作用就是防止斷電后出現(xiàn)電壓倒置,因此通常輸入電容的容量應該大于輸出電容。
如下圖:
USB轉(zhuǎn)串口電路:開發(fā)板采用CH340作串口芯片, CH340 是一個USB 總線的轉(zhuǎn)接芯片,實現(xiàn)USB 轉(zhuǎn)串口、USB 轉(zhuǎn)IrDA 紅外或者USB 轉(zhuǎn)打印口。 在串口方式下,CH340 提供常用的MODEM聯(lián)絡信號,用于為計算機擴展異步串口,或者將普通的串口設(shè)備直接升級到USB 總線
Led指示電路:開發(fā)板采用d2作Led指示,高電平點亮。
▲開發(fā)板核心:STM32F407VGT6
- STM32F407VGT6參數(shù):32位Flash MCU,USB,CAN,11個計時器,3個ADC和13個通信接口
- 制造商: STMicroelectronics
- 產(chǎn)品種類: ARM微控制器 – MCU
- 核心: ARM Cortex M4
- 數(shù)據(jù)總線寬度: 32 bit
- 最大時鐘頻率: 168 MHz
- 程序存儲器大小: 1 MB
- 數(shù)據(jù) RAM 大小: 192 kB
- ADC分辨率: 12 bit
- 工作電源電壓: 1.8 V to 3.6 V
- 最大工作溫度: 85 C
- 安裝風格: SMD/SMT
- 商標: STMicroelectronics
- 數(shù)據(jù) Ram 類型: SRAM
- 接口類型: CAN, I2C, I2S, SPI, UART
- 最小工作溫度: – 40 C
- ADC通道數(shù)量: 16
- 輸入/輸出端數(shù)量: 82 I/O
- 計時器/計數(shù)器數(shù)量: 10 Timer
下載接口:swd
SWD,全稱是Serial Wire Debug(串行調(diào)試),它的接線方式較JTAG簡單,2線式:SWDIO–串行數(shù)據(jù)線、SWDCLK–串行時鐘線,一般在設(shè)計PCB時,會預留4個2.54mm的排座,這種接線方式適合引腳少的芯片,充分利用芯片資源
▲以太網(wǎng)通信LAN8720:
LAN8720A 是低功耗的 10/100M 以太網(wǎng) PHY 層芯片, I/O 引腳電壓符合 IEEE802.3-2005 標準,支持通過 RMII 接口與以太網(wǎng) MAC 層通信,內(nèi)置 10-BASE-T/100BASE-TX 全雙工傳輸模塊,支持 10Mbps 和 100Mbps。
LAN8720A 可以通過自協(xié)商的方式與目的主機最佳的連接方式(速度和雙工模式),支持 HPAuto-MDIX 自動翻轉(zhuǎn)功能,無需更換網(wǎng)線即可將連接更改為直連或交叉連接。LAN8720A 的主要特點如下:
? 高性能的 10/100M 以太網(wǎng)傳輸模塊
? 支持 RMII 接口以減少引腳數(shù)
? 支持全雙工和半雙工模式
? 兩個狀態(tài) LED 輸出
? 可以使用 25M 晶振以降低成本
? 支持自協(xié)商模式
? 支持 HP Auto-MDIX 自動翻轉(zhuǎn)功能
? 支持 SMI 串行管理接口
? 支持 MAC 接口
LAN8720A 的引腳數(shù)是比較少的,因此,很多引腳具有多個功能。這里,我們介紹幾個重要的設(shè)置。
1, PHY 芯片地址設(shè)置
LAN8720A 可以通過 PHYAD0 引腳來配置,該引腳與 RXER 引腳復用,芯片內(nèi)部自帶下拉電阻,當硬復位結(jié)束后, LAN8720A 會讀取該引腳電平,作為器件的 SMI 地址,接下拉電阻時(浮空也可以,因為芯片內(nèi)部自帶了下拉電阻),設(shè)置 SMI 地址為 0,當外接上拉電阻后,可以設(shè)置為 1。
2, nINT/REFCLKO 引腳功能配置
nINT/REFCLKO 引腳可以用作中斷輸出,或者參考時鐘輸出。通過 LED2( nINTSEL)引腳設(shè)置, LED2 引腳的值在芯片復位后,被 LAN8720A 讀取,當該引腳接上拉電阻(或浮空,內(nèi)置上拉電阻),那么正常工作后, nINT/REFCLKO 引腳將作為中斷輸出引腳(選中 REF_CLKIN 模式)。當該引腳接下拉電阻時,正常工作后, nINT/REFCLKO 引腳將作為參考時鐘輸出(選中 REF_CLK OUT 模式)。
在 REF_CLK IN 模式,外部必須提供 50Mhz 參考時鐘給 LAN8720A 的 XTAL1( CLKIN)引腳。
在 REF_CLK OUT 模式, LAN8720A 可以外接 25Mhz 石英晶振,通過內(nèi)部倍頻到 50Mhz,然后通過 REFCLKO 引腳,輸出 50Mhz 參考時鐘給 MAC 控制器。這種方式,可以降低 BOM成本。
3, 1.2V 內(nèi)部穩(wěn)壓器配置
LAN8720A 需要 1.2V 電壓給 VDDCR 供電,不過芯片內(nèi)部集成了 1.2V 穩(wěn)壓器,可以通過LED1(REGOFF)來配置是否使用內(nèi)部穩(wěn)壓器,當不使用內(nèi)部穩(wěn)壓器的時候,必須外部提供 1.2V電壓給 VDDCR 引腳。這里我們使用內(nèi)部穩(wěn)壓器,所以我們在 LED1 接下拉電阻(浮空也行,內(nèi)置了下拉電阻),以控制開啟內(nèi)部 1.2V 穩(wěn)壓器。
▲Marvell 88W8782 SDIO wifi
8782是一款高性能、低功耗、體積小SDIO接口無線模組,符合IEEE802.11N標準,并向下兼容IEEE802.11B/G標準,支持IEEE 802.11i安全協(xié)議,以及IEEE 802.11e標準服務質(zhì)量,其極高的兼容性,能夠快速、方便的與無線設(shè)備互相聯(lián)通,支持新的64/128位WEP數(shù)據(jù)加密,支持WPA-PSK/WPA2-PSK,WPA/WPA2安全機制,無線傳輸速率高達150M,是普通11B產(chǎn)品的10倍。
2.應用領(lǐng)域
- 平板電腦,筆記本電腦,機頂盒
- 游戲平臺
- 消費電子設(shè)備(電視,DVD播放機,藍光播放器等)
- 手機和其他移動應用
- 影像平臺(打印機,數(shù)碼相機,數(shù)碼相框)
- 閱讀器
3.主要特性
- 符合802.11n標準,高達150Mbps的無線傳輸速率;
- 高集成單芯片設(shè)計,體積更小,功耗更低;
- 持深度睡眠和待機模式的低功耗操作;
- 支持客戶端實施IEEE省電模式;
- 發(fā)射波束形成支持
▲攝像頭OV2640
OV2640攝像頭模塊,采用1/4寸的OV2640百萬高清CMOS傳感器制作,具有高靈敏度、高靈活性、支持JPEG輸出等特點,并且可以支持曝光、白平衡、色度、飽和度、對比度等眾多參數(shù)設(shè)置,支持JPEG/RGB565格式輸出,可以滿足不同場合需求。
▲溫濕度dht11
DHT11是一款有已校準數(shù)字信號輸出的溫濕度傳感器。其精度濕度 -5%RH, 溫度 -2℃,量程濕度20-90%RH, 溫度0~50℃。
▲紅外接口
紅外發(fā)光二極管是一種能發(fā)出紅外線的二極管,通常應用于遙控器等場合。常用的紅外發(fā)光二極管其外形和發(fā)光二極管LED相似,發(fā)出紅外光。
管壓降約1.4v,工作電流一般小于20mA。為了適應不同的工作電壓,回路中常常串有限流電阻。
▲音頻接口
使用STM32 自帶ADC對MIC進行采樣
▲板載繼電器
繼電器是一種電控制器件,是當輸入量(激勵量)的變化達到規(guī)定要求時,在電氣輸出電路中使被控量發(fā)生預定的階躍變化的一種電器。它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路)之間的互動關(guān)系。通常應用于自動化的控制電路中,它實際上是用小電流去控制大電流運作的一種“自動開關(guān)”。
▲人臉識別使用方法
開發(fā)需要具有外網(wǎng)訪問能力,即開發(fā)板需要連接到路由器 WIFI 熱點,或者通過網(wǎng)線將開發(fā)板連到路由。接入外部 平臺的所有代碼都整合在 easy-IoT.rar 中,同樣的我們提供 UCOS2、 UCOS3、FreeRTOS 三個平臺的代碼,建議使用 UCOS2 的工程。
編譯代碼前需要將路由器 WIFI 熱點的名字和密碼修改到代碼中, 具體位置為:easyiotappsrchttpdweb_cfg.c 的 default_web_cfg 函數(shù) 中。如下所示:
通常只要填寫路由器熱點名稱和密碼就可以了,開發(fā)板將會通過 DHCP 自動獲得 IP 地址。特殊情況下,如果想 WIFI 網(wǎng)卡或者以太網(wǎng)卡 使用靜態(tài)的 IP 地址,可以將上面對應的 auto_get 值改為 0。
開發(fā)板支持基于百度人工智能 AI 平臺的圖像以及語音類 AI 應用, 同時也支持接入 OneNet 物聯(lián)網(wǎng)平臺,阿里云物聯(lián)網(wǎng)平臺。由于開發(fā)版 資源限制(主要是內(nèi)存限制),接入不同平臺的應用不能同時運行, 我們通過一些宏開關(guān)對將運行的某個應用進行使能。
這個配置在源代碼 easyiotconfigapp_cfg.h 中,用戶需要根據(jù)自己想運 行的程序把對應的宏設(shè)置為 1。
百度 AI 人工智能平臺提供語音識別,語音合成,人臉識別,物體識別等 AI 能力,我們只 要以 HTTPS 的方式向平臺請求服務,就可以得到 AI 分析結(jié)果。在使用人臉識別功能之 前,也需要在百度平臺注冊,創(chuàng)建應用,并管理人臉庫。
注冊并登陸百度云平臺,在控制臺上選擇人臉識別,進入如下界面,可以創(chuàng)建應用。
創(chuàng)建的應用默認只能訪問人臉識別相關(guān)的 API,這里我們手動選上百度語音和圖像識別相 關(guān)的 API 接口。這樣設(shè)置的好處是我們后面的其他 AI 功能測試可以復用這個應用,而不用 再去創(chuàng)建新的應用。
創(chuàng)建好應用后,百度 AI 平臺會給應用分配好 API Key 和 Secret Key,如下圖所示,這兩個 信息非常重要,后面我們將填寫到代碼中。
接下來,需要進行人臉庫管理,我們需要將用戶的人臉信息錄入到應用中,作為后續(xù)人臉 認證的參考。如下圖所示。
在應用的人臉庫中新建組,并將組名填寫為 test_group_1(非常重要)。
之后在這個組中創(chuàng)建用戶,并上傳用戶人臉照片,注意這里的人臉照片清晰,后續(xù)識別的 準確度越高。創(chuàng)建用戶名填寫為 test_user_1(非常重要)。
到這里應用和人臉庫管理就結(jié)束了。
我們把應用的 API Key 和 Secret Key 填寫到代碼 baidu-aibaidu_ai_face.c 對應的宏中,如下 圖所示。
同時,將人臉識別應用對應的宏打開,如下,重新編譯并下載代碼到開發(fā)板。
人臉識別應用主要實現(xiàn)為一個人臉識別控制繼電器開關(guān)的功能,測試時,將開發(fā)板攝像頭 對準人臉(人臉相隔 40~60cm),如果開發(fā)板檢查到當前人臉和人臉庫中的匹配,則會使 繼電器閉合,否則斷開繼電器。用戶可以在繼電器上接入小臺燈來實現(xiàn)臺燈的實時人臉控 制。
更多的創(chuàng)客開發(fā)板,開發(fā)套件可以直接購買啦,只需要你關(guān)注電子芯吧客微信公眾號,點擊菜單欄“硬件商城”!點擊下方鏈接了解產(chǎn)品詳情~