Mostrando postagens com marcador Etapas de projeto. Mostrar todas as postagens
Mostrando postagens com marcador Etapas de projeto. Mostrar todas as postagens

sábado, 17 de outubro de 2015

Análise de Viabilidade em Projetos


Comumente, a idéia de um projeto vem em nossa mente como um furacão. E deve ser assim: a primeira pessoa que ele deve impressionar é a nós mesmos. Somos o primeiro a comprar a idéia, entendê-la e elogiá-la mentalmente, ainda que de modo inconsciente. Mas, uma hora ela precisa sair da nossa cabeça e se expor de modo concreto, tornando-se um projeto implementado. Cada projeto leva seu tempo e possui sua complexidade. Isso já falamos aqui diversas vezes. Nessa postagem queremos frisar uma palavra em especial: Viabilidade. Essa palavra está presente desde o início da implementação e direciona as escolhas feitas no projeto, no que tange a peças, acessórios, sensores, atuadores, plataformas, software, entre outras coisas. Além disso, tem uma relação com a complexidade e o custo do projeto. 

Via de regra, nenhum projeto pode ser considerado inviável, se você possui os recursos para implementá-lo. O problema é que, diversas vezes não consideramos o fato de que, o objetivo final de um determinado projeto pensado pode ser muito simples e realizado por um tipo de dispositivo mais simples ainda, o que torna o nosso projeto muitas vezes concorrente de algo mais barato e viável. Por exemplo: hoje em dia é muito fácil utilizar dispositivos móveis. Vemos todos os dias idéias de aplicativos que usam GPS que consideram cálculos por contagem de pontos de unidades móveis. Imagine um aplicativo que calcula a estimativa do número de pessoas em um show. O desenvolvedor considera de antemão que o seu aplicativo vai estar em um número minimo de celulares para poder efetuar essa contagem, como em uma amostragem. Estatisticamente, a probabilidade de atingir o êxito nessa empreitada está dependente sempre do sucesso do aplicativo. Caso muitas pessoas não usem, o aplicativo não pode gerar informações confiáveis. Assim, o projeto nasce com uma dependência de viabilidade que só será alcançada se isso acontecer. Isso dificulta a realização dos testes, entre outras coisas.

Esse exemplo citado acima ainda mostra um problema que tem relação com a viabilidade do projeto, que é a aceitação das pessoas. Se o projeto é direcionado para resolver um problema real, o projeto tem tudo para dar certo. Mas, nem sempre o que o idealizador do projeto considera como problema real é de fato, para os outros, um problema. Isso precisa ser verificado antes da implementação para não correr o risco de perder muito tempo em algo inútil.

Outro problema que enxergamos, em diversos projetos, é o uso de dispositivos e componentes muito precisos e caros para realizar tarefas muito simples. Por exemplo: um MP3 player feito com Raspberry / Arduino Tre / ou qualquer outra plataforma que usa um microprocessador. A menos que esse MP3 player possua funcionalidades específicas que exijam um processamento mais pesado (controle por voz, gestos ou inteligência artificial, por exemplo), não faz sentido usar uma plataforma tão cara. Existem módulos MP3 que podem ser controlados por Arduinos mais simples, e que não custam mais de 5 dólares.

Por isso, antes de desenvolver sua idéia em uma implementação, vale a pena pesquisar e analisar para que o custo, a complexidade e a falsa idéia de solução perfeita, não o decepcionem durante o caminho.


sexta-feira, 9 de outubro de 2015

Etapas de Projeto: O Case!



Proteger e fornecer um visual agradável para o seu projeto é uma tarefa tão importante quanto desenvolver suas funcionalidades. Mas no momento de escolher um case para sua placa de desenvolvimento é preciso decidir com base nas mesmas variáveis de projeto que influenciaram em outras etapas. Temos hoje, no mercado, diversos cases prontos, pré-fabricados, por encomenda e também os do tipo faça-você-mesmo (DIY). Mas nem todos se adequam a qualquer projeto. Caso você esteja à procura de um case para guardar seu dispositivo apenas, tem à sua escolha diversos modelos que possuem também suas diferenças. Alguns cases encapsulam a placa por completo, deixando à mostra apenas a porta USB ou Ethernet. Outros ainda tem aberturas para os cabos de prototipagem ou mesmo são vazados para permitir o melhor resfriamento do microcontrolador. 

Alguns tipos podem comprometer o bom funcionamento do seu projeto, caso você não considere as situações de funcionamento do dispositivo. Ambiente com sol, umidade excessiva, calor excessivo e maresia, por exemplo, podem causar problemas de funcionamento e até mesmo a perda do dispositivo. Quanto ao aquecimento do dispositivo, a preocupação não se restringe apenas ao funcionamento no ambiente final de trabalho. Um sensor conectado de  maneira errada pode superaquecer o seu dispositivo, provocando danos a ele. Por isso o constante monitoramento é necessário.


O material com o qual o case foi fabricado também deve ser levado em consideração. Se o objetivo é proteger o seu dispositivo, não adianta colocá-lo em um case feito de um material que não seja adequado ao seu projeto. Muitos cases são verdadeiras obras de arte e merecem elogios pela criatividade, mas, como diz o ditado: "Gaiola de ouro não alimenta o passarinho!". Seu projeto precisa funcionar bem, acima de tudo. 








sexta-feira, 2 de outubro de 2015

Idéias de projeto #1



As idéias para os projetos que construimos nascem de problemas reais e de sua análise. Vamos pensar um pouco e abrir alguns questionamentos sobre problemas que poderiam ser resolvidos com uma plaquinha de baixo custo e um pouco de criatividade?


Liduina possui um buffet e atende festas de aniversários, casamentos e outras mais. Liduina se especializou em comida gourmet e atende um público de alto requinte. Por pessoa, uma festa em média chega a custar $80 dólares. O fato é que Liduina enfrenta um problema sério. Controlar a entrada de penetras em suas festas. Habitualmente as pessoas chegam com uma senha impressa, ou deveriam chegar. A festa é um ambiente familiar e, as pessoas chegam e dizem que esqueceram a senha, mesmo assim, o buffet não pode impedí-las de entrar. Mas o que acontece normalmente é que muitas pessoas cedem sua senha para outras pessoas, que não eram contadas na lista, gerando um ônus extra de mais de 50% no orçamento. Começa então a discussão, pois o contratante passa a desconfiar que Liduina quer ganhar dinheiro desonestamente. No entanto, seria de muita serventia um sistema que garantisse o controle do número das pessoas na festa e que fosse confiável tanto para o contratante quanto para o contratado. Liduína quer saber: dá pra fazer?



Arlindo é um cara daqueles que conta cada centavo todo mês. Mas nos últimos quatro meses Arlindo viu algo que está tirando o seu sono: sua conta de água! Um aumento sem precedentes de mais de 4%. Arlindo verificou seus encanamentos, e não encontrou nada que justificasse aquele aumento absurdo. Arlindo sabe que a tarifa não aumentou, então existe um problema a ser resolvido. Um amigo de Arlindo falou que viu na TV alguns inventores que criam sistemas de controle de uso de recursos como água e eletricidade, e que assim ele poderia, nao somente resolver o problema, mas economizar ainda mais. Ele se interessou por esses sistemas e quer comprar um. Mas Arlindo já falou, não paga mais do que $50 dólares por ele. Arlindo quer saber: dá pra fazer?

Etapas de projeto: Testando o seu sistema


Ainda que pareça o fim do caminho, a etapa de testes de um projeto pode ser apenas o início de uma longa estrada. Dependendo da complexidade do projeto e de sua aplicação, os testes que são necessários para validar um sistema inteiro constituem um conjunto muitas vezes impossível de contemplar em um período de tempo limitado. Isso porque é muito difícil enxergar todas as possibilidades de situações que podem ocorrer durante o uso do sistema e que podem acarretar erros em sua utilização. É importante notar que os testes devem abranger diferentes níveis e que existem diferentes tipos de testes:

Testes para o software, embarcado ou não: o programa que está rodando em seu dispositivo ou em outros aplicativos que fazem parte do sistema inteiro precisam funcionar corretamente. Isso não quer dizer apenas estar livre de erros, mas estar adequado à funcionalidade para o qual se destina. O modo mais fácil de fazer isso é colocar o software para funcionar. Mesmo assim, os testes não precisam ficar somente para o final, durante todo o processo de desenvolvimento, pode-se testar as partes já terminadas.

Testes para o hardware: como o sistemas baseados em plataformas são constituídos de hardware e software, e, a integração desses dois componentes pode ser um desafio à parte, o hardware utilizado deve ser bem escolhido, bem como as outras partes constituintes do sistema, como sensores e atuadores. Entender e testar o funcionamento dessas partes é importante para não ter dores de cabeça posteriores. Exemplo: sensores digitais são constituídos de partes eletrônicas e muitos deles possuem pequenos chips que possuem uma faixa de temperatura para trabalho. O uso desses sensores em ambientes expostos ao sol podem danificá-los. O projetista não pode ignorar essas coisas.

Testes de funcionalidades: Funcionar corretamente pode não significar que o sistema funciona de acordo com o que necessita ou foi pedido. Deve-se perguntar ao final de tudo se o projeto responde às questões levantadas no início do seu desenvolvimento. É normal acontecer que, ao desenvolvermos um sistema solicitado por alguém, percebermos que nem mesmo a pessoa sabe o que quer. Isso acontece porque o ferramental disponível está na mente do desenvolvedor, e para ele é mais fácil perceber a solução para o problema. É com a experiência que se consegue entender o que o outro quer, mas mais ainda, o que ele precisa, e o que de fato é viável, com a tecnologia atual e com os recursos e tempo disponíveis.


quinta-feira, 1 de outubro de 2015

Questões e Decisões de projeto: Monitoramento de Lâmpadas - Chocadeira controlada por Arduino



A escolha de sensores para monitoramento de dispositivos em um projeto depende sempre da natureza do evento produzido pelo dispositivo, mas também deve atender às restrições do projeto. Ao fazermos o monitoramento de lâmpadas em um ambiente, doméstico, por exemplo, o custo do projeto não deve ultrapassar a economia produzida pelo dispositivo monitor, considerando que este é pensado para evitar o gasto desnecessário. Existem diversos sensores para se verificar o estado de uma lâmpada. Podemos utilizar sensores de corrente elétrica para ver se a lâmpada está sendo alimentada, sensores de temperatura, para verificar se a lâmpada está acesa e até sensores de luminosidade. É precisa levar em conta o tipo de lâmpada que você vai utilizar. Lâmpadas incandescentes (daquelas antigas) quando queimam, rompem o filamento, e não permitem a passagem da corrente elétrica. As lâmpadas atuais são diferentes, possuem um circuito eletrônico, e, pode acontecer que, mesmo que elas não estejam funcionando como deveriam, continuem consumindo energia. Nesses casos, verificar a corrente passando no fio que alimenta a lâmpada vai indicar um evento falso. Um dos sensores mais básicos para isso é o sensor de luminosidade LDR, que nada mais é do que um resistor que varia seu valor de resistência à corrrente de acordo com a quantidade de luz que recebe. São muito baratos e simples de utilizar, e podem fornecer a resposta  necessária para o monitoramento.  Projetos mais complexos podem necessitar da combinação de mais de um sensor. Vamos pensar na criação de uma chocadeira controlada por Arduino e que utiliza lâmpadas incandescentes de filamento para produzir calor. A temperatura nesse ambiente deve ser controlada rigorosamente, assim como a umidade. O ideal aqui seria monitorar a lâmpada, para verificar o seu estado e ainda ter uma lâmpada reserva que deve ser acionada caso esta primeira queimar. Sensores de luminosidade, corrente, umidade do ar e temperatura, devem ter seus estados verificados e o resultado a ser interpretado vem a ser uma combinação dos estados dos diversos sensores.

sábado, 12 de setembro de 2015

Etapas de projeto: A adequação de componentes



Na hora de escolher componentes para o seu projeto, você vai perceber que existe uma grande variedade de opções. A sua escolha vai depender de muitos fatores, entre eles, a natureza do seu projeto e os agentes envolvidos. Nesse momento, todo o conhecimento possível a respeito do seu projeto, da sua plataforma e do seu público, serão importantes. Não existe um padrão, cada projeto pode envolver diferentes variáveis que influenciam nessa escolha de modo bastante sensível. Via de regra, projetos de acessibilidade são alguns dos que mais exigem do projetista, pois atendem a um público bastante específico e também trata da interação com pessoas com limitações. Qualquer projeto precisa ser bem analisado. Dispositivos que vão ficar expostos às intempéries do tempo, por exemplo, precisam de um cuidado maior também nessa escolha. Sensores são componentes eletrônicos e trabalham dentro de uma faixa de temperatura. A variação dessa temperatura pode influenciar no dado de leitura fornecido pelo sensor, e o projetista precisa estar ciente disso. Muitas vezes os sensores mais simples também podem não fornecer uma resposta em tempo hábil, ou ainda uma resposta com precisão adequada ao projeto. Um caminho para resolver isso é ficar atento ao projeto, antes, durante e depois de executado, na sua fase de testes, para entender bem o seu funcionamento e realizar as modificações necessárias.

quinta-feira, 10 de setembro de 2015

Etapas de projeto: O software embarcado



Durante o processo de definição de um projeto baseado em plataforma, um cuidado especial se dá ao software que será implementado. Quando os microcomputadores pessoais apareceram, havia muitas restrições quanto à rapidez do processamento, ou ao uso de memória, e diversos artifícios eram utilizados para se aproveitar recursos da melhor forma possível. Atualmente, programar para um PC comum não é uma tarefa que exija muito conhecimento do hardware. Lança-se mão de diversas bibliotecas, sem muitas vezes tomar cuidado com o código que se está inserindo no seu projeto. Mas, no desenvolvimento de um software para um sistema com restrições de energia, espaço, memória, prazos de execução, etc... a coisa é um pouco diferente. Vamos usar um exemplo: Um sistema que monitora a ocorrência de relâmpagos em uma área qualquer. Se no momento do evento o software não estiver de prontidão para captar a sua ocorrência, de nada serve um hardware potente. O processamento pelo hardware pode ser muito rápido, mas tem-se que considerar os acessos a memória, ou acessos de entrada e saída quando no momento do registro do evento, para que o dispositivo retorne à prontidão exigida no momento certo e possa esperar por outros eventos. É uma restrição de tempo muito rígida e que pode afetar o funcionamento do sistema inteiro, se esse software não for bem escrito. Quanto ao uso de memória, tem-se que considerar que, normalmente, os dispositivos não dispõem de muita memória, então, meu código não pode usar variáveis à vontade, como muitas vezes fazemos ao desenvolver para um computador comum. Quanto ao uso da energia, posso estar preso a uma restrição ainda pior. Nesse caso, como vou alimentar o meu sistema interfere diretamente no seu bom funcionamento e na sua eficiência. Desenvolver software embarcado exige um mínimo conhecimento do hardware usado. Então não ignore as especificações do seu sistema, busque entendê-las ao máximo. É necessário também desenvolver o software em etapas de refinamento que incluem modificações para otimizar o seu código, várias e várias vezes. 

sexta-feira, 4 de setembro de 2015

Etapas de Projeto: A divisão das tarefas!


Existem similaridades entre as diversas naturezas de projetos, mas existem também diferenças importantes entre eles. Projetos de software podem ser divididos em camadas, que particionam o processamento, para simplificar a implementação e sobretudo a compreensão e manutenção do sistema inteiro. Essas camadas precisam se comunicar de maneira perfeita e essa divisão favorece o que chamamos também de portabilidade de um sistema. Por exemplo, se você cria um sistema em software para uma instituição qualquer e opta por fazer em forma de software instalado nas máquinas, sua manutenção e seu uso em diferentes máquinas, até mesmo da mesma localidade, pode requerer um pouco de trabalho. Cada nova atualização necessita ser recompilada para e reinstalada em cada máquina. Já quando você opta por fazer em um ambiente web, você tem a possibilidade de permitir o acesso a partir de um browser que hoje é presente em qualquer computador, além de poder utilizar templates responsivos que permitem o uso do seu software em também em dispositivos móveis. Quando se trata de um projeto baseado em plataforma de hardware, existe uma divisão que é fundamental no seu projeto: é a divisão das tarefas entre sua plataforma de hardware e o software associado. Se você está fazendo uma coleta de dados em um campo aberto, por exemplo, e você necessita economizar para que seu dispositivo esteja ligado durante um período mais longo de tempo, você pode optar por manter um baixo nível de processamento, sempre considerando uma quantidade de dados mínima necessária para a sua correta interpretação. Considere que esses dados sejam guardados em um banco de dados, o software associado ao banco de dados precisa trabalhar um pouco mais, para poder colher, guardar e interpretar esses dados mínimos de uma forma correta. Essa divisão de tarefas é dependente da natureza do seu projeto. Quando seu projeto necessitar, economizar energia pode não ser uma opção, para não haver o risco de perdas na qualidade do resultado obtido. São decisões que cabem aos desenvolvedores, levando em conta as características do projeto.



terça-feira, 1 de setembro de 2015

Etapas de Projeto: Escolhendo uma plataforma


Projetos que usam plataformas de prototipagem, como os que mostramos aqui no blog e os que apresentamos no www.natalmakers.com, possuem, cada um, suas características e finalidades próprias. Seja o universo de atuação do projeto ou sejam os indivíduos envolvidos, muitas coisas podem determinar a escolha de uma plataforma para desenvolvimento. Quem trabalha com software sabe que existem etapas bem definidas no desenvolvimento de um programa. Via de regra, é preciso de um tempo com a pessoa que encomendou aquele programa, para poder entender o que é que, de fato, a pessoa precisa. Algumas vezes, nem mesmo ela sabe o que quer, isso porque as soluções que podem resolver o problema dele estão na mente do projetista. Então é um trabalho de aprendizado contínuo que passa por conversas e mais conversas. E a cada vez se descobre mais, muita coisa é refeita, e é preciso evitar, ao máximo, o desperdício de tempo. Com hardware embarcado  é similar, mas é preciso estar atento ao fato de que aqui estamos trabalhando com hardware e software, e isso pode trazer uma aumento de complexidade para o projeto. Que situações podem acontecer?

Escolher uma plataforma inadequada
Meu projeto é maior do que a plataforma suporta, ou ela é lenta demais para processar tudo o que ele pede. Por exemplo, sabemos que o clock do Arduino UNO é 16MHz. E agora eu quero trabalhar com processamento de imagens em tempo real. Seria essa a melhor escolha? Ou então eu quero armazenar dados de maneira persistente no Arduino UNO, que usa um ATMega328 (que possui 1024 bytes de EEPROM, uma memória que pode registrar informações mesmo quando o Arduino está desligado). Se a quantidade de informação cabe nesse espaço, é uma opção. Se não, devo partir para outra possibilidade.

Trocar de plataforma sem necessidade
Mesmo sabendo que a plataforma não possui os recursos que necessito para meu projeto, trocar de plataforma pode não ser a única opção. Existem os shields e módulos que servem para estender as funcionalidades do meu dispositivo. Nesse caso eu vou ter que tomar cuidado com a alimentação do dispositivo, porque colocar coisa demais e não fornecer energia suficiente também não é boa prática.

Serrar um graveto com uma serra elétrica
O oposto pode ocorrer. Posso estar querendo usar uma plataforma que possui recursos demais para fazer algo muito simples e que pode ser feito em uma plataforma menor e, certamente, mais barata. Existem muitas opções, e é preciso pesquisar e conversar.

Colocar shields e mais shields e mais shields...
Se uma plataforma não possui as funcionalidades que eu quero, comprar shields pode ser uma opção, mas antes disso posso ver outras plataformas que possuam a funcionalidade que eu quero já embutida. Isso ocorre muito em projetos que demandam comunicação sem fio. Algumas plataformas já trazem a comunicação embutida e muitas delas usam a mesma linguagem Wiring do Arduino para programação.

A solução não tem segredo: pesquisar, conversar, ler e descobrir a melhor opção. 




domingo, 30 de agosto de 2015

Etapas de projeto - Definição da idéia



Quando se deseja realizar qualquer tarefa um mínimo de organização é necessário, e, em um dado momento, esta organização se impõe, como determinante no sucesso daquele empreendimento. Ao pensarmos num projeto com dispositivos embarcados, alguma coisas precisam ser definidas desde o início, e isso é muito importante. 

Pensando na viabilidade da idéia: Nada mais frustrante do que iniciar o projeto e parar por falta de verba, material ou mesmo tecnologia suficiente. É preciso pesquisar um pouco e entender o funcionamento dos diversos dispositivos, módulos e sensores. Pode ser que a plataforma escolhida inicialmente não possua recursos bastantes para o projeto, e essa é a hora de redefinir. 

Pensando na utilidade do projeto: A  menos que eu mesmo queira me divertir com o que estou fazendo (o que já é um ótimo motivo para começar), não adianta pensar que vou vender um produto espetacular. Muitas ótimas idéias não se encaixam nos padrões do mercado. A palavra "utilidade" está diretamente relacionada à demanda. Meu projeto pode atender uma necessidade minha, do mercado ou de um grupo específico. Procure conhecer esse público.

Pensando nas peças que vou usar: Assim como a grande quantidade de plataformas, temos também ao nosso dispor um número muito grande de módulos, sensores e componentes eletrônicos. Muitos fazem a mesma coisa com precisão diferente ou usam tecnologias diferentes. É importante ter em mente quais eu pretendo usar e saber se elas se adequam de modo satisfatório ao meu projeto.

Pensando no domínio da minha aplicação: Assim como os projetos de software puro, os projetos de software e hardware embarcados englobam conhecimentos de áreas diferentes da computação. Por exemplo, se seu projeto é um medidor de temperatura para um confinamento de aves, o projetista vai precisar de um mínimo de conhecimento a respeito das aves com as quais está trabalhando. Isto pode ser feito através de pesquisa ou mesmo de uma conversa com as pessoas interessadas no projeto e que trabalham diretamente com esses animais. 

Outras etapas virão. Mas nessa primeira etapa se compõe uma base para o projeto. É importante tomar nota de alguma coisa para não fugir do essencial e manter um padrão em seu projeto desde o início.