net microframework: du code, de l’électronique, de la robotique
DESCRIPTION
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.TRANSCRIPT
Donnez votre avis !Depuis votre smartphone, sur : http://notes.mstechdays.fr
De nombreux lots à gagner toutes les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les TechDays
http://notes.mstechdays.fr
2013-02-12Laurent EllerbachAudience Marketing Director Microsoft Central and Eastern Europe
.NET Microframework : du code, de l'électronique, de la robotique
• .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 »
Agenda
.NET Micro Framework.NET pour les processeurs à bas 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/ROMCompatibilité .NET• Différentes versions• Sélections des classes clientes• Support spécifique pour
l’embarqué• Un jeu de classe limité mais très
riche
.NET Microframework pour
• 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…
NETMF Modèle Open Source
NamespacesSystem.Windows System.Windows.Controls
Window Border
Image
Panel
CheckBox
Button
ListBox
ListView
RadioButton
ScrollViewer
UIElement
TextBox
StackPanel
System.Windows.Input
Stylus
Mouse
Keyboard/GPIO
System.Forms
System.Data
System.XML
Writer
Reader
System.Drawing System
Collections
IO
Resources
Threading
Security
Globalization
Reflection
NET/HTTP
Diagnostics
Compiler Svcs
RuntimeRemoting
Serialization
System.Service.Model
DPWS Addressing
DPWS Eventing
DPWS Discovery
Proxy Discovery
DPWS TransferManaged Drivers
I2C/SPI
USB
SerialPort
GPIO Watchdog
Power MgmtA/D
PWM
Partial implementationSame as .NET Fx
• 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#)– Gratuit
• …et surtout une bonne idée pour construire quelque chose de sympa
Par où commencer?
Processeur et mémoireAtmel 32-bit microcontrollerVitesse : 48MHz, ARM7Espace de stockage pour le code: 64 KB, sans réseau: 128 KBRAM: 28 KB, sans réseau: 60 KB
Mon premier projetHello Led
• 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
Un peu de Hard
demoBen oui, on va la faire clignoter cette led…
• 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é
Plus de Hard
Ground (black)
2V (red) Digital IO (yellow)
• Capteur de lumière agit comme une résistance 1M Ω (noir complet) à 100 Ω (lumière intense)
• R = √(1M x 100) = 10K Ω• Entrée analogique =
3.3/(1+R/RL)• Varie de 0.0323V
(lumière intense) à 3.23V (noir)
Example d’entrée analogique
Ground
+3.3V
Entrée analogique
10KΩ
R
RL
demoInterruptions, débuggage et analogique
Mon premier serveur Web
• Partir de l’exemple Web Server
Comment ç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
Implémenté un serveur Web
demoEmulateur
• 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
Simplifier le 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
Finalement, je réécris mon serveur web
demoAller, je vous montre les 10 lignes nécessaire au serveur Web
Gérer mon arrosage automatique
Un boitier propre avec arrivée réseau. Automate Crouzet
Des électrovannes 24V courant continue
Comment ça marche?Netduino
http
1 Page pour gérer la programmation
1 Page pour ouvrir/fermer les arroseurs
Client utilisant un simple navigateur
2 Pages pour gérer le calendrier et la programmation
Timer pour lancer les arrosages
Utilisation en production tout l’été
Capteur d’humidité
Données…
Comment faire pour avoir un signal propre? 1 acquisition par minute
Hard• Bon capteur = bonne
donnée• Coût de production plus
élevé• Complexité matérielle
Soft• Donnée non exacte• Temps de développement• Complexité logicielle,
temps de traitement
Les 2 options
Quoi choisir ???
Filtre logiciel (1/4)
Période de 15 points
Filtre logiciel (2/4)
Période de 60 points
Filtre logiciel (3/4)
Période de 60 points
Vert = arrosage, rouge = pluie
Filtre logiciel (4/4)
Période de 600 points
Vert = arrosage, rouge = pluie
Piloter des éléments infrarouge Lego
• Remplacer ça… …par ça
Pourquoi?
• Les protocoles infrarouge sont compliqués
• Utilisation d’un « hack » avec SPI pour créer l’onde et l’envoyer telle quelle
Envoyer des infos en infrarouge
Le hard
• 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
Piloter des servo moteur
demoPiloter mon train Lego
• 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
Trucs et astuces
• 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/
Resources
Formez-vous en ligne
Retrouvez nos évènements
Faites-vous accompagner gratuitement
Essayer gratuitement nos solutions IT
Retrouver nos experts Microsoft
Pros de l’ITDéveloppeurs
www.microsoftvirtualacademy.com
http://aka.ms/generation-app
http://aka.ms/evenements-developpeurs
http://aka.ms/itcamps-france
Les accélérateursWindows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDNhttp://aka.ms/devteam
L’IT Team sur TechNethttp://aka.ms/itteam