domingo, 2 de junho de 2013

Processamento de Dados Sismológicos com Python e Obspy - Parte 1

Mesmo antes da época da graduação em geofísica eu já trabalhava com programação (Delphi, Basic, C/C++, etc). Porém foi nesta época que aperfeiçoei meus conhecimentos e por ventura ouvi falar de uma tal linguagem "Python".

No final do ano passado adquiri um mini-computador chamado de  Raspberrypi e assim comecei a procurar formas de programar esta fantástica ferramenta, onde para minha surpresa uma das linguagens usadas era "Python" então comecei a ler uma publicação on-line sobre a Raspberrypi chamada de TheMagPi e assim vi a necessidade de apreender mais sobre esta fantástica linguagem de programação. 

Para minha surpresa descobri um curso totalmente gratuito de Python do MIT (Massachusetts Institute of Technology), disponibilizado pelo portal EDX. Como comecei com nove semanas de atraso no curso, resolvi comprar o livro texto utilizado em todas as aulas do curso para facilitar o aprendizado, para quem quiser adquirir é só acessar o site MITPress.

Após adquirir algum conhecimento nesta linguagem e pensando em possíveis aplicações desta na geofísica, em uma conversa com o pessoal da área de sismologia do IAG-USP fui apresentado a uma biblioteca para Python chamada "ObsPy", a qual provê um "framework" para leitura e escrita em vários formatos de arquivos, acesso a centros de armazenamento de dados sismológicos e rotinas de processamentos de sinais as quais permitem manipulações de séries temporais sismológicas, deste modo provendo um desenvolvimento rápido de aplicações para sismologia. 

Mas chega de blá-blá-blá e vamos ao que interessa. Neste primeiro artigo irei demonstrar como instalar esta biblioteca em um sistema Linux baseado na distribuição Debian.

Na maior parte das distribuições do Linux, o Python já vem instalado por "default". Para verificar a existência deste no sistema, basta digitar python no shell, se o mesmo estiver instalado no sistema deverá aparecer a seguinte mensagem:


celso@Android:~$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>


Caso não esteja instalado, basta fazer como segue, mas não esqueça que necessitarás a senha de "root" :

celso@Android:~$ sudo apt-get update
celso@Android:~$ sudo apt-get install python

Após o python ser instalado, teste novamente para verificar se está tudo certo. Após estes passos básicos, vamos instalar a biblioteca "Obspy" via repositório, mas para isso a primeira coisa que devemos fazer é identificar qual versão do sistema operacional está instalada em nosso PC, em distribuições baseadas em Debiam digite: lsb_release -cs.

celso@Android:~$ lsb_release -cs
precise

No meu caso como tenho o Ubuntu instalado a versão que estou utilizando é a "Precise", conforme demonstra a saída do comando acima. O próximo passo é inserir o endereço correto do repositório onde se encontra o "Obspy" na lista de fontes em nossa máquina, para isto utilize um editor de texto de sua preferência (vi, vim, gedit, etc) e acesse como "root" o arquivo "sources.list" que se encontra em "/etc/apt/" e insira no final do arquivo a seguinte linha:  

deb http://deb.obspy.org CODENAME main

 Não esqueça de substituir "CODENAME" pela versão do seu sistema, no meu caso ficou assim:
 
deb http://deb.obspy.org precise main

Salve e feche o arquivo. O próximo passo é inserir a chave que testa a integridade dos pacotes baixados do repositório do "obspy", para isso digite o comando abaixo:

celso@Android:~$ wget --quiet -O - https://raw.github.com/obspy/obspy/master/misc/debian/public.key | sudo apt-key add -

Para instalar a "Obspy" com todas as dependências digite:

celso@Android:~$ sudo apt-get update
celso@Android:~$ sudo apt-get install python-obspy

 
Espero que tenham conseguido instalar esta fantástica ferramenta, qualquer dúvida não exitem em perguntar. No próximo artigo irei mostrar como implementar um simples programa em python utilizando a biblioteca "obspy".

Até lá!

Celso B. Varella Varella Neto
 
 


 



segunda-feira, 27 de maio de 2013

Beaglebone Black - Acesso via Terminal

Depois de muito tempo sem publicar, resolvi apresentar um simples teste que realizei na nova Beaglebone Black da Texas Instruments, para mais detalhes: 

Blog do Sergio Prado - beaglebone-black

beaglebone.org 


Primeiramente, localizei os pinos que dão acesso a porta serial da beaglebone black, veja a figura abaixo:  

Beaglebone Black System manual: Gerald Coley


Conforme o manual do SITARA AM335x, a tensão nestes pinos não pode ultrapassar os 3,3V, caso contrário poderá danifica-lo permanentemente. Para isso utilizei o BusPirate  e para mais informações acesse Blog do Sergio Prado - Buspirate.

Após conectar os fios necessários (GND, RX e TX), configurei o Buspirate para funcionar como "bridge" entre a Beaglebone Black e o PC. Com tudo perfeitamente conectado e configurado, liguei a beaglebone black e contemplei o boot do Angstron Linux, (conforme a figura abaixo) distribuição a qual vem instalada na eMMC da plaquinha com diversos recursos.


Assim que realizar mais testes, vou postando.








quarta-feira, 3 de outubro de 2012

Caixa de Tiro - Equipamento Geofísico

     Durante a minha graduação na Unipampa tive a oportunidade de pesquisar, desenvolver e montar um equipamento geofísico sob a orientação do Prof. Dr. Fábio André Perosi (Atualmente UFRJ). Sendo que o projeto foi financiado pelo CNPq e também recebeu suporte do Prof. Dr. Reinhardt Fuck (UNB) coordenador do INCT de Estudos Tectônicos.

     A idéia do projeto surgiu da necessidade de um controle preciso do tempo de detonação da fonte de energia utilizada nos ensaios de sísmica de refração profunda, pois os equipamentos utilizados na primeira fase do projeto em 2008 foram emprestados pelo programa PASSCAL (Program for the Array Seismic Studies of Continetal Lithosphere)  que é uma das facilidade oferecidas pela comunidade sismológica internacial pelo consorcio norteamericano IRIS (Incorporated Research Institutions for Seismology).

     A partir de pesquisas preliminares, decidiu-se que o protótipo do equipamento proposto seria dividido em módulos, para facilitar o desenvolvimento e a conexão destes. O aparelho é constituído de um microcontrolador, memória eeprom externa, um módulo LCD (display), uma unidade GPS, um circuito de comunicação serial/USB, teclado matricial de programação e uma fonte de alimentação dimensionada para o equipamento.






    O módulo GPS (Global Position System) tem por finalidade prover o horário UTC (universal time clock) para o microcontrolador, este por sua vez utiliza um cristal de quartzo para incrementar o horário automaticamente sem a necessidade de ficar lendo o GPS, isto é necessário, pois os registradores sísmicos são sincronizados também por GPS. 
    
Tanto o hardware como o firmware foram desenvolvidos para com que a caixa trabalhe em dois modos distintos de operação, controlando o tempo de detonação e como registrador de tempo por pulso externo. No primeiro caso a caixa recebe uma programação de no máximo 50 janelas (horários pré-determinados) de detonação via porta USB ou por teclado, quando este horário se iguala ao do relógio interno da caixa, é enviado um pulso elétrico a um circuito de potência e que por meio de um seletor possibilita ao operador escolher 11 configurações de corrente a qual mais se adequa ao tipo de arranjo detonador (cabo+espoleta elétrica) utilizado

    Para maior segurança a caixa é dotada de um gatilho onde só ocorrera a detonação se este estiver acionado, presencialmente, no horário pré-programado, após a detonação a caixa automaticamente atualiza novamente o seu relógio interno através do GPS, repetindo este processo a cada detonação.
     
     Se por algum motivo a detonação for abortada pelo operador será possível realizar uma nova detonação a partir de dois modos, primeiramente inserindo uma janela de backup para cada um dos horários de detonação pretendidos na programação inicial da caixa, ou através de uma nova programação em campo via teclado ou por USB sem afetar a seqüência das outras janelas.
    Ainda para este modo a caixa disponibiliza uma saída opto-acoplada para ser ligada diretamente ao trigger de sismógrafos, possibilitando a estes iniciar o registro no momento exato da detonação.
     O segundo modo de operação consiste em monitorar uma porta conectada a um circuito externo de detonação, na hora em que esta porta receber um pulso a caixa irá armazenar na eeprom externa o horário exato do pulso, possibilitando assim ao operador recuperar estes dados utilizando a porta USB ou visualizando-os através do display LCD.
    Em ambos os modos de operação é possível armazenar ou somente visualizar a localização dos pontos de tiro (local onde se encontra a caixa) a partir das coordenadas disponibilizadas pelo módulo GPS (Datum WGS84) incluso no circuito.
    Como foi verificado em laboratório o funcionamento adequado do protótipo, foram confeccionadas as placas de circuito impresso, possibilitando a montagem da versão final de todo o circuito eletrônico. A partir disto deu-se inicio a faze de montagem e acabamento da caixa, bem como a faze de testes em campo.  




Para mais informações entre em contato!