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.



quarta-feira, 2 de setembro de 2015

Dispositivo: ATtiny84 - uma opção de meio termo!




Já postamos aqui no blog sobre o ATtiny85, e agora gostaríamos de apresentar um outro microcontrolador da família Atmel. Apesar do número em seu nome ser menor que 85, o Attiny84 é um meio termo entre o ATmega328 (usado nos Arduinos e Genuinos), e o ATtiny85 (usado na GEMMA).  O Attiny84 vem em versões com 2k, 4k ou 8K Bytes de memória flash programável (com uma vida média de 10mil ciclos de escrita e reescrita). O que o situa entre um chip intermediário é o número de pinos de entrada e saída que, neste dispositivo, são apenas 12. Possui também um espaço de memória EEPROM (aquela memória persistente para guardar informações mesmo depois de desligado) que pode ser reescrito até 100mil vezes e você ainda pode usar sua placa Arduino para programar o chip usando a mesma IDE. Em termos de opção de projeto, é mais um dispositivo dentro do universo de plataformas que você terá à sua disposição. Sua similaridade aos dispositivos já conhecidos fazem dele um excelente candidato a projetos mais simples e pode representar uma boa redução de custos em seus projetos. 

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.