segunda-feira, 28 de março de 2011

Comunicação Serial facil



Umas das coisas mais corriqueiras no ramo de automação seja ela residencial ou industrial, é o envio de comandos do computador para o sistema ao qual se deseja automatizar, onde através de um programa no computador o individuo aperta alguns botões e a tarefa é feita numa máquina do ambiente.
Esta comunicação pode ser facilmente feita pela porta serial RS-232 do computador, onde um programa desenvolvido em alguma linguagem de programação (por exemplo, Java) vai enviar informação para a porta e algum dispositivo eletrônico (por exemplo, um microcontrolador) vai receber esta informação e fazer o que tiver que fazer com esta informação.
Para ajudar ainda mais quem pretende fazer esta comunicação via linguagem Java e utilizando o Netbeans eu desenvolvi uma classe com a intenção de facilitar na hora de fazer a comunicação entre PC e dispositivo. A função da classe é diminuir a complexidade abstraindo toda a configuração necessária para por em funcionamento a porta serial.
O nome da classe é PortaSerial que deve ser incluída no projeto. Além de incluir a classe é necessário também incluir o arquivo RXTXcomm.jar ao projeto e em todas classes lib do jdk e jre. É necessário também incluir na pasta Bin do jdk e jre o rxtxSerial.dll, e também na pasta system32 do Windows.

Feito isso é só usar a classe sem precisar se preocupar com nada a respeito da parte de tratamento das variáveis de entradas e saídas e nem das configurações da porta para o funcionamento, que convenhamos é bem chata e cansativa de se fazer.

Basta ler abaixo como é fácil o manuseio da porta serial


Se a classe PortaSerial não estiver no mesmo pacote da classe principal faça:

import (pacote onde está a classe).PortaSerial

Primeiramente criamos um objeto da classe PortaSerial na sua classe principal

PortaSerial portaserial;

O próximo passo é iniciar o objeto

portaserial = new PortaSerial();

agora com o comando abaixo o método ListaPortasCom da classe PortaSerial é executado.

portaserial.ListaPortasCom();

Quando o método anterior é executado ele carrega duas variáveis globais portascom e é do tipo String vetor[] que é publica e pode ser acessada de qualquer classe esta variável tem o nome de todas as portas seriais encontradas no computador, e numero_de_portas que tem o numero total de portas do computador
Veja abaixo como acessar o conteúdo dessas variáveis:

portaserial.portacom[i];
portaserial.numero_de_portas;

tendo o nome de todas as portas na variável portaserial.portacom[i] o próximo passo é abrir a porta a qual deseja efetuar a comunicação

portaserial.abrir_porta(nome_porta, vel);

O comando acima vai executar o método abrir_porta da classe PortaSerial e deve ser passado o nome da porta serial que deseja abrir na variável “nome_porta” que é do tipo String e deve ser tirada da variável “portaserial.portacom[i]”, e a velocidade da conexão na variável “vel” que é do tipo int.
Para enviar uma mensagem basta executar o seguinte comando:

Portaserial.escreve_mensagem(mensagem);

Onde mensagem é o que se deseja enviar pela porta ou seja são os dados a serem transmitidos e é uma variável do tipo String;
E para ler uma mensagem basta executar o comando

Portaserial.le_mensagem();

Feito isso a mensagem quando chegar será visualizada na variável:

portaserial.strEntrada

que é do tipo String

e para fechar a porta basta o seguinte comando:

portaserial.fechar_porta();


Bom é isso pessoal, quem quiser a classe é só entrar em contato comigo pelos comentários ok.

terça-feira, 22 de março de 2011

Reconhecimento de Padroes

O reconhecimento de padrões pode ser usado em diversas atividades dentre elas temos as seguintes:

  Processamento de sinais de fala
  Atualmente utilizado para atendimento virtual
  Reconhecimento de faces
  Segurança
  Auxilio a deficientes visuais
  Reconhecimento de caracteres

No caso de processamento de fala, uma das principais utilizações são os tele atendimentos virtuais onde em vez daqueles: “para reclamações digite um, para novos aparelhos digite dois e etc”, simplesmente diga o que você  deseja, ou também para controle remoto via fala, como apagar a luz, ligar tv, etc.
Em segurança pode ser feito busca por criminosos através de imagens obtidas de câmeras de segurança e fazer uma busca em banco de dados para reconhecer o criminoso.
E para os deficientes visuais pode ser usado para leituras de caracteres, de o reconhecimento é feito e é convertido para áudio facilitando a vida do deficiente visual.
Uma definição que temos que ter bem claro é o que é padrão ao contrario do que muitos possam pensar padrão não é um padre muito alto, padrão é um modelo, algo a ser seguido, é um molde. Por exemplo, o metro, é um molde, e a partir daí as réguas são feitas a partir deste molde que é o metro.
Outra definição importante é o conceito de classe que nada mais é do que um conjunto de objetos com mesmas características, cor, densidade, ângulos, perímetros, etc.
Abaixo estão as etapas necessárias para o reconhecimento de padrões e a devida classificação de um objeto em reconhecimento de imagens

Porem nem todas características da imagem são usadas, por exemplo, o fundo da imagem, então usa se um algoritmo para detecção de bordas, para separar a imagem do fundo da imagem.
Não é necessária também a influência que as diversas fontes de luz tem sobre a imagem, para isso utiliza-se um processo chamado homo-mórfico. A incidência de luz e sombras pode ocultar algumas características necessárias a serem utilizadas no processo de classificação.
Nesta mesma etapa faz se a transformação das coordenadas da imagem para coordenadas polares para tornar o reconhecimento independente de rotação, e passa a transformada de MELLIN para fazer esta tarefa.
Resumindo, na fase de pré-processamento nos estaremos passando filtros, para eliminar ou diminuir os ruídos.
Após este processo sai da etapa de pré processamento uma matriz com coeficientes numéricos para o processo de extração de características.
É importante saber escolher características das formas, em muitos casos não se pode escolher características como perímetro, área, largura ou comprimento, pois variam com a rotação, translação ou escalonamento das formas a serem reconhecidos os padrões.
A cor, por exemplo, não sofre influência da rotação, translação ou escaling de um objeto, se desejar separar folhas de arvores de galhos das arvores esta seria uma característica interessante a ser extraída das formas das figuras.
Uma das técnicas usadas para extração das características é a matriz dos pixels representada por números equivalentes a cada pixel, facilitando medidas de distancias na hora de extrair características e classificá-los.


A classificação nada mais é que usar as características obtidas do processo de extração de características e considerar quais as distâncias entre estas características e o padrões armazenados previamente.
Um exemplo é classificar um tumor como maligno ou benigno.




Então temos a imagem já passada os filtros e precisamos extrair as características intrínsecas. No caso do tumor benigno ele é mais parecido com uma elipse, e o maligno é cheio de espiculos, pontas disformes

Neste caso pode ser usado um extrator eliptic variance que é usado para verificar quão parecido com uma elipse o contorno se parece e assim determinar se é maligno(se parecer muito com uma elipse) ou se é maligno(não se parecer com a elipse).


sexta-feira, 4 de março de 2011

Automação Residencial baseada em tecnologia Zigbee

Alunos da Loughborough University no Reino Unido, desenvolveram um sistema de automação residencial utilizando-se da tecnologia zigbee para controle de equipamentos numa residência. A idéia era diminuir custos de instalação e permitir a interoperabilidade entre as tecnologias zigbee e wi-fi, ou seja, colocar duas tecnologias juntas, com protocolos diferentes, porém trabalhando na mesma freqüência.
Segundo pesquisas feita por eles as tecnologias que usam a mesma freqüência no caso do bluetooth, zigbee, e wi-fi (2,4GHz), quando utilizadas em conjunto acabam causando interferências umas nas outras, no caso do Bluetooth usado com zigbee ou com wifi houve grande interferência, no entanto zigbee com wi-fi, houve só uma diminuição na taxa de transferência do zigbee de aproximadamente 10%.
Com a utilização do wi-fi em conjunto com o zigbee há a possibilidade de aumentar o sistema para aplicações multimídia, que exigem taxas de transferências maiores que o zigbee pode suportar. Essa junção das duas tecnologias é feita por meio de um gateway.


O gerenciador zigbee é responsável por iniciar a rede zigbee, encontrar os equipamentos em seu alcance e gerenciar os equipamentos conectados na rede, e é responsável também por permitir o acesso de novos equipamentos entrantes na rede e fornecer endereços a eles. Os dispositivos finais que são os equipamentos na rede são responsáveis por enviar informações sobre seu estados, como por exemplo interruptor ligado ou interruptor desligado.


A rede criada tem a possibilidade de controle de forma remota pela internet através de um gateway, e controle local com um controle zigbee específico. Munida de um sensor de presença, um interruptor e uma válvula de ar condicionado que comunica ao gerenciador zigbee sobre seus estados, e este por sua vez atualiza os dados contidos em uma espécie de casa virtual, que é onde ficam armazenados todos os estados de todos os equipamentos da rede, e que é um software desenvolvido em linguagem C, e somente depois atualiza os estados dos equipamentos efetivamente.