J’aime le C#, Visual Studio, Windows phone (WP), .Net Micro Framework (NetMF) et plus que ça, j’aime les robots. C’est pour ça que ce blog est ici. Pour parler d’un sujet réunissant tous ces thèmes, à savoir, les robots utilisant Windows Phone.

I like C#, Visual Studio, Windows Phone (WP), .Net Micro Framework (NetMF) and more than this, I like robots. This is why this blog is here.  To talk about a subject which merges all those themes : Robots using Windows Phone. Au commencement: In the beginning :

Je suis utilisateur de carte à base de .Net Micro Framework depuis quelques temps maintenant. Pour ceux qui ne savent pas ce que c’est, ce sont des cartes de développement (Dans le style des cartes Arduino) mais dont le microcontrôleur (Architecture ARM 32Bits : ARM7, ARM9, Cortex-M par exemple)  fait tourner un CLR (Common Language Runtime) .Net qui est une ré-implémentation de la version Desktop à destination des systèmes embarqués : le .Net MicroFramework (NetMF).

I am a NetMF development board user since a while now. For those who don’t know what it is, This is dev boards (like Arduino) but where the microcontroller (32bits ARM architecture : ARM7, ARM9, Cortex-M for example) runs a CLR (Common Language Runtime) .Net which is a re-implementation of the desktop version for embedded devices :  .Net MicroFramework (NetMF).

NetMF Logo

Ces cartes sont vraiment bien pour tous les codeurs qui veulent se mettre à faire des robots ou tout autres développements électroniques avec microcontrôleur embarqué et le tout avec la puissance du C# et de Visual studio :

Those boards are great for every coders who want to build robots or every others electronics with microcontroller development and all that with the strength of the C# and Visual Studio :

  • On garde son IDE favori. We keep our favorite IDE.
  • Codage en C# avec tous les avantages de l’orienté objet et du code managé (plus besoin de gérer la mémoire, le garbade collector est là pour nous). C# programming with all the advantages brought by object-oriented programming and managed code (no more need to deal with memory management, the garbage collector is here for us).
  • Développement multi-thread. Multithread development.
  • Débuggage temps réel  par USB  sur émulateur ou bien directement dans la carte finale. Real-time debugging through USB on the emulator or directly in the real device.
  • Toutes les librairies nécessaires pour faire un système déjà en place (IO digitales, analogiques, PWM, Communication UART, I2C, SPI, CAN, Ecriture sur SD Card, port USB Hote, Real time clock, …). All the libraries needed to make a complete system are already in place (digital IO, analog IO, PWM, UART communication, I2C, SPI, CAN, SD Card recording, USB host port, Real time clock, …).

Et le tout pour quelques euros (à partir de 30€). And all that for some Euros. (Starting at 30€).

 

GHI Electronics est un des fabricants de carte de développement tournant sous NetMF. GHI Electronics is a manufacturer of NetMF dev boards.

FEZ DominoComparaison des cartes de la gamme FEZ. Comparison between the different FEZ products.

FEZ boards comparison

Le site de la communauté des cartes FEZ de chez GHI ELectronics : TinyCLR.  .Net Micro Framework from GHI Electronics community website: TinyCLR.

Un autre fabricant de carte NetMF connu : Netduino. Another well-known NetMF board manufacturer: Netduino.

Netduino

Quelques cartes NetMF que j’utilise. Here are some NetMF boards that I use.

My FEZ

Il y a quelques mois, Google a sorti pour son OS Android un kit de développement appelé « Android Open Accessory Dev Kit » qui permet de piloter une carte de dev spéciale basée sur Arduino  avec un telephone  Android.

Few months ago, Google has launched, for its OS Android, a sdk called « Android Open Accessory Dev Kit » which allows to control a specific dev board based on Arduino with an Android cellphone.


Link 1Link 2

D’autres tentatives non officielles existaient déjà sous Android comme la carte IOIO qui permet de disposer une carte de dev connectée à Android par USB également.

There was already non official ways to do it under Android like the IOIO board which is a dev board connected to an Android phone through USB.

IOIOLink 1Link 2

Certains utilisent d’autres moyens pour relier leur téléphone avec une carte de dev comme par exemple en utilisant le capteur boussole des téléphones Android pour créer une liaison unidirectionnelle bas débit (300bps).

Some people used other ways to connect their phone to a dev board like for example by using the compass sensor from their Android phone to create a unidirectional low bandwidth (300bps) channel between a dev board and a cellphone.

[Link 1 : US official]     [Link 2 : FR]

Au niveau de l’Iphone, certains hackers ont eux aussi connecté des cartes de type Arduino à leur smartphone mais pour avoir accès au port série du mobile, il faut disposer d’un tel jailbreaké. Adieu donc, les applis certifiés pour le Marketplace.

On Iphone side, some people have connected dev board to their smartphone but they need to have a jailbreaked phone to use the USB port of the dock connector.

Il existe même un site regroupant les développements de robot sur base de cellphone. Site assez orienté Android évidemment, pas de trace de Windows phone, il faut remédier à ça !

There is a website dedicated to robot made with cellphone. This website is Android oriented of course, no trace of Windows phone, we have to fix this!

Cellbots

 

Microsoft a tout pour faire quelque chose d’équivalent et même mieux :

Microsoft has everything to do something equivalent or even better:

  • un super os mobile : WP. A great OS for smartphone: WP.
  • différentes cartes de dev hyper bien faites qui tournent avec  NetMF. Several dev boards really well  made running under NetMF.

Le problème, il n’y a pas de port de COM sur les WP :

  • Pas de communication série via USB
  • Pas de SPP en Bluetooth (Serial port profile)
  • Pas d’IRDA

Les sockets TCP/IP par le WIFI vont être accessibles avec la mise à jour Mango, il faudra tester ça à ce moment. Reste les services WCF que certains utilisent mais qui nécessitent un serveur.

The trouble is that there is no COM port on WP:

  • No serial communication through USB
  • No Bluetooth SPP(Serial port profile)
  • NO IRDA

TCP/IP Sockets via WIFI will be available with the Mango update.  We will have to test it. Last solution, WCF services used by some people but which require a server.

 

Comme rien n’est prévu pour l’instant, j’ai décidé de le faire moi-même avec les contraintes suivantes :

As nothing is planned to be done for now, I decided to do it myself with the following constraints:

  • 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 RS232 (avec 1 bit de Start, 8 bits de data, 1 bit de Stop, pas de parité). This port should be a real RS232 (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 mobile. No physical modification of the cellphone.

Ceci étant fait, il sera possible de relier un Windows phone à une carte NetMF et de disposer d’une plateforme de contrôle robotique complète pilotée par un WP et totalement développée en C#. Le WP s’occupe de l’intelligence et aussi d’une partie de la couche sensorielle avec ses capteurs (accelero, boussole, gyro, camera, interface tactile, WIFI). Le gyro et la camera seront disponibles avec la mise à jour Mango. La carte NetMF  s’occupe de la partie pilotage des actionneurs et de la seconde partie sensorielle (gestion des moteurs, capteurs divers, …). Le tout est relié par une interface série RS232 permettant à la carte NetMF  d’envoyer les informations récupérées au WP qui de son côté doit traiter toutes les infos récupérées et envoyer les ordres de commande en retour ainsi qu’afficher des informations à l’écran.

With this, it will be possible to link a Windows phone to a NetMF board to have a robotic control platform driven by a WP and totally programmed in C#. The WP manages the intelligence and also a part of the sensorial layer with its own sensors (accelero, compass, gyro, camera, tactil interface, WIFI). Gyro and camera will be available with the Mango update. The NetMF board manages the control of the actuators and the second part of the sensorial layer (actuator management, miscellaneous sensors , …).

Ce câble série (avec sa librairie) transforme également un WP en un terminal de communication série, lui permettant de prendre le contrôle d’une multitude d’appareils comme des imprimantes, des écrans alphanumériques et LCD, des PC, des appareils industriels et tout ce qui possède un port RS232.

The serial cable (with its library) turns also the WP into a serial communication terminal which allows the phone to take the control of a bunch of devices like some printers, some alphanumeric and LCD screens, PC, some industrial devices and all devices with a RS232 port.