sábado, 16 de maio de 2020

A Origem dos vírus


A Origem das Viroses

By: David R. Wessner, Ph.D. (Dept. of Biology, Davidson College) © 2010 Nature Education
Citation: Wessner, D. R. (2010) The Origins of Viruses. Nature Education 3(9):37
                               

Traduzido por Francisco Fambrini

Como os vírus evoluíram?  Eles são uma forma simplificada de algo que existia há muito tempo ou um ponto culminante final de elementos genéticos menores unidos?


Neste Link:  A ORIGEM DAS VIROSES

sexta-feira, 8 de maio de 2020

sábado, 18 de abril de 2020

Um Microscópio de Força Atômica construido em casa com peças de um DVD-Blueray abandonado.

Este atigo descreve a construção de um Microscópio de Força Atômica usando um equipamento de DVD-Blue Ray velho. O artigo foi publicado por pesquisadores chineses e stão no seguinte link:
Microscopio de Força Atômica feito em casa
Aqui neste outro link temos um Live feita pelo autor, descrevendo o projeto:
Live do Autor do Projeto

Aqui o mesmo artigo, mostrado no site "Instructable": A-Low-Cost-Atomic-Force-Microscope
É o tipo de projeto que eu considero sensacional. Usando peças reaproveitadas de um DVD-Blue ray desativado e um Smartphone, os autores propõe a construção de um equipamento valiosissimo para pesquisas biológicas.
Este artigo foi publicado na Revista Saber Eletrônica n. 475, de Janeiro de 2014. É um artigo baseado na minha dissertação de Mestrado: Atualidades em Neurociências - A Matriz de Multieletrodos.
LINK PARA O ARTIGO

domingo, 12 de março de 2017

O programa "Triângulo", só que escrito em Linguagem Python

Eu escrevi o mesmo programa (calcula as mesmas coisas: Área, ângulos internos e também as 3 alturas relativas a cada um dos lados de um triângulo) também em linguagem Python.  Aqui você deve colocar os valores dos 3 lados do triângulo utilizando ponto decimal e não vírgula nos números.  Este programa roda naquela famosa "telinha preta do DOS" pois não tem interface gráfica (embora seja possível criar interfaces gráficas utilizando linguagem Python e um aplicativo chamado Pyqt ... eu não sei fazer). Para quem quiser experimentar o Cálculo das Medidas do Triângulo em Python, o link para o código executável é: Programa Triangulo em Python
O código-fonte está aqui: Link no Github

Material de Estudo sobre ARM Cortex M4

Material baseado nas Placas Tiva Launchpad (microcontrolador TM4C123G )  e Stellaris Launchpad (LM4F120)  ambas fabricadas e distribuidas pela Texas.
O compilador abordado é o Code Composer Studio (CCS) versão 6.0.
Todos os exemplos estão em Linguagem C.

Aproveitem e façam o download, pois deixarei este link e este post disponíveis por pouco tempo.
Link:  Material sobre ARM Cortex M4

sexta-feira, 10 de março de 2017

Comunicação Serial com Arduino em Linguagem Python - Um teste de desempenho

A nova versão da IDE do Arduino é a de número 1.8.1 e pode ser baixada neste site: Site do Arduino

Nesta nova versão temos um monitor serial (para comunicar o Arduino com o PC através da porta USB do PC) cuja velocidade máxima chega a 250.000 bps  (ou seja, 250 mil bits por segundo).

Isso já foi um avanço, porque em versões mais antigas da Plataforma Arduino, a máxima velocidade de comunicação serial era de 115200 bps apenas.

Pode parecer muito, mas dependendo da quantidade de dados que precisam ser transferidos do Arduino para o computador PC, esta velocidade de 250 000 bps pode não ser suficiente.

A Texas escreveu um excelente artigo aqui: Texas USB CDC Benchmarking,  justamente abordando quais seriam as máximas velocidades que podem ser alcançadas na comunicação serial USB (usando o sistema CDC)  com as suas placas Launchpad Tiva (Tiva TM4C123G Link) e com o microcontrolador Concerto (F28M35H52C1).

Baseado neste artigo, resolvi fazer meu próprio script para um rápido Benchmarking envolvendo Comunicação Serial em Linguagem Python com o PC, e uma placa Arduino Mega2560 (Arduino Mega).

O resultado serve também como um exemplo para quem quiser trabalhar com Comunicação Serial em Linguagem Python.  O código em Python, que deve ser executado no computador PC, faz uso da biblioteca pySerial (você terá que instalar esta biblioteca antes de rodar este código, ela não faz parte do Python 2.7) e é mostrado na figura 1 abaixo:
Figura 1- Código em Python para receber dados do Arduino através da Porta Serial.


Na placa Arduino, eu gravei o seguinte código (Figura 2 abaixo) o qual vai gerar 1000 blocos, cada bloco contendo 612 caracteres ASCii  do tipo "ab", totalizando blocos de 1024 bytes.
Serão gerados então 1000 blocos contendo 1024 bytes em cada bloco.
Figura 2- Script que deve ser gravado na Placa Arduino Mega2560 e que gera 1024000 bytes pela porta serial USB COM3

PROCEDIMENTO

1- Gravar o Script da Figura 2 na placa Arduino Mega;
2- Abrir o Script em Python na tela do PC e executar o código em Python, dando "RUN";
3- Verifique se a porta USB onde você conectou o Arduino é realmente a COM3 no seu caso. Pode ser que seu PC tenha dado a ela outro número (COM5 por exemplo) e você terá que alterar isto no software em Python.

Para quem quiser experimentar, deixei aqui os códigos utilizados:Arquivos Python e Arduino



RESULTADOS 

Para uma velocidade ajustada no software de 250000 bps, transmitir 1024000 bytes demorou cerca de 42 segundos, produzindo uma velocidade calculada pelo script da Figura 1 de 24485 Bytes por segundo (ou 24485 x 10 =  244850 bits por segundo). A figura 3 mostra o "log" que é gravado pelo script de benchmarking da Figura 1.
Figura 3- Resultados do teste de desempenho da Comunicação Serial.


Observe que para calcular o valor em bps (bits por segundo) temos que multiplicar por 10 e não por 8. Embora cada byte contenha 8 bits, na transmissão serial ASCii são transmitidos 10 bits para representar cada byte, pois o primeiro é o start-bit e o último é o stop-bit, que indica que aquele byte encerrou sua transmissão.
Desta forma, a velocidade efetiva de 250 000 bits por segundo nunca é atingida, o melhor valor foi de 244850 bps.
Isso pode não ser importante dependendo da aplicação. Mas em algumas outras aplicações (Por exemplo: deseja-se construir um Osciloscópio no PC, para visualizar formas de onda em tempo real) a velocidade da Comunicação Serial se torna muito importante e altas taxas de transferência são necessárias. A velocidade com que o Arduino é capaz de se comunicar com o PC pode ser lenta e ineficiente, dependendo da aplicação.
Este é o caso do meu trabalho de Doutorado, onde eu precisarei registrar 60 canais de conversor AD, com taxa de captura de 5kHz (5000 amostras por segundo em cada canal) e transmitir todos estes dados ao computador PC no menor tempo possível.
No caso da minha Tese de Doutorado, eu necessitarei transmitir  675 000 Bytes por segundo se desejar amostrar os canais em tempo real porque  são 60 canais, 5000 amostras por segundo em cada canal e o conversor AD tem resolução de 16 bits, transmitindo efetivamente 18 bits em cada word:

                                       60 x 5000 x 18 =  5400 000 bps (bits por segundo)

Esta taxa de 675 KB/s  talvez só possa ser atingida por outras técnicas, como a Comunicação "Bulk" entre o microcontrolador e o computador USB e usando-se DMA (Direct Memory Acess) para que o processador não gaste tempo durante uma aquisição e outra. A técnica de comunicação serial tipo CDC se mostra lenta para esta tarefa.
Agradeço ao professor  Lucas Vinicius Hartmann e aos colegas da PicList (piclistbr@googlegroups.com) pela revisão efetuada neste texto.