Pour résumer le dernier défi : l’idée était de réaliser une transmission série sans fil depuis le Windows Phone alors que l’OS ne propose pas le profil Bluetooth SPP. La proposition : Utiliser le profil Bluetooth A2DP pour streamer le signal envoyé au port série pour Windows Phone qui marche normalement sur le port audio du Smartphone.

To summarize the last challenge : The idea is to make a wireless transmission from the Windows Phone although the OS doesn’t propose the SPP Bluetooth profile. The proposal : Use the A2DP Bluetooth profile to stream the signal sent to the Windows Phone serial port which works usually on the audio port of the Smartphone .

Donc finalement, j’ai reçu le récepteur Bluetooth A2DP de chez Nokia (11j après …). Et ça ne marche pas !

Double problème :

  • Le récepteur s’active bien quand j’envoie de la musique mais pas quand j’envoie le signal série.
  • Quand j’envoie de très longues trames, la première trame passe mais le signal est modifié et donc les caractères envoyés sont mauvais.

En fouillant, on peut lire que le BH-111 de Nokia dispose d’un filtrage numérique (DSP) du signal permettant de traiter le son. Cela pourrait être la cause du problème numéro 2.

So finally, I have received the A2DP Bluetooth receiver from Nokia (11 days after …) And it doesn’t work !

Double trouble :

  • The receiver is well activated when I send some music but not when I send the serial signal.
  • When I send some very long frames, the first one is received but the signal is modified and so, characters sent are wrong.

By searching, We can read that the Nokia BH-111 has a numerical filter (DSP) of the signal allowing to treat the sound. That could be the cause of the second trouble.

Je décide d’acheter un autre modèle qui ne présente pas cette caractéristique : Le Sony Ericsson MW600.
Ce modèle est plus cher mais possède un écran OLED, une meilleure autonomie, la radio FM et est vraiment petit.

I decided to buy another receiver which does not present the same feature : The Sony MW600.
This receiver is more expensive but it has a OLED screen, a better autonomy, a FM radio and is really small.

Je recommence les tests. Ça ne marche toujours pas mais ça s’annonce un peu mieux.
Le récepteur ne s’active que lors de l’envoi de la première trame puis ne reçoit plus rien. Par contre, la trame qui passe est correcte (l’hypothèse du traitement du signal du Nokia se confirme).

Je m’attaque alors au problème restant, faire en sorte que le récepteur reçoive bien les trames sans se couper.
Vu que la musique est correctement streamer, mon hypothèse est que l’envoi d’un signal continu permet de garder le récepteur actif. Si l’envoi du son est trop court, alors le récepteur ne s’active pas (genre de filtrage de pic parasite).

Pour valider ceci, je génère un bruit blanc en temps réel. Le récepteur le reçoit sans problème et sans coupure à partir du moment où sa durée est suffisante. Hypothèse confirmée : en jouant un son continu, le récepteur reste connecté. Je peux donc utiliser un bruit blanc faible et continu de façon à garder la connexion.

Reste alors à mettre en place une façon d’envoyer mes signaux séries entre le bruit blanc.
Je modifie le soft pour générer des petits buffers PCM (105 ms) de bruit blanc faible amplitude que j’envoie sur le buffer audio du Windows Phone.
La faible amplitude permet de garder le récepteur actif sans être pris en compte par le port série pour Windows Phone connecté au récepteur et donc de ne pas générer de trame fantôme au repos.

Lorsque je veux envoyer une trame série, j’intercale le buffer PCM créé en temps réel contenant le message série dans la pile du buffer audio du Windows Phone. Le signal série arrive donc au niveau du récepteur sous forme de signal audio puis est convertit en signal RS232 TTL par le port série pour Windows Phone connecté au récepteur Bluetooth A2DP.

I start the test again. It still doesn’t work but it looks like it is a little bit better.
The receiver is activated only when the first frame is sent then nothing. On the other side, the frame which is sent is correct (the signal processing assumption from the Nokia receiver is confirmed).

I tackle the remaining trouble : Make that the receiver will receive every frame without cut off.
Because the music is properly streamed, my assumption is that the streaming of a continuous signal allows to keep the receiver activated. If the streaming is too short, so the receiver is not going to be activated (kind of filter for peak noise).

To validate this, I generate a white noise in real time. The receiver receives it without trouble and without cut off if the signal duration is sufficient. Assumption confirmed : by playing a continuous sound, the receiver stays connected. So I can use a low amplitude white noise in continuous in order to keep the connexion.

Remaining action : Put in place a way to send serial signals between the white noise.
I have changed the software to generate some small PCM buffers (105ms) of low amplitude white noise that I send on the Windows Phone audio buffer.
The low amplitude allows to keep the receiver activated without being taken into account by the Windows Phone serial port connected to the receiver and So, not to generate ghost frame in standby.

When I want to send a serial frame, I interpose the PCM buffer created in real time containing the serial message into the Windows Phone audio buffer stack. The serial signal arrives to the receiver under an audio signal then it is converted into a TTL RS232 signal by the Windows Phone serial port connected the the A2DP Bluetooth receiver.

Évidemment tout ceci ne marche qu’en transmission avec les performances suivantes : RS232 TX niveau TTL 9600 bps sur 100m de portée (Bluetooth)
Les trames reçues sont très propres mais pas autant qu’avec la connexion sur le port audio du Smartphone qui est parfaite.
Il y a de temps en temps quelques caractères parasites qui sont générés en plus mais les caractères envoyés sont toujours reçu sans erreur.
Je pilote donc maintenant mon petit robot en Bluetooth avec Windows Phone. Mission accomplie!

Pour le prochain article, un nouveau robot. Rendez-vous bientôt.

Obviously, all that things work only in transmission with the following performances : RS232 TX TTL Level 9600 bps over a 100m range (Bluetooth).
The received frames are very clean but not as clean as the ones with the connexion on the audio port of the Smartphone which are perfect.
There is from time to time some parasite characters which are generated in addition but the sent characters are always received without error.
So now, I control my little robot through Bluetooth with Windows Phone. Mission accomplished !

For the next article, a new robot. See you soon.

 

One Response to Windows Phone Bluetooth serial port – It works !

  1. proform reviews dit :

    楼主很有才华!