Linkit smart 7688 與 Node.js 的邂逅

497b0ae3672631318bc2450ec0c7d87f?s=47 blue chen
December 11, 2015

Linkit smart 7688 與 Node.js 的邂逅

497b0ae3672631318bc2450ec0c7d87f?s=128

blue chen

December 11, 2015
Tweet

Transcript

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

  2. Blue

  3. 點下⾯面的 more

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

  7. 玩物聯網的 Node.js maker 都有共同⼼心聲... Node.js  不在僅是跑在  server  上    

    希望他可以跑在你我周遭的任何事物上
  8. >  npm  install  express    ….  ran  out  of  memory

     … npm install 耗⽤用極⼤大 memory npm  install  ⼤大約基礎會耗掉接近  60  mb  的  memory
  9. >  opkg  install  node    ….  no  space  … 硬碟只有

    16 MB, 只剩 4 mb 可⽤用空間 nodejs  在各平台⼤大約基礎會耗掉  6~8  mb  的  space
  10. • MT7688 • 128MB DDR2 • 32MB Flash • Chip

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

    • Chip Antenna (default) • IPEX Ext Antenna • microSD • USB Host • JTAG LinkIt Smart 7688 Duo
  12. MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&

    Sensor USB device LinkIt Smart 7688
  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  
  14. MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&

    Sensor USB device LinkIt Smart 7688 MPU,  邏輯端運算 MCU,  Real-­‐time  control
  15. 先從⼀一般基本跑得動 javascript 情境來談 OS   想像⼀一下各位現有的  server  如何跑  javascript  ?

      Linux,  openWRT…etc
  16. 先從⼀一般基本跑得動 javascript 情境來談 Nodejs OS   硬碟⾄至少要  1X  mb,  RAM

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

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

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

     javascript  ?   規格 架構 Linux,  openWRT…etc 硬碟⾄至少要  1X  mb,  RAM  建議⾄至少要  64  mb
  20. MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&

    Sensor USB device LinkIt Smart 7688 MPU,  邏輯端運算 MCU,  Real-­‐time  control  Node.js  跑在這
  21. 關於開發版的外型

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

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

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

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

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

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

      2.跟  MCU  端溝通  (  node-­‐serialport,  firmata  )   3.USB  device  (  node-­‐hid  )
  28. NodeJS  (  v0.12.7  )   node-serialport node-hid Firmata, cylonJS Your

    application OpenWRT  OS (Wifi,  driver) (MCU  溝通) (MCU  溝通) mraa (USB)
  29. USB  device Sensor Wifi, OS driver/pkg 全部交給  OpenWRT mraa,  node-­‐serialport,

     firmata node-­‐hid
  30. 7688 OpenWRT OS 完全開源 1. OpenWRT  創始⼈人之⼀一親⾃自操⼑刀使⽤用最新  15.05  架構製作  

    2. 全部開源在  github  上   3. Upgrade  all  lib/pkg  version  
  31. OpenWRT 重點玩法 1. full  stack  wifi:  AP  mode,  Station  mode

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

    wifi  Router/gateway  玩法   3. 超級豐富的  package,  driver  community OpenWRT 重點玩法
  33. 7688  Duo 外網網路孔 外部網路(有線網路)  <-­‐>  7688  Duo  <-­‐>  家⽤用裝置

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

     AP     分享網路
  35. 1. full  stack  wifi:  AP  mode,  Station  mode   2.

    wifi  Router/gateway  玩法   3. 超級豐富的  package,  driver  community OpenWRT 重點玩法
  36. OpenWRT package management >  opkg  update   >  opkg  install

     套件名 我們提供  opkg  清單:   http://mirror2.openwrt.org/mt7688_v0.9/packages/
  37. ruby,  python,  nodejs,  lua,  perl,     php,  erlang,  javm,

     opencv,  ffmpeg,     bluez  …  
     找不到?    來  contribute  吧!  
  38. Demo (mjpg-­‐streamer)

  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
  40. NodeJS  (  v0.10.27  )   node-serialport node-hid Firmata, cylonJS Your

    application OpenWRT  OS (Wifi,  driver) (MCU  溝通) (MCU  溝通) mraa (USB)
  41. USB  device Sensor Wifi, OS driver/pkg 全部交給  OpenWRT mraa,  node-­‐serialport,

     firmata node-­‐hid
  42. Demo (keyboard)

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

     firmata node-­‐hid
  44. MT7688& ATMega32U4+ Sensor ( mcu, mpu溝通) USB device LinkIt Smart

    7688 Duo MT7688& Sensor ( libmraa ) USB device LinkIt Smart 7688
  45. 如何讓兩個晶⽚片溝通? Duo  上玩  Arduino  Sensor

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

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

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

    7688 Duo Digital  0~13   PWM   i2C
  49. node-­‐serialport  接收對話 Firmata  把每個通道都打通 Digital  0~13   PWM   i2C

    Arduino sensor MT7688& ATMega32U4+ Linkit Smart 7688 Duo 相同的  baudrate下
  50. MPU Atmega32U4 Application 101010000000 node-­‐serialport framework Digital  0~13   PWM

      i2C Arduino sensor Firmata  把每個通道都打通 LinkIt Smart 7688 Duo 相同的  baudrate下
  51. Framework 的選擇

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

  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下
  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 的效能及市場性的問題
  55. None
  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  端處理好
  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  端處理好
  58. 讓兩顆晶⽚片各司其職

  59. Demo (指紋辨識機)

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

     firmata node-­‐hid (指紋辨識機) (web  cam,  CD-­‐player) (keyboard)
  61. mcs.mediatek.com

  62. Demo (遠端坦克⾞車)

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

  64. ⼩小秘訣時間

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

  66. 關於  npm ⼩小秘訣時間

  67. addon ! Compile  engie   (v8)   libuv   node-­‐gyp

      Nodejs 很重要的三個部分
  68. 如何去 compile Node-gyp module? 參考:   https://github.com/openwrt/packages/blob/master/lang/node-­‐serialport/Makefile 歡迎⼤大家⼀一起貢獻  opkg  !

    所有  Opkg  lib  現存狀況:   http://sdwalker.github.io/uscan/
  69. 關於  Node.js  對底層  OpenWRT  操作 ⼩小秘訣時間

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

  71. NodeJS  (  v0.10.27  )   node-serialport node-hid Firmata, cylonJS Your

    application OpenWRT  OS (Wifi,  driver) (MCU  溝通) (MCU  溝通) mraa (USB)
  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
  73. 操作過程請以燈號為判別主要依據 ⼩小秘訣時間

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

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

  76. Make it big with something small

  77. None
  78. None
  79. None
  80. https://www.youtube.com/watch?v=diB0LCikDSw

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