terça-feira, 28 de fevereiro de 2012

Instalando Firmata no Python

Esse post serve para a instalação do pacote Firmata no SO Windows. Para instalar o Firmata é necessário ter o Python instalado e a pySerial instalado dentro do Python. Se você não possui acesse o post anterior:


http://toxinavirtual.blogspot.com/2012/02/instalando-pyserial.html


Para baixar o Firmata usei o link:


http://github.com/lupeke/python-firmata/


Em seguida acessei a pasta onde os arquivos do Firmata foram salvos. E executei o comando de instalação pelo MS-DOS:



C:\Python27\firmata-setup>setup.py install



Ao tentar instalar o Firmata no Python no SO Windows 7 ocorreu um erro. O pacote setuptools não foi encontrado. Não sabia o que era o setuptools, o Python ainda é uma novidade para mim. Pesquisei e não encontrei nada a respeito, porém o pessoal da comunidade Python Brasil passou a dica para instalar o pacote setuptools do seguinte link:


http://pypi.python.org/pypi/setuptools#files


Baixado o pacote e instalei pelo prompt do MS-DOS. No diretório do pacote salvo executei:


C:\Python27>setup.py install


Setuptools instalado e em seguida executei a instalação do Firmata novamente. E é só usar o mesmo comando dentro da pasta do Firmata que se refere ao arquivo de instalação.

Tudo funcionando.

quinta-feira, 23 de fevereiro de 2012

Solucionando Problemas para Instalar PySerial

No post anterior eu deixei alguns passos para instalar a pySerial e comentei que ocorrem alguns problemas, principalmente no Windows, para fazer a pySerial funcionar.

O primeiro detalhe é que cada computador possui um numero de portas seriais diferentes. O segundo problema é que alguns computadores não possuem portas seriais e possuem portas USB no lugar. Durante a instalação no meu PC 2200MHZ rodando XP tudo funcionou perfeitamente. Detalhe que esse computador possui uma porta serial e 4 USB. Porém, durante a instalação no meu Netbook Acer, que possui apenas 3 portas USB, rodando Windows 7 alguns problemas ocorreram como o da figura abaixo.


 Ou seja, ao digitar os primeiros comandos:

>>> import serial
>>> ser = serial.Serial("COM3")

 Um erro de porta não encontrada aparece.

Levei algum tempo tentando e testando  nomenclatura de portas e nada. Após acessar um site sobre como hackear o computador utilizando portas seriais deduzi que seja uma proteção do próprio Windows 7, porém não tenho como confirmar. Em vários fóruns o pessoal comenta que não é possível instalar a pySerial no windows 7 e solucionei da seguinte forma.


Acessando Gerenciador de Dispositivos na lista aparecem os seguintes itens.


Porém ao conectar um dispositivo de interface USB a listagem recarrega na hora. Conectei o Arduino na porta COM3.


Aparece o item Portas (COM e LPT). Detalhe que o Mouse aparece no item Mouse da lista e ele estava conectado o tempo inteiro na porta COM2.

Com o Arduino conectado na porta COM3 fiz o teste com a pySerial e tudo funcionou perfeitamente conforme descrito no post anterior.

http://toxinavirtual.blogspot.com/2012/02/instalando-pyserial.html

Conclusão - É necessário um dispositivo conectado para acionar a pySerial.



Instalando a pySerial

Acabei de instalar a pySerial tanto no XP quanto no Windows 7. Primeiramente é necessário ter o Python instalado. Se você não tem então acessa o tópico do blog:

http://toxinavirtual.blogspot.com/2012/02/instalando-python-no-windows-7.html

Lembrando que na plataforma Linux já vem instalado. Para verificar a versão basta digitar no terminal do Linux:
$ python --version

Em segundo lugar, é necessário fazer o download do pacote pySerial para instalação. Faça o download no link abaixo:

http://pypi.python.org/pypi/pyserial

Descompacte e jogue a pasta dentro do diretório do Python para garantir.

Execute cmd para abrir o prompt do DOS. No prompt do DOS acesse o diretório da pySerial. No meu caso:


C:\Python27\pyserial-2.6\

A documentação da pySerial instrui a executar o comando:

python setup.py install

No meu caso só deu erro:
C:\Python27\pyserial-2.6\python setup.py install

Removi o comando python e executei:
C:\Python27\pyserial-2.6\setup.py install

E funcionou!

Para ter certeza basta abrir o prompt do Python e digitar:

>>>import serial
>>>

Se não aparecer nenhum erro a biblioteca foi importada.

No meu caso utilizei o comando para abrir a COM3.

>>> ser = serial.Serial("COM3")
>>>

Para verificar alguns dados como porta e velocidade de transmissão
>>> ser

Para verificar se está aberta (imprime True ou False como resultado)
>>> print ser.isOpen()




Para fechar
>>> serial.close()

Como nem tudo são rosas alguns problemas surgiram para esta simples instalação. Vou descrever como solucionar alguns problemas no próximo post. Deixarei o link aqui assim que o post for finalizado.

http://toxinavirtual.blogspot.com/2012/02/solucionando-problemas-para-instalar.html



Mais algumas referencias de instalação, recebimento e envio de dados:

http://www.coding.com.br/programacao/pyserial-utilize-o-python-para-controlar-a-interface-serial/

http://stackoverflow.com/questions/1093598/pyserial-how-to-read-last-line-sent-from-serial-device

http://wiki.python.org/moin/CheeseShopTutorial

http://www.programmingforums.org/post212438.html



domingo, 19 de fevereiro de 2012

Sites Codificadores

Um tipo de site está em alta são os sites que rodam a codificação na página. Mesmo alguns fóruns já possuem este sitema onde o usuário posta o código funcionando de modo que outras pessoas possam testar o código na hora ao invés de ter que fazer o download para testar. Vou deixar aqui uma lista de sites que fazem o trabalho.



http://tinkerbin.com/

http://tinker.io/

http://jsfiddle.net

http://dabblet.com

http://cssdesk.com

http://jsbin.com

sábado, 18 de fevereiro de 2012

Configurando Tomcat no Eclipse

Para configurar o Tomcat no Eclipse são necessárias duas coisas. O Tomcat instalado na máquina e o plugin do Tomcat instalado no Eclipse. Primeiro baixe o executável do Tomcat para o tipo de máquina que você usa. O instalador automático 32/64 faz o trabalho no Windows. Basta baixar do site, de preferencia a última versão na aba de downloads.

http://tomcat.apache.org/

Durante a instalação é necessário apontar a pasta de instalação do JRE/SDK do Java. No meu caso (Windows 7):

C:\Program Files\Java\jre1.6.0_07

Podem haver mais de uma pasta de jre conforma a atualização e é necessário apontar para a pasta correta. Se seu Eclipse já possui instalado algum jre é possivel procurar dentro dos projetos existentes clicando em File >> Properties dentro do Eclipse, na aba Java Build Path, conforme a imagem abaixo.



Se a pasta do Java não possui nenhuma pasta jre então é necessário baixar o SDK no site da Oracle.

Após a instalação do Tomcat entramos na segunda etapa. Para saber se o plugin SYSDEO já está instalado basta acessar no Eclipse

Window >> Customize Perspective e devera aparecer o item Tomcat marcado.

Caso não apareça é necessário instalar. Para isso baixe o plugin  SYSDEO para o Eclipse no site:


http://www.eclipsetotale.com/tomcatPlugin.html

Os arquivos devem ser descompactados e a pasta deve ser colocada dentro da pasta plugins do Eclipse. No meu caso:

C:\Users\Administrador\Meus Docs\eclipse-java-galileo-SR2-win32\eclipse
C:\Users\Administrador\Meus Docs\eclipse-java-galileo-SR2-win32\eclipse\plugins


Se você não sabe onde fica a pasta do Eclipse então clique com o botão direito do mouse sobre o atalho do Eclipse e acesse as Propriedades onde consta o diretório.

Depois de jogar a pasta do plugin na pasta correta reinicie o Eclipse.

Acesse Window >> Preferences >> Tomcat e defina a versão do Eclipse e o endereço de instalação do Tomcat (Não do plugin). No caso:
C:\Program Files\Apache Software Foundation\Tomcat 7.0


A instalação deverá ter funcionado quando aparecer o ícone do Tomcat na barra superior.


Próxima etapa é criar um projeto Tomcat de teste e verificar possíveis falhas no console.

http://keyboardsamurais.de/2004/01/15/tomcat_tutorial_helloworld_for_complete_fools_-_english/


Automação Residencial com Arduino

Esse é o resultado do desenvolvimento do meu projeto de TCC. A primeira etapa foi finalizada e faltam ainda alguns itens. Os pequenos erros no programa não interferem a execução do mesmo. Assim que a próxima etapa for finalizada postarei um novo video já com os erros eliminados e novas funcionalidades.







Criar Arquivo Executável JAR

Algumas vezes esquecemos coisas simples apenas por não praticar. Esse post é para lembrar que parte do menu é necessário clicar para criar um arquivo .jar executável. Clicar no projeto a ser exportado de modo a selecioná-lo. Depois no menu:

File >> Export >> Java >> JAR File




Clicar em Browse e selecionar o local onde o arquivo será gerado e finalizar. Para executar o arquivo basta um clique com o botão direito e selecionar o item executar como arquivo Java.

sexta-feira, 17 de fevereiro de 2012

Manipulando Arquivos em Python

Durante a nova pesquisa que estou realizando, sobre a linguagem Python, pesquisei sobre o básico. O básico de uma linguagem de programação são os blocos de comando principais (condicionais e loop), tipos de dados, conversões de tipos de dados. Isso resume o básico de qualquer linguagem. A programação começa a ficar mais interessante ao manipular arquivos. A dica de hoje é para a manipulação de um arquivo usando Python. Seguem alguns comandos básicos.


#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

# Abre o arquivo para escrita
f = open("test.txt","w")


# Escreve no arquivo
f.write(" Testando escrita em arquivo ")
f.write(" Encerrando escrita em arquivo ")


# Fecha o arquivo salvando
f.close()

# Abre o arquivo para leitura
f = open("test.txt","r")

# Joga os dados do arquivo em uma variável
text = f.read()

# imprime o texto do arquivo
print text

# Joga os dados do arquivo em uma variável
# fazendo a leitura por bytes
# Onde cada byte representa uma posição de uma letra ou espaço dela.
inicio = f.read(2)


# imprime o texto do arquivo
print inicio


terça-feira, 14 de fevereiro de 2012

Executar Java Através do PHP

A necessidade de executar uma trigger usando MySQL me levou hoje a tentar outras alternativas como um agendamento em Java. Portanto, uma execução de uma classe Java dentro do PHP poderia ser uma solução. Acabei encontrando a solução para executar uma classe Java dentro do PHP através do comando exec() que nem sempre é bom deixar habilitada dentro do servidor.

<?php
exec("java -jar arquivo.jar argumentos",$saida);
?>

Mais informações no manual do PHP
http://php.net/manual/pt_BR/function.exec.php

Conversor RS-232 para USB

O Helton Lídio da comunidade arduino-brasilia enviou hoje um esquema elétrico de conversão de RS-232. O que acontece é que a porta USB trabalha com 0V e 5V enquanto o RS-232 que vem de um conector DB9 utiliza -15V e +15V. O circuito abaixo faz a conversão.


LeoStick - Arduino na USB

A novidade da semana é o LeoStick que é um tipo de Arduino que pode ser conectado diretamente na USB sem a necessidade de cabos.

fonte
http://www.freetronics.com/products/leostick

E já surgiu uma proposta de alimentação bem simples usando 7805 e uma bateria conforme a figura abaixo.



fonte
http://www.socialphy.com/posts/do-it-yourself/6738/Make-your-own-laptop-via-USB-Charger.html

quinta-feira, 9 de fevereiro de 2012

Instalando Python no Windows 7

Seguindo alguns passos simples consegui instalar o Python e testar algumas linhas de código no terminal. Os passos são simples:
Baixar a versão desejada (2.7 estável) no site http://www.python.org/ na pasta C:\Python27\.

Abrir o terminal e executar
set path=%path%;C:\Python27\

Outra maneira para configurar o Path sem o uso do terminal é clicando com o direito sobre:
Meu Computador >> Propriedades >> Configurações Avançadas do Sistema >> Aba Avançado >> Variáveis de Ambiente.

Selecione Path e clique em editar, insira no final ;C:\Python27\

Caso a versão do Python seja outra deve ser colocado o caminho completo da pasta criada.

Depois é só executar o atalho para a execução do Python e na janela digitar os comandos que deseja.

Passos usados através do Instructables:
http://www.instructables.com/id/How-to-install-Python-packages-on-Windows-7/

Teraterm Hyper Terminal do Windows

Acabei de instalar e testar o Teraterm que é nada mais que um terminal para Windows. O Arduino estava conectado na COM3 com programa para exibir temperatura em milisegundos através da serial e o resultado foi o seguinte:




Para download e instalação do Teraterm
http://pplware.sapo.pt/windows/software/teraterm-alternativa-ao-hyperterminal-para-o-windows/



Visualizando o Arduino no Futuro

Continuo desbravando a tecnologia do Arduino como muitos amantes de tecnologia. A maioria das pessoas não conhece essa plataforma de prototipação, porém tudo leva a crer que daqui a dez anos a palavra Arduino terá tanta popularidade quanto a palavra internet ou palavra Linux. Eu comparo a invenção do Arduino quanto ao próprio Linux, com a diferença que a abrangência do linux é apenas software enquanto a abrangência do Arduino é software e hardware.

Breve começarão a surgir empresas que vão adquirir a visão de mercado sobre o produto. Ainda não existem janelas conectadas na internet, portas, luminárias, trancas, motores e outros dispositivos como utensílios domésticos e elétricos em geral. No futuro a maioria das casas deverá ter ao menos um robô fazendo monitoramento, limpando, aparando a grama e guardando objetos. Tudo isso já é possível graças ao Arduino, porém a maioria das pessoas ainda nem faz ideia disso.

A parte ruim é que essa tecnologia necessita de um conhecimento prévio eletrônico e de programação. E é isso que a comunidade open hardware está desenvolvendo no Brasil e no mundo. No Brasil, a comunidade ainda não é tão vasta e o produto é adquirido pela maioria dos estados somente através de compra pela internet. Além disso, a maioria dos profissionais que desenvolvem e pesquisam nessa área já possuem um vasto conhecimento prévio, mesmo sabendo que o Arduino é uma plataforma de prototipação rápida de projetos e voltada aos leigos.



O Toxina Virtual conseguiu ontem ultrapassar os primeiros 3000 acessos e este é um post diferente da maioria dos post deste blog pois ele é comemorativo. Dia 10-10-11 fiz as primeiras postagens portanto amanhã completam 4 meses de Blog com uma média de 15 a 30 acessos por dia independente de divulgação.

sexta-feira, 3 de fevereiro de 2012

Capturando MAC no Java

O bloco de comandos abaixo serve para capturar o MAC da máquina onde o programa irá rodar, além do host e ip.




import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class TesteBoah {
    public static void main(String[] args) {
        try {
            InetAddress address = InetAddress.getLocalHost();
           
            System.out.println(address.
getHostAddress());
            System.out.println(address.getCanonicalHostName());
            System.out.println(address.getHostName());
           
            // InetAddress address = InetAddress.getByName("192.168.1.114");

            /*
             * Get NetworkInterface for the current host and then read the
             * hardware address.
             */
            NetworkInterface ni = NetworkInterface.getByInetAddress(address);
            if (ni != null) {
                byte[] mac = ni.getHardwareAddress();
                if (mac != null) {
                    /*
                     * Extract each array of mac address and convert it to hexa
                     * with the following format 08-00-27-DC-4A-9E.
                     */
                    for (int i = 0; i < mac.length; i++) {
                        System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
                    }
                } else {
                    System.out.println("Address doesn't exist or is not " + "accessible.");
                }
            } else {
                System.out.println("Network Interface for the specified " + "address is not found.");
            }
        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

Propriedades de Sistema no Java

Os blocos de comando abaixo servem para verificar as propriedades de sistema através do Java. Dados como IP, tipo de SO e diversas pastas de configuração entre outros.

veja o código para mostrar linha a linha:

    public static void main(String[] args) {
        Properties p = System.getProperties();
        Enumeration<Object> keys = p.keys();
        Set<Map.Entry<Object, Object>> entries = p.entrySet();
        for (Map.Entry<Object, Object> entry : entries) {
            System.out.println(entry.
getKey() + "=" + entry.getValue());
        }
    }


ou


    public static void main(String[] args) {
        Properties p = System.getProperties();
        Enumeration<Object> keys = p.keys();
        while (keys.hasMoreElements()) {
            Object key = keys.nextElement();
            System.out.println(key + " = " + p.getProperty(key.toString()));
        }        
    }

Agendamento de Job Semanal Através do Java

Este exemplo é equivalente ao do post anterior. Porém, neste exemplo o job é agendado para ser executado toda semana no domingo 00h00.



  1. import java.util.Calendar;
  2. import java.util.Timer;
  3. import java.util.TimerTask;
  4.  
  5. public class TestesCron extends TimerTask {
  6.  
  7.   public void run() {
  8.     System.out.println("Generating report");
  9.     //TODO generate report
  10.   }
  11.  
  12. }
  13.  
  14. class MainApplication {
  15.  
  16.   public static void main(String[] args) {
  17.     Timer timer =  new Timer();
  18.     Calendar date = Calendar.getInstance();
  19.     date.set(
  20.       Calendar.DAY_OF_WEEK,
  21.       Calendar.SUNDAY
  22.     );
  23.     date.set(Calendar.HOUR0);
  24.     date.set(Calendar.MINUTE0);
  25.     date.set(Calendar.SECOND0);
  26.     date.set(Calendar.MILLISECOND0);
  27.     // Schedule to run every Sunday in midnight
  28.     timer.schedule(
  29.       new TestesCron(),
  30.       date.getTime(),
  31.       1000 * 60 * 60 * 24 * 7
  32.     );
  33.      
  34.   }
  35. }

Disparo de Job Através do Java

Existe uma técnica muito simples para disparar um job (execução de uma tarefa) através do Java. A classe responsável é o TimeTask. Segue abaixo um exemplo de código que faz a chamada da própria classe com agendamento a cada 1000 milisegundos.

Opção 1

  1. import java.util.Calendar;
  2. import java.util.Timer;
  3. import java.util.TimerTask;
  4.  
  5. public class TestesCron extends TimerTask {
  6.  
  7.   public void run() {
  8.     System.out.println("Imprimindo Teste de Job");
  9.     //Area para execução da tarefa
  10.   }
  11.  
  12. }
  13.  
  14. class MainApplication {
  15.  
  16.   public static void main(String[] args) {
  17.     Timer timer =  new Timer();
  18.     Calendar date = Calendar.getInstance();
  19.    
  20.     // Imprime a hora atual em milisegundos
  21.     System.out.println(date.getTimeInMillis());
  22.        
  23.     // Efetua o agendamento
  24.     timer.schedule(
  25.       new TestesCron(),
  26.       date.getTime(),
  27.       1000
  28.     );
  29.      
  30.   }
  31. }





Opção 2

  1. import java.util.Calendar;
  2. import java.util.Timer;
  3. import java.util.TimerTask;
  4.  
  5.  
  6. public class Test extends TimerTask {
  7.     public static void main(String[] args) {
  8.          Timer timer =  new Timer();
  9.             Calendar date = Calendar.getInstance();
  10.            
  11.             // Imprime a hora atual em milisegundos  
  12.             System.out.println(date.getTimeInMillis());
  13.                long sec=1000;
  14.             // Efetua o agendamento
  15.            
  16.             timer.scheduleAtFixedRate(new Test(), date.getTime(), sec );
  17.            
  18.     }
  19.  
  20.         @Override
  21.         public void run() {
  22.                 // TODO Auto-generated method stub
  23.                  System.out.println("Print");
  24.         }
  25. }