Slides da minha apresentação do Trabalho de Conclusão de Curso na Engenharia de Computação da USP de São Carlos, entitulado "Estação de Controle Multimídia com Interface Web utilizando Sistema Operacional Linux Embarcado em plataforma ARM".
O trabalho foi orientado pelo ilustre Prof. Dr. Evandro Luís Linhari Rodrigues, e foi apresentado no dia 20 de Novembro de 2012, sendo aprovado pela banca.
CPqD - Detecção Inteligente de Eventos por Imagem - Um Desafio para Internet ...
Estação de Controle Multimídia com Interface Web utilizando Sistema Operacional Linux Embarcado em plataforma ARM
1. Estação de Controle Multimídia com Interface
Web utilizando sistema operacional Linux
embarcado em plataforma ARM
ANDRÉ MÁRCIO DE LIMA CURVELLO
ORIENTADOR: PROF. DR. EVANDRO LUÍS LINHARI RODRIGUES
UNIVERSIDADE DE SÃO PAULO
Escola de Engenharia de São Carlos
Departamento de Engenharia Elétrica
20 de Novembro de 2012
2. AGENDA
1. Objetivos do Trabalho
2. História e Estado da Arte dos Sistemas Embarcados
3. Visão Geral de Linux Embarcado e Plataformas disponíveis
4. Conceitos, Materiais e Métodos
5. Desenvolvimento e Resultados Obtidos
6. Conclusões
7. Sugestões e futuro do projeto
3. 1. Objetivos do Trabalho
• Sistema Embarcado que faça uso e controle de ferramentas e
componentes multimídia através da web;
• Componentes de controle e interação multimídia;
• Plataforma de acesso web amigável;
• Interação intersistemas e interplataformas;
• Portabilidade;
• Desenvolver bases para futuros projetos de sistemas embarcados
em Linux.
4. 2. História e Estado da Arte dos Sistemas Embarcados
• ENIAC – 1946
• Transistor – 1947, Bell Laboratories
• Apollo Guidance Computer - 1966
• Intel 4004 – 1971
Origem: www.porticus.org
Origem: www.britannica.com
Origem: www.computerhistory.org
Origem: www.extremetech.com
5. 2. História e Estado da Arte dos Sistemas Embarcados
• Minuteman Missile Autonetics D-17 Computer
• Aumento da produção reduziu custos e facilitou acesso;
• Microcontroladores 8 Bits, 16 Bits e 32 Bits
• Componentes de CPU e memória e periféricos integrados;
• ARM e SoCs ARM
• Arquitetura RISC, barramento 32 Bits;
• Integração de periféricos mais complexos no chip;
• Baixo consumo.
Origem: www.siloworld.net
Origem: www.lions-wing.net
Origem: www.pcper.com
6. 3. Visão Geral de Linux Embarcado e Plataformas
disponíveis
• Linux e Linux Embarcado
• Sistema Open Source, com suporte à rede e muitos usuários ,
fóruns e material disponível;
• Primeira versão surgiu em 1994 como um port do Linux para o computador
Acorn A5000;
• Uso crescente no mercado, em dispositivos e produtos;
• Aumento do número de usuários;
• Amadurecimento das ferramentas de desenvolvimento;
• 4 Referências na Edição 95 da Linux Magazine de Outubro de 2012.
Origem: www.old-computers.com
Origem: www.developer.android.com
7. 3. Visão Geral de Linux Embarcado e Plataformas
disponíveis
• Plataformas
• Raspberry Pi
• BeagleBoard xM
• PandaBoard ES
• Tiny6410
Plataforma escolhida:
Tiny6410
Origem: www.raspberypi.org
Origem: www.beagleboard.org
Origem: www.friendlyarm.netOrigem: www.pandaboard.org
8. 4. Conceitos, Materiais e Métodos
• Toolchains
• Bootloader
• Kernel
• Sistema de Arquivos
• Buildroot
• Conceitos de Aplicação e
Programação Web
• Multimídia
• Stream de Vídeo
• GPS
• Sensor de Temperatura Digital
• OpenCV
• Python
9. 4. Conceitos, Materiais e Métodos
• Toolchains
• Conjunto de ferramentas para desenvolvimento, tais como compilador,
bibliotecas, cabeçalhos de Kernel, debuggers, etc;
• Permitem realizar compilação cruzada;
• Toolchain FriendlyARM e Buildroot.
Origem: www.free-electrons.com
10. 4. Conceitos, Materiais e Métodos
• Bootloader
• Componente responsável por inicializar o hardware para a entrada e ação do
Kernel;
• U-Boot configurado para Tiny6410.
• Kernel
• Núcleo do sistema operacional, gerencia acesso à memória, disco, dispositivos
do sistema, recursos de rede, etc;
• Kernel Linux 2.6.38 com configurações para Tiny6410.
11. 4. Conceitos, Materiais e Métodos
• Sistema de Arquivos
• Leitura e escrita dos dados, persistência de dados, bibliotecas, aplicações e
arquivos de configurações;
• Rootfs Qtopia fornecido pela FriendlyARM.
• Buildroot
• Buildsystem e Toolchain.
• Conceitos de Aplicação e Programação Web
• Componentes de exibição (HTML), estilos (CSS) e controle (JavaScript);
• Servidor Web – Lighttpd;
• Processador de Conteúdo – PHP.
12. 4. Conceitos, Materiais e Métodos
• Multimídia
• Exibição de conteúdo na forma de áudio,
vídeo e imagens;
• Periféricos da Tiny6410;
• MPlayer
• Stream de Vídeo
• Fluxo contínuo de imagens;
• Captura de vídeo pela câmera USB;
• MJPG Streamer;
• GPS
• Sistema de localização global;
• Receptor GPS SiRF StarIII;
• Protocolo NMEA 0183.
13. 4. Conceitos, Materiais e Métodos
• Sensor de Temperatura Digital
• DS18B20;
• Barramento Maxim 1-Wire;
• OpenCV
• Conjunto de bibliotecas para visão computacional;
• Permite capturar imagens, aplicar filtros e realizar operações matemáticas em
cima de imagens capturadas ou utilizadas como parâmetros de entrada;
• Python
• Linguagem interpretada e orientada a objetos;
• Fácil de usar e de manter;
• Ampla gama de bibliotecas, tais como comunicação serial, email, etc.
Origem: www.minidevs.com
14. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Arquitetura da Interface de Acesso Web
• Interface amigável e de fácil uso;
• Menu, exibição de conteúdo e painel de controle;
• Uso de tags HTML, estilos CSS e funções JavaScript;
• Diretórios utilizados:
• “pages” – Arquivos das páginas a serem exibidas;
• “php” - Arquivos PHP que recebem e tratam requisições;
• “css” - Arquivos de estilo CSS;
• “js” – JavaScripts;
• “images” – Imagens utilizadas na página da Interface;
• “pictures” – Link simbólico para o diretório de imagens capturadas pela câmera USB;
• “files” – Demais arquivos e scripts escritos em outras linguagens.
15. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Uso de No-IP para facilitar o acesso.
• Endereço http://armweb.no-ip.org
• Principal arquivo: www/index.php;
• Recebe requisições para mudança de página através do parâmetro p
e exibe a página na coluna central;
• Exemplo: http://armweb.no-ip.org/?p=home
Ou
http://armweb.no-ip.org/index.php?p=home
16. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Arquitetura da Interface de Acesso Web
• Layout:
17. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Arquitetura da Interface de Acesso Web
• Final:
18. 5. Desenvolvimento e Resultados Obtidos
• Servidor Web Lighttpd e Processador de Conteúdo PHP
• Receber, encaminhar e responder requisições;
• Retorna e sintetiza conteúdo HTML ao cliente web;
• Executa aplicações;
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
Origem: www.sixrevisions.com
19. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Autenticação
• Mecanismo de Sessão do PHP;
• Controle de exibição de conteúdo para usuários não autenticados e
autenticados
• Streams de vídeo, mensagens e administração.
• Mecanismo de persistência de dados com SQLite3.
• Tabela de usuários cadastrados e suas informações de login.
20. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Autenticação
21. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Músicas
• php/folvernav.php
• Mapeamento e geração de conteúdo HTML de diretórios de músicas;
• Arquivos como Links com funções JavaScript para disparo de requisições.
• js/mediaControl.js implementa as funções de disparo.
• php/mplayer.php
• Recebe requisições e executa MPlayer;
• php/musicas.php
• Estrutura da página Músicas.
22. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Músicas
23. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Vídeos
• php/folvernav.php
• Mapeamento e geração de conteúdo HTML de diretórios de vídeos;
• Arquivos como Links com funções JavaScript para disparo de requisições.
• js/mediaControl.js implementa as funções de disparo.
• php/mplayer.php
• Recebe requisições e executa MPlayer;
• php/videos.php
• Página Vídeos;
• Elemento de seleção da saída de vídeo.
24. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Vídeos
25. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Vídeos
26. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Câmera
• MJPG Streamer
• Shell Script define parâmetros de controle para a execução do streamer;
• Baixo uso de banda de rede. Cerca de 5 a 10 kB/s;
• Basta uma câmera USB compatível com UVC;
• php/status.php
• Iniciar ou encerrar o stream de vídeo da câmera.
27. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Câmera
• usbCapArgs.c
• OpenCV para captura de imagens pela câmera USB;
• Shell Scripts para controle de captura de fotos com a aplicação. Capturam e
movem as fotos para diretório de imagens no cartão de memória.
• files/timeCapture.sh
• files/cameraCapture.sh
• php/camCapture.php
• Requisições para controle de obtenção de fotos. Interage com files/cameraCapture.sh.
• pages/camera.php
• Página Câmera, exibe os streams de vídeo e componentes de controle para obtenção de
fotos.
28. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Câmera
29. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Imagens
• Mapeamento do diretório de imagens
• php/foldernav.php
• Conteúdo HTML tabelado com as imagens contidas no diretório;
• pages/images.php
• Página Imagens;
• Ao serem clicadas, as imagens são exibidas em tamanho original.
30. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Imagens
31. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• GPS
• files/gps.py
• Comunicação serial com o receptor GPS;
• Obtém as sentenças GPS desejadas;
• php/gps.php
• Requisições de dados GPS;
• Interage com files/gps.py
• pages/gps.php
• Página GPS.
32.
33. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Temperatura
• Driver para o sensor de temperatura ds18b20.ko.
• Aplicação ds18b20.c
• Leitura de dados do driver.
• pages/temp.php
• Página Temperatura;
• php/temp.php
• Interage com a aplicação de leitura do driver ;
• Retorna a temperatura conforme parâmetros passados;
• Pode gerar arquivo texto com dados de temperatura em um intervalo em segundos.
34. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Temperatura
35. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Temperatura
36. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• RF
• Interação com o projeto Ferramentas para Gerenciamento de Conteúdo para
Telemetria via Web com Linux Embarcado em Microcontroladores ARM;
• php/rf.php
• Envio e recebimento de dados por meio de requisições parametrizadas.
• pages/rf.php
• Página RF.
37. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• RF
38. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• RF
39. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Administração
• Exibição de relatórios e mecanismos de controle da estação;
• Informações gerais sobre o sistema;
• Controles
• Iniciar ou pausar o stream de vídeo;
• Ligar ou desligar o display LCD e seu backlight, dentre outros.
• php/status.php
• Controle de periféricos e exibição de status.
• pages/admin.php
• Relatório do sistema e componentes de controle;
• Controles mostrados somente para usuários autenticados.
41. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Painel de Status e de Controle
• Exibição direta de dados:
• Temperatura ambiente;
• Uso de CPU;
• Status do Stream de Vídeo e do MPlayer.
• Controle de execução multimídia:
• Avançar/recuar música;
• Pausar ou cancelar a execução;
• Controle de volume.
42. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Painel de Status e de Controle
• A exibição de dados da estação ocorre pela interação entre funções no script
js/ajax.js e de requisições do script php/status.php.
• Já o controle de execução multimídia ocorre pela interação entre funções no
script js/mediaControl.js e o script php/mplayer.php.
43. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Painel de Status e de Controle
44. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Contato
• files/mail.py
• Envia e-mails através da conta tiny6410@gmail.com;
• php/mail.php
• Parâmetros de contato;
• Envio de e-mail com files/mail.py com parâmetros trabalhados.
• pages/contact.php
• Página Contato.
45. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Contato
46. 6. Conclusões
• Uso de diversas ferramentas de desenvolvimento;
• Uso de conceitos de sistemas embarcados, redes de computadores e
interação cliente-servidor para web;
• Interação entre componentes, elementos e programas em linguagens
diferentes compondo um sistema final;
• Agregação de informação com uso de toolchains e buildsystems, e
pelo desenvolvimento de sistemas e de interface web;
• Ativo para aprendizado de ferramentas e de desenvolvimento de
soluções Linux embarcadas.
47. 7. Sugestões e futuro do projeto
• Página para acesso móvel;
• Google API – Inserção de dados em planilhas na nuvem, criação
automática de álbuns com as fotos tiradas pela câmera, etc;
• DropBox API – Inserção de dados em um disco virtual na nuvem;
• Interação com redes sociais – Twitter;
• XMPPPY – Comunicação e interação via chat;
• Uso de OpenCV para criar mecanismos de reconhecimento facial,
detecção de padrões, etc.
48. 7. Sugestões e futuro do projeto
• O projeto pode se tornar um produto para entretenimento;
• É possível criar um equipamento para monitoramento visual e
sensoriamento remoto, com uso de componentes de baixo custo;
• Será continuado como projeto, e está disponível no Git Hub:
https://github.com/andrecurvello/armwebstation
49.
50. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Mensagem
• Ainda em fase de protótipo;
• Uso de Qt4 para exibição de mensagem no display LCD da Tiny6410;
• Uso de scripts PHP para exibição da página e controle de requisições;
• Previsto para futuras versões do projeto.
51. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Documentos
• Página com links, documentos e referências bibliográficas para suporte ao
desenvolvimento de Linux embarcado;
• Script PHP responsável por sintetizar a página.
53. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Sobre
• Tela com maiores detalhes sobre cada uma das opções do Menu e do sistema
implementado;
• Script PHP pages/about.php é responsável por definir a estrutura HTML e o
conteúdo da página.
54. 5. Desenvolvimento e Resultados Obtidos
INTERFACE DE ACESSO WEB E COMPONENTES RELACIONADOS
• Sobre