2020年3月31日 星期二

[micro:bit] 蒸汽彼特(STEAM on Micro:bit)II──主題9:小彼特心臟病

蒸汽彼特(STEAM on micro:bit)II

主題9:小彼特心臟病


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. 31, 2020
88x31.png[1]




難易度

★★☆☆☆

主題

根據撲克牌遊戲來設計類似的小彼特玩法。

任務

小阿聰總是神經大條,對事情的反應老是慢半拍。請設計一個特訓機來協助他反應up up!
利用導電原理,使用鋁箔(aluminum foil)作為接觸端點,並以鱷魚夾(crocodile clip)搭建出電路迴路來偵測瞬間觸碰的反應識別

材料

編號 品名 單位 數量
1 小彼特主板 1
2 傳輸線 1
3 鱷魚夾 4
4 鋁箔紙 1
5 瓦楞紙板/PP板/木板… 1

造形設計

設計我們想們想要的外觀(例如這款由世界最偉大的林先生親手繪製的大象圖案,留出要黏貼發牌、奇數牌玩家、偶數牌玩家及GND四個鋁箔觸碰點的位置,再根據我們事先畫好的設計稿剪裁之

功能設計=硬(電路設計)+軟(程式設計)

參考撲克牌心臟病的實際玩法https://reurl.cc/z8MaW7)來制定我們的遊戲規則。例如:兩位玩家(以奇數或偶數數字搶答區別,文後以奇數玩家及偶數玩家簡稱之)都先將一手放在GND觸碰(touch)的共地鋁箔上。然後,選由其中的一位玩家按小彼特的A按鈕發牌。當牌數為偶數時,先前被指定為偶數需作答的玩家有按下觸碰則得一分。反之,若先前被指定為奇數需作答的玩家因誤判而按下觸碰時就扣一分。最後,在比賽時間結束後,按下A按鈕會自動顯示贏家代碼,奇數玩家為A,偶數玩家為B。平手則以=表示。


導電原理:從電源正極出發,經開關到LED後回到電源負極的電路迴路(circuit loop),開關就是擔任迴路導通的切換關口。像本單元中的鋁箔正是做為迴路的導通開關之用。


電路設計如圖所示
另一方面,程式邏輯(program logic)参考樣版(template)步驟為:(變數played表示發牌的狀態,0:未發,1已發;card:記錄發牌的點數;scored_A/scored_B:奇數/偶數玩家的得分記錄)。

  1. 發牌(觸碰P0):程式流程為,轉換成對應的程式碼為
  2. 作答(觸碰P1/P2:程式流程為,轉換成對應的程式碼為
  3. 判斷輸贏(小彼特主板的按鈕A):程式流程為,轉換成對應的程式碼為。
參考程式碼可按https://reurl.cc/qdOR70下載。教學投影片可由https://reurl.cc/9EOkja下載

教學活動設計

  1. 敏捷王 採三戰兩勝分組進行競賽。選出最終的年度最佳「敏捷王」。
  2. 搶答機 請將上述的範例程式做適度的修改,並設計十道題目,由紅白兩隊各派十人參賽。主持人念完題目後開始按機搶答。
  3. 心臟病 用四塊小彼特WXYZ模擬四家對戰,並再放置一塊小彼特D來顯示各家翻出的牌。
    一開始按下小彼特D的A按鈕將52張牌平均發給小彼特WXYZ。
    然後由小彼特WXYZ輪流按按鈕A出牌,並顯示在小彼特D上。
    每家出完牌後即開始等候按下按鈕B搶答。
    搶答的先後次序由小彼特D來仲裁。
    (建議使用WiFi來處理五塊小彼特之間的訊息傳遞。根據筆者實測,多塊小彼特通訊會產生信號干擾而導致封包遺失(packet lose)https://reurl.cc/j7kzEn)的窘境。)

積木指標

Basic、Input、Logic、Math、Variables

編程指

循序結構(sequence structure)判斷結構(decision structure)非同步事件處理(asynchronous event handling)

硬體指

鋁箔紙、鱷魚夾。

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

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. 六種授權條款

        2020年3月19日 星期四

        [AI] 心情指數:使用VIA Pixetto視覺感測器之形狀偵測(Shape Detection)功能

        心情指數:

        使用VIA Pixetto視覺感測器之形狀偵測(Shape Detection)功能


        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. 19, 2020
        88x31.png[1]

        難易度

        ★★★☆☆

        主題:人機互動

        生我者父母,知我者…?如果AIread our mind那該有多好呢?(請參考 https://reurl.cc/MddgmL 和 https://reurl.cc/Y66br0 這兩篇的20種解釋)。

        任務

        請設計一款能顯示今日心情指數(blue Monday、生人勿近…)的小燈來點亮你我心中那盞光明燈!
        利用8787的形狀偵測功能來觸發燈條以閃爍不同顏色。

        材料

        項目品名單位數量
        1VTS-8787視覺感測器1
        2micro USB傳輸線1
        3Arduino Nano(FT232晶片,含mini USB傳輸線)1
        4mini USB傳輸線1
        5Grove – 4x公端杜邦線+母座 to Grove 4pin連接線1
        6麵包板1
        7WS2812B燈條1

          • 如果讀者要將項目3的開發板換成Uno或其他Arduino版本,請自行將項目4的傳輸線做調當的調整。
          • 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。

          造形設計(機構)

          為自己的創作小物https://reurl.cc/AqgWG3)加上心情顏色https://reurl.cc/AqgWQK),例如萌萌橘、鎮定藍…。

            功能設計(電路、程式)

            先依照下表及圖1接妥8787、Nano、燈條與電池盒雙電源共地的連接線路。若僅作功能測試,可以將燈條直接使用Nano上的5V電源,以省去準備外接電源的功夫。

            NanoWS2812B8787
            D0
            D1
            D8DIN
            5V5V
            GNDGND

            圖1:接線圖。


            在Pixetto Utility上(圖2)選用形狀偵測功能後,將之套用至8787。

            圖2:在Pixetto Utility上選用形狀偵測功能。

            接著,在Pixetto Junior上拉出圖3的積木程式。這個程式的邏輯是當8787識別出圓形時就讓Nano板載D13腳位的SMD LED點亮;若為矩形就關閉。其中,點亮LED將於最後的Arduino程式中改為燈條的顏色顯示。

            圖3:Pixetto Junior的Blockly程式碼。

            在進行最後一個步驟前,先將燈條的Arduino函數庫https://reurl.cc/j7qZ8n)加到Pixetto Junior中(預設路經為C:\Pixetto\PixettoJunior\arduino\libraries)。然後再將以下標示底線用來控制燈條的指令(初始化綠光、圓形:紅光、矩形:藍光)加到圖3自動產生的Arduino程式碼中。

            #include <Adafruit_NeoPixel.h>


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

            SmartSensor ss(0,1);

            #define PIN 8 //Which pin on the Arduino is connected to the NeoPixels? 
            #define NUMPIXELS 6 // How many NeoPixels are attached to the Arduino?

            // When setting up the NeoPixel library, we tell it how many pixels,
            // and which pin to use to send signals. Note that for older NeoPixel
            // strips you might need to change the third parameter -- see the
            // strandtest example for more information on possible values.
            Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

            void setup() {
              ss.begin();

              pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
              pixels.fill(0x00FF00, 0, 6);
              pixels.show();  
              delay(500);

              pixels.clear(); // Set all pixel colors to 'off'  
              pixels.show();  
            } //end of setup()

            void loop() {
              if (ss.isDetected()) {
                if (ss.getTypeID() == ss.SHAPE_ROUND) {
                    pixels.fill(0xFF0000, 0, 6);
                    pixels.show();  
                } else if (ss.getTypeID() == ss.SHAPE_RECTANGLE) {
                    pixels.fill(0x0000FF, 0, 6);
                    pixels.show();  
                } //end of if
              } //end of if
            } //end of loop()

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

              圖4:展示影片。

                教學活動設計

                1. 讓8787看到圓形時閃流水燈(https://reurl.cc/N66gV5樣式(pattern)(圖5),看到矩形時閃霹靂燈(https://reurl.cc/9XXqgX)樣式(圖6)。

                  圖5:燈條的流水燈樣式。


                  圖6:燈條的霹靂燈樣式。

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

                  2020年3月14日 星期六

                  [AI] 芝麻開門:使用VIA Pixetto視覺感測器之組合色偵測(Color Codes Detection)功能

                  芝麻開門:

                  使用VIA Pixetto視覺感測器組合色偵測(Color Codes Detection)功能


                  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. 15, 2020
                  88x31.png[1]

                  難易度

                  ★★★☆☆

                  主題鑰匙

                  日常生活中用來開鎖的鑰匙有很多種形式,金屬製、電子式、…,甚而是以生物特徵做為識別身份的方式。那8787可以打造出怎樣的錀匙呢?

                  任務

                  天神托夢給阿拉丁,要他坐著飛天魔毯先到撒哈拉沙漠尋得傳說中的太極圖騰。然後再飛到神秘的中國去取回藏在天安門內的上古神器來消解皇宮內被瘟神散佈病毒肆虐的傳染病。
                  利用8787的組合色偵測功能來啟動伺服馬達(servo motor)開門

                  材料

                  項目 品名 單位 數量
                  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

                  • 如果讀者要將項目3的開發板換成Uno或其他Arduino版本,請自行將項目4的傳輸線做調當的調整。
                  • 技術咨詢(手機加Line:https://reurl.cc/Vadax6)。

                  造形設計(機構)

                  讀者可參考這段https://reurl.cc/7Xolzd將伺服馬達運用在智慧門鎖的物聯網(Internet Of Things,IOT)情境上的影片自行設計相對應的機構
                  因外,這一篇https://reurl.cc/0oOnNl)結合了3D列印(3-D Printing,3DP)與NFC來控制伺服馬達門鎖的設計也是一個參考範本。
                  另一方面,這一篇https://reurl.cc/pdyXGb)則是運用藍牙及app當作無線鑰匙來開關門鎖。
                  最後,還有這位大神拿伺服馬達做遙控開燈的懶人裝置呢!

                    功能設計(電路、程式)

                    先依照下表及圖1接妥8787、Nano、伺服馬達與電池盒雙電源共地的連接線路。若僅作功能測試,可以將伺服馬達直接使用Nano上的5V電源,以省去準備外接電源的功夫。請留意,伺服馬達需接在Nano的數位模擬類比之PWM(Pulse Width Modulation,脈衝寬度調變)腳位(pin)上,例如圖1的~D9。

                    Nano 伺服馬達 8787
                    D0
                    D1
                    ~D9 黃(橘)
                    5V
                    GND 黑(棕)

                    圖1:接線圖。


                    在Pixetto Utility上(圖2)選用援用此網站https://reurl.cc/8GnO4X)的紅、黃、藍三混色太極圖案向量圖偵測後,將之套用至8787。


                    圖2:在Pixetto Utility上選用組合色偵測功能。


                    在Pixetto Junior上拉出圖3的積木程式。這個程式的邏輯是當8787識別出組合色的太極圖案(物件0)後讓伺服達轉回0度(它的初始角度在正中90度)。

                    圖3:Pixetto Junior的Blockly程式碼。

                    圖3對應的Arduino程式碼如下所示:

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

                    #include <Servo.h>

                    SmartSensor ss(0,1);
                    Servo servo_9;

                    void setup() {
                      ss.begin();
                      servo_9.attach(9);
                      servo_9.write(90);
                    }

                    void loop() {
                      if (ss.isDetected()) {
                      if (ss.getTypeID() == 0) {
                      servo_9.write(0);
                      delay(600);
                      servo_9.write(90);
                      }
                      }
                    }

                    最後,本單元的操作影片https://youtu.be/1B4NFbdeDKw 如圖4所示。

                    圖4:展示影片。

                      教學活動設計

                      1. 太極https://reurl.cc/Y16pWa)做為關鍵字到Google圖片備妥若干張組合色照片,例如這張https://reurl.cc/GVrOmx)或這張https://reurl.cc/E7zenR),後測試看看8787總共能認出其中的多少張呢?
                      2. 參考拙著《VIA Pixetto視覺感測器大開箱(unboxing):AI開發工具(Development Kits)篇》(https://reurl.cc/kd0gZ3)一文中的「我乃小智是也,自己神奇寶貝自己訓」小節,使用自己設計的組合色圖騰來訓練一個新模型後再重複上述步驟來測試8787是否能成功地認得它。

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