2018年6月14日 星期四

仿生獸電機改造續集

        這一篇是「風力仿生獸及電機改造」的續集,所以對於風力仿生獸的來源部份就不再多介紹…但會有使用Tinyplan來當主控板的想法,主要是我覺得使用micro:bit那隻的作法走得沒那麼順暢,分析一下原因是因為micro:bit加上robot:bit擴充板再加上二顆TT馬達實在有點重,走起來的負擔比較大,尤其是左右轉的時候~
        使用的塑膠料一樣是網購買的,靠風力的架構,沒有電機的設計,零件已算是很精美了,小朋友若直接組裝也會非常有趣,以小朋友的角度來說,我覺得可以先組起風力的版本玩一玩,領會齒輪軸帶動黃金比例的支架運動的樣子,接下來拆了它,學一點電機的知識(至少知道馬達怎麼轉動)、學個Arduino、Micro:bit或其他小單板,然後思考如何結合進去,利用電機取代原來的風力帶動…
小朋友自己看說明獨力完成也是一種很好的練習
※插播一個相關的題外話:我還買到另一種兩仿生機器人,運動原理是一樣的但像有二隻腳走路…重點是它被設計成風力電力雙用,這也是我們可以納入學習的想法!
樣子比較像機器人
上面這段影片中,朝風車吹風,機器人便迎風前進…
同樣一個裝置,改用二顆小電池帶動,單純的電機,沒有控制機制,給電就向前走就是了!
        回到這篇的正題,我們先來認識一下Tinyplan板,這是一塊台灣在地的MiniPlan機器人團隊所開發的all-in-1伺服馬達控制器,可以搭配小型伺服馬達(Servo)之操控,內建WiFi晶片,可以同時控制8個Servo,而且自帶可充電電源,與Arduino IDE 相容(意思是可以利用Arduino IDE環境來編輯程式

Tinyplan功能強大,使用原廠ESP-WROOM-02晶片 
編寫程式的方法和使用Arduino板類似


        這次的電機動力就不使用減速馬達了,改用二顆360度的伺服馬達來帶動中軸轉動,使用便宜又大碗的輝盛TowerPro SG90就對了 。
Tinyplan只用來接二顆Servo是有點大材小用
        這時先想著如何讓Servo的旋轉軸能跟仿生獸的曲軸連動的方法我的作法是直接利用模型內原本零件,用螺絲將舵柄鎖上。

就自己想辦法做做手工,用膠水黏應該也可以
接上主板測試一下…,Tinyplan的連接方法與Micro:bit使用藍芽是不一樣的,它的方式是走WIFI,它自己會是一個無線AP,用電腦或手機平板連上AP後,利用瀏覽器就可以操控,當然得先把寫好程式的程式Upload進去。
兩個伺服機分別當左右軸,所以旋轉方向相反,反正接上去如果發現錯了再反接就好了,測試沒問題後,我利用長螺絲將兩顆伺服馬達固定…並且鎖上仿生獸上頭去!
想了這招
        值得一提的是,我這次的Tinyplan並沒有黏死在上頭而是用「掛的」,考慮到之後如果要拆解重裝的方便,就去電子材料行東找西找,自己發揮一下想像力,看看小零件怎麼湊和可以達到自己想要的目的,我覺得蠻好玩的是這一塊…
花了一點時間思考怎麼結合
        最後當然就是做好囉!拿來玩玩看,有影片有真相~
        走起來的樣子,我覺得比上一版的好上許多,靈活度大增,只不過寫程式的方法就不像Micro:bit那種Blockly積木拖拉式友善,不過如果有人帶及解釋的話倒也不至於難到小朋友不能理解~
※在一般課堂上,有一點是我覺得更困難的是錢錢的問題,零件和電機都需要額外的錢購買,這也是難以在小朋友身上普及的最大原因,有人會說老師操作給小朋友看的方式教學也可以,我個人覺得那是沒什麼用的,千知萬知都比不上用自己手動手來一次的好!
※給吳秉涎帥哥看一下這隻仿生獸,他說狗頭掛在上面看起來有點可怕,就改一下,弄上個超音波眼睛~
這就不可怕了吧!
※後記:
一開始只是想改造一下風力仿生獸的動力來源,使用Tinyplan當主板後,覺得只用來驅動二個Servo會不會太浪費了,這塊板子被設計來驅動8個Servo,也就是8個有pwm,電路方面就是能供應足夠的電流,加上個Ultrasonic吧!讓它長眼~再放個Buzzer可以發出聲音,最後再頭頂上加個8x8的Led,可說是閃閃動人,也把板上的pin給插滿,才不顯得浪費了!
最後的樣子
在程式方面,主要是SETUP段的初始化及LOOP段的迴圈偵測
void setup(void) {
//8x8 LED及Buzzer初始
  myBEAST.initLEDMatrix(BEAST_PIN_LED_DIN, BEAST_PIN_LED_CS_PIN, BEAST_PIN_LED_CLK_PIN, MATRIX_DIR_270);

  myBEAST.initBuzzer(BEAST_PIN_BUZ);
............
//開機時唱一句,閃幾個圖
  myBEAST.sing(12);
  myBEAST.putMouth(20);
  delay(100);
  myBEAST.putMouth(21);
  delay(100);
  myBEAST.putMouth(22);
  delay(100);
  myBEAST.putMouth(23);
  delay(100);
  myBEAST.sing(0);
  delay(100);
  myBEAST.putMouth(0);
}
迴圈
void loop(void) {
//偵測是否進入使用超音波的模式
if (Ultrasonic_OnOff == 1) {
  myBEAST.putMouth(1);
  delay(100);
    if (ultrasonic.distanceRead() > 11 && ultrasonic.distanceRead() <= 20)
    {
      // 如果前方有障礙物在20公分到11公分之間→右轉動作
      右轉的程式碼
    }
  else if (ultrasonic.distanceRead() > 20)
   {
前進的程式碼
   }
else if (ultrasonic.distanceRead() <= 11)
    {
      // 倒退的程式碼
    }
}
上頭並不是完整的程式,只是表達出程式邏輯而已~最後,這仿生獸就活靈活現的…

2018年6月4日 星期一

樂於Make,當個Creator

為什麼下這個標題呢?當然就是希望各位小朋友樂於動手、喜於創作…
  在這個下學期,有些六年級在做一個完整的專案:「班級的畢業光碟」,另有一兩位留下來玩玩Obot小車(Scratch搭配Arduino)
玩小車的

做光碟的
對於六年級來說,老師有一個特別的要求,就是所有要達成的目標,都要自己設定,老師就只是偶爾講講,提供一些資源,必要性的講解,不再隨侍在旁…大家也都有某些基本能力,就動手去做就是了!很多難處會在實際操作時冒出來。
  這段時間,電腦教室就呈現出二邊截然不同的情景,一邊是老師為三、四、五的新邀請成員上課;另一邊是六年級的一群自由地發揮,當然老師我還是會利用時間探頭去看看六年級的有沒有在計畫的軌道中運行著…
學弟妹需學些基本能力


  時間過得快,下學期的時間更快,轉眼間六年級就要畢業了,玩Obot的到了進階的部份就有些卡住的感覺,又有人因為班上要辦音樂會,中午都去練習了,索性Obot收起來,做隻風力仿生獸吧!需要些手工,但很有趣!
Make . Make
花了不少時間做好了

  做畢業光碟的,在漫長的工作後進入了尾聲,其中一個班很有計畫地進行著,所以內容較為充實,而另一班的小組則出現了混雜的現象,所以內容部份的完成度就較差了些,無論如何,這都是學習的一部份,我要他們知道時間沒了,就評估以現狀完成光碟。
怎樣都會完成的

這三位小朋友對於自己作品的要求,老師覺得很優
花了很多時間呢!

上國中後,也許還會有機會組成一個團隊做一個case,希望這次做光碟的經驗能帶給小朋友們一些潛在能量。
  值得一提的是,今年有一組精實團隊,除了動手製造外,還進入了創作者的境界:「自創的畢業歌」,不僅作曲作詞,還邀了同班伙伴一起唱出來,所以老師邀了他們來錄下來,並要其中的成員來後製它~
唱自己作曲的歌很快樂吧!
自己的錄影當然自己來後製
自己的作品

好東西跟好朋友分享
在我們這個小組一起學習的大家都要有一個觀念:「自己動手」,老師希望大家常去教別人,但要求被教的人自己動手操作。也許我們利用中午的時間,常常在學一些軟硬體的操作技術,但請各位記得,我們是電腦的主人,學電腦技術卻不可受限於電腦,只要有想法,就去實現它…
※創作者的樂趣,就是你可以命名它、發表它,下面的影片便是這次的原創者發表到網路上的,一起來欣賞吧!下次就輪到學弟妹們表現囉!