Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linkit smart 7688 與 Node.js 的邂逅
Search
blue chen
December 11, 2015
Programming
2.6k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Linkit smart 7688 與 Node.js 的邂逅
blue chen
December 11, 2015
More Decks by blue chen
See All by blue chen
RelaJet Caption
iamblue
0
150
The future of hearing device - 聽覺領域新的機會及挑戰
iamblue
2
290
20180918-Digitime 導入MCU設計 催熟智慧語音辨識應用市場
iamblue
0
270
Pixnet hackthon - workshop
iamblue
0
150
AI 人工智慧學校分享
iamblue
0
450
Javascript -Full stack 物聯網開發
iamblue
0
170
MCS Lite 私有雲物聯網開發
iamblue
0
340
Blockchain for IoT 應用
iamblue
1
280
2017.01.16 Embedded system
iamblue
0
160
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.3k
symfony/aiとlaravel/boost
77web
0
120
共通化で考えるべきは、実装より公開する型だった
codeegg
0
180
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.8k
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
0
2.1k
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
初めてのKubernetes 本番運用でハマった話
oku053
0
120
自作OSでスライド発表する
uyuki234
1
3.7k
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
450
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
840
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
180
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
890
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
290
Everyday Curiosity
cassininazir
0
250
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Raft: Consensus for Rubyists
vanstee
141
7.6k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Transcript
LinkIt™ Smart 7688 與 Node.js 的邂逅
Blue
點下⾯面的 more
None
None
• 去年這時候⼀一堆超低價硬體專案 • 硬體不賺錢,靠背後的服務,但軟體都還沒做完公司就快倒了 • 就算做出來,終端 maker 量產也是問題 前⾔言
玩物聯網的 Node.js maker 都有共同⼼心聲... Node.js 不在僅是跑在 server 上
希望他可以跑在你我周遭的任何事物上
> npm install express …. ran out of memory
… npm install 耗⽤用極⼤大 memory npm install ⼤大約基礎會耗掉接近 60 mb 的 memory
> opkg install node …. no space … 硬碟只有
16 MB, 只剩 4 mb 可⽤用空間 nodejs 在各平台⼤大約基礎會耗掉 6~8 mb 的 space
• MT7688 • 128MB DDR2 • 32MB Flash • Chip
Antenna (default) • IPEX Ext Antenna • microSD • USB Host • JTAG LinkIt Smart 7688
• MT7688 + ATmega32U4 • 128MB DDR2 • 32MB Flash
• Chip Antenna (default) • IPEX Ext Antenna • microSD • USB Host • JTAG LinkIt Smart 7688 Duo
MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&
Sensor USB device LinkIt Smart 7688
MPU ( Microproccess Unit) MCU (MIcrocontroller Unit) 1. ⼯工作時脈幾百MHz
2. MB 等級的 RAM 3. 可以跑完整的 Linux 1. ⼯工作時脈 100MHz 以下 2. KB 等級的 RAM 3. Real-‐time OS : freeRTOS …etc
MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&
Sensor USB device LinkIt Smart 7688 MPU, 邏輯端運算 MCU, Real-‐time control
先從⼀一般基本跑得動 javascript 情境來談 OS 想像⼀一下各位現有的 server 如何跑 javascript ?
Linux, openWRT…etc
先從⼀一般基本跑得動 javascript 情境來談 Nodejs OS 硬碟⾄至少要 1X mb, RAM
建議⾄至少要 64 mb 想像⼀一下各位現有的 server 如何跑 javascript ? Linux, openWRT…etc
先從⼀一般基本跑得動 javascript 情境來談 Nodejs OS Applicaton 想像⼀一下各位現有的 server 如何跑
javascript ? 硬碟⾄至少要 1X mb, RAM 建議⾄至少要 64 mb Linux, openWRT…etc
先從⼀一般基本跑得動 javascript 情境來談 Nodejs OS Applicaton 想像⼀一下各位現有的 server 如何跑
javascript ? 規格 架構 硬碟⾄至少要 1X mb, RAM 建議⾄至少要 64 mb Linux, openWRT…etc
先從⼀一般基本跑得動 javascript 情境來談 Nodejs OS Applicaton 想像⼀一下各位現有的 server 如何跑
javascript ? 規格 架構 Linux, openWRT…etc 硬碟⾄至少要 1X mb, RAM 建議⾄至少要 64 mb
MT7688& ATMega32U4+ Sensor USB device LinkIt Smart 7688 Duo MT7688&
Sensor USB device LinkIt Smart 7688 MPU, 邏輯端運算 MCU, Real-‐time control Node.js 跑在這
關於開發版的外型
Power USB device Sensor 拿掉不必要的介⾯面 符合 Node.js ⼯工程師習慣:⽤用到即載⼊入
總結硬體介⾯面上 7688 擁有三個領域的玩法 USB device Sensor Wifi, OS driver/pkg
Node.js需要有其他的軟體架構擴充 對嵌⼊入式開發板⽽而⾔言 1.PWM, GPIO, I2C …. etc 2.跟
MCU 端溝通 3.USB device
Node.js需要有其他的軟體架構擴充 對嵌⼊入式開發板⽽而⾔言 1.PWM, GPIO, I2C …. etc ( libmraa )
2.跟 MCU 端溝通 3.USB device
Node.js需要有其他的軟體架構擴充 對嵌⼊入式開發板⽽而⾔言 1.PWM, GPIO, I2C …. etc ( libmraa )
2.跟 MCU 端溝通 ( node-‐serialport, firmata ) 3.USB device
Node.js需要有其他的軟體架構擴充 對嵌⼊入式開發板⽽而⾔言 1.PWM, GPIO, I2C …. etc ( libmraa )
2.跟 MCU 端溝通 ( node-‐serialport, firmata ) 3.USB device ( node-‐hid )
NodeJS ( v0.12.7 ) node-serialport node-hid Firmata, cylonJS Your
application OpenWRT OS (Wifi, driver) (MCU 溝通) (MCU 溝通) mraa (USB)
USB device Sensor Wifi, OS driver/pkg 全部交給 OpenWRT mraa, node-‐serialport,
firmata node-‐hid
7688 OpenWRT OS 完全開源 1. OpenWRT 創始⼈人之⼀一親⾃自操⼑刀使⽤用最新 15.05 架構製作
2. 全部開源在 github 上 3. Upgrade all lib/pkg version
OpenWRT 重點玩法 1. full stack wifi: AP mode, Station mode
2. wifi Router/gateway 玩法 3. 超級豐富的 package, driver community
1. full stack wifi: AP mode, Station mode 2.
wifi Router/gateway 玩法 3. 超級豐富的 package, driver community OpenWRT 重點玩法
7688 Duo 外網網路孔 外部網路(有線網路) <-‐> 7688 Duo <-‐> 家⽤用裝置
外部網路(無線網路) <-‐> 7688 Duo <-‐> 家⽤用裝置 接外部 Wifi 7688 當
AP 分享網路
1. full stack wifi: AP mode, Station mode 2.
wifi Router/gateway 玩法 3. 超級豐富的 package, driver community OpenWRT 重點玩法
OpenWRT package management > opkg update > opkg install
套件名 我們提供 opkg 清單: http://mirror2.openwrt.org/mt7688_v0.9/packages/
ruby, python, nodejs, lua, perl, php, erlang, javm,
opencv, ffmpeg, bluez … 找不到? 來 contribute 吧!
Demo (mjpg-‐streamer)
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
NodeJS ( v0.10.27 ) node-serialport node-hid Firmata, cylonJS Your
application OpenWRT OS (Wifi, driver) (MCU 溝通) (MCU 溝通) mraa (USB)
USB device Sensor Wifi, OS driver/pkg 全部交給 OpenWRT mraa, node-‐serialport,
firmata node-‐hid
Demo (keyboard)
USB device Sensor Wifi, OS driver/pkg 全部交給 OpenWRT mraa, node-‐serialport,
firmata node-‐hid
MT7688& ATMega32U4+ Sensor ( mcu, mpu溝通) USB device LinkIt Smart
7688 Duo MT7688& Sensor ( libmraa ) USB device LinkIt Smart 7688
如何讓兩個晶⽚片溝通? Duo 上玩 Arduino Sensor
Arduino sensor MT7688& ATMega32U4+ LinkIt Smart 7688 Duo Digital 0~13
PWM i2C
Arduino sensor MT7688& ATMega32U4+ Linkit Smart 7688 Duo Firmata 把每個通道都打通
Digital 0~13 PWM i2C
相同的 baudrate下 Firmata 把每個通道都打通 Arduino sensor MT7688& ATMega32U4+ Linkit Smart
7688 Duo Digital 0~13 PWM i2C
node-‐serialport 接收對話 Firmata 把每個通道都打通 Digital 0~13 PWM i2C
Arduino sensor MT7688& ATMega32U4+ Linkit Smart 7688 Duo 相同的 baudrate下
MPU Atmega32U4 Application 101010000000 node-‐serialport framework Digital 0~13 PWM
i2C Arduino sensor Firmata 把每個通道都打通 LinkIt Smart 7688 Duo 相同的 baudrate下
Framework 的選擇
firmata 的效能及市場性問題 Duo 上玩 Arduino Sensor
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下
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 的效能及市場性的問題
None
挑戰⼆二如何讓兩個晶⽚片溝通 ? 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 端處理好
挑戰⼆二如何讓兩個晶⽚片溝通 ? 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 端處理好
讓兩顆晶⽚片各司其職
Demo (指紋辨識機)
USB device Sensor Wifi, OS driver/pkg 全部交給 OpenWRT mraa, node-‐serialport,
firmata node-‐hid (指紋辨識機) (web cam, CD-‐player) (keyboard)
mcs.mediatek.com
Demo (遠端坦克⾞車)
Demo (智慧偵測喝⽔水器) 在88上寫 JS 的邏輯運算
⼩小秘訣時間
關於硬碟 ⼩小秘訣時間
關於 npm ⼩小秘訣時間
addon ! Compile engie (v8) libuv node-‐gyp
Nodejs 很重要的三個部分
如何去 compile Node-gyp module? 參考: https://github.com/openwrt/packages/blob/master/lang/node-‐serialport/Makefile 歡迎⼤大家⼀一起貢獻 opkg !
所有 Opkg lib 現存狀況: http://sdwalker.github.io/uscan/
關於 Node.js 對底層 OpenWRT 操作 ⼩小秘訣時間
你不會想要買 A 廠商商品結果看到 MTK 介⾯面吧?
NodeJS ( v0.10.27 ) node-serialport node-hid Firmata, cylonJS Your
application OpenWRT OS (Wifi, driver) (MCU 溝通) (MCU 溝通) mraa (USB)
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
操作過程請以燈號為判別主要依據 ⼩小秘訣時間
關於Debug,建議多買 FTDI 及 USB OTG ⼩小秘訣時間
/PEFKTປᆜTVQQPSU 48)8ປಆῘჷ -FWFSBHFBMM"SEVJOPTFOTPS 䌉ࡄ֥≐ڛ↩ⅴ⇼ ൲ᾁӑьၒ ಸၞΆೆਈ㸗ᾲ؍
Make it big with something small
None
None
None
https://www.youtube.com/watch?v=diB0LCikDSw
感謝所有參與 LinkIt smart 7688 專案的所有同仁