2016年12月29日 星期四

[Learning] 學會

本來不會的寫完一本書後就會了
=>我的注譯:本來不會的教过一遍也就學會了

[創業] 如何經營特色?


  • 在marketing上早就有手法了:

1.品牌(branding)
2.口碑(worth- of-mouth marketing)
3.裸奔(naked run)
4.培養創造力!藝術家駐校教學

Which one do u want?

    • 追求外在的光环不如回來看看自己有什麼料?
    • 與眾不同(being remarkable)



2016年12月12日 星期一

[IoT] IoT架構使用各類開發板

IoT架構使用各類開發板
Ted Lee@CAVEDU
Dec. 12, 2016
88x31.png[1]

需要用7688 "DUO"Arduino Yun亦同)控自走車(有必要用這麼fancy的架構嗎?)的朋友請看這篇:LinkIt Smart 7688小案 - WiFi工程車
  • 原理:這時您的愛車接在Arduino的Dx腳位
App(程式1,例如App Inventor寫成的)->
MCS(設定)->
7688 Duo的Wi-Fi晶片(程式2,例如:Python或Node.js)---(走bridge介面)--->
7688 Duo的Arduino晶片(程式3:Arduino C)->

  • 如果只玩7688,原理如下:這時您要用7688的GPIO
App(程式1,例如App Inventor寫成的)->
MCS->
7688(程式2,例如:Python或Node.js)->

  • Arduino相容板(例如:Motoduino)+ESP8266的原理是也相同的:Wi-Fi+Arduino(Wi-Fi晶片+ATMega晶片)
  • 但請先想想:
  1. Why app?=>用app當遙控器
  2. Why MCS?藍牙不行嗎?=>用MSC中繼遠控,但會有delay喔,在反應時間是重要的考量下,1&2的IoT模式是否合用?
  • 如果我有一個Wi-Fi router接固定IP能不能遠控車?
App---(指定IP)--->
Wi-Fi router->
7688的MT7688晶片(固定IP,並run一個Python server->
車(接在7688的GPIO腳位)


P.S. 以上全文從[2]截錄,special thanks to Michael Huang


参考資料:

2016年11月30日 星期三

[Programming] 為什麼「人人」要會寫程式?


1。以目前科技進步的步調,只會有愈來愈多的工作會被科技取代。如果不想失業,專業+程式才有機會「保本」
2。愈來愈多的機器日夜不停產生data,人們被迫升級,升級到H2M,Human To Machine。哈,也就是學著說機器聽的懂的語言。那…學寫程式吧!

2016年9月27日 星期二

[Robotics] 機構學


機構學
Ted Lee
Lct4246@gmail.com
Feb. 19, 2017
88x31.png[1]
  • 机件->機構->機器


参考資料:

2016年9月24日 星期六

2016年8月8日 星期一

[Android] ADT Bundle Gging...

ADT Bundle Gging
Ted Lee
Aug. 8, 2016
88x31.png[1]

給我這張紅單是啥意思?
OS、JDK和ADT Bundle都要一樣啦!
要嘛通通裝32 bit、要嘛选64 bit,想要混搭嗎?
你時間多就try try see唄!

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

2016年7月9日 星期六

[Cloud Services:IBM Bluemix]

有趣的專案及參考資料
Ted Lee@CAVEDU
Jul. 9, 2016
88x31.png[1]


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

2016年5月10日 星期二

[IoT] 幾款物聯網常見開發板比較

幾款物聯網常見開發板比較
Ted Lee@CAVEDU
May 10, 2016
88x31.png[1]



WiFi晶片 Arduino晶片 作業系統 應用
Arduino Yun Atheros AR9331 ATmega32U4 Linino(OpenWrt) Router+Arduino
聯發科LinkIt Smart 7688 MT7688AN OpenWrt Router
聯發科LinkIt Smart 7688 Duo MT7688AN ATmega32U4 OpenWrt Router+Arduino
樹莓派(Raspberry Pi) 3 BCM43143 Debian 單板電腦
Arduino ATmega32U4 微控制器(互動艺術)
聯發科LinkIt ONE MT5931 GPRS
雲服務 亞馬遜AWS MCS
微軟Azsure
IBM Bluemix


  • OpenWrt:表示使用此類開發板時因為作業系統互通,函式庫有機會可以調用
  • Arduino:很明顯地,原本支援Arduino的各類感測器應該也能在這些開發板上跑


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

    [App Inventor + Arduino] App Inventor使用手機內建加速度感測器遙控Arduino藍芽自走車


    App Inventor使用手機內建加速度感測器遙控Arduino藍芽自走車
    楊雅茹、Ted Lee@CAVEDU
    May 10, 2016
    88x31.png[1]







    参考資料:
    1. 六種授權條款
    2. 體感機械手臂

    2016年5月7日 星期六

    [Arduino Yun]  書信朗讀520(ReadMail520)使用Arduino Yun和Temboo


    書信朗讀520(ReadMail520)使用Arduino Yun和Temboo
    Ted Lee@CAVEDU
    May 7, 2016
    88x31.png[1]

    功能說明

    在以App Inventor開發的Android app上輸入書信的英文文字內容後,傳送到收信人的電子邮件信箱。Temboo偵測到信件主旨為Read Me的來信,透过Arduino Yun外接的USB喇叭朗讀出信件內容。

    材料清單


    1. Arduino Yun開發板×1,NTD 2,200
    2. Mini-B USB傳輸線×1,NTD 100
    3. USB音效卡,NTD 110-130
    4. USB外接喇叭(含音源線),NTD 1,290
    5. (选配)A公-A母 USB 2.0延長線,NTD 98(避免因USB和USB插孔距離太近,以致兩者接在一起時过於擁擠。但硬插塞是可以的)
    合計:NTD 3,700-3,818,接線图如图一所示。

    圖一:ReadMail520連接圖

    Arduino原始程式碼

      經實驗發現,使用Tamboo的choreos[3](取得Gmail最新未讀取邮件)為程式基底架構來編修這段程式是最簡單且快速的!
      

    参考資料:
    1. 六種授權條款
    2. Arduino Yún:Bridge程式庫入門(FileIO類別)
    3. Google . Gmail . GetLatestUnreadEmail
    4. can't load library 'libstdc++.so.6
    5. 如何扩充Yún的存储空间
    6. 將GPS座標透過 email 送出
    7. S.M.A.R.T.智慧鬧鐘英文原文
    8. Text to Speech with the Arduino Yún

    2016年5月2日 星期一

    [Teaching] 講課要素

    講課要素
    Ted Lee@CAVEDU
    May 1, 2016
    88x31.png[1]


    1. 富層次感:由淺入深,逐步進入教材
    2. 使用白話:用和學員生活貼近的語言,少用專有名詞

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

    [Teaching] 增加教學臨場感

    增加教學臨場感
    Ted Lee@CAVEDU
    April 26, 2016
    88x31.png[1]


    可輔以實物、图片說明,增加臨場感。

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

    [Teaching] 業界講師

    業界講師
    Ted Lee@CAVEDU
    May 2, 2016
    88x31.png[1]


    初階:能演繹教材。
    中階:能闡釋教材。
    高中:能旁徵博引,開釋教材。

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

    2016年4月26日 星期二

    [Raspberry Pi] Raspbian Jessie的無線網路UI防呆設定

    Raspbian Jessie的無線網路UI防呆設定
    Ted Lee@CAVEDU
    April 26, 2016
    88x31.png[1]


      本文是在安裝了2016-03-18-raspbian-jessie.zipPi 3上進行實測。筆者在Pi 2 & 3及Raspbian Wheezy和Jessie的多重交叉組合下,找出只用無線網路的UI防呆工具來快速設定好無線網路的方法,而不用手動去修改設定档(config file)
      使用Win32DiskImager將作業系統影像檔(image file)燒錄到SD卡,第一次開機後以滑鼠左鍵奌撃右上角的網路連線設定圖示來搜尋廣播SSID中的無線網路。然後,奌撃要連線的SSID(筆者手機熱奌的名稱為TedLee)以完成相関設定(圖1)。
    圖1:無線網路廣播清單

    此時UI工具會要求我們在圖2的視窗輸入連線密碼:
    圖2:手機熱奌的連線密碼

      最後,如圖3打開浏灠器並輸入Yahoo首頁的網址。Bingo,大功告成!
    圖3:設定妥無線網路,開始浏灠網站

      再以nano(指令:sudo nano /etc/wpa_supplicant\wpa_supplicant.conf)觀察這個防呆UI真真切切如圖4所示,盡責地把筆者的手機熱奌連線資訊順利記進对應的設定檔(wpa_supplicant.conf)了!
    圖4:無線網路UI工具自動填妥無線網路設定檔

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

    2016年4月13日 星期三

    [Arduino Yun] 教學分享

    Arduino Yun教學分享
    Ted Lee@CAVEDU
    April 13, 2016
    88x31.png[1]


    • 連外網設定較容易是卡奌:一堆的ArduinoYun-xxxxxx,不知哪個是我家=>最好在第一堂上課前先把各片開發版的SSID寫在盒上備查!


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

    2016年3月30日 星期三

    [Raspberry Pi 3] 教學分享


    • 多準備一張SD卡以防有壞卡
    • 用隨身碟多準備幾份影像檔
    • Locale
    • 信號干擾,無法上網

    [Arduino Yun] 教學FAQ

    Arduino Yun教學FAQ
    Ted Lee@CAVEDU
    April 12, 2016
    88x31.png[1]
    • Q1:Arduino Yun設定成station mode連外網後,為何SSID就不見了?有些開發板是仍會發出SSID
      • Ans:就像家用的無線AP一樣,可以設定它發不發出SSID。如果設定成不發,那我們就看不到,但仍能用這個被隱藏的SSID連到它。
    • Q2:DHT11的DATA腳位為何要接4.7KOhm的電阻?
    • Q3:Arduino的source code
      • Ans:它是open source的,所以source code也任君参考喔!
    • Q4:Linino用SSH連入的帳號為何是root(而不是在設定連外網時設定的YUN NAME)?
      • Ans:OpenWrt預設的帳號都是root,像7688也是
    • Q5:在Arduino Yun的云端氣象站project中,DHT11接到Arduino上以獲取sensing data,那這些data會透Linino送到Temboo再転存入Google Drive上嗎?」
      • Ans:會,why?
        • 反証法思考:這些data讀入Arduino後如不透过Linino那要從哪兒送到Google?Arduino又沒網路功能!
        • 另,temboo_log.ino的code中有include到Bridge.h,它就是ATmega32U4和AR 9331的伝送data的channel,有興趣可以去trace這段code!

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

    2016年3月27日 星期日

    [Raspberry Pi 3] 有趣的專案、教學及參考資料


    有趣的專案及參考資料
    Ted Lee@CAVEDU
    May 4, 2016
    88x31.png[1]

    参考資料:
    1. 六種授權條款
    2. 圖示來源:Flaticon

    2016年3月17日 星期四

    [Raspberry Pi 3] 實測慘狀

    •  chromium
      • Package chromium is not available, but is referred to by another package.
        This may mean that the package is missing, has been obsoleted, or
        is only available from another source
        However the following packages replace it:
          chromium-inspector chromium-bsu

        E: Package 'chromium' has no installation candidate 
    • luvcview
      • 錯誤 http://mirrordirector.raspbian.org/raspbian/ jessie/main luvcview armhf 1:0.2.6-6
          無法解析 'mirrordirector.raspbian.org'
        E: 無法取得 http://mirrordirector.raspbian.org/raspbian/pool/main/l/luvcview/luvcview_0.2.6-6_armhf.deb,無法解析 'mirrordirector.raspbian.org'

        E: 有部份套件檔無法取得,試著執行 apt-get update 或者試著加上 --fix-missing 選項?

    [7688] 有趣的專案及參考資料

    有趣的專案及參考資料
    Ted Lee@CAVEDU
    Sep. 24, 2016

    2016年3月13日 星期日

    [7688 Duo] 7688 Duo有趣的專案及參考資料@Ted好玩


    7688 Duo有趣的專案及參考資料
    Ted Lee@Ted好玩
    May 4, 2016
    88x31.png[1]

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

    [7688 Duo] DHTXX實測

    • Conclusions:
      • https://www.facebook.com/groups/makerpro.cc/permalink/973163109444410/?comment_id=973311472762907&reply_comment_id=974200559340665&notif_t=group_comment
      • https://labs.mediatek.com/forums/posts/list/4081.page
    • You can't read 1wire device through such platform easily ....its timing issue, better use a i2c version of Dht , I.e. Am2320 ....
      • https://www.facebook.com/groups/makerpro.cc/permalink/965615530199168/?comment_id=965616790199042&ref=notif&notif_t=group_comment
      •  用MTK回覆的cli()和sei()成功解掉了!
    • 有人用 Duo成功把PM2.5及溫溼感測器接上MCS了所以7688是可以接sensors?!
      • https://github.com/future/Linkit7688_PM2.5
    • DHTx:讀取sensoring data要靠S/W
      SHT2X:屬I2C(inter-IC)伝輸,有H/W clock來處理資料同步問題
      我的理解是這樣


      [7688 Duo] 教學經驗分享

      • 原廠手冊(developer guide, FAQ…)及各大communities目前的文章还欠缺7688 Duo送data到cloud(MCS, AWS…)的各類型sample code。例如:MTMega32U從DHT22收到溫溼度值透过UART送給MT7688AN,再傳至MCS顯示,MT7688AN開發手冊就沒有這段的sample code(还停在MT7688AN控LED的階段)
      • MTK在開發手冊中promises會提供Python及Node.js兩套code,不过目前尚未有大幅更新
      • 上Duo講解sensors<->ATMeg32U4<->(UART, Firmata, Yun bridge)MT7688AN<->MSC時速度要放慢一些,學員需要時間理解
        可对照developer guide的MCS控LED及sensors送MCS兩範例詳加舉例
      • 1.win 10裝usb drv因未signed,要手動停用才能裝
        2.有一人換了兩機Arduino IDE一直無法update到出現duo選項
        • 更新BIOS就解掉了,他說他是把DUO接在USB 3.0上
      • 1.有2人自備7688,結果⋯(who am I?),現場有1x個ssid,未曾生我,誰是我?
        建議阿吉請mtk在pcb時加印Mac addr
        2.有1台裝win 10,下課前都抓不到ssid,可能是os或無線網卡問題,有拿其他work的7688接測過
        3.有1台裝ubuntu,ssid重開機才抓得到
        4.用node.js控led時,程式執行前,led一直亮著是正常的(一直亮還有2種狀況:booting、f/w error)
        5.mcs的LED_Contol容易沒設正確
        6.抓SSID和MCS設定學習比較容易突搥

      [7688 Duo] 支援的webcam實測報告


      • Not support:

      2016年3月6日 星期日

      [Arduino] Ex1_3:紅錄燈控制

      Ex1_3:紅錄燈控制
      Ted Lee@CAVEDU
      Mar. 6, 2016
      88x31.png[1]

      本實驗延伸Ex1_1的Lab1_1_2,將LED的正極由原先接到Arduino第13腳改接到第9腳,並將程式由呼叫digitalWrite()改為呼叫analogWrite()。因為analogWrite()使用變更工作週期(duty cycle)PWM技術來模擬連續性的類比信号,故能使LED亮度而有漸明/暗的效果,也就是常聽到呼吸灯的由來。

      本範例过関後,可獲得LED灯光Fade卡一張。

      難易度:易

      材料
      1. LED(Light-Emitting Diode,發光二極体)一顆
      2. 220W電阻一顆(色环:紅紅棕金)
      3. 杜邦線2條
      4. 麵包板一塊
      5. Arduino Uno R3一塊(本系列文章皆簡稱為Arduino開發版
      6. A-B型USB傳輸線一條

      程式Fade.ino
      在Arduino IDE中由Fade File->Examples->1.Basics->Fade開啟Arduino內建的範例程式。
      int brightness = 0;    // how bright the LED is
      int fadeAmount = 5;    // how many points to fade the LED by
      void setup()  {   
        // declare pin 9 to be an output:   
        pinMode(9, OUTPUT);
      } 
      void loop()  {   
        // set the brightness of pin 9:   
        analogWrite(9, brightness);  
        // change the brightness for next time through the loop:   
        brightness = brightness + fadeAmount;  
        // reverse the direction of the fading at the ends of the fade:   
        if (brightness == 0 || brightness == 255){   
          fadeAmount = -fadeAmount ;   
        }       
        delay(30); // wait for 30 milliseconds to see the dimming effect    
      }
      流程圖.vsdx
      執行結果
      接線圖.fzz
      高手必練
      修改控制LED明滅度fadeAmount的值(例如:5->10),再覌察LED灯的明滅是否有不同變化

      2016年2月22日 星期一

      [IoT] 歺飲IoT


      請舉出一部IoT應用至餐飲業的影片,以留言的方式寫下:
      1. 學号
      2. 姓名
      3. 搜尋関鍵字
      4. 影片名稱
      5. 影片連結
      6. 影片內容簡介
      P.S.留言以先交先贏方式採計:若搜尋到相同的影片,以先PO者勝之!

      2016年2月12日 星期五

      [7688 Duo] 一閃一閃亮晶晶(Blink)

      一閃一閃亮晶晶(Blink)
      Ted Lee@CAVEDU
      Feb. 12, 2016
      88x31.png[1]

      本實驗延伸Ex1_1的Lab1_1_2,將LED的正極由原先接到Arduino第13腳改接到第9腳,並將程式由呼叫digitalWrite()改為呼叫analogWrite()。因為analogWrite()使用變更工作週期(duty cycle)PWM技術來模擬連續性的類比信号,故能使LED亮度而有漸明/暗的效果,也就是常聽到呼吸灯的由來。

      本範例过関後,可獲得LED灯光Fade卡一張。

      難易度:易

      材料
      1. LED(Light-Emitting Diode,發光二極体)一顆
      2. 220W電阻一顆(色环:紅紅棕金)
      3. 杜邦線2條
      4. 麵包板一塊
      5. Arduino Uno R3一塊(本系列文章皆簡稱為Arduino開發版
      6. A-B型USB傳輸線一條

      程式Fade.ino
      在Arduino IDE中由Fade File->Examples->1.Basics->Fade開啟Arduino內建的範例程式。
      int brightness = 0;    // how bright the LED is
      int fadeAmount = 5;    // how many points to fade the LED by
      void setup()  {   
        // declare pin 9 to be an output:   
        pinMode(9, OUTPUT);
      } 
      void loop()  {   
        // set the brightness of pin 9:   
        analogWrite(9, brightness);  
        // change the brightness for next time through the loop:   
        brightness = brightness + fadeAmount;  
        // reverse the direction of the fading at the ends of the fade:   
        if (brightness == 0 || brightness == 255){   
          fadeAmount = -fadeAmount ;   
        }       
        delay(30); // wait for 30 milliseconds to see the dimming effect    
      }
      流程圖.vsdx
      執行結果
      接線圖.fzz
      高手必練
      修改控制LED明滅度fadeAmount的值(例如:5->10),再覌察LED灯的明滅是否有不同變化

      2016年1月31日 星期日

      [7688 Duo] Station mode補完:Win 7下連外網

      Station mode補完:更改Device name就能在Win 7下連外網
      Ted Lee@CAVEDU
      Jan. 31, 2016
      88x31.png[1]

      本文補充說明CAVEDU教育团隊曾吉弘老師所寫LinkIt Smart 7688 Duo and MCS basics投影片的第28頁:如果http://mylinkit.local連不上怎麼辨?
      這個問題和您使用的AP是否為兩階段驗証有関,筆者在機器人王國教室內的無線網路环境下,切換至Station mode後就能輕鬆地連入http://mylinkit.local。總之,兩階段驗証的AP不OK啦!Crying…

      我們的開發环境為:
      • H/W:
        • CPU:i7-4510U@2GHz 2.60GHz
        • RAM:8GB,DDR3L 1600
        • Laptop:ASUS M700-PU451LD
      • S/W:
        • OS:MS Windows 7專業版w/ SP1,64 bits
        • 浏覽器:Chrome,48.0.2564.97 m
      • 開發版:LinkIt Smart 7688 Duo(以下簡稱7688D),F/W版本:0.9.2,AP mode的預設SSID為v7688_cfg
      因為我們是在Win 7上開發,在使用7688D預設的Device name(mylinkit)下,我們試过依照MakerPro開發社群平台提到安裝BonjourPSSetup.exe的方法,卻裝不起該services。好在有CAVEDU教育团隊曾吉弘及徐丰智兩位大師鼎力協助才得以順利完成,在此謝过啰~。

      設定步驟如下:
      1. 切換至AP mode 有兩种切換的方法:第一、長按WiFi按鈕5秒;第二、晶片reset:長按WiFi按鈕20秒。
      2. 和7688D連線 
      3. 更改Device name 以英文字母的大、小寫+數字重新命名,例如:TedLee7688d。這是最関鍵的步驟!重新替device命名後,7688D的OpenWrt OS會啟动內部的DHCP來動態指定一個新IP給7688D的Station mode。
      4. 將電腦連至外網 选擇非兩階段驗証的AP,或者以英文命名的手機熱奌(hot spot)
      5. 在浏覽器上以http://新Device name.local/重新連入7688D 
      6. 設定外網 Detected Wi-Fi network选擇非兩階段驗証的AP,或者手機熱奌;Password為前項的密碼(不是OpenWrt root帳號的密碼!)。
      7.  新Device name已取得新IP 

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

      2016年1月13日 星期三

      [Arduino] 使用Autodesk 的123D Circuits來玩Arduino

      使用Autodesk 的123D Circuits來玩Arduino
      Ted Lee@CAVEDU
      Jan. 10, 2016
      88x31.png[1]

      本文將介紹
      常見的家電紅外線遙控器來操作MeArm用四顆伺服馬達來模機器擬四軸機器手臂的動作。我們採用各個撃破演算法將題目拆解成兩大塊:紅外線搖控處理(Lab6_3_1)與MeArm操作,再搭配三個實驗(Lab6_3_1-3)來細細品甞Arduino在自動控制上的威力!
      本範例过関後,可獲得LED灯光Fade卡一張。

      難易度:易

      材料:
      1. LED(Light-Emitting Diode,發光二極体)一顆
      2. 220W電阻一顆(色环:紅紅黑金)
      3. 杜邦線若干條
      4. 麵包板一塊
      5. Arduino Uno R3一塊(本系列文章皆簡稱為Arduino開發版
      6. A-B型USB傳輸線一條

      第一個實驗將以Arduino IDE內建的範例程式集(built-in examples)中的Blink(註一)做為踏入Arduino殿堂的第一支程式,同時也測試一下前面設定了老半天的环境是否可以正確地誏我們開發程式(註二)。
      開啟Blink後的程式碼(註三)為:
      /*
        Blink
        Turns on an LED on for one second, then off for one second, repeatedly.
      
        Most Arduinos have an on-board LED you can control. On the Uno and
        Leonardo, it is attached to digital pin 13. If you're unsure what
        pin the on-board LED is connected to on your Arduino model, check
        the documentation at http://www.arduino.cc
      
        This example code is in the public domain.
      
        modified 8 May 2014
        by Scott Fitzgerald
       */
      
      
      // the setup function runs once when you press reset or power the board
      void setup() {
        // initialize digital pin 13 as an output.
        pinMode(13, OUTPUT);
      }
      
      // the loop function runs over and over again forever
      void loop() {
        digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(1000);              // wait for a second
        digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
        delay(1000);              // wait for a second
      }
      它对應的程式流程圖為:

      執行結果

      註一:從範例中學習(learning by examples)[1]是學習寫程式(programming)最快的方法之一,筆者強烈推荐!
      註二:大抵上,軟、硬体的專案(project)開發流程為:
      註三:Arduino程式的基本架構(structure)由兩個副程式(subroutines)所組成:
      1. setup():程式執行前的設定(setting),稱之為初始化(initialize),例如:設定串列傳輸速率為9,600bps(bit per second)
      2. loop():不斷重複執行(repeatedly execution)的副程式控制碼(control code),例如:控制馬達不停轉動。
      void setup() {
           
      }
      void loop() {
       
      }

      Lab1_1_2
      接線图接線影片
      執行結果

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