Category Archives: Sem categoria

Um presente inesperado na Campus Party!

Como a maioria sabe, todos os anos eu vou para o evento anual Campus Party. Apesar de eu achar que ele está decaindo a cada ano que se passa, ainda há muito o que se aproveitar lá além de rever os amigos da internet nesta oportunidade anual.

Este ano fui também chamado para a cerimônia de abertura (estreia) do Intel Edison no Brasil. Como muitos sabem (e os que não sabem é só ler meu post anterior) eu fiz várias críticas ao Intel Galileo, muitas delas as quais foram corrigidas na sua segunda versão (Galileo Gen 2).

Apesar da ideia da Intel sobre IoT (Internet of Things) para o Galileo, minha ideia inicial era ter um processador melhor para o meu quadricóptero. A IMU (unidade de movimento inercial) de um quadricóptero faz operações matemáticas complexas ao nível computacional embarcado (operações matriciais em ponto flutuante) e mesmo as melhores controladoras sendo processadores ARM, usam processadores relativamente simples (sem NEON e outros sistemas de SIMD (Single Instruction Multiple Data) ).

Continue reading

Motivos pelos quais eu não gostei do Intel Galileo

image

Consegui minha placa Intel Galileo na semana da Campus Party. Peguei ela mais por curiosidade. A minha real intenção sobre ela seria comparar o processador dela ao Raspberry Pi. O Raspberry Pi como muitos sabem usa um processador bem ultrapassado. Os seus 700MHz já não significam muita coisa. Porém ele tem uma boa GPU que é capaz de decodificar videos 1080p e rodar aplicativos OpenGL.

Continue reading

Função C para múltiplos e submúltiplos (REVISADO)

O Caio Alarcon me notificou de algumas coisas sobre minha função de múltiplos e submúltiplos, por exemplo, o tratamento de números negativos. Resolvi então revisar e otimizar a função em C. O Resultado está abaixo:

#include <stdio.h>
#include <math.h>
char toNotationUnit(double value,float *out) {
        double val;
        char notacoes[] = {'y','z','a','f','p','n','u','m',' ',

                                   'k','M','G','T','P','E','Z','Y'};
        int counter=8;
        char unit;
        val = value>0?value:-value;
        if(val < 1) {
                while( (val < 1.00) & (counter != 0)) {
                        counter--;
                        val=val*(double)1000;
                }
        }else{
                while((val >= 1000) & (counter != 16)) {
                        counter++;
                        val=val/(double)1000;
                }
        }
        unit = notacoes[counter];
        val = round(val*(double)100)/(double)100;
        *out = (float) value>0?val:-val;
        return unit;
}
 
int main() {
  double x = -1230000;
  float res;
  char t;
  t = toNotationUnit(x,&res);
  printf("%.2F%c",res,t);
  return 0;
}

Quem preferir, tem um link no ideone com este código funcionando 😀

http://ideone.com/wpvZo

Bom uso!

Interruptor MIDI Polifônico com PIC 16F628A (Interface)

Neste tópico colocarei apenas como é a interface do interruptor descrito anteriormente.

image

Para um interruptor monofônico, ligamos o Enable em Vcc e ignoramos o BUSY. Para polifônicos, colocamos o Enable do primeiro no Vcc, e nos seguintes ligamos no BUSY do anterior. Nas saídas fazemos uma operação OR, e as entradas MIDI são ligadas todas juntas.

Continue reading

Interruptor MIDI Polifônico com PIC 16F628A

– Introdução

Bom, muitos sabem que eu fiz um Interruptor MIDI (ou sintetizador como preferir) com um FPGA. Porém poucos tem acesso a um FPGA principalmente para fazer algo tão *simples*, então resolvi fazer um com PIC 16F628A.

No começo queria fazer com um PIC menor, mas os menores não tem Receptor Serial via hardware, então ficaria mais complicado implementar. Outro ponto, é que o preço dos PIC’s menores são praticamente os mesmos, então era só uma questão de espaço mesmo. Usando um PIC maior, fica mais espaço livre para futuras modificações caso seja necessário.

O PIC 16F628A tem 2KB de memoria flash, 224 Bytes de RAM, 128 Bytes de EEPROM, um Comparador, 3 Timers, e um Receptor Serial Universal. Está no pacote DIP de 18 Pinos, e ele tem 2 portas de 8 bits (dependendo da configuração, a porta A pode *perder* 3 bits.

Datasheet dele: http://ww1.microchip.com/downloads/en/DeviceDoc/40044F.pdf

Ele tem um oscilador RC Interno de 4MHz calibrado de fábrica para +/- 1%, então podemos fazer uso dele tranquilamente.

Continue reading

Amostra de Memória MRAM da Everspin

A muito tempo atrás pedi amostras de uma memória magnética da Everspin para fazer testes aqui, porém depois me deparei com o problema de que ela é 3.3V.

De qualquer maneira agora tenho um FPGA para brincar com ela.

O modelo de amostra é a MR2A16AYS35, uma MRAM de 1M de endereço e 16 Bits de “palavra”, totalizando 16Mbit ou 2 Mbytes.

MRAM é um acrônimo para Magneto-resistive Random Access Memory, que é uma memória RAM não-volátil (não perde os dados quando se desliga). Ela é considerada a chave para o futuro da computação, principalmente portátil. Com ela vem o conceito de “boot-instantâneo” onde seu computador ao apertar o botão de ligar, estará já pronto para uso.

O por que disso? É bem simples na realidade. Os armazenamentos não-volateis (por exemplo cartões de memória, HD’s, pendrives) são muito lentos para se trabalhar diretamente neles, e devido a isso se usa a Memória RAM, que é muito mais rápida, porém perde seu conteúdo ao se remover a energia. E até pior no caso das atuais DDR que são baseadas na DRAM, onde seu conteúdo precisa ser “refrescado” de tempos em tempos (a memória precisa de um pulso pra recarregar os valores 1 dentro dela, se não ela perde. Isso é devido ao dado propriamente dito ser armazenado em um capacitor, que perde sua energia com o tempo)

Continue reading

Fonte 3v3 do FPGA

Bom, alguns talvez lembrem que um pouco antes do Flisol de Salto uma das minhas placas de Desenvolvimento Xilinx Spartan 3A Evaluation Kit parou de funcionar. Descobri que era o regulador de 3.3V da placa que havia queimado (bom, eu meti em curto várias vezes sem querer, apesar de ele ter proteção, nunca é a prova de falhas). Por sorte eu tinha outra e pude apresentar o projeto.

Mas ontem resolvi arrumar a placa de algum jeito. Infelizmente o regulador 3.3V apesar de não ser caro, tem algo em torno de 2mm²  e é em QFN, um SMD que os pinos dele são em baixo do chip.

Ou seja, era um mísero quadrado minúsculo que mesmo que tivesse seus pinos para o lado seria quase humanamente impossível de soldar. Então resolvi apelar. Tinha um Regulador de 3.3V 3A aqui num canto, uma placa boa e bem feita (vinda da China) e resolvi ligar no lugar do regulador 3.3V.

Não ficou tão bonito, mas está funcionando perfeitamente, e agora tenho um regulador mais robusto também de 3.3V para o que eu precisar:

image

Electronics Hacking

Bom, decidi postar hacks de eletrônica aqui também. Até por que são mais frequentes que os meus hacks. Ai vai umas fotos de um sensor CMOS que soldei numa placa pra facilitar, e verei um dia de brincar com ela:

image

image

É um Sensor CMOS VGA Colorido, que roda em 3.3V. A sua interface também é CMOS (muitas vezes o sensor é cmos, mas a interface é analógica) e como o nível de tensão é 3v3 é fácil de eu trabalhar com um FPGA. Devo ter tirado isso de uma webcam ou câmera de vigilância, não lembro.

A resolução é 644×484 pixels, porém ela tem uma área morta como qualquer câmera, logo não é tudo isso que é aproveitável. Outro ponto positivo, diz o datasheet que ela é capaz de chegar a 30FPS de taxa de amostragem, o que me leva a pensar que não foi uma webcam, e sim uma câmera de vigilância.

De qualquer maneira não irei brincar com ela hoje, e não tenho previsões. Preciso estudar muito ainda como funciona os sensores. A unica coisa que sei até agora é que ela trabalha com varredura dos sub-pixels, a cada clock tenho 10 Bits que demonstram a intensidade do sub-pixel.

Porém o datasheet é meio confuso, em alguns lugares parece que eu tenho o dado do pixel, e em outros parece o dado do sub-pixel. De qualquer maneira, não é apenas tacar numa tela o dado, é preciso processar ele antes. Esse sensor usa um filtro bayer padrão o que nos dá para cada pixel, dois sub-pixels verde, um vermelho e um azul. Num estudo rápido que fiz, o motivo de ter dois sub-pixels verdes e apenas um das outras cores, é o fato do olho humano ser mais sensível a cor verde devido ao numero de cones (mais sensíveis a cor verde) ser o dobro do numero de bastonetes. Então precisarei ver o que vou fazer.

De qualquer maneira, se alguém quiser o datasheet (não são muitos sites que tem o detalhado, então upei o detalhado no Project Source) ele está nesta pasta:

http://www.energylabs.com.br/project/?dir=Outros/Datasheets

É isso ae!