Sistema proprietário

1.1 História deste livro e o que você obterá ao lê-lo

Durante cerca de um ano, após completar meu primeiro livro, eu ressuscitei um velho projeto de construção de um submarino autônomo (referido como o projeto E-2) com certos requisitos de funcionalidade bastante desafiadores. Durante o desenvolvimento desta ideia, passei muitas horas na Internet e noutros locais, pesquisando técnicas de desenvolvimento rápido de vários sistemas e plataformas de controlo electromecânico para executar algoritmos de processamento de sinais bastante complexos. Embora existam, naturalmente, milhares de projetos e trechos de informações úteis a serem obtidas da Internet e livros sobre robótica hobbyista, descobri que ninguém mais parecia ter minhas prioridades exatas. Em particular, aparentemente não existe uma referência única que reúna pelo menos soluções introdutórias para todos os problemas de design incorporados que afectaram o meu projecto: a necessidade de utilizar ferramentas e sistemas operativos de baixo custo (open-source), um requisito para várias funcionalidades com requisitos bastante difíceis em tempo real, e um desejo de utilizar componentes baratos e de qualidade de consumo, sempre que possível. Os recursos disponíveis em muitos tópicos concentram-se em componentes industriais de prateleira muito dispendiosos ou em sistemas fortemente limitados construídos em torno de um único microcontrolador, com código delicadamente otimizado e não portátil para controlar periféricos – e uma gama muito limitada de suporte a periféricos, por isso. Estas últimas restrições de projeto de sistemas são inevitáveis quando se trabalha com requisitos apertados de energia, restrições de espaço ou um custo de lista técnica (BOM), mas é um esforço excessivo para construir e ajustar tais sistemas para um projeto único ou um protótipo. Além disso, aprender todos os detalhes necessários para montar tal sistema é uma tarefa enorme; é fácil perder-se em detalhes de afinação sem nunca conseguir montar um sistema completo e funcional. Irritantemente, muitos dos ajustes e a maior parte do planejamento cuidadoso que você faz para tornar esse sistema operacional terão que ser jogados fora se você mudar para a produção real, ou se você precisar construir mais algumas unidades com componentes ligeiramente diferentes.

O que eu estava procurando enquanto desenvolvia o projeto E-2 foi uma maneira de construir vários módulos duros em tempo real (sensores e atuadores) que poderiam facilmente e a baixo custo ser interfaceados com um computador de propósito geral rodando Linux. A caixa Linux servia como um banco de testes para algoritmos que mais tarde seriam portados para um módulo de processamento menor, mais frio e mais eficiente em termos de consumo de energia de algum tipo. Eu precisava de uma base sólida de código e técnicas conhecidas para que eu pudesse sair desse ponto e construir meu próprio sistema personalizado. Eu também queria um guia simples de como construir distribuições Linux embutidas. Para o protótipo inicial, sem campo, do meu submarino, eu não tinha uma idéia exata de quanta potência de CPU eu precisaria na versão final – então eu não queria ficar preso a uma arquitetura específica de microcontrolador, nem queria ficar atolado em tentar ajustar e afinar muitas tarefas em tempo real em um único microcontrolador. Eu também queria usar alguns periféricos – como câmeras – que são mais fáceis de fazer interface através de um sistema operacional de propósito geral.

Estes requisitos podem soar um acorde com a sua própria vida útil. É provável que você tenha encontrado situações em que seria útil automatizar alguma experiência de coleta de dados a longo prazo ou criar um simples controlador automatizado para uma programação, fabricação ou outra tarefa. Nesta linha, três outros casos em que apliquei as técnicas deste livro são:

O desenvolvimento de uma gama de aparelhos multimédia de sucesso (de campo comercial) em rede, concebidos para aplicações de publicidade e galerias de arte sem vigilância.

O desenvolvimento de aparelhos especializados, quase totalmente automáticos de teste mecânico de falhas para certos artigos electrónicos de consumo.

Construção de um datalogger automático de alta velocidade que monitoriza um link de rádio e extrai mensagens DTMF dirigidas a receptores específicos.

O segundo item acima é de particular interesse, porque demonstra bem como este livro pode ser de valor prático em aplicações de controlo e teste de processos. Durante 2002, eu trabalhei brevemente para uma pequena divisão de uma empresa multinacional cujo foco principal era artigos de plástico domésticos e de escritório. Foi muito instrutivo examinar seus dispositivos automáticos de teste – sistemas proprietários – e comparar o custo e complexidade de configuração desses dispositivos com o custo e tempo de configuração relativamente baixos de um simples SBC baseado em Linux controlando os mesmos atuadores pneumáticos e sensores. Claramente, existe um mercado subexplorado para sistemas de teste de baixo custo deste tipo. Os sistemas proprietários em uso nesta instalação em particular custam quase $20.000 para uma meia dúzia de atuadores e os PLCs associados, mais as horas não contadas de tempo de configuração1. O software de controle para estes dispositivos era especializado e não bem compreendido; na verdade, a maior parte deste equipamento estava parado porque as pessoas que o configuraram originalmente tinham deixado a empresa. Pelo contrário, as mesmas tarefas podiam ser facilmente realizadas com um PC normal que custava apenas algumas centenas de dólares, mais talvez 200 dólares por atuador para a pneumática associada. Mais importante, o software de controle para tal sistema é um simples programa em C facilmente compreensível e adaptável por qualquer especialista em informática ou engenharia eletrônica; havia vários candidatos prontamente disponíveis no laboratório da empresa.

Devido à natureza da pesquisa que levou ao início deste livro, incluí no texto uma aspersão de detalhes navais, nem todos os quais são diretamente relevantes para o engenheiro incorporado. Se este material não for de interesse, você pode ignorá-lo com segurança sem comprometer de forma alguma a sua compreensão do texto restante. A razão pela qual esta informação está incluída juntamente com a discussão de desenvolvimento embutido “puro” é principalmente para ilustrar os requisitos do mundo real e o pensamento que levou a várias decisões de design no projeto E-2. Engenharia não é ciência teórica; é uma disciplina aplicada, e é com isto em mente que eu uso exemplos específicos para ilustrar pontos teóricos.

Você também deve notar que algumas das opiniões expressas neste livro, se não exatamente controversas (exceto pelos padrões da Usenet – tudo na Usenet é controverso!), são pelo menos discutíveis; por exemplo, a escolha do AVR como minha plataforma de controle em tempo real. Por esta razão, eu dei uma justificação adicional para as decisões que tomei neste texto. Esta explicação adicional deve demonstrar as razões que eu tinha para escolher caminhos específicos, mas não foi expressamente concebida para proselitismo do AVR para pessoas que têm experiência com, e preferem, outra arquitetura. Mais uma vez, este “material bónus” não é crítico para a sua compreensão dos conceitos básicos aqui apresentados, e você pode saltar com segurança se desejar.

Tenha também em mente que este livro não é intencionalmente uma “bíblia”. Não é uma cobertura exaustiva de cada uma das nuances dos tópicos abordados; uma obra deste tipo abrangeria várias prateleiras. O objetivo principal deste livro é descrever e ilustrar uma metodologia simples, modular e barata para implementar sistemas embutidos complexos, e apresentar alguns módulos prontos para que o leitor se adapte aos seus próprios projetos. A ênfase particular é a realização de soluções end-to-end utilizando hardware de desenvolvimento de baixo custo e ferramentas de software livre. Quando você chegar às últimas páginas, esperamos que você tenha o seguinte:

Uma compreensão funcional dos detalhes críticos “sob a capa” necessários para iniciar o Linux em plataformas x86.

Uma introdução aos tipos de problemas que você enfrentará ao usar computadores x86 de placa única como o núcleo dos sistemas de registro de dados e de controle de movimento.

Informação básica sobre a família de microcontroladores Atmel AVR.

Uma introdução prática para construir alguns circuitos simples de aquisição de dados e controle de motores, e conectá-los a PCs.

Algumas informações básicas “primer” sobre segurança de dados, autenticação e problemas de confiabilidade, pois afetam sistemas embarcados.

A idéia subjacente é que o leitor tem uma experiência razoavelmente íntima com um ou outro dos tópicos de desenvolvimento de aplicações Linux, ou desenvolvimento de sistemas profundamente embarcados – este livro é projetado para impulsioná-lo na vanguarda da sua curva de aprendizagem com o essencial de qualquer lado da equação que você está perdendo. Ele também fornece a cola que une essas informações no contexto geral de um projeto bastante complexo. Note, a propósito, que eu usei a palavra titular “livro de receitas” com alguma desconfiança. A engenharia de livros de culinária puramente de cozinha – que faz ranhuras em peças mal compreendidas como esferas de Capsela – nunca é uma boa prática. Neste livro, estou lhe dando algumas peças de Capsela prontas para uso, mas também estou lhe dizendo como e por que eu fiz as engrenagens e eixos em cada peça, e até certo ponto como você pode ir mais longe e fazer peças melhores para si mesmo. Estas explicações são muito mais importantes do que as plantas das próprias peças.

Ao planejar um livro como este, é fácil cair em uma de duas armadilhas: ou criar uma única “mega-aplicação” monolítica que ilustra todos os pontos desejados, mas é extremamente difícil de explicar sucintamente, ou por outro lado quebrar o tema em inúmeras pequenas notas abstratas que muitos leitores terão dificuldade em se integrar em projetos do mundo real. Eu tenho tentado navegar entre estes dois extremos, quebrando os módulos mais interessantes do projeto E-2 em algumas pequenas aplicações práticas, juntamente com código basicamente autônomo e teoria suficiente para modificar e estender estas aplicações para seus próprios usos.

Finalmente, uma nota para as pessoas que possuem meu livro anterior, Embedded System Development on a Shoestring. Este livro não foi concebido para ser uma sequência desse volume, mas é definitivamente um material relacionado. Se você seguir as técnicas deste livro para construir um protótipo de dispositivo, e mais tarde quiser espremê-lo em uma solução otimizada de chip único, meu trabalho anterior vai ajudá-lo a entender como usar ferramentas GNU livres para que seu software seja facilmente portado para um microcontrolador ARM. As principais críticas que recebi para aquele livro anterior foram que ele precisava cobrir uma gama maior de informações, e que havia muito poucas ilustrações, tornando-o uma leitura bastante seca. Eu ouvi esses comentários e espero que você ache que esse livro satisfaz suas necessidades em ambos os aspectos. Como sempre, seus comentários e sugestões são bem-vindos; você pode me enviar um e-mail ou visitar meu site em http://www.zws.com/.

Deixe uma resposta

O seu endereço de email não será publicado.