Bom, depois que fiz o post sobre o Energia, o Renne Takao M. Portal, fez uma publicação sobre comunicação serial usando esta IDE [1] e o William Antunes cobrou o teste com Bluetooth chegou a hora de ver a LaunchPad se comunicando sem fio!
Bom, a parte dificil disso tudo já foi explicada pelo amigo Renne Takao M. Portal, então basicamente neste post vou mostrar o dispositivo que utilizei, onde comprei, a documentação que achei dele na internet e ligação dos fios.
O Módulo Bluetooth que eu utilizei foi comprado no Goodluckbuy http://www.goodluckbuy.com/hc-05-bluetooth-serial-port-master-slave-one-bluetooth-serial-module.html. Na internet encontrei dois arquivos com especificações do mesmo. O Datasheet [2] e o Manual de comandos AT [3] . fazer a fiação foi bem fácil, bastando seguir a tabela abaixo:
Pino | Descrição |
1 | UART_TXD |
2 | UART_RXD |
3 | UART_CTS |
4 | UART_RTS |
9~11 | NA |
12 | 3.3V Supply input |
13 | GND |
14~20 | NA |
21,22 | GND |
23 | PIO0 Programmable IO port |
24 | PIO1 Programmable IO port |
25 | PIO2 Programmable IO port |
26 | PIO3 Programmable IO port |
27 | PIO4 Programmable IO port |
28 | PIO5 Programmable IO port |
29 | PIO6 Programmable IO port |
30 | PIO7 Programmable IO port |
31 | Operation Mode LED |
32 | Link Status LED |
33 | PIO10 Programmable IO port |
34 | PIO10 Programmable IO port |
Fiz a ligação mais simples possível. Usei apenas os pinos 1,2, 13 e 21. Note que seria bem interessante usar LED’s nos pinos 31 e 32, para acompanhar o status do dispositivo.
Este é o esquema da ligação que eu fiz.
Esta é a foto de como ficou. Como podem ver, coloquei um pouco de cola quente pois estava com medo de ficar muito frágil.
Este é um exemplo extremamente simples, apenas com intuitos didáticos, desta forma o único propósito dele e acender e apagar o LED ligado ao pino 6 da porta 1 da LaunchPad (P1.6, LED2).
O código funciona da seguinte forma: Ao receber o caractere ‘1’ via serial, o LED2 acende, ao receber o caractere ‘0’ o LED2 apaga. Sendo uma comunicação serial, o dispositivo Bluetooth é apenas o meio, podemos utilizar este mesmo código para fazer a comunicação diretamente da porta serial de um computador, usando um conversor de RS232 para TTL, com a LaunchPad.
Lembre-se de antes de usar este código dar uma olhada no artigo do Renne Takao M. Portal sobre comunicação serial [1] ou você pode ter problemas.
#include <TimerSerial.h> TimerSerial mySerial; // Create a new TimerSerial object char eChar = -1; // Variavel para armazenar o caractere recebido pela Serial int ledPin = 14; void setup(){ pinMode(ledPin, OUTPUT); mySerial.begin(); // only 9600 baud is supported } void loop(){ if (mySerial.available()){ eChar = mySerial.read(); if(eChar=='0'){ digitalWrite(ledPin, LOW); mySerial.println("Led Desligado!"); } else if(eChar=='1'){ digitalWrite(ledPin, HIGH); mySerial.println("Led Ligado!"); } } }
Uma vez o disposito conectado, agora vamos parear a LaunchPad com o Computador. No meu caso, estou usando OSX, mas acredito que não deve haver dificuldades para fazer o mesmo no Windows ou no Linux. Eu nunca nem tinha feito isso no OSX e consegui! De toda forma, se alguém tiver alguma dificuldade especifica com outro Sistema Operacional, posta aqui que eu tento ajudar a resolver.
Vamos lá… Configurar o Dispositivo Bluetooth.
Veja que apareceu um tal de linvor, este é o nome padrão deste dispositvo, caso você queria alterar este nome, deve dar uma olhada nos comandos AT.
Clique em Opções de Código… para entrarmos com o código de pareamento padrão deste dispositivo.
Eu não inventei este 1234 não, encontrei no manual de comandos AT.
Como você pode ver na mensagem, uma porta serial foi criada, caso esteja usando o Windows, acredito que após parear o dispositivo uma porta do tipo COMXX deverá ser criada também.
No meu caso, o dispositvo /dev/tty.linvor-DevB-1 foi criado, e vamos agora comunicar com a LaunchPad via serial usando Python. No OSX e no Linux o Python vem instalado, já quem estiver usando windows vai ter que instalar, mas não é nenhum bicho de sete cabeças. Basta acessar o endereço http://python.org/download/, baixar e instalar.
Para se comunicar usando uma porta serial com Python, vamos utilizar o PySerial. Você pode fazer o download diretamente no site do projeto (http://pyserial.sourceforge.net/). Ou instalar via pip ou easy_install.
Uma vez instalado o PySerial, vamos usar o interpretador do Python para testar nossa comunicação. Para isso abra um terminal, caso esteja no windows um prompt de comandos, e execute o Python.
MacBook-Air-de-Terry-Laundos:~ terrylaundos$ python Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import serial >>> ser = serial.Serial(port='/dev/tty.linvor-DevB-1') >>> cmd = ser.write('1') >>> print ser.readline() Led Ligado! >>> cmd = ser.write('0') >>> print ser.readline() Led Desligado!
E para finalizar um vídeo…
Que vídeo cachorro hein!? Valeu, até mais…
[1] Enviando Dados Pela Porta Serial na placa LaunchPad MSP430 Utilizando o ambiente ENERGIA
[2] BTM-5 Bluetooth – Wireless TTL Master/Slave Transceiver Module – Datasheet
[3] BTM-5 Bluetooth – Wireless TTL Master/Slave Transceiver Module – AT Command User Guide
Fiquem atentos quando forem comprar o modulo bluetooth, pois existem modelos muito semelhantes no preço e na documentação, mas na pratica não aceitam comandos AT. Foi o caso de um modulo comprado na sure electronics GP-CG021. Somente aceita modo slave e não recebe comandos AT.
Muito Bom!
Não é que essa energia funciona mesmo!?
Parabéns pelo post Terry!
Agora só falta convencer seu chefe de por o BT no projeto! Hehehehe .. abraços!
Cara, eu vo fazer a mesma coisa esse semestre como projeto…. Isso aqui ja ajudou bastante
Realmente Terry é muito legal esse chip! gostei tb dessa IDE pelo que vi posso pegar sketchs do arduino abrir nela e enviar para o MSP430 pelo Energia… me indica um modelo do LaunchPad para eu brincar!!!
Camarada, estou precisando de uma ajuda, vc ainda mantém este blog ? obrigado.
Opa Carlos, desculpe a demora… estou um pouco atarefado 😀 Mas pretendo manter o Blog sim, em que posso ajudar?
MUITO BOM CARA!!!!!!!
Que massa Jhonatas, que você passou no Blog, poderia dar umas dicas de posts novos 😀 Abraços.
Boa noite Terry, só para registrar uma passadinha aqui pelo blog. Muito massa.
Reginaldo
Americana-SP