terça-feira, 6 de junho de 2017

Teste da placa conversora VGA/HDMI/TV para LVDS LA.MV56U baseada no IC TSUMV56R.

No post do monitor da AOC, mostrei uma placa conversora VGA/HDMI/TV para LVDS (uma variação da L.AMV29 baseada no IC TSUMV29) cuja seleção dos parâmetros da tela LCD eram definidos por jumpers na mesma. Agora chegou esta, muito parecida com a anterior mas com a seleção de tela via gravação de firmware e baseada no IC TSUMV56, que também toca mídia, ao contrário do TSUMV29.
Estava receoso quanto ao ajuste dos parâmetros da tela por regravação por firmware, assim no pedido já escolhi um específico para minha tela, uma HannStar HSD100IFW1 com resolução de 1024x600. Também pedi uma placa com os botões de controle (7 botões) e uma placa com o LED bicolor e sensor do infravermelho.
A ligação é exatamente a mesma da outra, assim não tive dificuldades em ligar a tela da HannStar.

Firmware:
Tive bastante dificuldade de achar os firmwares para esta placa, mas agora tenho não só para o IC TSUMV56 mas para os ICs TSUMV29 e TSUMV59. Há também variações destes firmwares para o tipo de receptor de TV, que pode ser o R840 ou outro modelo do mesmo fabricante. A minha usa o modelo de TV analógico somente.
O processo de gravação do firmware é muito simples: basta ligar a placa LA.MV56U com um pendrive com o arquivo .bin (somente ele). O processo é automático, onde o LED bicolor irá alternar as cores rapidamente até que o processo termine. No próximo post, mostrarei a regravação do firmware para outra tela LCD.

Placa LA.MV56U.
Vista inferior da placa LA.MV56U.
Controle remoto. Mais sofisticado que o outro e em inglês!
Placa com os botões de operação e placa com LED e sensor infravermelho.
Tela HannStar com o cabo LVDS adaptado.
Detalhe do cabo LVDS conectado.

Operação e uso:
Menu de seleção de entrada.
Menu de ajustes do receptor de TV, onde se inicia o autoscan dos canais. Note que o receptor é analógico somente, há modelos com recepção digital.
Menu de ajustes da tela como brilho, contraste, etc.
Menu de ajustes do som.
Menu de ajuste do timer e da hora. Observar que a hora é perdida quando se desliga a alimentação.
Menu de ajustes de linguagem e algumas outras opções. Acesse esse menu primeiro pois a opção de idioma de fábrica é em chinês!
Ao pressionar em sequência "MENU", "1", "1", "4" e "7", é mostrado um menu com opções avançadas. Neste é possível resetar todos o ajustes, ajustar temporizações das interfaces, versão do firmware, etc.
Destaco este menu avançado, onde se tem parâmetros de ajuste da interface LVDS.
Interface LVDS ajustada incorretamente.
Tocando mídias:
O IC TSUMV56 pode tocar arquivos de áudio (só testei MP3) e arquivos de vídeo (avi, divx, mkv, etc). Alguns vídeos ficam sem som.

Menu do midia player.
Acessando o pendrive conectado na USB.
Pastas no pendrive. Interface simples e intuitiva.
Visualizando fotos. O firmware fica as passando uma a uma automaticamente como aqueles porta-retratos digitais.
Foto na orientação de retrato.
Tocando um MP3.
Tocando um filme.


sábado, 27 de maio de 2017

Gravador de memórias Flash seriais com o IC CH341A.

         Em um dos meus pedidos de bugigangas eletrônicas na Aliexpress, comprei este gravador de memórias Flash seriais (I²C das series 24xx e SPI das series 25xx) com o IC CH341A. Ele usa uma porta USB e suporta várias memórias de vários fabricantes. Ele usa um aplicativo específico: o CH431A Programmer, cujo .ZIP já vem com os drivers inclusos.


CH431A Programmer.
CH431A Programmer selecionado para memórias flash I²C da série 24xx.
CH431A Programmer selecionado para memórias flash SPI da série 25xx. Note que neste modo, há um botão que auto-detecta a memória, nocaso, uma MX25L6408D (8 megabytes) da MXIC.
Há também uma interface para procurar manualmente o modelo de memória.

        O uso do CH431A Programmer é intuitivo e muito simples. Basta inserir a memória no soquete de acordo com a marcação da placa e depois inserir o programador numa porta USB.



Placa do programador.

Lado inferior da placa do programador.

Placa adaptadora que veio junto. Soldei uma memória SPI para testar.

MXIC 25L4005A que testei.

24LC02 que testei.

quarta-feira, 24 de maio de 2017

Raspberry Pi 3.

Com o preço do computador da framboesa caindo a menos de R$200,00, resolvi comprar um.

Caixa.

Folheto informativo.

Vista superior da placa do Raspberry Pi 3.
Vista inferior da placa.

Adaptador USB/PS2, para usar um teclado e mouse PS2 no Raspberry Pi 3.
Tela com o prompt de comando após o login automático
Interface gráfica PIXEL.


Alimentação:

Assim como no servidor de arquivos, usei outra fonte igual e com a mesma modificação.
Para medir a energia consumida, usei o medidor com o INA260 (ver post sobre o mesmo).

Raspberry Pi 3 ligado à fonte de alimentação modificada. Note o medidor de corrente/tensão com o INA260.
Raspberry Pi 3 consumindo máxima potência. Note que a corrente fico um pouco maior que 500mA. Não foi usado overclock e o SoC aquece pouco.

Raspberri Pi 3 ocioso. Ajustei, através do 'config.txt', o clock quando ocioso igual a metade do normal (600Mhz)
Raspberry Pi 3 após comando 'shutdown'. Note que a corrente caiu bastante.

Armazenamento:
Os primeiros Raspberry Pi (Revs 1 e 2, models A e B) usam um cartão SD, já o Raspberry Pi3 usa µSD. Comecei a fuçar no RPi3 com um cartão µSD de 8GB classe 4 que era o único disponível no momento. Já sabia que usar um cartão lento comprometeria o desempenho mas foi pior do que achava: o Raspberry Pi3 ficou mais lento que o Raspberry Pi1 usado no servidor de arquivos (ver o post Servidor de arquivos com o Raspberry Pi). Comprei um tempo depois um µSD classe 10 de 8GB com taxa de leitura de 45mB/s e de procedência legítima. Foi da água para o vinho. Agora o Raspberry Pi3 roda a nova interface gráfica PIXEL com desenvoltura. Não economize no cartão microSD, pois compromete o desempenho, muito mesmo.
Medi os tempos de inicialização com os dois cartões:
Tempo de inicialização até Inicialização da interface
o login em modo texto gráfica:
µSD Classe 4 60s 120s
µSD Classe 10 48s 42s


Cartão classe 4 à esquerda e o classe 10 à direita.
Adicionando o Realt Time Clock (RTC) e configurando-o no Raspibian:
Assim como Raspberry Pi1 usado no servidor, usei no Raspberry Pi3 um RTC baseado no IC DS3231. Há RTCs baseados no IC DS1307 mas recomendo usar este com o DS3231, pois é muito mais preciso e compacto, pois o mesmo tem o cristal de quartzo integrado.

Vista superior da placa RTC com o DS3231.
Vista inferior. Note que a bateria de lítio não é recarregável.

Placa do RTC encaixada no barramento I²C do Raspberry Pi 3.

Configurando o RTC no Raspibian:

  • Baixe a útima versão do Raspibian (Raspbian Jessie with PIXEL). Usei a de abril/2017
  • Faça a atualização completa:
$ sudo apt-get update && sudo apt-get upgrade -y

  • Adicione a seguinte linha ao final do arquivo /boot/config.txt
dtoverlay=i2c-rtc,ds3231

  • Reinicie o Raspibian.
  • Remova o fake-hwclock pois não será mais necessário:
$ sudo apt-get purge fake-hwclock

  • Ajuste a data (exemplo)
$ sudo date -s "17 MAY 2017 10:10:00"

  • Atualize o RTC com esta data:
$ sudo hwclock -w

  • Ajuste o fuso horário (opcional) ou faça isso quando iniciar o Raspibian pela primeira vez:
$ dpkg-reconfigure tzdata

  • Adicione a linha a seguir no arquivo /etc/rc.local, logo acima da linha “exit 0”:
/sbin/hwclock -s

  • No arquivo /etc/init.d/hwclock.sh, mude o parâmetro "HWCLOCKACCESS" para "no":
HWCLOCKACCESS=no


Configurando o Wi-Fi:
Uma grande vantagem do Raspberry, além do SoC quad-core, é ter o módulo Wi-Fi/Bluetooth integrado. E mais, tal módulo é conectado em uma interface própria no SoC, não no hub USB2.0 onde a interface Ethernet é conectada, dividindo a banda com as quatro portas USB.

Com o comando a seguir, é listado as redes Wi-Fi disponíveis:
# sudo iwlist wlan0 scan

Edite o arquivo "/etc/wpa_supplicant/wpa_supplicant.conf", adicionando no final deste estas linhas:

network={
    ssid="ESSID do roteador"
    psk="senha do roteador"
}

Onde "ssid" é o nome da rede e "psk" é a senha de acesso.
Exemplo:
network={
    ssid="Wi-Fi de casa"
    psk="123456"
}


Em breve mais post sobre este Raspberry.





Microcontrolador MSP430FRxxxx com memória ferro-elétrica (FRAM).

        Estava muito curioso com a tecnologia de memória ferro-elétrica (FRAM) usada nos novos microcontroladores MSP430FRxxxx. Não entrarei em detalhes sobre esta tecnologia pois está bem explanado no site da Texas Instruments.
        Esta memória tem muitas vantagens sobre a memória Flash:
• Escrita na FRAM não necessita de preparação ou procedimentos como o apagamento das células de memória antes da escrita;
• FRAM não é segmentada, pode ter cada bit individualmente alterado;
• Escrita na FRAM requer pouca energia pois não necessita de um charge pump.
• Escrita na FRAM pode ser feita em toda a faixa de tensão de operação do microcontrolador (1,8V~3,6V);
• Velocidade de escrita da FRAM típica de 2MBps enquanto a FLASH fica em 14 kBps;
• FRAM tem uma quantidade de escritas muito maior que a FLASH, praticamente ilimitada (10^15 ciclos de escrita!).
        A única desvantagem, por enquanto, já que é uma tecnologia muito recente, é o tempo de acesso de leitura: um microcontrolador operando a 16MHz deve-se adicionar um wait-state ao acesso da FRAM que opera até 8MHz.
  O LaunchPad MSP-EXP430G não é compatível com esta família, assim tive que comprar o LaunchPad MSP-EXP430FR2311, que vem com um MSP430FR2311 soldado à placa. Também obtive mais dois MSP430FR2311, dois MSP430FR2111 (o mais simples da família) e dois MSP430FR2632 (com 2k de memória RAM para acionar o Sharp Memory LCD, tema de um próximo post).
LaunchPad MSP-EXP430FR2311.
Vista inferior. Adicionei os quatro postes com parafusos M3.
        Comparados com os membros de baixo custo MSP430G2xxx, os MSP430FR2xxx possuem mais opções de periféricos (que são mais complexos e elaborados), mais modos de economia de energia, mais opções de controle interno e mais RAM.

Adaptadores
        Os MSP430FRxxxx só estão disponíveis em encapsulamento SMD, assim para aproveitar as placas de desenvolvimento que havia montado, tive que criar adaptadores DIP, mantendo ou adaptando a pinagem para a do MSP430G2553 e G2231. Nestes adaptadores, foram adicionados dois capacitores de 12pF para o cristal de quartzo, pois a família FR não os têm internamente. Também foi adicionado um capacitor na alimentação de 1uF.
MSP430FR2311 montado no adaptador DIP, com a pinagem modificada/adaptado para ser compatível com o MSP430G2553 na placa de desenvolvimento com interface I²C.
MSP430FR2111 montado no adaptador DIP, com a pinagem modificada/adaptada para ser compatível com o MSP430G2231 na placa de desenvolvimento com interface SPI (a eUSCI do FR2111 não tem interface I²C). Note que os terminais P2.0 e P2.1 não foram usados para caber num DIP-14.


Usando o LaunchPad MSP-EXP430FR2311 para debug/programação externa
        Assim como no MSP-EXP430G, fiz um cabo Spy-by-Wire para debug/programação externa das placas de desenvolvimento.
Cabo Spy-by-Wire para programação das placas de desenvolvimento.
LaunchPad MSP-EXP430FR2311 com o cabo Spy-by-Wire ligada à placa de desenvolvimento.


Oscilador interno (Clock System - CS)
        O módulo de clock (Clock System) da família FR é bem mais complexo que o da G. Há muitas opções mas só uso duas:
  • A primeira opção, é baseada no oscilador calibrado interno REFO (32768Hz +/-3,5%)  cuja frequência é entregue a um PLL multiplicando-a  para fornecer aproximadamente 16MHz.
P1.1 como saída do ACLK. Este clock vem diretamente do oscilador interno REFO. Note que a frequência está dentro da tolerância. 
P2.6 como saída do MCLK (REFO multiplicado pelo PLL).
P1.0 como saída do SMCLK (MCLK/8).

  • A segunda opção, é parecida com a primeira, mudando apenas o tipo de oscilador, onde é usado um cristal de quartzo de 32,768kHz, cuja frequência também é multiplicada pelo PLL, muito mais precisa e estável. Achei fantástica esta opção, pois consome muito menos energia que um oscilador com cristal de 16MHz e ainda se tem uma base de tempo de 32,768kHz.

P1.1 como saída do ACLK. Este clock vem diretamente do oscilador com cristal de 32768Hz. Note que o valor é muito próximo e muito estável.
P1.0 como saída do SMCLK (MCLK/8). O MCLK não pode ser disponibilizado pois a saída já é utilizada pelo oscilador com o cristal de quartzo.

        No próximo post falarei sobre a eUSCI acionando os displays OLEDs.