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
160
The future of hearing device - 聽覺領域新的機會及挑戰
iamblue
2
300
20180918-Digitime 導入MCU設計 催熟智慧語音辨識應用市場
iamblue
0
270
Pixnet hackthon - workshop
iamblue
0
160
AI 人工智慧學校分享
iamblue
0
460
Javascript -Full stack 物聯網開發
iamblue
0
180
MCS Lite 私有雲物聯網開發
iamblue
0
340
Blockchain for IoT 應用
iamblue
1
290
2017.01.16 Embedded system
iamblue
0
180
Other Decks in Programming
See All in Programming
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
390
AIが無かった頃の素敵な出会いの話
codmoninc
1
440
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
230
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1k
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
260
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
240
今さら聞けない .NET CLI
htkym
0
200
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
740
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Music & Morning Musume
bryan
47
7.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
Un-Boring Meetings
codingconduct
0
390
The Curse of the Amulet
leimatthew05
2
14k
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 專案的所有同仁