.NET Microframework: du code, de l’électronique, de la robotique
Prochain SlideShare
Loading in...5
×

Vous aimez ? Partagez donc ce contenu avec votre réseau

Partager

.NET Microframework: du code, de l’électronique, de la robotique

  • 286 vues
Uploaded on

Envie de se faire plaisir le soir ? Envie de faire vibrer des canards ? Envie de développer quelque chose de WAF et super Geek ? Alors, cette session est pour toi :-) .NET Microframework est une......

Envie de se faire plaisir le soir ? Envie de faire vibrer des canards ? Envie de développer quelque chose de WAF et super Geek ? Alors, cette session est pour toi :-) .NET Microframework est une technologie open source permettant de réaliser des robots, des modules intelligents, le tout sans aucun OS. Cette session montra par des exemples concerts comment réaliser des automates et les piloter à travers des interfaces web. Exemple concret avec un arrosage automatique entièrement pilotable depuis l'autre bout du monde.

  • Full Name Full Name Comment goes here.
    Êtes-vous sûr de vouloir
    Votre message apparaîtra ici
    Be the first to comment
    Be the first to like this
No Downloads

Vues

Total des vues
286
Sur Slideshare
286
From Embeds
0
Nombre d'ajouts
0

Actions

Partages
Téléchargements
6
Commentaires
0
J'aime
0

Ajouts 0

No embeds

Signaler un contenu

Signalé comme inapproprié Signaler comme inapproprié
Signaler comme inapproprié

Indiquez la raison pour laquelle vous avez signalé cette présentation comme n'étant pas appropriée.

Annuler
    No notes for slide
  • Notation

Transcript

  • 1. Donnez votre avis ! Depuis votre smartphone, sur : http://notes.mstechdays.frDe nombreux lots à gagner toutes les heures !!! Claviers, souris et jeux Microsoft… http://notes.mstechdays.fr Merci de nous aider à améliorer les TechDays
  • 2. .NET Microframework : du code, delélectronique, de la robotique2013-02-12Laurent EllerbachAudience Marketing DirectorMicrosoft Central and Eastern Europe
  • 3. Agenda• .NET Microframework• Démo « Hello Led »• Démo « Mon premier serveur HTTP »• Démo « Gérer mon arrosage automatique »• Démo « Piloter un train Lego en infrarouge et gérer des servos moteurs »
  • 4. .NET Micro Framework .NET pour les processeurs à bas .NET Microframework pour coûts • Directement sur du métal • Petite et configurable empreinte • ARM7 @ 20-40 Mhz • ARM9 @ 200 Mhz • ~ 300 Ko de RAM • 1 Mo de mémoire Flash/ROM Compatibilité .NET • Différentes versions • Sélections des classes clientes • Support spécifique pour l’embarqué • Un jeu de classe limité mais très riche
  • 5. NETMF Modèle Open Source• Open Source collaboratif• Release History – V. 4.0 (Nov 2009) entièrement Microsoft – V. 4.1 (Juin 2010) petites contributions communautaires – V 4.2 (Eté 2011) > 30% contributions communautaires – Site hébergé sur un domaine non-Microsoft – netmf.com – Partenaires communautaires • tinyclr.com, netduino.com• Portages de Atmel, NXP, Renasas, TI, ST Micro…
  • 6. Namespaces Partial implementation Same as .NET Fx System.Windows System.Windows.Controls Window Border ListView System.Windows.Input Button RadioButton System.Data Keyboard/GPIO CheckBox ScrollViewer Mouse Panel StackPanel System.XML Stylus Image TextBox Reader ListBox UIElement Writer System.Forms System.Drawing System Collections Globalization Diagnostics System.Service.Model Security Reflection Runtime DPWS Discovery Remoting Threading IO Serialization DPWS Eventing Resources NET/HTTP Compiler Svcs DPWS Addressing Managed Drivers DPWS Transfer SerialPort I2C/SPI A/D Power Mgmt Proxy Discovery USB GPIO PWM Watchdog
  • 7. Par où commencer?• 1 board tel que Netduino – Prendre la version Netduino Plus avec suport réseau et SD pour 50€ environ• Le SDK – Gratuit• Visual Studio Express (C#) Processeur et mémoire – Gratuit Atmel 32-bit microcontroller Vitesse : 48MHz, ARM7• …et surtout une bonne idée Espace de stockage pour le pour construire quelque chose code: 64 KB, sans réseau: 128 de sympa  KB RAM: 28 KB, sans réseau: 60 KB
  • 8. Mon premier projet Hello Led 
  • 9. Un peu de Hard • Tout ce qu’il y a connaître : U = R x I• Utiliser une led sur un output pin (3,3V sur Netduino)• 1 led = 2 V environ, courant 0,02A• R = (3,3 – 2)/0,02 = 65 Ohms
  • 10. demoBen oui, on va la faire clignoter cette led…
  • 11. Plus de Hard• Réutilisation d’un capteur compte tour sur un vieux disque dur d’il y a 15 ans • Faire clignoter la led quand le capteur de lumière est obturé 2V (red) Digital IO (yellow) Ground (black)
  • 12. Example d’entrée analogique• Capteur de lumière agit comme une résistance 1M Ω (noir complet) à 100 Ω (lumière intense) +3.3V• R = √(1M x 100) = 10K Ω 10K R• Entrée analogique = Ω Entrée 3.3/(1+R/RL) analogiq ue• Varie de 0.0323V RL (lumière intense) à 3.23V Ground (noir)
  • 13. demoInterruptions, débuggage et analogique
  • 14. Mon premier serveur Web
  • 15. Implémenté un serveur Web• Partir de l’exemple Web ServerComment ça fonctionne• 1 thread par protocole = 1 pour http• 1 handler pour processer toutes les requêtes (GET et POST)• 1 fonction pour processer GET• 1 fonction pour processer POST• 1 fonction pour retourner un fichier du stockage (par morceau car la taille des buffers est limitée)• 1 fonction d’upload de fichier vers le stockage (par morceau car la taille des buffers est limitée)• Plein d’autres fonctions pour faire fonctionner le tout• Très bon exemple complet qui implémente beaucoup de bonnes pratiques
  • 16. demoEmulateur
  • 17. Simplifier le serveur Web• Enlever le code lié à https• Enlever le code lié à POST si GET uniquement utilisé• Enlever le code lié au transfère de fichier si non utilisé• Enlever le code lié à la gestion des répertoires et stockage si pas besoin d’accès aux fichiers• Enlever ce genre de choses • Ajouter une fonction qui permet de lire les paramètres passer en URL• Ajouter du code pour gérer les pages en GET• Ajouter du code pour gérer vos propres pages
  • 18. Finalement, je réécris mon serveur web • Ecouter ce qu’il se passe sur un port (80 par défaut) avec des Socket• Lire les données quand il y a quand il y a quelque chose à lire• Interpréter les headers du protocole HTTP• Créer une réponse• Renvoyer le tout• Le code minimum = 10 lignes • Quelques try, catch, événement et 2 trois trucs pour faire joli• Une trentaine de lignes de code pour un serveur web robuste
  • 19. demoAller, je vous montre les 10 lignes nécessaire au serveurWeb 
  • 20. Gérer mon arrosage automatique
  • 21. Un boitier propre avec arrivée réseau. AutomateCrouzet
  • 22. Des électrovannes 24V courant continue
  • 23. Comment ça marche? Netduino http Client utilisant 2 Pages pour gérer le un simple calendrier et la navigateur programmation 1 Page pour ouvrir/fermer Utilisation en les arroseurs production tout l’été 1 Page pour gérer la  programmation Timer pour lancer les arrosages
  • 24. Capteur d’humidité
  • 25. Données… Comment faire pour avoir un signal propre? 1 acquisition par minute
  • 26. Les 2 optionsHard Soft• Bon capteur = bonne donnée • Donnée non exacte• Coût de production plus élevé • Temps de développement• Complexité matérielle • Complexité logicielle, temps de traitement Quoi choisir ???
  • 27. Filtre logiciel (1/4) Période de 15 points
  • 28. Filtre logiciel (2/4) Période de 60 points
  • 29. Filtre logiciel (3/4) Vert = arrosage, rouge = pluie Période de 60 points
  • 30. Filtre logiciel (4/4) Vert = arrosage, rouge = pluie Période de 600 points
  • 31. Piloter des éléments infrarouge Lego
  • 32. Pourquoi?• Remplacer ça… …par ça
  • 33. Envoyer des infos en infrarouge• Les protocoles infrarouge sont compliqués• Utilisation d’un « hack » avec SPI pour créer l’onde et l’envoyer telle quelle
  • 34. Le hard
  • 35. Piloter des servo moteur• Servo moteur se pilotent en envoyant des trains d’onde pour atteindre un angle spécifique• Utilisation de PWM pour créer les bons trains d’onde• Multiplexage pour en piloter plein
  • 36. demoPiloter mon train Lego
  • 37. Trucs et astuces• Try catch partout…• Les buffers sont limités (1024 in most small ARM)• System.Threading.Thread.Sleep(100);• Compromis entre joli code et code efficace: la taille, ça compte• La sécurité, c’est important, à prendre en compte dès le design• U=RI• if (Microsoft.SPOT.Hardware.SystemInfo.IsEmulator) strDefaultDir = "WINFS"; else strDefaultDir = "SD";• localhost:81 utilisé par l’émulateur pour un serveur web
  • 38. Resources• SDK download: http://netmf.codeplex.com/releases/view/52341• .NET Microframework sources: http://netmf.codeplex.com/• Visual Studio Express: http://www.microsoft.com/visualstudio/en- us/products/2010-editions/express• Netduino: http://www.netduino.com/• Blogs et liens utiles: – http://blogs.msdn.com/laurelle² – http://www.netmf.com – http://blogs.msdn.com/netmf – http://blogs.msdn.com/netmfteam – http://www.tinyclr.com/ – http://nerduino.wordpress.com/ – http://www.ghielectronics.com/downloads/FEZ/Beginners%20guide%20to%20NETMF.pdf – http://www.ghielectronics.com/catalog/category/265/
  • 39. Questions ? Laurent Ellerbach laurelle@microsoft.comhttp://blogs.msdn.com/laurelle
  • 40. Développeurs Pros de l’IT http://aka.ms/generation-app Formez-vous en ligne www.microsoftvirtualacademy.com http://aka.ms/evenements- developpeurs Retrouvez nos évènements http://aka.ms/itcamps-france Les accélérateurs Faites-vous accompagnerWindows Azure, Windows Phone, gratuitement Windows 8 Essayer gratuitement nos http://aka.ms/telechargements solutions IT La Dev’Team sur MSDN Retrouver nos experts L’IT Team sur TechNet http://aka.ms/devteam Microsoft http://aka.ms/itteam