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
Physical JavaScript with Johnny-5, Cylon and Te...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mulderp
September 24, 2014
Programming
1.1k
1
Share
Physical JavaScript with Johnny-5, Cylon and Tessel
A small overview on the current state of JavaScript for physical computing
mulderp
September 24, 2014
More Decks by mulderp
See All by mulderp
Node.js for Embedded Systems
mulderp
1
2.8k
Nodebotsday
mulderp
1
150
I2C basics with Arduino
mulderp
0
240
Sharing hardware with JavaScript
mulderp
1
230
Arduino October meetup
mulderp
0
140
Blogging and writing about JavaScript
mulderp
2
960
Minimum Viable Interactions
mulderp
3
640
Arduino July Meetup
mulderp
0
120
Handlebones
mulderp
0
230
Other Decks in Programming
See All in Programming
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
2
360
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
380
横断組織出身のQAEがインプロセスQAEでつまずいたこと・活かせたこと
ty89
0
170
Sans tests, vos agents ne sont pas fiables
nabondance
0
140
Cloudflare で始める Data Platform
ta93abe
0
200
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
4
510
SkillsをS3 Filesに置く時のあれこれ
watany
3
1.7k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
1
180
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
200
How We Practice Exploratory Testing in Iterative Development( #scrumniigata ) / 反復開発の中で、探索的テストをどう実施しているか
teyamagu
PRO
3
1.1k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
760
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
290
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
150
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
550
Scaling GitHub
holman
464
140k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
300
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Transcript
Physical NodeJS! with Johnny-5, Cylon and Tessel Patrick Mulder @mulpat
Munich Node JS User Group September 2014
https://www.flickr.com/photos/spelio/13884611917
ngraph http://anvaka.github.io/talks/jsfest/presentation
maker labs https://www.flickr.com/photos/leesean/3098869562
Source: Sander Arts, Atmel
“inspecting” your car https://vimeo.com/84498522
new browser controls https://www.flickr.com/photos/frenchhope/317111231 https://www.flickr.com/photos/bagogames/14073389239
example: blinking http://makezine.com/2014/05/29/10-ways-to-make-your-robot-more-humanlike/ “The average human blink rate is about
17 blinks per minute.” (ca. 3 blinks/s) “The normal length of a blink is 100-400 milliseconds”
Arduino! 1x1
Arduino UNO MPU Digital Pins Analog Pins USB Power Pins
a “typical” project configuration blocking! code Processing IDE sketch
Embedded Code void setup() {! pinMode(led, OUTPUT);! }! ! void
loop() {! digitalWrite(led, HIGH);! delay(300);! digitalWrite(led, LOW); ! delay(2700); ! }
blink == blocking ? void loop() {! ! blink();! !
check_network();! move_something();! wait_for_input();! write_to_file();! }
–Eric Lippert “The by-design purpose of JavaScript was to make
the monkey dance when you moused over it. ” http://programmers.stackexchange.com/a/221658/4723 JavaScript
How would you write this with JavaScript ?
blink = function() {! led.toggle();! setTimeout(blink, 2700);! }! ! blink();
setTimeout(…)
setInterval(…) setInterval(function () {! led.toggle();! }, 2700);
https://github.com/rwaldron/johnny-five Johnny-5 API
Johnny-5 API this.repl.inject({! board: this! }); https://github.com/rwaldron/johnny-five/tree/master/docs led.fadeIn(); led.blink(100); //
or led.strobe() led.color(keymap[key.name]);
demo johnny-5 http://www.flickr.com/photos/tronixstuff/5268597956/
How can Arduino speak JavaScript ?
Firmata protocol “The aim is to allow people to completely
control the Arduino from software on the host computer.” http://www.firmata.org/wiki/Main_Page
firmata sketch
firmata test
control flow led = new five.Led({! pin: 13! });! !
led.on();! ! this.wait(2700, function() {! led.on();! }); JavaScript https://www.flickr.com/photos/nate/3081263606 Firmata /! serial port Arduino
Network? This means Arduino Yun…
None
Yun architecture
acts-as-webserver http://www.open-electronics.org/interact-and-remotely-control-arduino-yun-with-ajax/#
For developer, OpenWrt is the framework to build an application
without having to build a complete firmware around it + embedded host
Cylon.js http://cylonjs.com/
Cylon.js
led blinking var Cylon = require('cylon');! ! Cylon.robot({! connection: {!
name: 'arduino',! adaptor: 'firmata',! port: '/dev/ttyACM0'! },! ! devices: [! { name: 'led', driver: 'led', pin: 13 },! { name: 'button', driver: 'button', pin: 2 }! ],! ! work: function(my) {! my.button.on('push', function() {! my.led.toggle()! });! }! }).start();
http://www.slideshare.net/TechnicalMachine/tessel-the-end-of-web-development-as-we-know-it Tessel is a microcontroller that runs JavaScript. It's npm-compatible
and ships with Wifi built in. Use it to easily make physical devices that connect to the web. http://www.slideshare.net/TechnicalMachine/fluent-20-min-32416115
How does it work? today tomorrow
Blink first var tessel = require('tessel');! ! var gpioA =
tessel.port['A'];! ! var led1 = gpioA.digital[0];! ! var value = true;! setInterval(function () {! led.write(value);! value = !value;! }, 2000);
physical JavaScript is fun :) still in early stages dedicated
platforms emerge
Thanks! http://blog.farsinotare.com https://oshpark.com/shared_projects/ZsQu0dA9 https://www.kickstarter.com/projects/311408456/rgb-123-led-matrices
None
None
https://iotroadshow.intel.com/de/home/