WPBotsPrinter1

Envie d’imprimer avec son Windows Phone ? Aucun problème. Il nous faut un Windows Phone accompagné de son fameux câble port série. On y ajoute un convertisseur de niveau TTL vers RS232 de façon à transformer le signal 0 5 Volt en 10 -10 Volt à l’aide d’un CI MAX232A et de 5 condensateurs 0.1µF. On raccorde le tout sur une petite imprimante RS232 (Configuré en mode EPL1_LineMode) et c’est parti !

Want to print with your Windows Phone ? No trouble. We need a Windows Phone with its wellknown serial port cable. We add a TTL-to-RS232 level converter to convert the 0 5 volt signal into a 10 -10volt one by using a MAX232A CI and 5 capacitors (0.1µF). We connect all that stuff with a little RS232 printer (setup in EPL1_LineMode mode) and Let’s go!

WPBotsPrinter2

 

WPBotsGP2D12

 

Une autre application du « port série Windows Phone » pour préparer le robot : la mesure de distance (avec capteur IR SHARP GP2D12, portée 10-80cm).

Another application of the « Windows Phone serial port » to prepare the robot : distance measurement (with IR sensor SHARP GP2D12, range of measuring 10 to 80cm).

 

Voilà une vue CAO rapide du premier robot Windows Phone que je veux réaliser. C’est un robot très simple. L’idée était de faire un robot vraiment bon marché.

Here is a quick CAD view of the fist Windows Phone robot that I want to make. It is a very simple robot. The idea was to make a robot really cheap.

Comme vous pouvez le voir sur le dessin, il est composé de :

  • 2 servos à rotation continue qui entraine 2 chenilles par l’intermédiaire de 2 roues motrices et 2 roues libres
  • 1 capteur IR de distance SHARP GP2D12
  • 1 Windows Phone posé sur une mousse adhésive + son cable port série + 1 FEZ Panda
  • 1 étage d’alimentation composé d’une pile 9v dans son holder. Cette tension est régulée en 5v par un régulateur linéaire (LM7805)
  • Le tout est fixé sur une plaque de Plexi par l’intermédiaire de petites équerres en plastiques.

 As you can see on the drawing, it is made with:

  • 2 continus rotation servos which drive 2 carterpillar tracks via 2 driving wheels and 2 free wheels.
  • 1 IR distance measuring sensor SHARP GP2D12
  • 1 Windows Phone on its adhesive foam + its serial port cable + 1 FEZ Panda
  • 1 power supply stage made with a 9v battery and its holder. This voltage is reduced and regulated to 5v by a linear regulator (LM7805).
  • Each part is fixed on a Plexi plate by plastic brackets.

 

 

 

 

 

A l’aide du câble port série, il est maintenant possible de relier un clavier USB à Windows Phone. La carte NetMF  GHI FEZ Domino dispose d’un port USB hôte. Moyennant un petit code d’une dizaine de lignes en C#, il est facile de lire l’état du clavier et d’envoyer chaque frappe sur le port série. Le WP récupère alors les données et les affiche à l’écran dans un buffer circulaire.

With the help of the serial port cable, it is now possible to link a USB keyboard to a Windows Phone. The NetMF GHI FEZ Domino board has a USB Host port. With 10 lines of C#, it is easy to read the status of the keyboard and to send each key to the serial port. The WP receives the data and shows them on the screen in a ring buffer.

 

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.

 

 

Voilà quelques réalisations qui utilisent Windows phone :

Here are some work that use Windows Phone :

La chaine Youtube de alanbeech1. Il a fait quelques réalisations sur base de WP + Netduino, le tout relié par un service WCF.

alanbeech1 Youtube channel. He made some stuff with WP + Netduino + WCF service.

http://www.youtube.com/user/alanbeech1#p/

Voilà un autre robot utilisant Windows Phone :

Here is another robot using Windows phone:

R2D2 contrôlé par Windows phone (ici aussi, à l’aide d’un service WCF) :

R2D2 controlled by Windows phone (here too, with the help of a WCF service):

Et le blog associé. And the associated blog.