Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linkit smart 7688 與 Node.js 的邂逅

blue chen
December 11, 2015

Linkit smart 7688 與 Node.js 的邂逅

blue chen

December 11, 2015
Tweet

More Decks by blue chen

Other Decks in Programming

Transcript

  1. LinkIt™ Smart 7688 與 Node.js 的邂逅

    View full-size slide

  2. 點下⾯面的 more

    View full-size slide

  3. • 去年這時候⼀一堆超低價硬體專案
    • 硬體不賺錢,靠背後的服務,但軟體都還沒做完公司就快倒了
    • 就算做出來,終端 maker 量產也是問題
    前⾔言

    View full-size slide

  4. 玩物聯網的 Node.js maker 都有共同⼼心聲...
    Node.js  不在僅是跑在  server  上    
    希望他可以跑在你我周遭的任何事物上

    View full-size slide

  5. >  npm  install  express  
     ….  ran  out  of  memory  …
    npm install 耗⽤用極⼤大 memory
    npm  install  ⼤大約基礎會耗掉接近  60  mb  的  memory

    View full-size slide

  6. >  opkg  install  node  
     ….  no  space  …
    硬碟只有 16 MB, 只剩 4 mb 可⽤用空間
    nodejs  在各平台⼤大約基礎會耗掉  6~8  mb  的  space

    View full-size slide

  7. • MT7688
    • 128MB DDR2
    • 32MB Flash
    • Chip Antenna (default)
    • IPEX Ext Antenna
    • microSD
    • USB Host
    • JTAG
    LinkIt Smart 7688

    View full-size slide

  8. • MT7688 + ATmega32U4
    • 128MB DDR2
    • 32MB Flash
    • Chip Antenna (default)
    • IPEX Ext Antenna
    • microSD
    • USB Host
    • JTAG
    LinkIt Smart 7688 Duo

    View full-size slide

  9. MT7688& ATMega32U4+ Sensor
    USB device
    LinkIt Smart 7688 Duo
    MT7688&
    Sensor
    USB device
    LinkIt Smart 7688

    View full-size slide

  10. MPU  (  Microproccess  Unit)
    MCU  (MIcrocontroller  Unit)
    1.  ⼯工作時脈幾百MHz  
    2.  MB  等級的  RAM  
    3.  可以跑完整的  Linux  
    1.  ⼯工作時脈  100MHz  以下  
    2.  KB  等級的  RAM    
    3.  Real-­‐time  OS  :  freeRTOS  …etc  

    View full-size slide

  11. MT7688& ATMega32U4+ Sensor
    USB device
    LinkIt Smart 7688 Duo
    MT7688&
    Sensor
    USB device
    LinkIt Smart 7688
    MPU,  邏輯端運算
    MCU,  Real-­‐time  control

    View full-size slide

  12. 先從⼀一般基本跑得動 javascript 情境來談
    OS  
    想像⼀一下各位現有的  server  如何跑  javascript  ?  
    Linux,  openWRT…etc

    View full-size slide

  13. 先從⼀一般基本跑得動 javascript 情境來談
    Nodejs
    OS  
    硬碟⾄至少要  1X  mb,  RAM  建議⾄至少要  64  mb
    想像⼀一下各位現有的  server  如何跑  javascript  ?  
    Linux,  openWRT…etc

    View full-size slide

  14. 先從⼀一般基本跑得動 javascript 情境來談
    Nodejs
    OS  
    Applicaton
    想像⼀一下各位現有的  server  如何跑  javascript  ?  
    硬碟⾄至少要  1X  mb,  RAM  建議⾄至少要  64  mb
    Linux,  openWRT…etc

    View full-size slide

  15. 先從⼀一般基本跑得動 javascript 情境來談
    Nodejs
    OS  
    Applicaton
    想像⼀一下各位現有的  server  如何跑  javascript  ?  
    規格
    架構
    硬碟⾄至少要  1X  mb,  RAM  建議⾄至少要  64  mb
    Linux,  openWRT…etc

    View full-size slide

  16. 先從⼀一般基本跑得動 javascript 情境來談
    Nodejs
    OS  
    Applicaton
    想像⼀一下各位現有的  server  如何跑  javascript  ?  
    規格
    架構
    Linux,  openWRT…etc
    硬碟⾄至少要  1X  mb,  RAM  建議⾄至少要  64  mb

    View full-size slide

  17. MT7688& ATMega32U4+ Sensor
    USB device
    LinkIt Smart 7688 Duo
    MT7688&
    Sensor
    USB device
    LinkIt Smart 7688
    MPU,  邏輯端運算
    MCU,  Real-­‐time  control
     Node.js  跑在這

    View full-size slide

  18. 關於開發版的外型

    View full-size slide

  19. Power
    USB device
    Sensor
    拿掉不必要的介⾯面
    符合 Node.js ⼯工程師習慣:⽤用到即載⼊入

    View full-size slide

  20. 總結硬體介⾯面上
    7688 擁有三個領域的玩法
    USB device
    Sensor
    Wifi, OS driver/pkg

    View full-size slide

  21. Node.js需要有其他的軟體架構擴充
    對嵌⼊入式開發板⽽而⾔言
    1.PWM,  GPIO,  I2C  ….  etc    
    2.跟  MCU  端溝通  
    3.USB  device

    View full-size slide

  22. Node.js需要有其他的軟體架構擴充
    對嵌⼊入式開發板⽽而⾔言
    1.PWM,  GPIO,  I2C  ….  etc  (  libmraa  )  
    2.跟  MCU  端溝通  
    3.USB  device  

    View full-size slide

  23. Node.js需要有其他的軟體架構擴充
    對嵌⼊入式開發板⽽而⾔言
    1.PWM,  GPIO,  I2C  ….  etc  (  libmraa  )  
    2.跟  MCU  端溝通  (  node-­‐serialport,  firmata  )  
    3.USB  device

    View full-size slide

  24. Node.js需要有其他的軟體架構擴充
    對嵌⼊入式開發板⽽而⾔言
    1.PWM,  GPIO,  I2C  ….  etc  (  libmraa  )  
    2.跟  MCU  端溝通  (  node-­‐serialport,  firmata  )  
    3.USB  device  (  node-­‐hid  )

    View full-size slide

  25. NodeJS  (  v0.12.7  )
     
    node-serialport
    node-hid Firmata, cylonJS
    Your application
    OpenWRT  OS (Wifi,  driver)
    (MCU  溝通) (MCU  溝通)
    mraa
    (USB)

    View full-size slide

  26. USB  device
    Sensor
    Wifi, OS driver/pkg
    全部交給  OpenWRT
    mraa,  node-­‐serialport,  firmata
    node-­‐hid

    View full-size slide

  27. 7688 OpenWRT OS 完全開源
    1. OpenWRT  創始⼈人之⼀一親⾃自操⼑刀使⽤用最新  15.05  架構製作  
    2. 全部開源在  github  上  
    3. Upgrade  all  lib/pkg  version  

    View full-size slide

  28. OpenWRT 重點玩法
    1. full  stack  wifi:  AP  mode,  Station  mode  
    2. wifi  Router/gateway  玩法  
    3. 超級豐富的  package,  driver  community

    View full-size slide

  29. 1. full  stack  wifi:  AP  mode,  Station  mode  
    2. wifi  Router/gateway  玩法  
    3. 超級豐富的  package,  driver  community
    OpenWRT 重點玩法

    View full-size slide

  30. 7688  Duo
    外網網路孔
    外部網路(有線網路)  <-­‐>  7688  Duo  <-­‐>  家⽤用裝置

    View full-size slide

  31. 外部網路(無線網路)  <-­‐>  7688  Duo  <-­‐>  家⽤用裝置
    接外部  Wifi
    7688  當  AP    
    分享網路

    View full-size slide

  32. 1. full  stack  wifi:  AP  mode,  Station  mode  
    2. wifi  Router/gateway  玩法  
    3. 超級豐富的  package,  driver  community
    OpenWRT 重點玩法

    View full-size slide

  33. OpenWRT package management
    >  opkg  update  
    >  opkg  install  套件名
    我們提供  opkg  清單:  
    http://mirror2.openwrt.org/mt7688_v0.9/packages/

    View full-size slide

  34. ruby,  python,  nodejs,  lua,  perl,    
    php,  erlang,  javm,  opencv,  ffmpeg,    
    bluez  …  

       
    找不到?    來  contribute  吧!  

    View full-size slide

  35. Demo
    (mjpg-­‐streamer)

    View full-size slide

  36. Demo
    (CD-­‐player)
    opkg  update  
    opkg  install  kmod-­‐scsi-­‐cdrom  
    opkg  install  kmod-­‐scsi-­‐core  
    opkg  install  kmod-­‐scsi-­‐generic  
    opkg  install  kmod-­‐fs-­‐isofs

    View full-size slide

  37. NodeJS  (  v0.10.27  )
     
    node-serialport
    node-hid Firmata, cylonJS
    Your application
    OpenWRT  OS (Wifi,  driver)
    (MCU  溝通) (MCU  溝通)
    mraa
    (USB)

    View full-size slide

  38. USB  device
    Sensor
    Wifi, OS driver/pkg
    全部交給  OpenWRT
    mraa,  node-­‐serialport,  firmata
    node-­‐hid

    View full-size slide

  39. Demo
    (keyboard)

    View full-size slide

  40. USB  device
    Sensor
    Wifi, OS driver/pkg
    全部交給  OpenWRT
    mraa,  node-­‐serialport,  firmata
    node-­‐hid

    View full-size slide

  41. MT7688& ATMega32U4+ Sensor ( mcu, mpu溝通)
    USB device
    LinkIt Smart 7688 Duo
    MT7688&
    Sensor ( libmraa )
    USB device
    LinkIt Smart 7688

    View full-size slide

  42. 如何讓兩個晶⽚片溝通?
    Duo  上玩  Arduino  Sensor

    View full-size slide

  43. Arduino sensor
    MT7688& ATMega32U4+
    LinkIt Smart 7688 Duo
    Digital  0~13  
    PWM  
    i2C

    View full-size slide

  44. Arduino sensor
    MT7688& ATMega32U4+
    Linkit Smart 7688 Duo
    Firmata  把每個通道都打通
    Digital  0~13  
    PWM  
    i2C

    View full-size slide

  45. 相同的  baudrate下
    Firmata  把每個通道都打通
    Arduino sensor
    MT7688& ATMega32U4+
    Linkit Smart 7688 Duo
    Digital  0~13  
    PWM  
    i2C

    View full-size slide

  46. node-­‐serialport  接收對話 Firmata  把每個通道都打通
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    MT7688& ATMega32U4+
    Linkit Smart 7688 Duo
    相同的  baudrate下

    View full-size slide

  47. MPU Atmega32U4
    Application
    101010000000
    node-­‐serialport
    framework
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    Firmata  把每個通道都打通
    LinkIt Smart 7688 Duo
    相同的  baudrate下

    View full-size slide

  48. Framework 的選擇

    View full-size slide

  49. firmata  的效能及市場性問題
    Duo  上玩  Arduino  Sensor

    View full-size slide

  50. firmata 的效能及市場性的問題
    Firmata  is  not  a  good  pattern
    MPU Atmega32U4
    Application
    101010000000
    node-­‐serialport
    framework
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    Firmata  把每個通道都打通
    LinkIt Smart 7688 Duo
    相同的  baudrate下

    View full-size slide

  51. Firmata  is  not  a  good  pattern
    MPU Atmega32U4
    Application
    101010000000
    node-­‐serialport
    framework
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    Firmata  把每個通道都打通
    LinkIt Smart 7688 Duo
    相同的  baudrate下
    1
    且所有運算都在  MPU  端
    很多  sensor  只有  C  不提供  JS  parser
    2
    firmata 的效能及市場性的問題

    View full-size slide

  52. 挑戰⼆二如何讓兩個晶⽚片溝通 ? firmata ?
    Firmata  is  not  a  good  pattern
    MPU Atmega32U4
    Application
    node-­‐serialport
    framework
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    LinkIt Smart 7688 Duo
    相同的  baudrate下
    運算在  MCU  端處理好

    View full-size slide

  53. 挑戰⼆二如何讓兩個晶⽚片溝通 ? firmata ?
    Firmata  is  not  a  good  pattern
    MPU Atmega32U4
    Application
    這是  blue  的指紋
    node-­‐serialport
    framework
    Digital  0~13  
    PWM  
    i2C
    Arduino sensor
    LinkIt Smart 7688 Duo
    相同的  baudrate下
    運算在  MCU  端處理好

    View full-size slide

  54. 讓兩顆晶⽚片各司其職

    View full-size slide

  55. Demo
    (指紋辨識機)

    View full-size slide

  56. USB  device
    Sensor
    Wifi, OS driver/pkg
    全部交給  OpenWRT
    mraa,  node-­‐serialport,  firmata
    node-­‐hid
    (指紋辨識機)
    (web  cam,  CD-­‐player)
    (keyboard)

    View full-size slide

  57. mcs.mediatek.com

    View full-size slide

  58. Demo
    (遠端坦克⾞車)

    View full-size slide

  59. Demo
    (智慧偵測喝⽔水器)
    在88上寫  JS  的邏輯運算

    View full-size slide

  60. ⼩小秘訣時間

    View full-size slide

  61. 關於硬碟
    ⼩小秘訣時間

    View full-size slide

  62. 關於  npm
    ⼩小秘訣時間

    View full-size slide

  63. addon
    !
    Compile  engie  
    (v8)  
    libuv   node-­‐gyp  
    Nodejs 很重要的三個部分

    View full-size slide

  64. 如何去 compile Node-gyp module?
    參考:  
    https://github.com/openwrt/packages/blob/master/lang/node-­‐serialport/Makefile
    歡迎⼤大家⼀一起貢獻  opkg  !
    所有  Opkg  lib  現存狀況:  
    http://sdwalker.github.io/uscan/

    View full-size slide

  65. 關於  Node.js  對底層  OpenWRT  操作
    ⼩小秘訣時間

    View full-size slide

  66. 你不會想要買  A  廠商商品結果看到  MTK  介⾯面吧?

    View full-size slide

  67. NodeJS  (  v0.10.27  )
     
    node-serialport
    node-hid Firmata, cylonJS
    Your application
    OpenWRT  OS (Wifi,  driver)
    (MCU  溝通) (MCU  溝通)
    mraa
    (USB)

    View full-size slide

  68. 1.提供  RPC  ,  可透過打  API  的⽅方式操作  OS  底層介⾯面  
    2.session/  token  驗證沿⽤用  OpenWRT  Luci  auth  
    3.提供給⾃自造商更好客製化⾃自⼰己  webUI/  application  
    • RPC  demo:    
    https://github.com/MediaTek-­‐Labs/linkit-­‐smart-­‐7688-­‐webUI/blob/master/rpc_demo_files/rpc_demo.html  
    • Linkit  smart  7688  WebUI  
    https://github.com/MediaTek-­‐Labs/linkit-­‐smart-­‐7688-­‐webUI

    View full-size slide

  69. 操作過程請以燈號為判別主要依據
    ⼩小秘訣時間

    View full-size slide

  70. 關於Debug,建議多買  FTDI  及  USB  OTG
    ⼩小秘訣時間

    View full-size slide

  71. /PEFKTປᆜTVQQPSU
    48)8ປಆῘჷ
    -FWFSBHFBMM"SEVJOPTFOTPS
    䌉ࡄ֥≐ڛ↩ⅴ⇼
    ൲ᾁӑьၒ
    ಸၞΆೆਈ㸗ᾲ؍

    View full-size slide

  72. Make it big with something small

    View full-size slide

  73. https://www.youtube.com/watch?v=diB0LCikDSw

    View full-size slide

  74. 感謝所有參與 LinkIt smart 7688 專案的所有同仁

    View full-size slide