domingo, 18 de agosto de 2013

Mini-Review - Módulo Bluetooth


1. COMPRA: Comprei no goodluckbuy já faz bastante tempo. Fui procurar a data da compra e ví que mês passado (Julho/2013), fizeram dois anos de aniversário da compra! Dá pra notar que adiei por um bom tempo uma brincadeira com eles. Do mesmo jeito que eu tinha encostado aqui esse módulo, eu devo ter outras coisas também. Quando eu tiver um tempo vou fazer uma varredura nas minhas tralhas.
O link da compra não está mais disponível, possivelmente o vendedor já acabou com o estoque de módulos dele.

2. ENTREGA: Pelo tempo que faz que eu fiz a compra eu já nem lembro mais como é que foi a entrega. Mas deve ter sido o tempo padrão que se leva para as coisas saírem lá da China para chegarem aqui, coisa um mês...

3. O PRODUTO: Já comentei algumas coisas sobre esse módulo em uma série de postagens. Para ler basta clicar nos links a seguir: primeira, segunda e terceira postagens.
A placa do módulo possui dois pequenos chips, um deles é o BC417 que é o core bluetooth em si e o outro é o MX29LV800CBXEC, uma memória flash externa que guarda o firmware carregado pelo módulo e algumas configurações de funcionamento.
Olhando o datasheet do BC417 (veja aqui), dá pra ver que ele é bem poderoso (interface usb, i2c, serial, vários pinos de entrada/saída, etc...). Mas a única coisa que se vai conseguir fazer utilizando o módulo é estabelecer comunicação utilizando uma porta serial RS232 virtual sobre a conexão bluetooth disponibilizada pelo BC417.
Um dos motivos para essa limitação é a versão de firmware que acompanha as placas que eu tenho em mãos. Ele possui um conjunto limitadíssimos de funções ceifam boa parte da potencialidade do conjunto (o que é de certa forma até frustrante...). Fazendo algumas pesquisas pelo google ví que existem outros módulos com outras versões de firmware que dão mais liberdade de configurações.

4. PRÓS: A facilidade de uso é muito grande, não há grandes mistérios para fazer a comunicação entre o módulo e qualquer outro dispositivo utilizando bluetooth. Basta alimentar o módulo e enviar dados pela sua interface serial que o que entra em um lado vai sair no outro. Não é preciso fazer configurações, nenhum setup inicial ou preparação (a não ser que se deseje alterar as configurações iniciais de comunicação serial, claro).
O preço, como de costume para a maioria das coisas xing-ling, é outro atrativo. É bastante barato.

5. CONTRAS: Firmware que limita o acesso às demais funções do módulo. Dá pra brincar muito mais utilizando as versões melhores de firmware do conjunto. Para “hobbysta” como eu, o acesso aos pinos do módulo não é lá muito amigável, é preciso ter um pouco de paciência e destreza se quiser fazer uma coisa que o deixe mais fácil de manipulá-lo. Mas isso também é uma coisa que só se faz uma vez, tendo um ferro de solda com bico fino a coisa não fica muito traumática de se resolver.  Além disso, já existem opções mais amigáveis nesse sentido a disposição a venda.
O que me deixou um pouco frustrado também foi o alcance que consegui utilizando o módulo emparelhado com outro dispositivo. Quando emparelhado com um computador o alcance foi um pouco maior do que em relação a um celular, mas não passou de coisa de uns 5 ou 6 metros sem obstáculos (pra falar a verdade acho até que essa distância é razoável para os bluetooth dessa categoria, já li sobre isso em algum lugar...). Tenho um fone de ouvido da Motorola que costumo emparelhar com o notebook e sair andando pelo apartamento sem perder o link...

6. RESUMO: O módulo é bem legal para fazer algumas brincadeiras, mas a versão do firmware das que eu comprei me deixou um pouco frustrado. Para quem for comprar algum módulo desse, eu recomendo que preste atenção para ver qual é a versão do firmware que vem nele. Há a possibilidade de se fazer mudança desse firmware você mesmo, mas pelo menos eu não tenho saquinho pra isso...

7. NOTA: O módulo realmente faz o que promete e simplifica bastante as coisas. Só que para mim simplificou demais. Vou dar um 8,0.

sexta-feira, 9 de agosto de 2013

MSP430: gerando PWM - Parte I

Por onde começar...

O meu interesse em gerar sinais PWM  (Pulse Width Modulation), é por conta da necessidade de fazer o controle de velocidade dos motores que estou usando para fazer o meu carrinho andar (veja aqui). Não vou entrar muito em detalhes sobre PWM pois não é esse o meu objetivo. Informações sobre o que é PWM, fundamentação teórica, aplicações e mais informações podem ser achadas aos monte no google.
Esse tipo de sinal, por ser filosoficamente digital, é bastante simples de ser gerado por microcontroladores, mesmo os mais simples, bastando para isso que ele tenha um timer em sua arquitetura interna.
Acho que a melhor maneira de aprender como utilizar os recursos do dispositivo é lendo a documentação disponibilizada pelo fabricante. Como estou utilizando o microcontrolador que veio junto com a placa Launchpad MPS430, o MSP430G2553, baixei a documentação do mesmo e pude encontrar tudo o que foi necessário para dar o ponta pé inicial (além de que há muita coisa disponível e já pronta na internet, novamente o google pode ajudar bastante...).
As informações sobre esse microcontroladores são encontradas em dois documentos: o primeiro é um datasheet para o dispositivo em questão e outro trata-se do manual da família à qual o dispositivo pertence. Os dois volumes se complementam, então é necessário ter os dois em mãos. Para o microcontrolador que utilizei, os arquivos são os dos links abaixo:


Gerando PWM

Como falei, para gerar sinais PWM num microcontrolador basta que se tenha disponível um timer em sua arquitetura interna e no MSP430G2553, que vem junto com a Launchpad, temos dois disponíveis.

Arquitetura MSP430G2553 retirada do datasheet do dispositivo.

Toda a informação dos modos de operação dos timers pode ser encontrada no manual da família do dispositivo, no capítulo 12 (Timer A). Para mais informações aconselho uma leitura desta seção.

 

Modo de operação do Timer

Segundo tabela do manual de operação da família, existem 4 modos de operação para o Timer deste dispositivo. Achei o modo "Up" mais interessante pois consigo ter o controle melhor do período do Timer e consigo gerar freqüência desejada mais facilmente (pelo menos no meu modo de pensar e raciocinar...). Neste modo de operação o contador do timer é resetado sempre o valor de TACC0 é atingido (TACCR0 - Timer A Capture/Compare Register 0). Abaixo cópia do trecho específico do manual descrevendo os modos de operação do Timer.

Blocos de Captura/Comparação (Capture/Compare Blocks)

O modo de Captura é utilizado para gravar eventos relacionados a temporização, podendo ser utilizados para contagem de eventos, cálculo de velocidades ou medição de tempo. Já o modo de Comparação é utilizado para gerar interrupções a intervalos regulares de tempo ou gerar sinais PWM. Logo, este é modo de operação que nos interessa aqui.
Cada bloco possui uma unidade de saída (output unit) que é utilizada para gerar sinais de saída como PWM, por exemplo. Essa saída pode operar nos 8 modos descritos no manual da família e reproduzido abaixo.

Output modes para os módulos de captura/comparação.

Escolhi operar no modo Reset/Set e por conta disso teremos algo parecido com o que mostra a figura seguinte como sinal geral pelo timer.

Sinal PWM gerado usando as configurações descritas.


No MSP430G2553 temos 3 blocos de Captura/Comparação. A minha idéia é utilizar o bloco 0 para estabelecer a freqüência de dois sinais PWM (TACCR0), e os outros dois módulos para gerenciar o duty-cycle de maneira independente desses dois sinais (TACCR1 e TACCR2).

Codificando...


Bom, com o básico do funcionamento do hardware apresentado já dá pra codificar e fazer a coisa acontecer. Esse é o tema do próximo post sobre esse assunto.

quinta-feira, 25 de julho de 2013

Módulo Bluetooth/RS232 - Parte III

Depois de reunir informações sobre o módulo (leia aqui) e tentar "soquetar" a plaquinha de modo a facilitar seu manuseio (leia aqui), chegou a hora de ligar e ver o que acontece.

 Porta Serial no notebook

As portas seriais foram praticamente eliminadas dos atuais computadores. Para resolver esse problema existem por aí diversos conversores USB que quebram o galho nessas horas.  No meu caso eu usei a própria placa do Launchpad MSP430 pra fazer esse papel. Removi os pinos RXD e TXD que ligam o emulador ao microcontrolador e utilizei a porta serial virtual que é criada pelos drivers da Texas quando se instala o CCS (Code Composer Studio). Bom, essa foi minha solução pelo simples fato de eu já a ter instalada no meu computador mas nada impede que outras soluções seja utilizadas. No final, a única coisa que importa é ter uma porta serial disponível (seja ela virtual ou física).
Para fazer a comunicação utilizando porta serial do computador você pode usar um terminal Putty ou qualquer outro terminal. Particularmente eu gosto desse aqui e o uso para minhas necessidades.

Gambi.. digo, Montagem

Com o suporte para o módulo pronto, coloquei-o num pedaço de protoboard, alimentei a plaquinha com 3,3V e utilizei resistores de 1K para ligar os terminais RXD/TXD do módulo aos terminais da Launchpad (foi só por desencargo). Além disso, coloquei um LED como ilustra a figura abaixo para monitorar o status do dispositivo (segundo os documentos que li sobre o mesmo).

Ligações módulo - além dos pinos TXD e RXD, apenas mais um LED que indica operação.

Gambiarra feita para ver o funcionamento do módulo

Ligando o módulo

Liguei o módulo e fui no notebook pra ver se o encontrava pelo bluetooth do mesmo. Ele apareceu na lista de dispositivos Bluetooth do Windows com o nome "linvor", como mostra a imagem abaixo.

Detecção do módulo no Windows.



Olhando as propriedades deste dispositivo dá pra ver os serviços que ele usa. Abaixo vemos que, para esse meu módulo, ele usa um serviço de SPP (Serial Port Profile) para emular uma porta serial . Maiores detalhes sobre serviços bluetooth podem ser achados aqui.

Serviços disponibilizados pela interface bluetooth do módulo.

Após estabelecer conexão comecei a brincar com o módulo enviando comandos e a coisa não funcionou bem como eu esperava. Lendo este documento, descobri que os módulos que eu tenho aqui possuem firmware HC-06 e que só funcionam no modo escravo e a lista de comandos AT pode ser encontrada aqui. Isso me deixou um pouco decepcionado pois eu esperava pelo menos poder ter autonomia sobre os diversos pinos de IO (tive trabalho danado pra soldar todos eles e agora descobri que não serviu pra nada...).
Como já falei, utilizei o conversor USB/Serial da placa Launchpad MSP430 para estabelecer uma conexão física entre o computador e o módulo para enviar comandos AT e testar a comunicação com o dispositivo (comunicação com o módulo no modo AT e não utilizando bluetooth ainda...). 
Depois, utilizei um microcontrolador para estabelecer uma comunicação entre o mesmo e o computador utilizando o módulo bluetooth. Tudo funcionou muito bem, sem muitos mistérios. O LED pisca durante o tempo inteiro e quando o módulo conecta à algum outro dispositivo ele pára de piscar e fica aceso enquanto estiver conectado. 
Fiz alguns pequenos testes conectando o módulo ao celular rodando alguns aplicativos em Android e, apesar de o módulo ter funcionado e completado a conexão, eu não consegui achar um aplicativo que fosse legal (talvez eu me aventure a escrever um para as minhas necessidades, aprender a programar para Android está na minha lista de "coisas a fazer antes de morrer"...).

Impressões

Irei fazer um Mini-review desse módulo e comentar com mais calma minhas impressões.

quarta-feira, 24 de julho de 2013

Módulo Bluetooth/RS232 - Parte II

Depois de tentar reunir informações sobre o módulo (leia aqui), meu desafio foi tentar encapsular a placa do mesmo de modo que eu pudesse manuseá-la de modo mais simples. Minha primeira idéia era fazer algo como ilustrado na figura abaixo.

Módulo encapsulado num soquete para circuitos integrados DIL
Se eu fosse utilizar apenas os pinos para as funcionalidades básicas até que seria uma saída elegante, seriam apenas os 6 terminais da foto. Contudo, eu queria utilizar todos os pinos de IO disponíveis no módulo.
O problema é que sem ter um ferro de solda com uma ponta suficientemente fina sabia que ia ser uma tarefa difícil conseguir fazer desse jeito. A primeira coisa qeu eu pensei foi em utilizar fio esmaltado para fazer as ligações e fui procurar na minha tralha alguma coisa do tipo. Procurei até algum motorzinho ou pequeno transformador para retirar os enrolamentos e usar para ligar os terminais do módulo com o soquete como na foto acima, mas não encontrei. Como não estava com vontade de deixar para outro dia (podia ser que esse dia demorasse meses para vir), eu fiz com as ferramentas que eu tinha em mãos no momento.
Peguei um cabo FLAT desses que se usavam para ligar discos rígidos IDE às placas mães, desfiei separando os cabinhos e fui soldando pacientemente de um em um nos terminais do módulo. Ficou como na foto abaixo, até que não ficou tão ruim.

Módulo com fios soldados feito com cabinhos de um cabo FLAT.
Vista inferior, não repare no cabo rabugento da ferramenta ao fundo, ela está velha mesmo!!

Percebi que com os cabinhos soldados do jeito que eu fiz o módulo não encaixavam no soquete da maneira que eu gostaria. A solução foi fabricar um novo soquete utilizando duas velhas barrinhas de pinos que eu tinha aqui, plástico e cola Superbonder. 

Fabricação de um soquete para abrigar o módulo.

Soquete improvisado com módulo instalado.

Daí pra frente o trabalho foi fazer as soldas dos cabinhos no soquete. Como eu falei, eu não tenho um ferro de solda com um bico muito fino e isso atrapalhou um bocado pois . Depois de um bom tempo apanhando consegui terminar as soldas. O resultado está a seguir.

Módulo e soquete improvisado.


Não ficou bom, quase queimo o plástico (ou vinil, não sei que material é) da barra de pinos de tanto problema que eu tive pra fazer as soldas. O acabamento ficou feio, muitos fios aéreos, uma verdadeira aranha! Contudo a missão foi cumprida, o módulo foi abrigado no soquete, está mais fácil de manusear, mais prático e agora eu posso começar a tentar usá-lo diretamente no protoboard.
Esse será o próximo passo.

terça-feira, 16 de julho de 2013

Módulo Bluetooth/RS232 - Parte I

Já faz um bom tempo que tenho aqui engavetado uns módulos Bluetooth que comprei aqui. Foi uma daquelas compras por impulso em que a gente compra só por comprar, pois na época eu não tinha uso nenhum previsto para eles.
Esse fim de semana resolvi desengavetar esses módulos para usá-los como meio de comunicação entre o carrinho que estou fazendo e o computador (que mais tarde pretendo substituir pelo celular).
A minha primeira grande dificulade foi conseguir lidar com os pinos da placa do modulo. Hoje você já encontra esses módulos sendo vendidos com terminais conectados usando somente os pinos que interessam, mas quando eu comprei, ainda nao estava disponível essa opção. Se fosse comprar hoje eu teria comprado a que já vem com os terminais soldados.

Módulo comprado - Dificuldade de manusear por conta dos terminais.
Há também a opção de conseguir somente a placa para adaptar o módulo. Mas depois de dar uma olhada na documentação do módulo descobri que dá pra utilizar outras funções cujos pinos não ficam acessíveis nessa placa.

Placa para instalar e soldar o módulo acima para facilitar o seu manuseio.

Eu encontrei algumas documentações pelo google a respeito desse módulo. Lí, já não lembro onde, que há algumas versões de firmware que alteram o funcionamento do módulo tanto do que diz respeito à funcionalidade como também em pinagem (o que pode ser perigoso...). Há alguns módulos que funcionam apenas no modo slave, outros só no modo master e outros você consegue fazer funcionar tanto num como no outro. O que eu tenho em mãos eu ainda não sei como funciona, só vou saber quando eu ligar e tentar ver o que acontece. 
Abaixo alguns links com informações sobre o módulo:


 Nesse último link inclusive está disponível um programa que um usuário fez para configurar o módulo no próprio computador (não usei, use por sua conta e risco...).

domingo, 7 de julho de 2013

Atualizações e NAS server

Atualizações

Fiz atualização no texto de dois posts anteriores para comentar um problema que houve no botão On/Off no multímetro que comprei (veja aqui) e no compartimento de baterias (veja aqui).

NAS server


Em casa eu tenho vários dispositivos que precisam acessar arquivos dentro de minha rede doméstica. São notebooks, telefones, televisão (hoje com a popularização das SMART TVs dá pra ver como elas são uma mão na roda) e sempre que eu precisava usar um arquivo que estava gravado num outro dispositivo eu perdia um tempo danado copiando, colocando em pendrive, hd portátil, etc. para levá-lo de um lugar para outro. Ainda tinha o problema de ter mais de uma versão do mesmo arquivo em lugares diferentes. Eu não sou uma pessoa muito organizada e para mim isso era horrível.
Para tentar resolver isso, há tempos eu vinha com vontade de comprar um pequeno NAS para centralizar acesso aos arquivos que uso com mais frequência e tentar organizar essa bagunça. Por conta disso acabei arriscando nesse NAS que eu vi no dealextrem.

NAS comprado no Dealextrem.
O ponto positivo para mim é que ele possui a interessante funcionalidade de ter um cliente de torrent embutido. Para quem usa muito, eu acho interessante poder baixar fora do ambiente de um computador por cortar um pouco o consumo de energia. O ponto negativo é que ele não lê discos com formatação NTFS, limitando o tamanho dos arquivos a 4GB (FAT32), mas para quem busca algo simples e barato pode ser um boa saída. Assim que eu tiver tempo livre estarei fazendo um mini review dele por aqui.

segunda-feira, 1 de julho de 2013

A volta dos que não foram...

Depois de um tempo sem postar aqui, estou voltando. Andei com uns problemas pessoais, minhas férias foram adiadas e algumas coisas que eu achava que iria fazer nesse período acabaram sendo postergadas para outra oportunidade. Mas a minha idéia de escrever minhas anotações por aqui continua.
Não consegui fazer tudo o que eu imaginava estar fazendo. Fiz uns testes com a launchpad para MSP430 da Texas e gostei bastante. Testei a geração de formas de ondas utilizando módulo PWM já visando o controle de velocidade do carro microcontrolado que falei em alguns posts atrás e logo logo vai virar um post aqui, assim que eu conseguir escrever.
Tenho também algumas bugigangas chinesas que comprei nesse meio período que merecem um relato aqui.
Esse texto estou escrevendo no celular para testar o app do blogger, não sei se vai sair direito.