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 Slide

  2. Blue

    View Slide

  3. 點下⾯面的 more

    View Slide

  4. View Slide

  5. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 關於開發版的外型

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. 7688  Duo
    外網網路孔
    外部網路(有線網路)    7688  Duo    家⽤用裝置

    View Slide

  34. 外部網路(無線網路)    7688  Duo    家⽤用裝置
    接外部  Wifi
    7688  當  AP    
    分享網路

    View Slide

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

    View Slide

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

    View Slide

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

       
    找不到?    來  contribute  吧!  

    View Slide

  38. Demo
    (mjpg-­‐streamer)

    View Slide

  39. 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 Slide

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

    View Slide

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

    View Slide

  42. Demo
    (keyboard)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. Framework 的選擇

    View Slide

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

    View Slide

  53. 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 Slide

  54. 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 Slide

  55. View Slide

  56. 挑戰⼆二如何讓兩個晶⽚片溝通 ? 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 Slide

  57. 挑戰⼆二如何讓兩個晶⽚片溝通 ? 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 Slide

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

    View Slide

  59. Demo
    (指紋辨識機)

    View Slide

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

    View Slide

  61. mcs.mediatek.com

    View Slide

  62. Demo
    (遠端坦克⾞車)

    View Slide

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

    View Slide

  64. ⼩小秘訣時間

    View Slide

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

    View Slide

  66. 關於  npm
    ⼩小秘訣時間

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  72. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

  76. Make it big with something small

    View Slide

  77. View Slide

  78. View Slide

  79. View Slide

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

    View Slide

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

    View Slide