Comunicação PIC <-> Bluetooth

Olá,

Pretendo criar um circuito no qual irá realizar comunicação via Bluetooth, o microcontrolador utilizado será o PIC 18F4550 e não quero usar um módulo mas sim um mini dongle, semelhante a dessa imagem:

Como não meche com shield e sim com um produto final, suspeito que tenha que se fazer um drive ou algo do tipo, alguém tem experiência com esse tipo de trabalho?

Não entendi, mas o fato é que você vai ter que utilizar um módulo… Acho que, pela tua postagem, você parece estar bem perdido…

Olá,
Por módulo eu me referi a shields semelhante a dessa imagem:

Em vez de usar esses shields pretendo utilizar um semelhante a imagem da primeira postagem.

Na verdade, tanto o dongle quanto o shield são “módulos”, a diferença pode estar apenas no CI controlador do Bluetooth e/ou na forma de conexão utilizada, em um utilizaram um core de USB para a conexão com o Host e no outro, provavelmente estão usando UART/SPI ou algum outro core para fazer essa conexão.

Um CI muito utilizado para criar este tipo de módulo é o Broadcom BCM2046 e, como pode verificar no Datasheet, ele suporta vários tipos de conexão, inclusive USB.

Creio que, para um microcontrolador PIC poder se comunicar com um módulo de Bluetooth por USB, agindo como Host do mesmo, o microcontrolador deve ter este tipo de conexão disponível, como eu nunca usei PIC, não sei se o 18F4550 tem USB disponível, caso contrário, você deverá usar um outro MCU que suporte USB ou usar um módulo de BT cujo CI suporte um tipo de conexão disponível no 18F4550.

Olá,

Esse PIC foi escolhido por ter a possibilidade de se comunicar através de uma USB. Infelizmente esse tipo de produto (dongle) é uma caixa preta, pelo menos nunca encontrei algum datasheet dele. Estou para receber alguns para realizar testes porém não tenho exemplos/códigos para me basear, tentarei modificar alguns códigos de exemplos de shields. Também possuo um Arduino Uno, caso a galera aqui tenha algum conhecimento para o arduino nessa área posso tentar “traduzir” para o PIC depois :smile:

O USB é um protocolo, sendo assim, segue regras padronizadas, por isso, nenhum datasheet entrará em detalhes sobre como realizar a conexão pois isso não é de responsabilidade do fabricante do CI, que já fez muito implementando esse meio de comunicação, a única coisa que deve fazer é usar a biblioteca de USB do PIC que está trabalhando, tendo em vista que ele disponibiliza um core de USB e programar a troca de informações “Master/Slave”.

Para Arduino UNO é impossível conectar-se com um dongle deste por protocolo USB por vias convencionais, tendo em vista que o ATmega328, MCU do UNO não dispõe de um core USB.

1 curtida

Olá!

O PIC18F4550 eu já usei por um tempo e possui funções de USB implementadas no hardware. Funciona legal demais a função USB deste mcu, utilizei como um HID e reconhece de pronto, Plug 'n Play, mas se não estou enganado, será sempre um dispositivo SLAVE.

Acho que o dongle também é SLAVE, e portanto, acho que a comunicação entre estes dois dispositivos não vai funcionar.

Se não estou errado, você precisa de um hardware que possa atuar como um MASTER, para poder ler do usb dongle. O Raspberry PI é um dispositivo MASTER, e com certeza funciona. Se for uma opção pra você, é garantido.

Tem alguma razão específica pra não querer usar o módulo BT?

1 curtida

Olá @rafaelvc creio que possa haver a comunicação, o protocolo de BT admite um um dispositivo possa assumir as duas funções alternadamente, ou seja, um dispositivo BT, como por exemplo: um fone, pode começar como master para poder realizar a comunicação, mas depois é mais interessante que ele entregue a função de master ao dispositivo conectado e fique como slave no restante do processo.

Olá,

Sim, os módulos que conheço tem um tamanho e preço maiores em consideração ao Dongle. A princípio ia utilizar o módulo BT porém tive essa sacada de usar o Dongle e estou estudando formas de faze-lo.

É, tenho um bom caminho para percorrer em entender esse conteúdo.

Oba!

São duas coisas que possuem a relação master/slave, o BT e o USB. O protocolo BT talvez possa de fato ser configurável, mas o usb não. E este dongle é um dispositivo USB além de ser BT.

Existe um tipo de dispositivo dentro da versão do 2.0 do protocolo USB, que é o USB On-The-Go (OTG), feito justamente pra definir provisoriamente quem é Master e quem é Slave. O objetivo é interligar dois dispositivos que não sejam um computador.

Parece que a família 24F da Microchip possui esta função de USB OTG, mas com o 18F não tem jeito, ele sempre será escravo. Uma opção pra você, Hegaja, pode ser usar este mcu da família 24F, mas pode ser bem mais complicado.

Aqui explica bem sobre o protocolo USB:
http://www.beyondlogic.org/usbnutshell/usb1.shtml

Valeu!!

1 curtida

Olá,

Muito obrigado pela dica! Qual MCU da 24F você me indicaria? (Estou de olho no PIC24HJ32GP202) O circuito não fará nada complexo, na verdade no princípio iria utilizar um microcontrolador da família 16F pois ele deveria apenas se comunicar com o host e controlar 2 TRIACs, fui para a 18F visando a comunicação e agora terei que migrar para a 24F pelo mesmo motivo. Ele se comunicará com um Host (raspberry) que fará todo o processamento pesado necessário.

Let’s Rock!

Oba Hegaja!

Na realidade eu não sei. Os únicos PICs 18F que trabalhei foram o 4550 e 2550 (que é quase igual ao anterior, mas como menos portas e pinos).

Eu recomendaria pra você começar a fazer alguma que coisa que funcione, conseguir algum projeto de alguém mais experiente, fazer o que o cara sugere fazer, e em seguida ir adaptando às suas necessidades, inclusive trocando emails e pedindo dicas se o sujeito permitir.

Eu fiz assim, e com uma pequena base consegui fazer algumas coisas bem interessantes. Meu ponto de partida foi este: http://zeitmedien.hfk-bremen.de/a-TECH/TechNotiz/Interaktiv/Create%20USB-Interface.pdf. Este PDF era um site que saiu do ar, deve ter ficado obsoleto, e hoje este produto evoluiu e existe uma versão bem mais top dele (https://www.sparkfun.com/products/retired/9645, http://overtone-labs.ning.com/profiles/blogs/first-project-of-overtone-labs).

Valeu, abração!