Slide 1

Slide 1 text

LinkIt™ Smart 7688 與 Node.js 的邂逅

Slide 2

Slide 2 text

Blue

Slide 3

Slide 3 text

點下⾯面的 more

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

關於開發版的外型

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

ruby,  python,  nodejs,  lua,  perl,     php,  erlang,  javm,  opencv,  ffmpeg,     bluez  …  
     找不到?    來  contribute  吧!  

Slide 38

Slide 38 text

Demo (mjpg-­‐streamer)

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

Demo (keyboard)

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Framework 的選擇

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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下

Slide 54

Slide 54 text

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 的效能及市場性的問題

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

挑戰⼆二如何讓兩個晶⽚片溝通 ? 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  端處理好

Slide 57

Slide 57 text

挑戰⼆二如何讓兩個晶⽚片溝通 ? 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  端處理好

Slide 58

Slide 58 text

讓兩顆晶⽚片各司其職

Slide 59

Slide 59 text

Demo (指紋辨識機)

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

mcs.mediatek.com

Slide 62

Slide 62 text

Demo (遠端坦克⾞車)

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

⼩小秘訣時間

Slide 65

Slide 65 text

關於硬碟 ⼩小秘訣時間

Slide 66

Slide 66 text

關於  npm ⼩小秘訣時間

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

Make it big with something small

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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