+ All Categories
Home > Technology > "Fun with JavaScript and sensors" by Jan Jongboom

"Fun with JavaScript and sensors" by Jan Jongboom

Date post: 15-Jul-2015
Category:
Upload: fwdays
View: 260 times
Download: 1 times
Share this document with a friend
Popular Tags:
59
Fun with JavaScript & sensors Jan Jongboom Telenor Digital Twitter: @janjongboom
Transcript
Page 1: "Fun with JavaScript and sensors" by Jan Jongboom

Fun with JavaScript & sensors

Jan Jongboom Telenor Digital

Twitter: @janjongboom

Page 2: "Fun with JavaScript and sensors" by Jan Jongboom

Fun with sensorsJavaScript Framework Day

26 April 2015

Page 3: "Fun with JavaScript and sensors" by Jan Jongboom

@janjongboom

Telenor R&D

Mozilla things

Page 4: "Fun with JavaScript and sensors" by Jan Jongboom
Page 5: "Fun with JavaScript and sensors" by Jan Jongboom

Before mobile revolution…Limited input methods

Page 6: "Fun with JavaScript and sensors" by Jan Jongboom

Vibration sensor?

Page 7: "Fun with JavaScript and sensors" by Jan Jongboom

Accelerometer?

Page 8: "Fun with JavaScript and sensors" by Jan Jongboom

Accelerometer?

Page 9: "Fun with JavaScript and sensors" by Jan Jongboom

Proximity Accelerometer Ambient Light Magnetometer Gyroscope Humidity Ambient Temperature Pressure Battery Cameras

Page 10: "Fun with JavaScript and sensors" by Jan Jongboom

Bend sensor

Page 11: "Fun with JavaScript and sensors" by Jan Jongboom

Internet of Things

Page 12: "Fun with JavaScript and sensors" by Jan Jongboom

Moves IHR SleepCycle

Page 13: "Fun with JavaScript and sensors" by Jan Jongboom

BORING!

Page 14: "Fun with JavaScript and sensors" by Jan Jongboom
Page 15: "Fun with JavaScript and sensors" by Jan Jongboom
Page 16: "Fun with JavaScript and sensors" by Jan Jongboom
Page 17: "Fun with JavaScript and sensors" by Jan Jongboom
Page 18: "Fun with JavaScript and sensors" by Jan Jongboom

Weight scale

Page 19: "Fun with JavaScript and sensors" by Jan Jongboom

Device LightReal purpose: adjust brightness

Page 20: "Fun with JavaScript and sensors" by Jan Jongboom

MusicTheremin is instrument

Use device light as tone frequency

Wave your hands and magic!

Page 21: "Fun with JavaScript and sensors" by Jan Jongboom

MusicTheremin is instrument

Use device light as tone frequency

Wave your hands and magic!

Page 22: "Fun with JavaScript and sensors" by Jan Jongboom

1 var context = new AudioContext(); 2 var oscillator = context.createOscillator(); 3 oscillator.connect(context.destination); 4 oscillator.start(0); 5 6 window.addEventListener('devicelight', function(e) { 7 oscillator.frequency.value = e.value * 10; 8 });

Music

Page 23: "Fun with JavaScript and sensors" by Jan Jongboom

GyroscopeReal purpose: rotate screen

Page 24: "Fun with JavaScript and sensors" by Jan Jongboom

GyroscopeReal purpose: rotate screen

Page 25: "Fun with JavaScript and sensors" by Jan Jongboom

Track real life movementDraw 3D model of phones

Measure gyroscope data

Show real life state on screen

Page 26: "Fun with JavaScript and sensors" by Jan Jongboom
Page 27: "Fun with JavaScript and sensors" by Jan Jongboom

Track real life movement 1 var front = new THREE.MeshBasicMaterial({ map: loadTexture('front.jpg') }); 2 var back = new THREE.MeshBasicMaterial({ map: loadTexture('back.jpg') }); 3 var border = new THREE.MeshBasicMaterial({ color: 0xffe04526 }); 4 5 var materials = [ border, border, border, 6 border, front, back ]; 7 8 var geometry = new THREE.BoxGeometry(2, 4, 0.3); 9 var cube = new THREE.Mesh(geometry, 10 new THREE.MeshFaceMaterial(materials)); 11 scene.add(cube);

Page 28: "Fun with JavaScript and sensors" by Jan Jongboom

Track real life movement

1 window.addEventListener('deviceorientation', function(e) { 2 cube.rotation.x = e.beta / 60; 3 cube.rotation.y = e.gamma / 60; 4 cube.rotation.z = e.alpha / 60; 5 });

Page 29: "Fun with JavaScript and sensors" by Jan Jongboom

AccelerometerReal purpose: Turn to mute

Page 30: "Fun with JavaScript and sensors" by Jan Jongboom

Juggling visualizerMeasure z-forces on device

Plot it in graph over time

Juggle with multiple devices

Page 31: "Fun with JavaScript and sensors" by Jan Jongboom

Juggling visualizer

1 window.addEventListener('devicemotion', function(e) { 2 var serie = getGraphSerieForDevice(e.data.deviceId); 3 serie.addPoint([ e.data.timestamp, Math.abs(e.data.z) ]); 4 });

Page 32: "Fun with JavaScript and sensors" by Jan Jongboom

BeaconsReal purpose: ads

Page 33: "Fun with JavaScript and sensors" by Jan Jongboom

BeaconsTag everyone with a beacon

Cross-reference facebook Phone alerts you who to talk to

Page 34: "Fun with JavaScript and sensors" by Jan Jongboom

Beacons 1 var Bleacon = require('bleacon'); 2 3 Bleacon.startScanning(); 4 5 Bleacon.on('discover', function(b) { 6 console.log('found', b.major, b.minor, b.distance); 7 });

Work in progress in Firefox OS & Firefox for Android (https://bugzilla.mozilla.org/show_bug.cgi?id=1063444)

Page 35: "Fun with JavaScript and sensors" by Jan Jongboom
Page 36: "Fun with JavaScript and sensors" by Jan Jongboom
Page 37: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Page 38: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko

Page 39: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko HTML5UI

Page 40: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko HTML5UI

Has  all  phone  APIs  in  JS

Page 41: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko

Has  all  phone  APIs  in  JS

Page 42: "Fun with JavaScript and sensors" by Jan Jongboom
Page 43: "Fun with JavaScript and sensors" by Jan Jongboom
Page 44: "Fun with JavaScript and sensors" by Jan Jongboom
Page 45: "Fun with JavaScript and sensors" by Jan Jongboom
Page 46: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko

Has all phone APIs in JS

Page 47: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko JanOS

Has all phone APIs in JS

Page 48: "Fun with JavaScript and sensors" by Jan Jongboom

Linux Kernel

Gecko JanOS

Has all phone APIs in JS

Page 49: "Fun with JavaScript and sensors" by Jan Jongboom
Page 50: "Fun with JavaScript and sensors" by Jan Jongboom

JanOSFork of Firefox OS For phones & Rpi

Runs without display

Page 51: "Fun with JavaScript and sensors" by Jan Jongboom

1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });

Page 52: "Fun with JavaScript and sensors" by Jan Jongboom

1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });

Page 53: "Fun with JavaScript and sensors" by Jan Jongboom

1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });

Page 54: "Fun with JavaScript and sensors" by Jan Jongboom

1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });

Page 55: "Fun with JavaScript and sensors" by Jan Jongboom

1 var conn = navigator.mozMobileConnections[0]; 2 conn.addEventListener('voicechange', function vc() { 3 if (conn.voice.connected) { 4 conn.removeEventListener('voicechange', vc); 5 6 var req = navigator.mozMobileMessage 7 .send('+31612345678', 'Hello from JanOS!'); 8 req.onsuccess = function() { 9 console.log('Message sent successfully'); 10 }; 11 req.onerror = function() { 12 console.error('Could not send SMS', req.error); 13 }; 14 } 15 });

Page 56: "Fun with JavaScript and sensors" by Jan Jongboom

-

Page 57: "Fun with JavaScript and sensors" by Jan Jongboom

-

Page 58: "Fun with JavaScript and sensors" by Jan Jongboom

Get hacking!

Grab a phone that has latest Chrome / Firefox

Use that sensor data

Think outside the box

Page 59: "Fun with JavaScript and sensors" by Jan Jongboom

Thank you!http://janjongboom.com

janos.io github.com/janjongboom/jsconf-asia


Recommended