Energia, MSP430 LaunchPad e Bluetooth com Python

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.

Vamos agora ao código.

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

9 pensou em “Energia, MSP430 LaunchPad e Bluetooth com Python

  1. 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.

  2. 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!

  3. 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!!!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.