<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于聆思CSK6視覺AI開發套件實現剪子包袱錘游戲

安芯教育科技 ? 來源:安謀科技學堂 ? 2023-12-05 09:56 ? 次閱讀

本文來自極術社區聆思CSK6視覺AI開發套件試用活動文章。作者用聆思CSK6芯片支持的手勢識別能力結合8X8點陣實現一款剪子包袱錘的游戲。

開發環境搭建

1.1 硬件環境

如下圖所示,本次產品有聆思的CSK6011-NanoKit視覺開發套件和8*8點陣組成,CSK6011-NanoKit負責手勢的識別,點陣負責圖形的顯示,兩者通過SPI總線連接在一起。

f9bb990c-930d-11ee-939d-92fbcf53809c.png

1.2 軟件環境

軟件開發環境搭建可以參考CSK6環境搭建,聆思很貼心的提供了完整的打包開發環境,利用lisa工具可以完成項目的創建、編譯和下載,此外廠商還基于VSCODE插件的方式提供了完整的IDE開發環境。

點陣的使用

2.1 硬件連接

8x8點陣的主控是GC7219(完全兼容MAX7219),其典型的應用圖如下所示:

f9e36630-930d-11ee-939d-92fbcf53809c.png

芯片可以通過GPIO或者SPI來驅動,官方提供了SPI的參考demo,本次將基于其實現對點陣的控制。將GC7219(點陣)與CSK6011的SPI0連接,利用板載的3.3V管腳供電,相關管腳的連接示意圖如下:

f9ee05ae-930d-11ee-939d-92fbcf53809c.png

2.2 圖標建模

由于CSK6011目前支持5種手勢,分別為LIKE()、OK()、STOP()、YES()、SIX(),采用相似原則,取LIKE=錘,STOP=包袱,YES=剪刀。相關示圖標建模(共陰)如下:

fa05e462-930d-11ee-939d-92fbcf53809c.png

2.3 驅動開發

2.3.1 建立SPI開發工程

參見SPI參考工程的實現,搭建SPI驅動開發工程。

2.3.2 GC7219的適配

由GC7219的手冊可知,其支持MSB模式,且最高頻率只有10M,因此spi的Config需要做如下修改。

  /* spi master 8bit, LSB first*/
  spi_cfg.operation = SPI_WORD_SET(8) | SPI_OP_MODE_MASTER | SPI_TRANSFER_LSB;
  spi_cfg.frequency = 10 * 1000000UL;

改為:

    /* spi master 8bit, MSB first*/
    spi_cfg.operation = SPI_WORD_SET(8) | SPI_OP_MODE_MASTER | SPI_TRANSFER_MSB;
    spi_cfg.frequency = 5 * 1000000UL;

2.3.3 添加點陣驅動

如圖2.2所示,GC7219支持共陰點陣,各圖像的數組定義如下代碼片段。

unsigned char jiandao_table[8][2] = {
    {0x01,0x24},{0x02,0x24},{0x03,0x24},{0x04,0x7E},
    {0x05,0x7E},{0x06,0x7E},{0x07,0x7E},{0x08,0x00}
};


unsigned char shitou_table[8][2] = {
    {0x01,0x00},{0x02,0x40},{0x03,0x40},{0x04,0x7C},
    {0x05,0x7C},{0x06,0x7C},{0x07,0x7C},{0x08,0x00}
};


unsigned char bu_table[8][2] = {
    {0x01,0x08},{0x02,0x1C},{0x03,0x1E},{0x04,0x1E},
    {0x05,0x5E},{0x06,0x7E},{0x07,0x7E},{0x08,0x00}
};

由zephr的API調用可知,其發送函數spi_write需要傳入一個數據鏈表,然后會按照列表逐一發送相關數據,完整的代碼如下:

/*
 * SPDX-License-Identifier: Apache-2.0
 */


#include 
#include 
#include 
#include 
#include 
#include 
#include 


unsigned char work_state[2]={0x0C, 0x1}; // normal work mode
unsigned char test_state[2]={0x0F, 0x0}; // no test mode
unsigned char decode_cfg[2]={0x09, 0x0}; // no decode
unsigned char scan_range[2]={0x0B, 0x7}; // scan 0-7


unsigned char jiandao_table[8][2] = {
  {0x01,0x24},{0x02,0x24},{0x03,0x24},{0x04,0x7E},
  {0x05,0x7E},{0x06,0x7E},{0x07,0x7E},{0x08,0x00}
};


unsigned char shitou_table[8][2] = {
  {0x01,0x00},{0x02,0x40},{0x03,0x40},{0x04,0x7C},
  {0x05,0x7C},{0x06,0x7C},{0x07,0x7C},{0x08,0x00}
};


unsigned char bu_table[8][2] = {
  {0x01,0x08},{0x02,0x1C},{0x03,0x1E},{0x04,0x1E},
  {0x05,0x5E},{0x06,0x7E},{0x07,0x7E},{0x08,0x00}
};


#define TX_PACKAGE_MAX_CNT  8


void main(void)
{
  int idx=0;
  const struct device *spi;
  struct spi_config spi_cfg = {0};
  struct spi_buf_set tx_set;
  unsigned char digit[2]={0};


  printk("spi master example
");


  spi = DEVICE_DT_GET(DT_NODELABEL(spi0));
  if (!device_is_ready(spi)) {
    printk("SPI device %s is not ready
", spi->name);
    return;
  }


  /* spi master 8bit, LSB first*/
  spi_cfg.operation = SPI_WORD_SET(8) | SPI_OP_MODE_MASTER | SPI_TRANSFER_MSB;
  spi_cfg.frequency = 5 * 1000000UL;


  /* Make spi transaction package buffers */
  struct spi_buf *tx_package = k_calloc(TX_PACKAGE_MAX_CNT, sizeof(struct spi_buf));
  if (tx_package == NULL) {
    printk("tx_package calloc failed
");
    return;
  }


  /* Init 7219 */
  tx_package[0].buf = work_state;
  tx_package[0].len = 2;
  tx_package[1].buf = test_state;
  tx_package[1].len = 2;
  tx_package[2].buf = decode_cfg;
  tx_package[2].len = 2;
  tx_package[3].buf = scan_range;
  tx_package[3].len = 2;


  tx_set.buffers = tx_package;
  tx_set.count  = 4;


  printk("Init 7219 ...
");
  spi_write(spi, &spi_cfg, &tx_set);


  do {
    k_msleep(1000);
    printk("spi master sending jiandao_table data ...
");
    for (idx=0; idx<8; idx++) {
 ? ? ? ? ? ?digit[0]=jiandao_table[idx][0];
 ? ? ? ? ? ?digit[1]=jiandao_table[idx][1];
 ? ? ? ? ? ?tx_package[0].buf = digit;
 ? ? ? ? ? ?tx_package[0].len = 2;
 ? ? ? ? ? ?tx_set.buffers ? ?= tx_package;
 ? ? ? ? ? ?tx_set.count ? ? ?= 1;
 ? ? ? ? ? ?spi_write(spi, &spi_cfg, &tx_set);
 ? ? ? ?}


 ? ? ? ?k_msleep(1000);
 ? ? ? ?printk("spi master sending shitou_table data ...
");
 ? ? ? ?for (idx=0; idx<8; idx++) {
 ? ? ? ? ? ?digit[0]=shitou_table[idx][0];
 ? ? ? ? ? ?digit[1]=shitou_table[idx][1];
 ? ? ? ? ? ?tx_package[0].buf = digit;
 ? ? ? ? ? ?tx_package[0].len = 2;
 ? ? ? ? ? ?tx_set.buffers ? ?= tx_package;
 ? ? ? ? ? ?tx_set.count ? ? ?= 1;
 ? ? ? ? ? ?spi_write(spi, &spi_cfg, &tx_set);
 ? ? ? ?}


 ? ? ? ?k_msleep(1000);
 ? ? ? ?printk("spi master sending bu_table data ...
");
 ? ? ? ?for (idx=0; idx<8; idx++) {
 ? ? ? ? ? ?digit[0]=bu_table[idx][0];
 ? ? ? ? ? ?digit[1]=bu_table[idx][1];
 ? ? ? ? ? ?tx_package[0].buf = digit;
 ? ? ? ? ? ?tx_package[0].len = 2;
 ? ? ? ? ? ?tx_set.buffers ? ?= tx_package;
 ? ? ? ? ? ?tx_set.count ? ? ?= 1;
 ? ? ? ? ? ?spi_write(spi, &spi_cfg, &tx_set);
 ? ? ? ?}
 ? ?} while (1);
}

2.3.4 搭建AI工程

參考文檔AI能力-視覺的相關步驟搭建AI工程,這里主要說明一下遇到的幾個問題和注意事項。


1)因為此處使用的是最新git工程,所以打印可能與文檔有出入,git版本和打印對應如下:

fa1cfcce-930d-11ee-939d-92fbcf53809c.png

2)如果直接下載git工程編譯升級,PC端工具無法正常使用,需要執行如下兩條命令,參考連接一鍵拉取-sample-和-sdk-異常解決方法,然后再執行編譯燒寫操作。

lisa zep init-app 
lisa zep update

3)基于Edge瀏覽器如果直接打開在線PC工具,點擊"Windows系統"會出現404錯誤,所以建議直接下載pc工具工程到本地離線使用。

git clone https://cloud.listenai.com/zephyr/applications/csk_view_finder_spd.git

4)執行"lisa zep flash"后如果立即執行如下資源下載命令可能會失敗,這時候建議拔插一下DAP口或者檢查一下串口是否被占用。

fa321b5e-930d-11ee-939d-92fbcf53809c.png

經過上述步驟以后,通過PC端工具查看效果如下:

fa465416-930d-11ee-939d-92fbcf53809c.png

2.3.5 識別和顯示

將SPI-GC7219的工程和AI手勢識別的工程融合在一起,程序流程如下:

fa6aacc6-930d-11ee-939d-92fbcf53809c.png

效果展示

效果如下,機器會根據人類的出拳來出拳,用來給做簡單的演示還是挺有意思的。

總結

整體體驗下來,感覺聆思在SOM的易用性、接口的完整性、文檔的豐富度、和支持的及時性上做的都不錯,按照文檔一步步做下來,很快就可以入門做一些簡單的產品。美中不足的是目前聆思的AI訓練和調參工具還沒有面向大眾開放,可能是因為技術性比較強,但因此少了一部分趣味性,在手勢AI識別的demo中也能夠感覺到光照和距離對識別的準確性影響很大,但是在如此低的功耗和性能下做到這樣的程度已經很棒了。最后祝聆思科技的產品越做越棒,極術社區越做越大帶給廣大開發興趣人員更多豐富的活動。

轉自 | 安謀科技學堂

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 手勢識別
    +關注

    關注

    8

    文章

    219

    瀏覽量

    47625
  • AI
    AI
    +關注

    關注

    87

    文章

    27061

    瀏覽量

    264821
  • 開發環境
    +關注

    關注

    1

    文章

    204

    瀏覽量

    16480
  • GPIO
    +關注

    關注

    16

    文章

    1149

    瀏覽量

    50737
  • 開發套件
    +關注

    關注

    2

    文章

    143

    瀏覽量

    24172

原文標題:【聆思CSK6視覺AI開發套件試用】基于AI手勢識別的剪子包袱錘游戲

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HiSpark AI Camera開發套件安裝教程

    這是版主 董昱 @董昱 投稿的AI Camera 開發套件安裝教程。
    發表于 11-10 13:59

    【新品發售】Taurus & Pegasus AI計算機視覺基礎開發套件

    ` 本帖最后由 jf_73813179 于 2021-4-1 10:30 編輯 Taurus & Pegasus AI計算機視覺基礎開發套件,基于海Taurus
    發表于 03-31 11:52

    Taurus & Pegasus AI 計算機視覺基礎開發套件的軟件包在哪里下載?

    Taurus & Pegasus AI 計算機視覺基礎開發套件的軟件包在哪里下載?build_package、VM_package 等
    發表于 12-04 14:48

    學習搭建CSK6板卡的開發環境

    zep工具下載 CSK6一鍵安裝包并運行安裝1.4、檢查開發環境lisa zep安裝完成后,檢查開發環境。執行命令:lisa info zep二、編譯blinky例程選擇一個目錄,創建blinky項目
    發表于 11-09 16:12

    CSK6視覺AI開發套件初次體驗

    前言前段時間申請了CSK6視覺AI開發套件,心想MCU算力有限不太可能搞定視覺任務,經過簡單的試用發現效果很不錯,不得不感嘆現在芯片發展太快
    發表于 11-09 16:19

    基于CSK6視覺AI開發套件的人臉識別功能測試

    1、人臉識別功能測試  開發板支持人臉識別,提取人臉的邊界框、標定點、頭部姿態角度等,支持68個關鍵點檢測;頭部姿態角度圖示,支持pitch、roll、yaw三個角度?! ∵m合離線的方式,支持的人
    發表于 11-21 16:16

    記錄使用CSK6011A NanoKit vision套件開發的一個小游戲

    本文記錄使用 CSK6011A NanoKit vision 套件開發的一個小游戲,整個開發在 Linux 下完成,包括環境搭建和功能
    發表于 11-21 16:46

    如何通過簡單幾步調通GPIO控制電磁繼電器的工作

    、開發板介紹我還是先來簡單介紹一下我們的主角:CSK6視覺AI開發套件。它是思科技針對
    發表于 11-23 14:50

    一文詳解Ubuntu環境下AI圖像識別體驗

    1、Ubuntu環境下AI圖像識別體驗  CSK6思科技新一代的 AI 芯片 SoC 產品系列,采用多核異構架構,集成了 ARM Star MCU,HiFi4 DSP,以及
    發表于 11-23 16:09

    CSK6視覺AI開發套件使用

    即將創建的項目,在這個目錄下執行以下命令lisa zep create ,該命令會列出當前 CSK6 適配的項目 sample ,我們可選擇任意一個作為我們的工程模板,創建在當前目錄中。在命令行中進
    發表于 12-13 16:24

    CSK6視覺AI開發套件點燈 + AI功能體驗

    build -b csk6011a_nano下載lisa zep flash點燈好家伙。dts都來了,Zephyr 什么東西不過dts linux 驅動必備。但是感覺要勸退一堆小白AI功能模型文件7M。應該是
    發表于 12-15 10:07

    CSK6視覺AI開發套件初體驗

    一,開發板介紹CSK6思科技推出的一款MCU+DSP+NPU的SoC芯片。SRAM是1M,PSRAM是8M,不是很清楚各個核之間是怎么做內存共享?應該不會相互獨立的。二,開發環境配
    發表于 12-21 09:23

    CSK6011與NVIDIA Jetson Nano開發板對比

    nano 基礎套裝1719 + usb攝像頭109 =1828 RMBCSK6視覺AI套件 248 RMBps:nano 購買USB攝像頭主要是因為自帶的csi攝像頭極不穩定。5、總
    發表于 02-14 14:19

    STM32F7691開發套件能用openMV實現視覺識別嗎?

    請問選擇了AI方向,選用的是STM32F7691開發套件,能用openMV實現視覺識別嗎,還是必須在板子上用F769NI芯片實現
    發表于 08-07 06:26

    聆思CSK6芯片性能與應用前景分析

    聆思CSK6芯片性能與應用前景分析
    的頭像 發表于 05-15 09:11 ?215次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>