SlideShare a Scribd company logo
1 of 60
Que tal hackear seu carro e plugá-lo na nuvem ?!
Ricardo JL Rufino
Agenda

Introdução;

Um pouco sobre a parte elétrica (sensores) do carro;

Protocolos;

Demonstração das aplicações desenvolvida;

Engenharia reversa de um sensor de estacionamento.
Sobre min
Ricardo JL Rufino

Esp. em Engenharia de Software

Mestrado em Gestão de TI (UFPE)

Sócio fundador da CriativaSoft (Teresina / PI)

Sócio fundador da Edu3 ( São Bernardo / SP ) * Nova
etapa !

Atuo no desenvolvimento de Software desde 2007,
focado em soluções empresariais sobre plataforma
JavaEE. Desenvolvedor de softwares open-source
como Framework Web MVC Mentawai, Arduino IDE
Sobre min
Introdução

Motivação
− Com a crescente evolução tecnológica dos carros,
principalmente no ramo de entretenimento e
conforto, abre-se novas oportunidades;
− Existe também uma aposta forte na área de Apps
para carros;
− E a análise dos dados gerados, o “Big Data”, pode
possibilitar a criação de vários serviços.
Introdução

Motivação / Pessoal
− Desafio (gabiarras) !
− Mais uma coisa para conectar na IoT !
− Ficar aberto a oportunidades !
Sensores do Carro (alguns)
Em carros comuns (à injeção eletrônica)
possuem vários sensores que são utilizados
para controlar as válvulas injetoras de
combustível.
Sensores / RPM

Função: Rotação do motor e rodas (ABS)

Tipos: Indutivo ( 2/3 pinos) e Hall (3 pinos)
Fonte: https://www.flightsystems.com
Sensores / Pedal

Função: Detectara posição do pedal de acel.

Tipos: Resistência e PWM
Fonte: http://www.ds.ind.br
Sensores / Detonação

Função: Detectar a presença das detonações e
ajustes do tempo de injeção.

Tipos: Piezo-elétrico / Resistivo
Fonte: http://www.cursosonlinemte.com.br
Sensores / Borboleta / TPS

Função: Determinar a posição da borboleta (que
controla o fluxo de ar para o motor) e é
influenciada pelo pedal de aceleração.

Tipo: Resistivo
Fonte:http://www.autodaewoospark.com
Sensores / Combustível

Função: Detectar o nível de gasolina no tanque.
– Existem outros sensores para calcular o
consumo de combustível.

Tipo: Resistivo
Fonte:http://www.autodaewoospark.com
Sensores de Oxigênio (Sonda Lâmbda)
Função: Determinar se a mistura está pobre ou
rica, para ajustar a quantidade de ar/combustível.
Carac. Elétricas: 1...1000mV
Fonte:https://www.soinjecaoeletronica.com.b
Prontos ?!
Calma !!!!
É mais simples e existem padrões para
coletar dados de vários sensores;
O protocolo: OBD ( On-Board Diagnostic );
Veículos produzidos desde 1996 (USA,
Europa), e no Brasil a partir de 2010
(ODBII), porém a introdução da tecnologia
foi em 1980;
Em 2008 (USA), entra a regulamentação da
rede CAN ( ISO 15765-4 ), referente ao
padrão de transmissão de dados.
Protocolos

SAE J1850 PWM (41.6 kbit/s)

SAE J1850 VPW (10.4 kbit/s)

ISO 9141-2 (5 baud init, 10.4 kbit/s)

ISO 14230-4 KWP (5 baud init, 10.4kbit/s)

ISO 14230-4 KWP (fast init, 10.4 kbit/s)

ISO 15765-4 CAN (11 bit ID, 500 kbit/s)

ISO 15765-4 CAN (29 bit ID, 500 kbit/s)

ISO 15765-4 CAN (11 bit ID, 250 kbit/s)
Female OBD-II connector pinout – front
view
Consulte demais pinos: https://en.wikipedia.org/wiki/On-board_diagnostics
Protocolos / ELM327
ELM327 – Abstrai o padrão OBD/II para
vários protocolos de comunicação.

É configurado através de comandos AT.

Baseado no microcontrolador PIC.

Existem muitos clones na versão v1, e
reportam ser uma versão mais nova.
Protocolos / ELM327
https://www.elmelectronics.com/wp-content/uploads/2017/01/ELM327DS.pdf
Protocolos / ELM327
Protocolos / ELM327
Conexão (Bluetooth)

Localizar o MAC do dispositivo
# hcitool scan

Pareamento
# bluetooth-wizard

Conectar e criar uma porta serial
# rfcomm connect 1 00:1D:A5:68:98:XX
Connected /dev/rfcomm0 to 00:07:80:93:54:1C on
channel 1
Press CTRL-C for hangup
http://www.janosgyerik.com/how-to-communicate-with-bluetooth-devices-in-
linux/
Protocolos / ELM327
Protocolos / ELM327
Configuração / Comandos AT:

ATZ – Reset

ATE0 – Desabilitar o ECHO

ATS0 – Desabilitar impressão de espaços.

ATAT1 – Ajusta tempos de resposta.

ATSP0 – Selecionar protocolo automático.
Lista de Comandos:https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pd
f
Protocolos / OBD2
A consulta de parâmetros do veículo, como:
RPM, velocidade e etc, é feita através dos
PIDs.
Os PIDs são padronizados em modos:

Mode 01 – Exibir dados atuais;

Mode 02 – Exibe dados capturados;

Mode 03 – Exibe códigos de erros (se
houver);

Mode 04 – Limpar os códigos de erro;https://en.wikipedia.org/wiki/OBD-II_PIDs
Protocolos / OBD2
PID – Modo 01 (resumido)

0100 – Lista os PIDs suportados (01-20);

0101 – Status dos erros que foram limpos;

0102 – Congela os dados para o modo 02;

0103 – Status do sistema de combustível;

0104 – Carga do Motor;

0105 – Temp. liquido de arrefecimento ?!;

010C – RPM (Rotação do Motor);
Protocolos / OBD2
PID – Modo 03 – Requisitar Códigos de Erros
Exemplo de erro: P2119
Pesquisar Erros: https://www.obd-codes.com/
OBD2 / Simulador
ObdsimObdsim - Permite simular alguns sensores, podendo criar
uma porta serial ou um emulador bluetooth.
Instalação: # apt-get install obdgpslogger
Site: http://icculus.org/obdgpslogger/obdsim.html
OBD2 / Simulador
Comandos

Abrir a interface (porta serial)
# obdsim -p 8 -g gui_fltk

Criar adaptador virtual bluetooth
# sudo rfcomm bind 0 48:5A:B6:F4:D9:XX 1
# sudo sdptool add SP
# obdsim -p 8 -b
DO SEU PC
Em seguida é possível parear usando seu celular
OBD2 / APPs
Torque Lite DashCommand
OBD2 / API Java

Foi desenvolvida uma extensão para o
OpenDevice[1] que permite se comunicar via USB
/ Bluetooth / Wi-Fi*;

OpenDevice: Ferramenta para construção de
projetos de IoT;

Perite desenvolver aplicações Arduino, Web /
Desktop / Android, para visualização e análise
dos dados.
[1] http://opendevice.io
[*] Não testado
OBD2 / API Java
Instalação / Android
Adicionar as dependências no app/build.gradle
Compilar os fontes - Opcional (e recomentado)
Fontes: https://github.com/OpenDevice/opendevice-extensions
Pré-requisitos: Maven + Java
Basicamente: mvn install (na pasta obd-connection)
Guia: https://opendevice.atlassian.net/wiki/display/DOC/Building+from+source
dependencies {
compile 'br.com.criativasoft.opendevice:opendevice-android-stream:0.1.4-SNAPSHOT'
compile 'io.opendevice.ext:obd-connection:0.1.4-SNAPSHOT'
compile 'com.noveogroup.android:android-logger:1.3.5'
}
OBD2 / API Java
Java / Maven: <dependency>
<groupId>br.com.criativasoft.opendevice</groupId>
<artifactId>opendevice-wasync-client</artifactId>
<version>${opendevice-version}</version>
</dependency>
<dependency>
<groupId>br.com.criativasoft.opendevice</groupId>
<artifactId>opendevice-connection-stream</artifactId>
<version>${opendevice-version}</version>
</dependency>
<dependency>
<groupId>io.opendevice.ext</groupId>
<artifactId>obd-connection</artifactId>
<version>${opendevice-version}</version>
<type>jar</type>
</dependency>
// Conexão remota com servidor / websocket
// USB / Serial / TCP / Bluetooh
// Extensão OBD2
OBD2 / API Java

Exemplo:
Configurações para usar um servidor
remoto
Habilitar sensores individuais...
Conectar todos, e definir o servidor
OBD2 / API Java
O servidor remoto aqui é “opcional”!

Exemplo de como trabalhar com os dados localmente:
OpenDevice

Instalação do servidor OpenDevice:
− https://opendevice.atlassian.net/wiki/display/DOC/

Pré-requisitos: Java

Login: admin / admin

Serviços:
− Banco Embarcado, HTTP(8181), Rest(8181),
WebSocket(8181) e MQTT(1883).
OpenDevice
OpenDevice
OpenDevice
Demo / IoTCar
Código: https://github.com/OpenDevice/opendevice-examples/tree/master/IoTCar
Demo / IoTCar
https://youtu.be/PYu6LimVcJI
E as GAMBIARRAS ?
Engenharia Reversa – Sensor de Estacionamento
Engenharia Reversa
Engenharia Reversa – Sensor de Estacionamento
Componentes Identificados:

NE5532 - Dual Low-Noise High-Speed Audio Operational
Amplifier

74HC4052 - Dual 4-channel analog
multiplexer/demultiplexer

EM78P156E - 8-bit microprocessor
http://www.xinpian.net/EMC/EM78P/EM78P156.pdf
Engenharia Reversa

O foco dá análise será na saída no
microcontrolador que vai para o display.

A análise foi feita utilizando as
ferramentas:

Analisado lógico: USBee AX PRO (~R$ 50)

Sigrok[1] – Suíte de ferramentas de
analisadores lógicos e osciloscópios, com
suporte a vários hardwares.

PulseView – Ferramenta visual que
acompanha o Sigrok

[1] https://sigrok.org/
[2] https://lxtreme.nl/projects/ols/
Engenharia Reversa

USBee AX PRO
Engenharia Reversa

Sigrok / PulseView
Engenharia Reversa
Erros cometidos:

Utilizar um Arduino para ler os dados como
se fosse Serial/UART.

Os dados “pareciam” alguma coisa, muito
tempo perdido !!

Queima de um módulo, após dar partida.
Identificação do Padrão de Comunicação

Procedimento: Foram realizadas medidas
dos 4 sensores individualmente (usando o
PulseView), usando a saída que vai para
o display.

As leituras foram feitas e identificadas em
intervalos de 10cm.

A analise preliminar identificou que os
sensores tem a relação: A = B, e C = D

E que o módulo envia os dados para o
display em intervalos de 400ms a 500ms.
Identificação do Padrão de Comunicação

Análise do SINAL
Inicio da transmissão: Sinal de nível baixo, em seguida nível alto por 1000uS = 1ms
Captura na configuração de 25Khz, identificados os pacotes em intervalos de ~450ms

A seguir os detalhes de um pacote:
Identificação do Padrão de Comunicação

Análise dos Dados
Foram considerados vários padrões de transmissão em [1],
porém não foi identificado inicialmente nenhuma similaridade.
A codificação dos 0 e 1, é feita através da largura/tempo dos
pulsos em alta (5v), algo similar à transmissão IR[2].
[1] https://pt.slideshare.net/RathoreRavindra/line-coding-37072941
[2] https://www.vishay.com/docs/80071/dataform.pdf
Identificação do Padrão de Comunicação

Análise dos Dados

Os 8 bits iniciais são do conjunto sensores A e B, ou seja, é
uma única medida (Esquerda). O 8bits seguintes são do C e
D (Direita);

O valor convertido em decimal varia de : 19 (distância de
0cm) até 4 (distância de 1.7m);

As leituras individuais apresentaram a mesma correlação.
Arduino / Código

A leitura é feita usando as interrupções externas e
calculado o tempo do pulso em alta. Usando as
interrupções ao invés de pulseIn(), permitimos o arduino
executar outras tarefas.

No Arduino UNO (328p) – Pinos 2, 3

No ESP8266 – Todos os pinos GPIO ( - GPIO16 )
O código desenvolvido está disponibilizado em:
https://github.com/OpenDevice/opendevice-examples/tree/master/IoTCar/firmware
Arduino / Demo

Setup

ESP8266 – Captura os dados vindos da central de
controle, faz a decodificação e envia para o Arduino via
Serial/UART;

O ESP8266 também disponibilizará os dados para o
App (usando a lib OpenDevice), e permite um sistema
de detecção automática no App.

Arduino UNO – Responsável pelo display LCD (usando
a lib Tvout).
Demo / Esquemático
NÃO ESQUEÇA , TODOS OS GNDs DEVEM SER CONECTADOS !
Demo / Video
Demo / App
Demo / Esquemático
Dúvidas ?
Contatos
E-mail:

ricardo.jl.rufino@gmail.cm

ricardo@criativasoft.com.br
Facebook:

/ricardojlrufino

/opendevice
Obrigado pela sua atenção.

More Related Content

What's hot

Manual de serviço nx150 ignicao
Manual de serviço nx150 ignicaoManual de serviço nx150 ignicao
Manual de serviço nx150 ignicaoThiago Huari
 
343 1 El nuevo AUDI A4 2005.pdf
343 1 El nuevo AUDI A4 2005.pdf343 1 El nuevo AUDI A4 2005.pdf
343 1 El nuevo AUDI A4 2005.pdfjcarrey
 
Tabela de Códigos de Falhas OBD2 P0001 A P18273
Tabela de Códigos de Falhas OBD2 P0001 A P18273Tabela de Códigos de Falhas OBD2 P0001 A P18273
Tabela de Códigos de Falhas OBD2 P0001 A P18273Geraldo Sebastian
 
gerenciamento-motor-327-apostila-novo-uno
gerenciamento-motor-327-apostila-novo-unogerenciamento-motor-327-apostila-novo-uno
gerenciamento-motor-327-apostila-novo-unoRicardo Akerman
 
099 Motor 2 0L 16V TDI.pdf
099 Motor 2 0L 16V TDI.pdf099 Motor 2 0L 16V TDI.pdf
099 Motor 2 0L 16V TDI.pdfjcarrey
 
cabecote nx 400 falcon
cabecote nx 400 falconcabecote nx 400 falcon
cabecote nx 400 falconDigossound
 
Braço robótico articulável - Lego Mindstorms Ev3
Braço robótico articulável - Lego Mindstorms Ev3Braço robótico articulável - Lego Mindstorms Ev3
Braço robótico articulável - Lego Mindstorms Ev3Lucas Sabadini
 
Sistema de alimentacao
Sistema de alimentacaoSistema de alimentacao
Sistema de alimentacaoVMarochi
 
Manual de serviço cg150 titan ks es esd rodadiant
Manual de serviço cg150 titan ks es esd rodadiantManual de serviço cg150 titan ks es esd rodadiant
Manual de serviço cg150 titan ks es esd rodadiantThiago Huari
 
Transformação de sistema ignição com controle de avanço eletrônico utilizando...
Transformação de sistema ignição com controle de avanço eletrônico utilizando...Transformação de sistema ignição com controle de avanço eletrônico utilizando...
Transformação de sistema ignição com controle de avanço eletrônico utilizando...Sergio Favaro
 
Manual de serviço cb400 cilindro
Manual de serviço cb400 cilindroManual de serviço cb400 cilindro
Manual de serviço cb400 cilindroThiago Huari
 
363 Audi Q7 Transmision Caja de Transferencia.pdf
363 Audi Q7 Transmision Caja de Transferencia.pdf363 Audi Q7 Transmision Caja de Transferencia.pdf
363 Audi Q7 Transmision Caja de Transferencia.pdfjcarrey
 
Manual de serviço xr200 r nx200 cbx200s mskbb931p cabecote
Manual de serviço xr200 r nx200 cbx200s   mskbb931p cabecoteManual de serviço xr200 r nx200 cbx200s   mskbb931p cabecote
Manual de serviço xr200 r nx200 cbx200s mskbb931p cabecoteThiago Huari
 
Manual para-reparar-ecu-converted-2
Manual para-reparar-ecu-converted-2Manual para-reparar-ecu-converted-2
Manual para-reparar-ecu-converted-2cesarsalinas46
 
Manual de serviço nx150 lubrific
Manual de serviço nx150 lubrificManual de serviço nx150 lubrific
Manual de serviço nx150 lubrificThiago Huari
 
343 2 El Nuevo AUDI A4 2005.pdf
343 2 El Nuevo AUDI A4 2005.pdf343 2 El Nuevo AUDI A4 2005.pdf
343 2 El Nuevo AUDI A4 2005.pdfjcarrey
 
Manual servico cbx 150 aero 1988 completo
Manual servico cbx 150 aero 1988 completoManual servico cbx 150 aero 1988 completo
Manual servico cbx 150 aero 1988 completoGeisson Adriano Furlan
 
2017 Autonomous Vehicle Presentation Package
2017 Autonomous Vehicle Presentation Package 2017 Autonomous Vehicle Presentation Package
2017 Autonomous Vehicle Presentation Package Michael Scheno
 

What's hot (20)

Manual de serviço nx150 ignicao
Manual de serviço nx150 ignicaoManual de serviço nx150 ignicao
Manual de serviço nx150 ignicao
 
343 1 El nuevo AUDI A4 2005.pdf
343 1 El nuevo AUDI A4 2005.pdf343 1 El nuevo AUDI A4 2005.pdf
343 1 El nuevo AUDI A4 2005.pdf
 
Tabela de Códigos de Falhas OBD2 P0001 A P18273
Tabela de Códigos de Falhas OBD2 P0001 A P18273Tabela de Códigos de Falhas OBD2 P0001 A P18273
Tabela de Códigos de Falhas OBD2 P0001 A P18273
 
gerenciamento-motor-327-apostila-novo-uno
gerenciamento-motor-327-apostila-novo-unogerenciamento-motor-327-apostila-novo-uno
gerenciamento-motor-327-apostila-novo-uno
 
099 Motor 2 0L 16V TDI.pdf
099 Motor 2 0L 16V TDI.pdf099 Motor 2 0L 16V TDI.pdf
099 Motor 2 0L 16V TDI.pdf
 
cabecote nx 400 falcon
cabecote nx 400 falconcabecote nx 400 falcon
cabecote nx 400 falcon
 
Braço robótico articulável - Lego Mindstorms Ev3
Braço robótico articulável - Lego Mindstorms Ev3Braço robótico articulável - Lego Mindstorms Ev3
Braço robótico articulável - Lego Mindstorms Ev3
 
Sistema de alimentacao
Sistema de alimentacaoSistema de alimentacao
Sistema de alimentacao
 
Manual de serviço cg150 titan ks es esd rodadiant
Manual de serviço cg150 titan ks es esd rodadiantManual de serviço cg150 titan ks es esd rodadiant
Manual de serviço cg150 titan ks es esd rodadiant
 
Transformação de sistema ignição com controle de avanço eletrônico utilizando...
Transformação de sistema ignição com controle de avanço eletrônico utilizando...Transformação de sistema ignição com controle de avanço eletrônico utilizando...
Transformação de sistema ignição com controle de avanço eletrônico utilizando...
 
Manual de serviço cb400 cilindro
Manual de serviço cb400 cilindroManual de serviço cb400 cilindro
Manual de serviço cb400 cilindro
 
363 Audi Q7 Transmision Caja de Transferencia.pdf
363 Audi Q7 Transmision Caja de Transferencia.pdf363 Audi Q7 Transmision Caja de Transferencia.pdf
363 Audi Q7 Transmision Caja de Transferencia.pdf
 
Manual de serviço xr200 r nx200 cbx200s mskbb931p cabecote
Manual de serviço xr200 r nx200 cbx200s   mskbb931p cabecoteManual de serviço xr200 r nx200 cbx200s   mskbb931p cabecote
Manual de serviço xr200 r nx200 cbx200s mskbb931p cabecote
 
Manual para-reparar-ecu-converted-2
Manual para-reparar-ecu-converted-2Manual para-reparar-ecu-converted-2
Manual para-reparar-ecu-converted-2
 
Manual de serviço nx150 lubrific
Manual de serviço nx150 lubrificManual de serviço nx150 lubrific
Manual de serviço nx150 lubrific
 
343 2 El Nuevo AUDI A4 2005.pdf
343 2 El Nuevo AUDI A4 2005.pdf343 2 El Nuevo AUDI A4 2005.pdf
343 2 El Nuevo AUDI A4 2005.pdf
 
Sensores 02 demo
Sensores 02 demoSensores 02 demo
Sensores 02 demo
 
Manual servico cbx 150 aero 1988 completo
Manual servico cbx 150 aero 1988 completoManual servico cbx 150 aero 1988 completo
Manual servico cbx 150 aero 1988 completo
 
2017 Autonomous Vehicle Presentation Package
2017 Autonomous Vehicle Presentation Package 2017 Autonomous Vehicle Presentation Package
2017 Autonomous Vehicle Presentation Package
 
UDS PPT
UDS PPTUDS PPT
UDS PPT
 

Similar to Que tal Hackear seu carro e plugá-lo na nuvem ?!

Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoArticacc, Lda
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)Ricardo Rufino
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningAlvaro Viebrantz
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetFabio Souza
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedFabio Souza
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoFátima Bernardes
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
VANETs – redes veiculares
VANETs – redes veicularesVANETs – redes veiculares
VANETs – redes veicularesDouglas de Paula
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Douglas Esteves
 
Poster roboseguidordelinha
Poster roboseguidordelinhaPoster roboseguidordelinha
Poster roboseguidordelinhabdfe
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
Configuração de Drivers
Configuração de DriversConfiguração de Drivers
Configuração de DriversAVEVA
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoEvânio Moreira
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoJeffersonReis46
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Andre Devecchi
 

Similar to Que tal Hackear seu carro e plugá-lo na nuvem ?! (20)

Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - Farrusco
 
OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)OpenDevice IoT - 2016 (LowLevel)
OpenDevice IoT - 2016 (LowLevel)
 
Internet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine LearningInternet das Coisas com Android things e Machine Learning
Internet das Coisas com Android things e Machine Learning
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
VANETs – redes veiculares
VANETs – redes veicularesVANETs – redes veiculares
VANETs – redes veiculares
 
Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12Oficina de IoT conhecendo ESP8266 #CPBR12
Oficina de IoT conhecendo ESP8266 #CPBR12
 
Poster roboseguidordelinha
Poster roboseguidordelinhaPoster roboseguidordelinha
Poster roboseguidordelinha
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
Configuração de Drivers
Configuração de DriversConfiguração de Drivers
Configuração de Drivers
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Programação em-arduino-módulo-básico
Programação em-arduino-módulo-básicoProgramação em-arduino-módulo-básico
Programação em-arduino-módulo-básico
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
Inct Icmc Usp Player
Inct Icmc Usp PlayerInct Icmc Usp Player
Inct Icmc Usp Player
 
Corpo relatorio
Corpo relatorioCorpo relatorio
Corpo relatorio
 
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
Um Sistema de Ponto Eletrônico Digital: projeto e implementação de hardware e...
 

Recently uploaded

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Recently uploaded (8)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Que tal Hackear seu carro e plugá-lo na nuvem ?!

  • 1. Que tal hackear seu carro e plugá-lo na nuvem ?! Ricardo JL Rufino
  • 2. Agenda  Introdução;  Um pouco sobre a parte elétrica (sensores) do carro;  Protocolos;  Demonstração das aplicações desenvolvida;  Engenharia reversa de um sensor de estacionamento.
  • 3. Sobre min Ricardo JL Rufino  Esp. em Engenharia de Software  Mestrado em Gestão de TI (UFPE)  Sócio fundador da CriativaSoft (Teresina / PI)  Sócio fundador da Edu3 ( São Bernardo / SP ) * Nova etapa !  Atuo no desenvolvimento de Software desde 2007, focado em soluções empresariais sobre plataforma JavaEE. Desenvolvedor de softwares open-source como Framework Web MVC Mentawai, Arduino IDE
  • 5. Introdução  Motivação − Com a crescente evolução tecnológica dos carros, principalmente no ramo de entretenimento e conforto, abre-se novas oportunidades; − Existe também uma aposta forte na área de Apps para carros; − E a análise dos dados gerados, o “Big Data”, pode possibilitar a criação de vários serviços.
  • 6. Introdução  Motivação / Pessoal − Desafio (gabiarras) ! − Mais uma coisa para conectar na IoT ! − Ficar aberto a oportunidades !
  • 7. Sensores do Carro (alguns) Em carros comuns (à injeção eletrônica) possuem vários sensores que são utilizados para controlar as válvulas injetoras de combustível.
  • 8. Sensores / RPM  Função: Rotação do motor e rodas (ABS)  Tipos: Indutivo ( 2/3 pinos) e Hall (3 pinos) Fonte: https://www.flightsystems.com
  • 9. Sensores / Pedal  Função: Detectara posição do pedal de acel.  Tipos: Resistência e PWM Fonte: http://www.ds.ind.br
  • 10. Sensores / Detonação  Função: Detectar a presença das detonações e ajustes do tempo de injeção.  Tipos: Piezo-elétrico / Resistivo Fonte: http://www.cursosonlinemte.com.br
  • 11. Sensores / Borboleta / TPS  Função: Determinar a posição da borboleta (que controla o fluxo de ar para o motor) e é influenciada pelo pedal de aceleração.  Tipo: Resistivo Fonte:http://www.autodaewoospark.com
  • 12. Sensores / Combustível  Função: Detectar o nível de gasolina no tanque. – Existem outros sensores para calcular o consumo de combustível.  Tipo: Resistivo Fonte:http://www.autodaewoospark.com
  • 13. Sensores de Oxigênio (Sonda Lâmbda) Função: Determinar se a mistura está pobre ou rica, para ajustar a quantidade de ar/combustível. Carac. Elétricas: 1...1000mV Fonte:https://www.soinjecaoeletronica.com.b
  • 15. Calma !!!! É mais simples e existem padrões para coletar dados de vários sensores; O protocolo: OBD ( On-Board Diagnostic ); Veículos produzidos desde 1996 (USA, Europa), e no Brasil a partir de 2010 (ODBII), porém a introdução da tecnologia foi em 1980; Em 2008 (USA), entra a regulamentação da rede CAN ( ISO 15765-4 ), referente ao padrão de transmissão de dados.
  • 16. Protocolos  SAE J1850 PWM (41.6 kbit/s)  SAE J1850 VPW (10.4 kbit/s)  ISO 9141-2 (5 baud init, 10.4 kbit/s)  ISO 14230-4 KWP (5 baud init, 10.4kbit/s)  ISO 14230-4 KWP (fast init, 10.4 kbit/s)  ISO 15765-4 CAN (11 bit ID, 500 kbit/s)  ISO 15765-4 CAN (29 bit ID, 500 kbit/s)  ISO 15765-4 CAN (11 bit ID, 250 kbit/s) Female OBD-II connector pinout – front view Consulte demais pinos: https://en.wikipedia.org/wiki/On-board_diagnostics
  • 17. Protocolos / ELM327 ELM327 – Abstrai o padrão OBD/II para vários protocolos de comunicação.  É configurado através de comandos AT.  Baseado no microcontrolador PIC.  Existem muitos clones na versão v1, e reportam ser uma versão mais nova.
  • 20. Protocolos / ELM327 Conexão (Bluetooth)  Localizar o MAC do dispositivo # hcitool scan  Pareamento # bluetooth-wizard  Conectar e criar uma porta serial # rfcomm connect 1 00:1D:A5:68:98:XX Connected /dev/rfcomm0 to 00:07:80:93:54:1C on channel 1 Press CTRL-C for hangup http://www.janosgyerik.com/how-to-communicate-with-bluetooth-devices-in- linux/
  • 22. Protocolos / ELM327 Configuração / Comandos AT:  ATZ – Reset  ATE0 – Desabilitar o ECHO  ATS0 – Desabilitar impressão de espaços.  ATAT1 – Ajusta tempos de resposta.  ATSP0 – Selecionar protocolo automático. Lista de Comandos:https://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pd f
  • 23. Protocolos / OBD2 A consulta de parâmetros do veículo, como: RPM, velocidade e etc, é feita através dos PIDs. Os PIDs são padronizados em modos:  Mode 01 – Exibir dados atuais;  Mode 02 – Exibe dados capturados;  Mode 03 – Exibe códigos de erros (se houver);  Mode 04 – Limpar os códigos de erro;https://en.wikipedia.org/wiki/OBD-II_PIDs
  • 24. Protocolos / OBD2 PID – Modo 01 (resumido)  0100 – Lista os PIDs suportados (01-20);  0101 – Status dos erros que foram limpos;  0102 – Congela os dados para o modo 02;  0103 – Status do sistema de combustível;  0104 – Carga do Motor;  0105 – Temp. liquido de arrefecimento ?!;  010C – RPM (Rotação do Motor);
  • 25. Protocolos / OBD2 PID – Modo 03 – Requisitar Códigos de Erros Exemplo de erro: P2119 Pesquisar Erros: https://www.obd-codes.com/
  • 26. OBD2 / Simulador ObdsimObdsim - Permite simular alguns sensores, podendo criar uma porta serial ou um emulador bluetooth. Instalação: # apt-get install obdgpslogger Site: http://icculus.org/obdgpslogger/obdsim.html
  • 27. OBD2 / Simulador Comandos  Abrir a interface (porta serial) # obdsim -p 8 -g gui_fltk  Criar adaptador virtual bluetooth # sudo rfcomm bind 0 48:5A:B6:F4:D9:XX 1 # sudo sdptool add SP # obdsim -p 8 -b DO SEU PC Em seguida é possível parear usando seu celular
  • 28. OBD2 / APPs Torque Lite DashCommand
  • 29. OBD2 / API Java  Foi desenvolvida uma extensão para o OpenDevice[1] que permite se comunicar via USB / Bluetooth / Wi-Fi*;  OpenDevice: Ferramenta para construção de projetos de IoT;  Perite desenvolver aplicações Arduino, Web / Desktop / Android, para visualização e análise dos dados. [1] http://opendevice.io [*] Não testado
  • 30. OBD2 / API Java Instalação / Android Adicionar as dependências no app/build.gradle Compilar os fontes - Opcional (e recomentado) Fontes: https://github.com/OpenDevice/opendevice-extensions Pré-requisitos: Maven + Java Basicamente: mvn install (na pasta obd-connection) Guia: https://opendevice.atlassian.net/wiki/display/DOC/Building+from+source dependencies { compile 'br.com.criativasoft.opendevice:opendevice-android-stream:0.1.4-SNAPSHOT' compile 'io.opendevice.ext:obd-connection:0.1.4-SNAPSHOT' compile 'com.noveogroup.android:android-logger:1.3.5' }
  • 31. OBD2 / API Java Java / Maven: <dependency> <groupId>br.com.criativasoft.opendevice</groupId> <artifactId>opendevice-wasync-client</artifactId> <version>${opendevice-version}</version> </dependency> <dependency> <groupId>br.com.criativasoft.opendevice</groupId> <artifactId>opendevice-connection-stream</artifactId> <version>${opendevice-version}</version> </dependency> <dependency> <groupId>io.opendevice.ext</groupId> <artifactId>obd-connection</artifactId> <version>${opendevice-version}</version> <type>jar</type> </dependency> // Conexão remota com servidor / websocket // USB / Serial / TCP / Bluetooh // Extensão OBD2
  • 32. OBD2 / API Java  Exemplo: Configurações para usar um servidor remoto Habilitar sensores individuais... Conectar todos, e definir o servidor
  • 33. OBD2 / API Java O servidor remoto aqui é “opcional”!  Exemplo de como trabalhar com os dados localmente:
  • 34. OpenDevice  Instalação do servidor OpenDevice: − https://opendevice.atlassian.net/wiki/display/DOC/  Pré-requisitos: Java  Login: admin / admin  Serviços: − Banco Embarcado, HTTP(8181), Rest(8181), WebSocket(8181) e MQTT(1883).
  • 38. Demo / IoTCar Código: https://github.com/OpenDevice/opendevice-examples/tree/master/IoTCar
  • 41. Engenharia Reversa – Sensor de Estacionamento
  • 43. Engenharia Reversa – Sensor de Estacionamento Componentes Identificados:  NE5532 - Dual Low-Noise High-Speed Audio Operational Amplifier  74HC4052 - Dual 4-channel analog multiplexer/demultiplexer  EM78P156E - 8-bit microprocessor http://www.xinpian.net/EMC/EM78P/EM78P156.pdf
  • 44. Engenharia Reversa  O foco dá análise será na saída no microcontrolador que vai para o display.  A análise foi feita utilizando as ferramentas:  Analisado lógico: USBee AX PRO (~R$ 50)  Sigrok[1] – Suíte de ferramentas de analisadores lógicos e osciloscópios, com suporte a vários hardwares.  PulseView – Ferramenta visual que acompanha o Sigrok  [1] https://sigrok.org/ [2] https://lxtreme.nl/projects/ols/
  • 47. Engenharia Reversa Erros cometidos:  Utilizar um Arduino para ler os dados como se fosse Serial/UART.  Os dados “pareciam” alguma coisa, muito tempo perdido !!  Queima de um módulo, após dar partida.
  • 48. Identificação do Padrão de Comunicação  Procedimento: Foram realizadas medidas dos 4 sensores individualmente (usando o PulseView), usando a saída que vai para o display.  As leituras foram feitas e identificadas em intervalos de 10cm.  A analise preliminar identificou que os sensores tem a relação: A = B, e C = D  E que o módulo envia os dados para o display em intervalos de 400ms a 500ms.
  • 49. Identificação do Padrão de Comunicação  Análise do SINAL Inicio da transmissão: Sinal de nível baixo, em seguida nível alto por 1000uS = 1ms Captura na configuração de 25Khz, identificados os pacotes em intervalos de ~450ms  A seguir os detalhes de um pacote:
  • 50. Identificação do Padrão de Comunicação  Análise dos Dados Foram considerados vários padrões de transmissão em [1], porém não foi identificado inicialmente nenhuma similaridade. A codificação dos 0 e 1, é feita através da largura/tempo dos pulsos em alta (5v), algo similar à transmissão IR[2]. [1] https://pt.slideshare.net/RathoreRavindra/line-coding-37072941 [2] https://www.vishay.com/docs/80071/dataform.pdf
  • 51. Identificação do Padrão de Comunicação  Análise dos Dados  Os 8 bits iniciais são do conjunto sensores A e B, ou seja, é uma única medida (Esquerda). O 8bits seguintes são do C e D (Direita);  O valor convertido em decimal varia de : 19 (distância de 0cm) até 4 (distância de 1.7m);  As leituras individuais apresentaram a mesma correlação.
  • 52. Arduino / Código  A leitura é feita usando as interrupções externas e calculado o tempo do pulso em alta. Usando as interrupções ao invés de pulseIn(), permitimos o arduino executar outras tarefas.  No Arduino UNO (328p) – Pinos 2, 3  No ESP8266 – Todos os pinos GPIO ( - GPIO16 ) O código desenvolvido está disponibilizado em: https://github.com/OpenDevice/opendevice-examples/tree/master/IoTCar/firmware
  • 53. Arduino / Demo  Setup  ESP8266 – Captura os dados vindos da central de controle, faz a decodificação e envia para o Arduino via Serial/UART;  O ESP8266 também disponibilizará os dados para o App (usando a lib OpenDevice), e permite um sistema de detecção automática no App.  Arduino UNO – Responsável pelo display LCD (usando a lib Tvout).
  • 54. Demo / Esquemático NÃO ESQUEÇA , TODOS OS GNDs DEVEM SER CONECTADOS !
  • 60. Obrigado pela sua atenção.