[NXP i.MX 應用處理器教室] 在i.MX8M mini的平台上建立低功耗智能門鎖之運用

關鍵字 :i.MX8mminieIQNXP

人工智慧與機器學習是目前最火熱的話題。而其運用於智慧家庭中,最重要的為智慧門鎖之應用。此篇博文,將介紹"在i.MX8M mini上運行eIQ的低功耗智能門鎖之運用":

門鎖要達到低功耗,就必須在平時不使用時候,將門鎖相關功能都關閉,達到省電原則。將使用者進出時,才將門鎖功能喚醒,進行識別,解鎖。

演示概念如下:
1. 智慧門鎖識別功能關閉時,使用語音喚醒功能
2. 智慧門鎖識別功能開啟時,使用人臉識別功能,進行解鎖

在i.MX8M mini平台上:
Cortex A53使用eIQ OpenCV執行"人臉識別" 。 Cortex M4使用eIQ CMSIS-NN執行"關鍵字喚醒"
場景如下:Cortex A內核和連接的外圍設備處於低功耗模式。 Cortex M處於活動狀態,正在等待關鍵字“ GO”。
當檢測到單詞時,Cortex M將一個MU中斷發送到Cortex A,系統喚醒。現在,Cortex A執行人臉識別並允許註冊用戶訪問。
運行在Cortex A上的人臉識別算法和運行在Cortex M上的關鍵詞發現算法均使用eIQ來實現。
對於MPU,Yocto中集成了eIQ支持。對於該MCU,出於演示目的,已將支持從MCU Expresso SDK移植到了i.MX8。

軟件環境 :
1. Ubuntu 16主機
2. 帶有Yocto BSP 4.14.98 / sumo 2.0.0 GA的SD卡映像檔,用於帶有eIQ OpenCV和eIQ異構演示的i.MX8MMini平台。
3. 神經網絡 (CMSIS-NN)
4. 適用於i.MX8MMini的MCUXpresso SDK版本2.6.0(SDK_2.6.0_EVK-MIMX8MM-ARMGCC)。
 
硬件環境 :
1. i.MX 8MMini套件
2. 觸摸屏顯示(首選分辨率1920x1080)。 經過HDMI與開發板連接測試。注意:如果顯示器不支持觸摸,則可以將鼠標連接到板上並代替使用
3. MIPI-CSI攝像頭模塊
4. 麥克風:Synaptics CONEXANT AudioSmart DS20921。帶狀,4條母-母線和60針連接器,用於將麥克風連接到板
5.主機PC,用於遠程訪問演示應用程序(使用的Chrome瀏覽器)注意:開發板和主機PC應該在同一網絡中才能進行通信。

Build Yocto image:
第一步:  Project initialization:
              ==================
              $: mkdir imx-linux-bsp
              $: cd imx-linux-bsp-bsp
              $: repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_machinelearning.xml
              $: repo sync
              ==================
第二步:  Setup Project build:
              ==================
              $: MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./fsl-setup-release.sh -b bld-xwayland
              ==================
第三步:  Download project layer in ${BSPDIR}/sources/:
              ==================
              $: git clone https://source.codeaurora.org/external/imxsupport/meta-eiq-heterogenousc
              ==================
第四步:  Add project layer into bblayers:
              Add the following line into ${BSPDIR}/sources/base/conf/bblayers.conf:
              ==================
               BBLAYERS += " ${BSPDIR}/sources/meta-eiq-heterogenous "
              ==================
第五步:  Enable eIQ and other dependencies. Add the following lines into conf/local.conf:
              ==================
              EXTRA_IMAGE_FEATURES = " dev-pkgs debug-tweaks tools-debug \
               tools-sdk ssh-server-openssh"
               IMAGE_INSTALL_append = " net-tools iputils dhcpcd which gzip \
               python3 python3-pip wget cmake gtest \
               git zlib patchelf nano grep vim tmux \
               swig tar unzip parted \
               e2fsprogs e2fsprogs-resize2fs"

               IMAGE_INSTALL_append = " python3-pytz python3-django-cors-headers"

               IMAGE_INSTALL_append = " opencv python3-opencv"
               PACKAGECONFIG_append_pn-opencv_mx8 = " dnn python3 qt5 jasper \
               openmp test neon"

               PACKAGECONFIG_remove_pn-opencv_mx8 = "opencl"

               TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake nativesdk-make"

               PREFERRED_VERSION_opencv = "4.0.1%"
               PREFERRED_VERSION_python3-django = "2.1%"

               IMAGE_ROOTFS_EXTRA_SPACE = "20971520"
              ==================


第六步:  Bake the image:
              ==================
               $: bitbake image-eiq-hetero
              ==================

Build Cortex M4 executable:
1. 下載適用於i.MX8MMini的MCUXpresso SDK版本2.6.0(SDK_2.6.0_EVK-MIMX8MM-ARMGCC)
   。OS: Linux, Toolchain: GCC ARM Embedded
   。Components: Amazon-FreeRTOS, CMSIS DSP Library, multicore
   。SDK Version: 2.6.0 (2019-06-14)
   。SDK Tag: REL_2.6.0_REL10_RFP_RC3_4
2. 下載CMIS NN並將“ CMSIS \ NN”文件夾複製到“ $ MCUXpressoSDK_ROOT \ CMSIS”
3. 到“ $ MCUXpressoSDK_ROOT \ boards \ evkmimx8mm \ demo_apps \”
4. 從CAF獲取M4應用:
     git clone https://source.codeaurora.org/external/imxsupport/eiq-heterogenous-cortexm4
5. [Win]:打開ARM GCC控制台,然後到“ $ MCUXpressoSDK_ROOT \ boards \ evkmimx8mm \ demo_apps \ eiq-heterogenous-cortexm4 \ armgcc \”
6. [Win]:調用“ build_ddr_release.bat”獲得“ eiq-kws.bin”。
7. 將“ eiq-kws.bin”部署到上的Yocto映像黨中啟動分區。

演示準備
1. 將12V電源連接到板上,開關SW101接通板上電
2. 在主機PC和目標板上的J901 USB端口之間連接USB電纜。
3. 使用以下設置打開兩個用於A53內核和M4內核的串行端子:
   - 115200 baud rate
   - 8 data bits
   - No parity
   - One stop bit
   - No flow control
4. 將顯示器連接到板(使用IMX-MIPI-HDMI適配器將1920x1080 HDMI顯示器連接到板)。
    注意:根據顯示,您可能需要在“ /etc/xdg/weston/weston.ini”中更改配置。 該演示已通過取消註釋此文件中的以下部分進行了測試:
    [output]
      name=HDMI-A-1
      mode=1920x1080@60
     transform=90
5. 將MIPI-CSI攝像機連接到板上。
6.使用帶有彩帶的60針連接器將Synaptics麥克風連接到板上。 SAI3用於在Cortex M4上進行記錄和回放。 使用以下引腳:
    針腳44(連接器) I2S_TX_Data1(麥克風板)
    針腳43(連接器) I2S_TX_LRCLK(麥克風板)
    針腳41(連接器) I2S_TX_CLK(麥克風板)
    引腳60(連接器) GND(麥克風板)
7. 使用U-Boot命令運行demo.bin文件。 有關詳細信息,請參閱“適用於i.MX 8M Mini.pdf的MCUXpresso SDK入門”。
8. 運行demo.bin之後,使用“ boot”命令在A核心終端上引導內核;
9. 內核啟動後,使用“ root”登錄。
10. 登錄後,確保已插入(xsmod)imx_rpmsg_pingpong內核模塊或將其插入(modprobe imx_rpmsg_pingpong)。

1. 在Cortex M4上啟動關鍵詞發現: 在u-boot中停止並在DDR中運行eiq-kws.bin可執行文件:

   u-boot=>fatload mmc 0 0x80000000 eiq-kws.bin
   u-boot=>dcache flush
   u-boot=>bootaux 0x80000000
   u-boot=>boot

2. 引導過程成功後,ARM Cortex-M4終端顯示以下信息:

   RPMSG Ping-Pong FreeRTOS RTOS API Demo...
   RPMSG Share Base Addr is 0xb8000000

3. 在啟動內核期間,ARM Cortex-M4終端顯示以下信息:

   Link is up!
   Nameservice announce sent.

4. 在Cortex-A上開始人臉識別:插入更新的rpmsg驅動程序:

   $: modprobe imx_rpmsg_pingpong

5. 安裝Linux RPMsg乒乓模塊後,ARM Cortex-M4終端顯示以下信息:

   Looping forever...
   Waiting for ping...
   Sending pong...
   96% go

6. 僅限第一次:

   $: cd ~/eiq-heterogenous-cortexa
   $: python3 wrap_migrate.py
   $: python3 wrap_createsuperuser.py

7. 開始:

   $: cd ~/eiq-heterogenous-cortexa
   $: python3 manage.py runserver 0.0.0.0:8000 --noreload &
   $: /opt/src/bin/src

注意:第一條指令將啟動django服務器,第二條指令將在顯示屏上顯示鍵盤。
從HOST PC訪問瀏覽器:
http://$BOARD_IP:8000/dashboard/): Dashboard that facilitates managing users and view access logs
http://$BOARD_IP:8000/admin/: manage users database



技術文檔

類型標題檔案
操作手冊User Manual

相關影片

在i.MX8M mini的平台上建立低功耗智能門鎖之運用

在i.MX8M mini的平台上運用人工智慧的人臉辨識方式,與語音喚醒功能,達到低功耗智能門鎖之運用

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論