SlideShare una empresa de Scribd logo
1 de 66
9º Connecting Knowledge
HEIDER LOPES
Heider Lopes
• Pós-Graduado em Sistemas e Desenvolvimento Web
• Analista Programador
• THT Member
Redes Sociais do THT Member
twitter.com/heiderlopes
github.com/heiderlopes
slideshare.net/heiderlopes
www.heiderlopes.com.br
Agenda
Coisa
Objeto ou ser inanimado.
O que existe ou pode existir.
O Que é IoT?
•É a possibilidade de comunicação entre todos
os objetos que existem – enviando e recebendo
dados e informações com o intuito de facilitar a
vida das pessoas.
•Estima-se que a IoT terá mais de 20 bilhões de
devices em 2020
• Interação de objetos inteligentes
IoT em Casa
IoT no carro
IoT no trabalho
IoT nas compras
IoT ajudando pessoas
Vídeo 1
•Durex Fundawear -- Touch over the Internet [OFFICIAL]
http://www.youtube.com/watch?v=qb7DN3kpl2o
Arduino
Introdução
• Plataforma baseada em Atmel da AVR
(ATMega168);
• Oferece um IDE e bibliotecas de programação
de alto nível;
• Open-source hardware e software
Introdução ao Arduino
• Ampla comunidade
• Programado em C/C++
• Transferência de firmware via USB
• MCU com bootloader
Aplicações Práticas
• Robôs
• Roupas eletrônicas
• Máquinas de corte e modelagem 3D de baixo
custo;
• Segway open-source
Aplicações Práticas
• Desenvolvimento de celulares customizados
• Instrumentos musicais
• Paredes interativas
• Instrumentação humana
• Circuit bending
Modelo de Arduino
Placa Arduino
Shields
• Arquitetura modular inteligente
• Arduino estabeleceu um padrão de pinagem
que é respeitado por diversas placas shield:
Componentes e Sensores Arduino
MiniComputadores
CubieTruck
BeagleBone
Raspberry Pi
CHIP
IoTizando com JS
Para nossa demo ao vivo
JavaScript
• Criado por Brendan Eich em 1995
• Surgiu como script client-side de páginas web
• DISTINTA do JAVA
• Facilidade em interação com o Document
Object Model (DOM)
NodeJS
https://nodejs.org/
NodeJS
Plataforma para desenvolvimento de aplicações
server-side baseadas em rede utilizando
JavaScript e o V8 JavaScript Engine.
ExpressJS
Framework para Node.js que possui um robusto
conjunto de recursos para desenvolver
aplicações web, como um sistema de Views
intuitivo (MVC), um robusto sistema de
roteamento, um executável para geração de
aplicações e muito mais.
Instalação do Express
npm install express@3.x
Instanciando o Express
var express = require('express');
var app = express();
Liberação do CORS
app.all('/*', function(req, res, next) {
// CORS headers
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the
required domain
res.header('Access-Control-Allow-Methods',
'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-
type,Accept,X-Access-Token,X-Key,x-requested-with');
if (req.method == 'OPTIONS') {
res.status(200).end();
} else {
next();
}
});
Exemplo de serviço
app.get('/', function(req, res){
res.send(‘Connecting Knowledge’);
});
Criação do Servidor
var server = app.listen(3000);
console.log('Servidor Express iniciado na porta
%s', server.address().port);
Rodando a Aplicação
node <<nomearquivo>>
Ex: node app.js
Acessar a url
• Através do browser:
– http://localhost:3000
• Através do curl
– curl http://localhost:3000
Nodemon
É um file watcher que roda internamente o
próprio comando node. Ele faz auto-restart
da aplicação, toda vez que um arquivo do
projeto for modificado.
Instalando e Rodando do Nodemon
npm install -g nodemon
nodemon <<nomearquivo>>
nodemon app.js
Johnny Five
Framework de código aberto que nos permite
controlar o hardware utilizando JavaScript,
desenvolvido pela Bocoup.
Instalação do Johnny Five
npm install johnny-five
Demo Serviço NodeJS,
ExpressJS e Johnny Five
Esquema no arduino
Protocolo Firmata no Arduino
Exemplo de Código
var five = require("johnny-five"),
board = new five.Board();
var led;
board.on("ready", function() {
console.log("Arduino Conectado");
led = new five.Led(13);
});
Serviço para ligar/desligar
app.get('/ligar', function(req, res){
led.on();
res.send('LED ligado');
});
app.get('/desligar', function(req, res){
led.off();
res.send('LED desligado');
});
AngularJS
https://angularjs.org/
AngularJS
Framework MVC completo com suporte a:
• Data Binding
• Injeção de Dependência
• Criação de Elementos HTML Personalizados (Diretivas)
• Carga de Modulos com Gerenciamento de Dependências
• Roteamento e Gestão de Histórico
• Serviços
• Promessas
Demo Consumindo um
Serviço
View
<html ng-app='AngularIntro'>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="main.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<title>DemoIoT - Heider Lopes</title>
</head>
<body ng-controller='MainCtrl'>
<div class="container">
<h1>IoT - Heider Lopes</h1>
<div class="jumbotron">
<center><h1>IoTizando com JavaScript</h1></center>
<p align="center"class="lead">Controlando Arduino atraves de JavaScript</p>
<p align="center">
<a class="btn btn-lg btn-success" ng-click='ligar()' role="button">Ligar</a>
<a class="btn btn-lg btn-danger" ng-click='desligar()' role="button">Desligar</a>
</p>
<p align="center" ng-class="result === 'LED ligado'? 'btn-success' : 'btn-danger'">{{result}}</p>
</div>
</div>
</body>
</html>
Controller
var module = angular.module('AngularIntro', []);
//Adição do Controller ao módulo
module.controller('MainCtrl', function($scope, $http){
$scope.ligar = function() {
$http.get('http://localhost:3000/ligar').
success(function(data) {
$scope.result = data;
});
};
$scope.desligar = function() {
$http.get('http://localhost:3000/desligar').
success(function(data) {
$scope.result = data;
});
};
});
IONIC Framework
http://ionicframework.com/
Ionic Framework
Framework front-end para o desenvolvimento
de aplicativos móveis, que entrega um
conjunto rico de elementos de mobile UI,
unindo excelentes tecnologias como Apache
Cordova, AngularJS e Sass.
Instalação do IONIC Framework
npm install -g cordova ionic
Demo Consumindo um
Serviço
Iniciando um projeto
Rodando a aplicação
View
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no,
width=device-width">
<title></title>
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet”>
<!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
<link href="css/ionic.app.css" rel="stylesheet">
-->
<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>
<!-- your app's js -->
<script src="js/app.js"></script>
<script src="js/controller.js"></script>
</head>
View - cont
<body ng-app="starter">
<ion-pane>
<ion-header-bar class="bar-stable">
<h1 class="title">IoTizando com JS - Heider Lopes</h1>
</ion-header-bar>
<ion-content ng-controller="MainIonicCtrl">
<ion-list>
<ion-toggle ng-repeat="item in settingsList"
ng-model="item.checked"
ng-checked="item.checked"
ng-change="toggleLed(item)">
{{ item.text }}
</ion-toggle>
</ion-list>
</ion-content>
</ion-pane>
</body>
</html>
Controller
app.controller('MainIonicCtrl', function($scope, $stateParams, $http) {
$scope.settingsList = [
{ text: "Led", checked: false }
];
$scope.toggleLed = function(item) {
console.log(item);
if(item.checked) {
$http.get('http://192.168.0.102:3000/ligar').
success(function(data) {
});
} else {
$http.get('http://192.168.0.102:3000/desligar').
success(function(data) {
});
}
};
});
Dúvidas
THT nas Redes Sociais
MEETUP.COM/THT-THINGS-HACKER-TEAM
THINGS HACKER TEAM
SLIDESHARE.NET/THINGSHACKERTEAM
TWITTER.COM/THINGSHACKERTM
GITHUB.COM/THINGSHACKERTEAM
FACEBOOK.COM/THINGSHACKERTEAM
WWW.THINGSHACKERTEAM.COM

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Oficina Intel XDK - 1ª ETEC Camp
Oficina Intel XDK - 1ª ETEC CampOficina Intel XDK - 1ª ETEC Camp
Oficina Intel XDK - 1ª ETEC Camp
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
CMS - Joomla
CMS - JoomlaCMS - Joomla
CMS - Joomla
 
Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)Microsoft Edge (Teched 2015)
Microsoft Edge (Teched 2015)
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Mobile First e Offline First
Mobile First e Offline FirstMobile First e Offline First
Mobile First e Offline First
 
Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019Micro Front-end + CQRS/ES - JSSP jul/2019
Micro Front-end + CQRS/ES - JSSP jul/2019
 
Abordagens modernas no desenvolvimento web
Abordagens modernas no desenvolvimento webAbordagens modernas no desenvolvimento web
Abordagens modernas no desenvolvimento web
 
Como Criar Um Blog
Como Criar Um BlogComo Criar Um Blog
Como Criar Um Blog
 
Redação Jornalística para Novas Mídias
Redação Jornalística para Novas MídiasRedação Jornalística para Novas Mídias
Redação Jornalística para Novas Mídias
 
Utilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveisUtilizando Polymer em aplicações móveis
Utilizando Polymer em aplicações móveis
 
Aplicações web multiplataforma - único código, múltiplas experiência
Aplicações web multiplataforma - único código, múltiplas experiênciaAplicações web multiplataforma - único código, múltiplas experiência
Aplicações web multiplataforma - único código, múltiplas experiência
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
Web design responsivo - Criando um site adaptável
Web design responsivo - Criando um site adaptávelWeb design responsivo - Criando um site adaptável
Web design responsivo - Criando um site adaptável
 

Destacado

Unidad 2 indices de capacidad
Unidad 2 indices de capacidadUnidad 2 indices de capacidad
Unidad 2 indices de capacidad
Roxana Martinez
 

Destacado (8)

Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
TDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDeviceTDC2015 - Internet das Coisas - OpenDevice
TDC2015 - Internet das Coisas - OpenDevice
 
Conhecendo o PhoneGap
Conhecendo o PhoneGapConhecendo o PhoneGap
Conhecendo o PhoneGap
 
Android and Arduio mixed with Breakout js
Android and Arduio mixed with Breakout jsAndroid and Arduio mixed with Breakout js
Android and Arduio mixed with Breakout js
 
Unidad 2 indices de capacidad
Unidad 2 indices de capacidadUnidad 2 indices de capacidad
Unidad 2 indices de capacidad
 
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favoritaTDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
TDC2016SP - Protocolo Firmata - controle o Arduino com sua linguagem favorita
 
TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!TDC2016SP - Programando PHP com mais segurança!
TDC2016SP - Programando PHP com mais segurança!
 
Android e Arduino para automação residencial
Android e Arduino para automação residencialAndroid e Arduino para automação residencial
Android e Arduino para automação residencial
 

Similar a IoTizando com JavaScript

Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 

Similar a IoTizando com JavaScript (20)

Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
HTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da WebHTML 5, CSS 3 e o futuro da Web
HTML 5, CSS 3 e o futuro da Web
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 
Integração: IoT Central + CosmosDB + Power BI - Dicas, desafios e boas práticas.
Integração: IoT Central + CosmosDB + Power BI - Dicas, desafios e boas práticas.Integração: IoT Central + CosmosDB + Power BI - Dicas, desafios e boas práticas.
Integração: IoT Central + CosmosDB + Power BI - Dicas, desafios e boas práticas.
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Android
AndroidAndroid
Android
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
Introdução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos ReduIntrodução a plataforma de aplicativos Redu
Introdução a plataforma de aplicativos Redu
 
Minicurso code igniter aula 2
Minicurso code igniter   aula 2Minicurso code igniter   aula 2
Minicurso code igniter aula 2
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
 

Más de Heider Lopes

Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazer
Heider Lopes
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
Heider Lopes
 
Montando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tabletMontando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tablet
Heider Lopes
 
Conversando com o android
Conversando com o androidConversando com o android
Conversando com o android
Heider Lopes
 

Más de Heider Lopes (13)

Apicon2018.pptx
Apicon2018.pptxApicon2018.pptx
Apicon2018.pptx
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App8ºConnecting Knowledge Web ou App
8ºConnecting Knowledge Web ou App
 
Mobile
MobileMobile
Mobile
 
Tht na web
Tht na webTht na web
Tht na web
 
Android Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu AndroidAndroid Wear: Expandindo as funcionalidades do seu Android
Android Wear: Expandindo as funcionalidades do seu Android
 
Descomplicando o Android
Descomplicando o AndroidDescomplicando o Android
Descomplicando o Android
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
5º ck o java e o android no iot
5º ck o java e o android no iot5º ck o java e o android no iot
5º ck o java e o android no iot
 
Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazer
 
Programando java independente da ide
Programando java independente da ideProgramando java independente da ide
Programando java independente da ide
 
Montando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tabletMontando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tablet
 
Conversando com o android
Conversando com o androidConversando com o android
Conversando com o android
 

IoTizando com JavaScript