domingo, 13 de setembro de 2015

Conceito: Domótica, Casa Inteligente e Automação Residencial



Desde o surgimento dos microcontroladores, existem ambiente controlados remotamente, mais comumente direcionados para indústrias. Mas atualmente existem muitas outras tecnologias (gsm, gprs, wap, WiFi...) que acrescentaram inúmera possbilidades de conexão e monitoramento, a um custo relativamente baixo se comparados às mais antigas. Apesar de ser uma tendência futurista, não parece ser um conceito novo. Desde muito tempo se deseja construir sistemas de controle que facilitam a vida das pessoas.



Uma casa inteligente pode ser concebida como um espaço residencial evoluído, por contemplar soluções integradas e racionais, baseadas em tecnologia, de modo a oferecer uma infra-estrutura tecnologicamente avançada que permita aos seus habitantes usufruir de um conjunto de serviços e funcionalidades, tais como segurança, gestão de recursos, conforto, automatização de tarefas domésticas , entretenimento, monitoramente, etc. 
Ao se criar um projeto de casa inteligente, deve-se levar em consideração um fato importante e que tem âmbito legal: as organizações que são responsáveis, por algum modo, de regularizar os ambientes construídos, como o CREA, por exemplo, podem interferir em seu projeto. Existe, de fato, uma movimentação para se regularizar esses tipos de projetos, em vista de evitar futuros problemas com a segurança e o bem-estar das pessoas que venham a utilizar o ambiente. Existe também uma tendência a fomentar esse tipo de projeto, levando em conta que eles ajudam na economia de energia e no uso racional de recursos de água e comunicação.




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.

sexta-feira, 11 de setembro de 2015

O Portal do Software Público Brasileiro


https://softwarepublico.gov.br/social/

O Governo brasileiro disponibiliza um portal com uma variedade bastante interessante de software distribuídos sob a licença de software livre (englobando as quatro liberdades). O Software Público Brasileiro é um tipo específico de software que adota um modelo de licença livre para o código-fonte, a proteção da identidade original entre o seu nome, marca, código-fonte, documentação e outros artefatos relacionados por meio do modelo de Licença Pública de Marca – LPM e é disponibilizado na internet em ambiente virtual público denominado Portal do Software Público Brasileiro. O catálogo de softwares disponível no site inclui sistema de gestão de aprendizagem para educação a distância, um framework para desenvolvimento de aplicativos desktop multiplataforma em C++, software para gerenciamento de processos de impressão, sistema para gerenciamento de fila de atendimento ao público, software para planejamento cirúrgico, entre outros. Por ser de código aberto, eles podem ser usados para compor projetos e suas implementações podem ser de bastante ajuda no entendimento do funcionamento de diversos processos que compõem esses mesmos projetos. Conheça!


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. 

quarta-feira, 9 de setembro de 2015

A Memória persistente no Arduino - EEPROM



Quando desligamos um dispositivo microcontrolador, os dados armazenados em sua memória de acesso aleatório se perdem. Muitos projetos, porém, exigem o armazenamento de algumas informações para uso posterior, ou simplesmente para continuar de onde o dispositivo parou, quando uma queda de energia faz o dispositivo reiniciar, por exemplo. O microcontrolador do Arduino possui uma memória EEPROM (Electrically-Erasable Programmable Read-Only Memory, em português Memória Programável Somente para Leitura Apagável Eletricamente). Essa memória é capaz de armazenar dados mesmo sem energia, mas é importante lembrar que as operações de gravação e deleção só podem ser feitas por um número de vezes limitado, algo entre 100.000 e 1.000.000 de vezes, o que já vem a ser o bastante para boa parte dos projetos. Os microcontroladores ATmega328 possuem EEPROM de 1024 bytes, o ATmega168 e o Atmega8 possuem 512 bytes. A gravação na EEPROM é feita utilizando-se a biblioteca <EEPROM.h> e enviando-se byte a byte para a memória. Considere, porém, que isso não faz da EEPROM uma memória a ser utilizada da mesma forma que a RAM, onde você escreve as variáveis do seu programa. O procedimento de escrita na EEPROM é mais demorado, e, como já dissemos anteriormente, não pode ser usado infinitamente. E se seu projeto exige uma quantidade maior de dados armazenados de forma persistente, a melhor opção será a memória flash, presente nos cartões SD. 



domingo, 6 de setembro de 2015

Dispositivo: Teensy - um mini completo



Para quem deseja miniaturizar seu projeto e ao mesmo tempo oferecer um pouco mais de poder processamento, uma opção pode ser o Teensy, que chega à sua versão 3.1 utilizando um ARM cortex-M4 de 72MHz. Uma das diferenças do Teensy 3.1, em relação aos dispositivos que já conhecemos aqui, é a tolerância a sinais de até 5V em seus 34 pinos de entrada e saída digitais. Toda a programação possui o suporte USB onboard sem necessidade de utilização de nenhum outro dispositivo extra. O Teensy, em todas as suas versões, é uma placa minimalista, e não possui conexões para cabos de prototipagem do tipo jumpers, de modo similar ao Arduino Pro Mini. Possui uma IDE para programação que pode ser facilmente instalada em qualquer Sistema Operacional. A página dos desenvolvedores do Teensy possui ainda exemplos de projetos e um Fórum.

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.