Automação Indutrial + Computação Móvel

Durante os últimos anos venho ministrando palestras sobre diversos temas, dentre os quais: computação móvel e automação industrial.  Agora, para concluir o curso de graduação em Ciência da Computação na Universidade Veiga de Almeida é preciso apresentar uma monografia que, teoricamente, deve ser sobre um tema bem original.  Pensei em um dos dois temas citados anteriormente, mas a oportunidade me levou a algo melhor e completamente original: a soma dos dois.
Objetivo
O tema da monografia foi “Comparativo de Linguagens de Programação para Dispositivos Móveis”.  Depois de avaliadas as linguagens fiz um experimento com o objetivo de demonstrar o potencial da plataforma .NET para o desenvolvimento de aplicações móveis.  Ao final, o projeto consistiu da construção de um elevador que se move a partir de comandos enviados pelos telefones celulares da platéia, integrando computação móvel e automação industrial envolvendo diversas tecnologias como XML Webservices, protocolos de comunicação, tráfego HTTP, conexão direta via TCP/IP, comunicação serial, troca de mensagens via SMS, envio de e-mails e outras correlatas.
O Experimento
Para desenvolver e implementar o projeto utilizando duas horas de trabalho por dia, durante dez dias dividimos os esforços em três frentes distintas:
Elevador
Uma equipe de seis pessoas se dedicou a construir fisicamente o elevador, e fazer toda a instalação elétrica e eletrônica necessária.  A maquete foi feita em madeira, possuindo 1,6m de altura por 0,7m de largura.  Na parte superior, ou seja, acima do “prédio” estava toda toda o equipamento necessário para o perfeito funcionamento do experimento:
– Motor elétrico: Para efetivamente movimentar o elevador.
– Encoder óptico de 100 pulsos por volta: Conectado ao eixo do motor, envia pulsos ao microcontrolador, para que dessa forma este possa ter referência do posicionamento atual do elevador.
– Microcontrolador, que nesse caso fará o papel de CLP (Controlador Lógico Programável).  Optamos pela utilização do microcontrolador pois o mesmo está sendo lançado pela empresa que me cedeu todo o material e pessoal necessário à execução do projeto.
– Inversor para comandar o motor do elevador, variando direção e velocidade.  Vale lembrar que, no experimento, o elevador irá variar a velocidade a cada chamada de andar.
– Modem GSM.  Em processos tradicionais a comunicação entre CLP e computador é feita através de cabo serial conectado à porta RS-232.  Nesse caso, adotamos um modem que se conecta à Internet através do canal GPRS padrão de qualquer operadora GSM.  Uma vez que tenha um IP válido o modem abre um canal de escuta, no qual todo o tráfego enviado àquela porta é direcionado para a sua porta serial que está conectada ao CLP ou microcontrolador.  Para enviar as mensagens, o computador deve fazê-lo diretamente sobre TCP/IP para o endereço e porta especificados e então estas chegarão ao CLP ou microcontrolador.  Logicamente perde-se no tempo de latência, mas ganha-se na flexibilidade da comunicação sobre Internet.
– Transformador de voltagem, uma vez que todo o equipamento funciona em 220V.
– IHM (Interface Homem Máquina), que afixada à parte superior da construção mostra informações do microcontrolador como o IP que o modem ganhou e, na hora da exibição, o nome do solicitante, o andar e a velocidade.
Depois de montada a estrutura de madeira foi envernizada.  O elevador é um caixote de madeira menor que se movimenta no interior da estrutura correndo pendurado por um cabo de aço e alinhado a outros dois cabos fixos que funcionam como trilhos.  O contrapeso do elevador foi feito com uma garrafa de PET cheia de água.  Dentro do pequeno caixote do elevador também há um peso, para que o mesmo se movimente eficientemente.
Software do Hardware de Controle
O brilhante Bernardo Almeida desenvolveu o software de controle do microcontrolador em linguagem C++, bem como programação da EPROM utilizando linguagem Ladder.  O software do microcontrolador faz a discagem pelo modem GSM e assim que está conectado à Internet aciona o serviço IPService criado exclusivamente para essa aplicação.  Como a comunicação do referido dispositivo acontece em nível muito baixo, não há como instalar clients de serviços como No-IP ou DynDNS.  Tal recurso é importante para que o computador descubra qual o endereço IP do modem GSM para estabelcer a comunicação.
Parece simples mas, como disse, a programação é baixíssimo nível.  Foi necessário escrever a camada de comunicação HTTP para instanciar o serviço.  Observe o trecho de código que faz isso:

       {

             resposta=true;

             output_high(pin_c0);

             buff[pont-2]=0;

 

             fprintf(ihm,“%s\r”,buff);

      

             delay_ms(500);

             fprintf(gsm,“at+cipstart=%cTCP%c,%c72.36.176.123%c,%c80%c\r”,0x22,0x22,0x22,0x22,0x22,0x22);

             ok();

             ok();

             fprintf(gsm,“at+cipsend\r”);

             delay_ms(500);

             fprintf(gsm,“GET http://ipservice.larsoft.net/ipset.aspx?id=Becape HTTP/1.0\r\nAccept: */*\r\nAccept: text/html\r\n\r\n%c”,0x1A);

             delay_ms(10500);

             fprintf(gsm,“at+cipclose\r”);

             delay_ms(100);

            

             break;

       }

A comunicação com o modem é feita através dos tradicionais comandos “AT”.  No momento da conexão não há como resolver endereços através de DNS, por isso o comando IPStart acessa o servidor diretamente pelo IP.
Na parte de IHM, o microcontrolador envia para a mesma a informação do nome da pessoa que está solicitando o andar, o andar selecionado e a velocidade que o elevador se moverá.
Tudo isso não esquecendo que, quando o elevador está movendo o encoder óptico está enviando ao microcontrolador pulsos para que, através desses pulsos ele saiba a posição atual.  Durante este processo a CPU monotarefa do equipamento não é capaz de receber informações do modem, ou pararia de contar o movimento – Mais um importante detalhe que tinha de ser lembrado na confecção dos softwares.  O desenvolvimento de toda essa camada de baixo nível tomou todos os 10 dias de trabalho que dedicamos à execução do projeto.  Detalhes técnicos serão enviados à MSDN.
Software Cliente e Servidor
Pronta toda a camada de hardware descrita até agora, dediquei-me à criação de alguns softwares para preparar o ambiente, todos feitos utilizando plataforma .NET:
– IPService:
Lembra que o microcontrolador não possui uma camada de Sistema Operacional para executar aplicativos client como o No-IP ou o DynDNS?  O primeiro software para viabilizar a comunicação entre computador e modem GSM foi um gerenciador de IP Dinâmico.  O IPService pode ser visto funcionando utilizando os seguintes comandos (trocando pelo nome que você inventar, sem espaços:
Para setar o seu IP utilize: http://ipservice.larsoft.net/IPSet.aspx?Id=<Seu Nome>
Igualmente, para descobrir qual foi o IP registrado utilize: http://ipservice.larsoft.net/IPGet.aspx?Id=<Seu Nome>
– Cadastra Participantes:
Programa feito para plataforma Windows para que, um digitador na entrada do evento, cadastre todos os participantes com nome, e-mail e telefone celular.  Importante lembrar que este programa não faz acesso direto ao banco de dados, todas as operações são feitas via webservice e o BD está em um servidor web.
– UVA XML Webservice
XML Webservice com toda a camada de negócios para manipulação do cadastro de participantes e mais um método “MostraIP”, que tem como parâmetro o nome da estação que foi setado no IPService.  Desta forma será necessário instanciar apenas um webservice na aplicação que comanda o elevador.
Software do Smartphone
Agora sim chegamos ao software objetivo final deste experimento.  Com a capacidade dos smartphones de rodar Windows Mobile, .NET Framework e acessibilidade à Internet, fiz um programa que unifica todas as tecnologias ditas até o momento.  Detalharei aqui as etapas do programa:
1. Utilizando o XML webservice, mostra a lista de participantes do evento.
2. Com o recurso IPService, conecta-se ao microcontrolador do elevador via TCP/IP.
3. Envia SMS personalizado a todos os participantes do evento.
4. Trata as SMS recebidas, e pesquisa o número do telefone remetente na tabela de participantes.
5. Envia comando ao microcontrolador sobre TCP/IP, informando o primeiro nome da pessoa solicitante, o andar solicitado e a velocidade do elevador.
6. Envia e-mail personalizado a todos os participantes.
Com todas as características acima, o programa lança mão das seguintes tecnologias:
– Consumo de XML Webservices
– Conexão direta sobre TCP/IP
– Manipulação de SMS
– Protocolos proprietários de comunicação
– Manipulação de e-mail
Depois de feitos diversos testes em laboratório, estávamos com todo o sistema pronto para fazer o show no dia da apresentação de monografia.
A Apresentação
Agora que toda a tecnologia empregada em minha apresentação já foi apresentada, posso descrever sucintamente o que foi a apresentação.  Infelizmente o único vídeo feito ficou muito ruim.  No dia da apresentação também houveram alguns problemas com a falta de cobertura da operadora TIM no local do evento, o que levou a alguns improvisos.  A apresentação havia sido ensaiada para acontecer dentro de 15 minutos, que é o tempo concedido pela instituição, então fiz tudo de forma bem sucinta, para entrar em detalhes depois, no tempo das perguntas.  Mesmo com todos os problemas e imprevistos acontecidos no dia consegui atrasar apenas 5 minutos conseguindo assim a nota máxima.  Vou detalhar como foi o ensaio:
O público que ia chegando era cadastrado por um recepcionista que estava com um notebook conectado a Internet via rede de telefonia celular.  Lembre-se que nosso assunto era computação móvel, então tudo remetia a essa idéia.
Nos cinco primeiros minutos eu fiz a introdução e a conclusão da palestra utilizando apenas dois slides de Power Point, nos quais se lia somente “Introdução” e “Conclusão”.  Neste tempo narrei as diversas plataformas de computação móvel e, na conclusão valorizava o Java por sua extrema portabilidade e o .NET por extrair todo o poder computacional de um dispositivo móvel.  Ainda neste tempo, peguei um telefone dos modelos mais antigos da platéia e mostrei que Java é muito portável e que poderia utilizar essa plataforma para desenvolver software para aquele aparelho obsoleto, mas se fizesse um programa em Java que explorasse as sofisticadas capacidades gráficas dos novos dispositivos, então a portabilidade seria comprometida, visto que aquela aplicação não rodaria no aparelho antigo.  De uma certa forma, mostrei que a plataforma propicia portabilidade, mas que não é a solução dos problemas da humanidade.
Logo no início do próximo bloco de 5 minutos eu simplesmente saía da sala.  Alegando que iria perguntar alguma coisa ao digitador que ficou lá na entrada.  Detalhe importante: antes de começar a palestra eu pedia que todos deixassem seus celulares ligados e com volume, porque eu iria envia “uma” SMS para “alguém”.  Enquanto saía, discretamente dava o comando de disparo de SMS, que enviava a seguinte mensagem para cada um dos participantes:
 

, vamos aproveitar que o Luciano saiu da sala para fazermos uma brincadeira. Responda com um numero e o elevador se movera ate ele.

No filme “O Passageiro do Futuro” (The Lawnomer Man), o vilão faz uma promessa que, se conseguir penetrar na rede mundial de computadores, ele faria todos os telefones do mundo tocarem a meia-noite para comemorar sua vitória.  Foi isso que aconteceu naquela sala.  Quando eu cheguei do lado de fora, os celulares tocaram todos quase ao mesmo tempo.  Foi uma sinfonia da vitória.  A canção ficou completa com o ruído do elevador se movendo para cima e para baixo em diferentes velocidades, fruto das respostas das mensagens do participantes.  Com isso eu voltava para a sala e comentava o que estava acontecendo.
O último bloco de cinco minutos foi dedicado a mostrar e explicar código fonte do programa, demonstrando a simplicidade com a qual todas aquelas tecnologias foram mescladas, dando ênfase que “um telefone celular” havia aberto um canal de comunicação TCP/IP direto com um dispositivo embarcado, e que a comunicação entre eles estava acontecendo com base em um protocolo proprietário.
Rapidamente demonstrei no código fonte o uso de Regular Expressions (estava validando os e-mails da lista), o uso da coleção de “Parameters” de um objeto SQLClient, o uso de For Each para coleções de objetos e mais algumas gracinhas…
Encerrava minha participação informando aos participantes que, para ler o material técnico referente a apresentação, deveriam baixar do meu site. “Ah! Mas ninguém precisa anotar o meu site, porque o smartphone agora vai enviar para todos vocês um e-mail com todos os meus dados”, e durante essa frase, corria um barra de progresso mostrando o envio de e-mails.
O feedback de aplausos da platéia mostrava que meu dever estava cumprido.  Agora, meu próximo passo, será publicar artigos referentes ao experimento na MSDN.  Abraços e até lá.

5 comentários Adicione o seu

  1. Kelly disse:

    Foi linda sua apresentação, o tema tambem foi ótimo, parabéns pela sua vitória, que cada dia mais o Senhor possa lhe abençoar com mais e mais vitórias. Te amo Anjinho

  2. JULIANA disse:

    Adorei saber que há pessoas que estudam seriamente o conceito de mobilidade envolvendo tecnologias Microsoft.Na minha opinião o seu projeto devia ser expandido no sentido de controle de peso de pessoas no elevador e também no sentido de deixar o elevador mais seguro contra acidentes .

  3. Eduardo disse:

    Show de Bola camarada, muito bem bolado o seu projeto, de qualidade mesmo. Está merecendo um imagine cup ;).

  4. Ramon disse:

    Muito Legal!!! As pessoas ainda não tem a devida visão da mobilidade. Congratulations!!!

  5. Jonathan disse:

    Olá Luciano, finalmente consegui terminar de ler todo o conteúdo do seu post. Sua monografia certamente é a melhor que a UVA já viu até hoje, pelo menos na informática. Parabéns, continue trazendo mais novidades e soluções pra gente.Abraços, Jonathan

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s