Une semaine de vacances en mai, parfait ! Reprenons le cahier des charges du câble de communication série pour Windows phone :

One week of vacation in may, perfect ! Functional specification of the serial communication cable for Windows phone:

  • Développer un port de communication bidirectionnel série pour le Windows phone avec une carte NetMF. To develop a serial bidirectional communication port between Windows phone and a NetMF board.
  • Ce port série devra être un vrai UART RS232 et donc pouvoir communiquer avec un terminal RS232 sur PC (avec 1 bit de Start, 8 bits de data, 1 bit de Stop, pas de parité). This port should be a real RS232 and so, it must communicate with an PC RS232 terminal (1 Start bit, 8 bits of data, 1 Stop bit, no parity) .
  • Le PCB devra être le moins cher possible, constitué uniquement de composants très répandus et ne pas utiliser de composants programmables). The PCB should be cheapest as possible, only constituted with common components and no programmable components.
  • La librairie du port série devra être compatible XNA et Silverlight. The serial port library sould be XNA and Silverlight compatible.
  • Le port série ne doit pas faire échouer une certification d’application au Marketplace WP (pas de bidouille dans le tel). A WP app made with this serial port library should be certified for the marketplace (no low level modification of the WP OS).
  • Pas de modification physique du smartphone. No physical modification of the smartphone.

 

Après examen des possibilités, il ne m’en reste qu’une :

Utiliser la sortie casque du smartphone pour le transformer en port RS232 bidirectionnel. Le port jack du Windows phone dispose d’une entrée microphone et de deux sorties audio (Stéréo droite et gauche), donc il y a largement tout ce qu’il faut. Reste à maitriser tout ça et à en faire un port série qui marche mais avant, regardons ce qu’on trouve sur le net.

After study of the different possibilities, it remains only one:

Use the audio jack of the smartphone to convert it into a bidirectionnal RS232 port. The Windows phone jack has 1 microphone input and 2 audio outputs (stereo Left + Right), so, there is everything we need. Now it stays to build a serial port that works but for now, let’s take a look on what we can find on the Internet about this.

 

Après quelques recherches, je suis tombé sur quelques sites intéressants développant eux aussi des interfaces RS232 pour smartphone par la prise casque. On en trouve pour Iphone et Android, ils sont tous basés sur l’utilisation d’un microcontrôleur. Certains utilisent de la modulation d’amplitude (AFK), la modulation de fréquence (FSK), certains utilisent un codage DTMF pour communiquer entre le microcontrôleur et le smartphone. Le microcontrôleur convertit alors le signal en signal RS232. J’ai également trouvé un projet japonais qui permet de relier un Iphone ou un Android par l’intermédiaire du port jack à un Arduino.

After some research, I found some interesting websites that developed their own RS232 interface for smartphones. We found some for Iphone or Android but they are all based on a microcontroller. They use amplitude modulation (AFK)  or frequency modulation (FSK) or DTMF code to communicate between the microcontroller and the smartphone. The microcontroller convert the signal into a real RS232 signal. I also found a japanese project which allows to link an Iphone or an Android through an audio jack to an Arduino.

Link 1Link 2Link 3

 

J’ai choisi de développer la librairie en XNA pour commencer parce que je développe des jeux sur WP principalement et donc je suis plus à l’aise avec XNA. En plus toutes les librairies de gestion des buffers de sons et du micro sont faites pour XNA et adaptées pour Silverlight ensuite, c’est donc plus simple de commencer comme ça.

 I chosen to develop the library in XNA first because I mainly develop games for WP so it was more comfortable for me. Second point, every libraries that manage sound buffer or microphone class are made for XNA and then adapted for Silverlight so it is easiest to start in XNA.

 

Au final voilà le résultat : Final result :

WPBotsSerialCable1

Ceci est mon premier prototype de câble série composé d’un PCB sur lequel on retrouve quelques composants standards (résistances, condensateurs et quelques CI) sans composants programmables ainsi qu’un connecteur jack 4 points TRRS du coté Windows phone et un connecteur 4 points de l’autre. Le code est compatible XNA et Silverlight et permet les performances suivantes (testé avec TeraTerm en USB sur PC et également avec une carte GHI NetMF FEZ Panda) :

  • Protocole RS232 : 1 bit de Start, 8 bits de Data, 1 bit de Stop, pas de parité.
  • Transmission : 9600 bps sans erreur.
  • Réception : 600 bps sans erreur (au-delà, apparition de quelques erreurs de transmission).

This is my first serial port cable prototype composed by a PCB on which we can find some common components (resistors, capacitors, and some IC) with no programmable components. In addition to that, a 4 points TRRS 3.5mm jack on the Windows phone side and a 4 points connector on the other. The library is compatible with XNA and Silverlight and allows the following performances (tested with TeraTerm in USB with a PC and with an GHI NetMF FEZ Panda board) :

  • RS232 protocol : 1 Start bit , 8 bits Data, 1 Stop bit , No parity.
  • TX : 9600 bps with no mistake.
  • RX : 600 bps with no mistake (At higher bandwidth, we can see some transmission error).

Le port de communication est en place, il permet un échange duplex à 600bps ou 9600/600 en utilisant 2 ports série sur les 4 dispos sur une GHI FEZ Panda. Je pense pouvoir monter la vitesse de réception en améliorant mon algo de décodage et en jouant sur les fréquences de modulations utilisées.

The communication port is done, it allows a duplex communication at 600bps or 9600/600 by using 2 serial ports on the 4 available on a GHI FEZ Panda. I think that I can rise the communication speed by improving my decoding algorithm and by playing on the frequencies used.

 

 

5 Responses to Windows Phone serial port – V1

  1. Hannah dit :

    Wowza, problem solved like it never happened.

  2. Hellen Reed dit :

    Thanks for the share!
    Hellen

  3. Vinzei dit :

    hi all I read your comment and I think you’re blog will be one of the bests if you keep up the good work!

  4. web design dit :

    great blog here

  5. Klaus dit :

    Fantastic work. Keep up the good work and advise when your component is ready for purchase.