2020年3月20日 星期五

[AI] 快樂頌:使用VIA Pixetto視覺感測器之模板匹配(Template Matching)功能

快樂頌:

使用VIA Pixetto視覺感測器之模板匹配(Template Matching)功能


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

Mar. 20, 2020
88x31.png[1]

難易度

★★★☆☆

主題

8787內建的AI影像處理(image processing)功能應用實作。

任務

石鐘媽為了近來疫情嚴重,家中兩個小寶貝將面臨學校隨時停課而要有家裡蹲的居家照護因應。
各位讀者,請腦力激盪一下,利用8787來替石鐘媽隨時演奏一曲快樂頌提提神吧?
利用8787的模板匹配功能來演奏音樂曲目,例如:看到LV標誌播一曲快樂頌。

材料

項目 品名 單位 數量
1 VTS-8787視覺感測器 1
2 micro USB傳輸線 1
3 Arduino Nano(FT232晶片,含mini USB傳輸線) 1
4 mini USB傳輸線 1
5 Grove – 4x公端杜邦線+母座 to Grove 4pin連接線 1
6 麵包板 1
7 無源蜂鳴器 1
8 杜邦線(公母,10cm以上) 2
  • 如果讀者要將項目3的開發板換成Uno或其他Arduino版本,請自行將項目4的傳輸線做調當的調整。
  • 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。


造形設計(機構)

請參考音箱https://reurl.cc/exmDkR)或音樂盒https://reurl.cc/9E54bX)的概念設計作品的外觀。記得將8787及其相關電路的尺寸考量進去。

    功能設計(電路、程式)

    先依照下表及圖1接妥8787、Nano與蜂鳴器的連接線路。請留意,蜂鳴器需接在Nano的數位模擬類比之PWM(Pulse Width Modulation,脈衝寬度調變)腳位(pin)上,例如圖1的~D9。

    Nano
    蜂鳴器
    8787
    D0
    D1
    ~D9
    5V
    GND

    圖1:接線圖。


    在Pixetto Utility上(圖2)選用形狀偵測功能,以此LV商標https://reurl.cc/9E57nn)框選出即將要被識別的最小矩形後再將之套用至8787。可參考拙著《VIA Pixetto視覺感測器大開箱(unboxing):AI開發工具(Development Kits)篇》(https://reurl.cc/Qd6eVO)一文。

    圖2:在Pixetto Utility上選用模板匹配功能。

    接著,在Pixetto Junior上拉出圖3的積木程式。這個程式的邏輯是一開機後先讓蜂鳴器發出一頻率為100 Hz的聲音來做自我測試(self test)
    接著,若8787「看見」前述的LV商標後就播放音效(讀者可利用此簡譜https://reurl.cc/7X37b5)修改成對應的音頻)。否則,就讓蜂鳴器靜音。其中,為了讓8787不致於很快速的重覆識別到LV商標,我們加上變數i以做為旗標(sentinel)控制。

    圖3:Pixetto Junior的Blockly程式碼。

    圖3積木程式自動生成的Arduino程式碼如下所示。

    #include <Arduino.h>
    #include <SmartSensor.h>

    SmartSensor ss(0,1);
    int i;

    void setup() {
      ss.begin();

      pinMode(9, OUTPUT);
      i = 0;
      // D4: yellow (Tx)
      // D5: white (Rx)
      //
      // D0 (Rx): yellow (Tx)
      // D1 (Tx): white (Rx)
      analogWrite(9, 100);
      delay(300);
      analogWrite(9, 0);
    }


    void loop() {
      if (ss.isDetected()) {
      if (ss.getTypeID() == 1) {
      i = i + 1;
      if (i == 1) {
      analogWrite(9, 330);
      delay(300);
      analogWrite(9, 277);
      delay(300);
      analogWrite(9, 262);
      delay(300);
      }
      }
      } else {
      i = 0;
      analogWrite(9, 0);
      delay(300);
      }
    }

    本單元的操作影片https://youtu.be/uXTgHpT16wA 如圖4所示。

    圖4:展示影片。

      教學活動設計

      1. 將前述的LV商標換成Gucci後讓8787再重新識別看看。

        参考資料
        1. 六種授權條款